Skip to content

RelPrim 1.0.0

Latest

Choose a tag to compare

@bart-rozycki bart-rozycki released this 28 Oct 19:59
7a5359a

Summary

RelPrim 1.0.0 is the first stable release of RelPrim.

The 1.0 release establishes the public API and compatibility contract for a Python reliability library built around explicit, composable primitives for external operations.

RelPrim includes retries with backoff and jitter, timeouts, fallbacks, circuit breakers, idempotency, provider-aware rate-limit recovery, validation, structured events and execution reports.

Highlights

  • Stable public API for RelPrim 1.x
  • Python 3.11–3.14 support
  • PEP 561 typing with py.typed
  • Strong downstream @resilient(...) generic and ParamSpec inference
  • Cancellation-safe retry, fallback, circuit-breaker and idempotency behavior
  • Explicit and tested interactions between reliability policies
  • Stable structured-event and execution-metadata contract
  • Optional OpenTelemetry integration
  • Durable local event history with SQLite
  • JSON Schema and Pydantic validation adapters
  • Clean base installation with optional integrations kept behind extras

Reliability primitives

RelPrim 1.0 provides:

  • retry policies with backoff and jitter
  • operation timeouts
  • fallback chains
  • circuit breakers
  • idempotent execution
  • provider-aware rate-limit recovery
  • result validation
  • structured lifecycle events
  • execution reports and metadata

These primitives can be composed through AsyncOperation or the higher-level @resilient(...) decorator.

Stability and typing

RelPrim 1.0 defines the compatibility expectations for the public API, structured events and execution metadata.

The distributed package includes py.typed, and typing is verified against the installed wheel with strict downstream mypy checks.

Breaking changes from 0.11

The final pre-1.0 hardening included several intentional API and semantic cleanups.

Notable changes include:

  • stricter retry exception-filter validation
  • exception filters use Exception subclasses rather than BaseException
  • corrected fallback filtering and validation semantics
  • retry_count counts primary retries only
  • operation-raised TimeoutError is preserved instead of being converted into a RelPrim timeout
  • raw idempotency keys are no longer exposed in reports or errors
  • non-finite durations are rejected
  • successful validation reports the concrete validator
  • rate-limit metadata reflects the delay actually selected

See the migration guide for the complete 0.11 → 1.0 migration notes.

Installation

pip install relprim

Optional integrations:

pip install "relprim[otel]"
pip install "relprim[jsonschema]"
pip install "relprim[pydantic]"

Verification

RelPrim 1.0.0 was verified through:

  • 465 automated tests
  • Python 3.11, 3.12, 3.13 and 3.14 CI
  • Ruff formatting and linting
  • strict mypy
  • clean wheel and sdist builds
  • twine check --strict
  • clean-environment distribution verification
  • base installation without unintended optional dependencies
  • all optional extras
  • all maintained examples against the installed wheel
  • downstream strict mypy
  • TestPyPI installation
  • production PyPI installation with all optional extras
  • a published and independently installed 1.0.0rc1 release candidate

RelPrim 1.0 marks the transition from pre-stable development to a stable compatibility commitment for the 1.x series.