Metadata-Version: 2.3
Name: ewoxcore
Version: 1.6.44
Summary: Shared runtime primitives for Ewox framework services and packages.
License: MIT
Keywords: ewox,framework,service,utilities
Author: Martin Leo Prüss
Author-email: mleopruss@gmail.com
Maintainer: Martin Leo Prüss
Maintainer-email: mleopruss@gmail.com
Requires-Python: >=3.13,<4.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: cryptography (>=48.0.1)
Requires-Dist: joserfc (>=1.6,<2.0)
Requires-Dist: jsonpickle (>=4.1.1,<5.0.0)
Requires-Dist: lagom (>=2.7.7,<3.0.0)
Requires-Dist: numpy (>=2.3.0,<3.0.0)
Requires-Dist: pandas (>=3.0.1,<4.0.0)
Requires-Dist: python-dateutil (>=2.9.0.post0,<3.0.0)
Requires-Dist: python-i18n (>=0.3.9,<0.4.0)
Requires-Dist: requests (>=2.33.0,<3.0.0)
Requires-Dist: requests-toolbelt (>=1.0.0,<2.0.0)
Requires-Dist: shortuuid (>=1.0.13,<2.0.0)
Requires-Dist: sortedcontainers (>=2.4.0,<3.0.0)
Requires-Dist: urllib3 (>=2.6.3,<3.0.0)
Requires-Dist: validators (>=0.35.0,<0.36.0)
Project-URL: Changelog, https://github.com/mlpruss/ewox-core/blob/master/CHANGELOG.md
Project-URL: Homepage, https://github.com/mlpruss/ewox-core
Project-URL: Issues, https://github.com/mlpruss/ewox-core/issues
Project-URL: Repository, https://github.com/mlpruss/ewox-core
Description-Content-Type: text/markdown

# ewoxcore

`ewoxcore` contains the shared runtime primitives used by Ewox framework
services and companion packages. It includes HTTP clients, configuration and
dependency-injection helpers, local caching, serialization utilities, token
helpers, transport models, monitoring abstractions, and general utilities.

## Requirements

- Python 3.13 or 3.14
- Poetry 2.1.3 for contributor and release workflows

## Installation

Install the public package from PyPI:

```shell
python -m pip install ewoxcore
```

For local development:

```shell
poetry install --with dev
poetry run python -m unittest discover -s tests -p "test*.py"
```

## Compatibility policy

The `1.6.x` line preserves existing public import paths and transport formats.
Bug fixes may add optional parameters or deprecate names, but existing callers
will continue to work for the remainder of the line.

`ConfigurationBuilder.add_json_file(path)` continues to tolerate a missing file
for compatibility with existing services. Pass `optional=False` when a missing
configuration file must stop startup. Existing files containing invalid JSON
always raise an error.

In particular, the following `JsonUtil` methods retain their existing
jsonpickle-based behavior because Ewox APIs, Redis data, streams, WebSockets,
and tokens already exchange that format:

- `serializeJson64`
- `deserializeJson64`
- `deserialize_json64`
- `serialize`
- `deserialize`

Do not deserialize untrusted input with the object-preserving jsonpickle mode.
See [SECURITY.md](SECURITY.md) for the trust boundary and migration policy.

`Authorizer` continues to issue and accept HS256 JWTs using the existing
environment variables and payload representation. Optional encrypted payloads
remain compact JWE values using `dir` and `A256GCM`. The JOSE implementation is
internal; consuming applications must declare their own JOSE dependency when
they import one directly.

`HTTPClient(method_whitelist=...)` remains accepted as a deprecated alias for
`allowed_methods`. New code should use `allowed_methods`.

## Local release validation

The release gate builds and smoke-tests both the wheel and source distribution:

```shell
./build_test_upload.sh
```

To upload the exact validated artifacts to TestPyPI:

```shell
TWINE_PASSWORD="<test-pypi-token>" ./build_test_upload.sh --upload
```

Production PyPI releases are made only by the protected GitHub Actions release
environment using PyPI Trusted Publishing. See [RELEASING.md](RELEASING.md).

## Support and versioning

- Bug fixes and security patches are released from the latest `1.6.x` version.
- Breaking public API or serialization changes require a major release.
- Python versions are supported only while they are included in CI.
- Deprecated compatibility aliases remain for at least the current minor line.

The supported public surface is the documented classes and modules imported by
Ewox framework packages. Underscore-prefixed members are internal unless a
document explicitly states otherwise.

## Contributing

Read [CONTRIBUTING.md](CONTRIBUTING.md) before proposing changes. Security
issues must follow [SECURITY.md](SECURITY.md), not the public issue tracker.

## License

MIT. See [LICENSE](LICENSE).

