Skip to content

5.5.0 — 2026-09-26

← 5.5.1 | 5.4.1 → | ↑ 5.x series

Added

Helpers - OpenTelemetry

  • httpx2 auto-instrumentation - OtelUtils now registers HTTPX2ClientInstrumentor, so outbound httpx2 calls produce client spans alongside httpx and requests.
    • Removed the "httpx2 not auto-instrumented" entry from the observability known-gaps table

Models - Types

  • JsonValue type - Added a recursive JsonValue alias exported from archipy.models.types.
    • RediSearch adapters, ports, and document_dto payloads now accept dict[str, JsonValue] instead of dict[str, str | int | float | list[float]], allowing nested objects, booleans, and None

Changed

Helpers - OpenTelemetry

  • Quiet skip for missing target libraries - Auto-instrumentation calls instrument() with raise_exception_on_conflict=True and skips DependencyConflictError at debug level.
    • Installing only httpx2 no longer makes OTel log an httpx dependency-conflict error at startup
    • Provider wiring moved into OtelUtils._instrument_with_providers
    • Auto-instrumentation is skipped entirely when opentelemetry-instrumentation is not installed

Removed

Helpers - OpenTelemetry

  • otel-elasticsearch extra - Dropped the extra and the contrib ElasticsearchInstrumentor from auto-instrumentation. The elasticsearch client emits OTel spans natively; install archipy[otel] only.
    • Remove otel-elasticsearch from your archipy[...] extras list when upgrading

Tests

Tests - OpenTelemetry

  • httpx2 instrumentation scenarios - Added BDD scenarios asserting httpx2 transports are wrapped and that a missing instrumented library is skipped without an OTel error log.

Tests - Configuration

  • Low-memory test containers - Capped container memory and process sizing for Postgres, Keycloak, MinIO, StarRocks, Redis, Kafka, and Temporal testcontainers.
    • Kafka limit raised to 1024m with a 512m heap to avoid KRaft OOM kills under parallel CI load

Chore

Chore - Tooling

  • Gherkin formatting - Added gherkin-formatter to pre-commit, make format, and CI; reformatted all feature files.

Dependencies

  • Core / extras - Raised pyproject.toml lower bounds to match uv.lock.
    • httpx2 (core, parsian-ipg-async, saman-ipg): >=2.13.0 → >=2.13.1
    • pyjwt: >=2.14.0 → >=2.15.0
    • boto3 (minio extra): >=1.43.98 → >=1.43.103
    • sqlalchemy / sqlalchemy-async: >=2.0.54 → >=2.1.1
    • opentelemetry-sdk / opentelemetry-exporter-otlp: >=1.43.0 → >=1.45.0
    • opentelemetry-instrumentation-* / opentelemetry-exporter-prometheus: >=0.64b0 → >=0.66b0
  • Dev / docs - Updated development and typing stubs.
    • boto3-stubs: >=1.43.98 → >=1.43.103
    • gherkin-formatter: added >=0.1.3
    • ruff: >=0.16.8 → >=0.16.9
    • ty: >=0.0.82 → >=0.0.84
    • types-pymysql: >=1.2.0.20260807 → >=1.2.0.20260923
    • mkdocstrings-python: >=2.0.8 → >=2.0.9
    • pymdown-extensions: >=12.0.1 → >=12.1