Metadata-Version: 2.4
Name: policyengine-observability
Version: 0.2.1
Summary: Shared PolicyEngine observability runtime for logs, timings, metrics, and OpenTelemetry.
Author-email: PolicyEngine <hello@policyengine.org>
Requires-Python: >=3.12
Provides-Extra: all
Requires-Dist: fastapi; extra == 'all'
Requires-Dist: flask>=2.2; extra == 'all'
Requires-Dist: httpx; extra == 'all'
Requires-Dist: opentelemetry-api; extra == 'all'
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc; extra == 'all'
Requires-Dist: opentelemetry-exporter-otlp-proto-http; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-fastapi; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-httpx; extra == 'all'
Requires-Dist: opentelemetry-sdk; extra == 'all'
Provides-Extra: dev
Requires-Dist: build; extra == 'dev'
Requires-Dist: coverage; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: ruff>=0.9.0; extra == 'dev'
Requires-Dist: towncrier>=24.8.0; extra == 'dev'
Provides-Extra: fastapi
Requires-Dist: fastapi; extra == 'fastapi'
Requires-Dist: opentelemetry-instrumentation-fastapi; extra == 'fastapi'
Provides-Extra: flask
Requires-Dist: flask>=2.2; extra == 'flask'
Provides-Extra: httpx
Requires-Dist: httpx; extra == 'httpx'
Requires-Dist: opentelemetry-instrumentation-httpx; extra == 'httpx'
Provides-Extra: otel
Requires-Dist: opentelemetry-api; extra == 'otel'
Requires-Dist: opentelemetry-sdk; extra == 'otel'
Provides-Extra: otlp-grpc
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc; extra == 'otlp-grpc'
Provides-Extra: otlp-http
Requires-Dist: opentelemetry-exporter-otlp-proto-http; extra == 'otlp-http'
Description-Content-Type: text/markdown

# policyengine-observability

Shared PolicyEngine observability runtime for fail-open local timings,
structured logs, OpenTelemetry traces, and OpenTelemetry metrics.

The package intentionally keeps framework support in adapters:

- `policyengine_observability.adapters.flask`
- `policyengine_observability.adapters.fastapi`
- `policyengine_observability.integrations.httpx`

OpenTelemetry imports are lazy. Timing and structured logging can run without
an OTel backend; exporting traces/metrics is opt-in through configuration.

## Release workflow

Changes should include a Towncrier fragment in `changelog.d/`. Pull requests
run changelog, Ruff, and coverage checks. Pushes to `main` run the same gates,
then publish a versioning commit that builds the changelog and bumps
`pyproject.toml`. That versioning commit publishes the package to PyPI through
trusted publishing, creates a matching git tag, and opens a GitHub release.
