Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Documentation

  • The failure contract is now stated and pinned by tests: each call makes one attempt, and timeouts (httpx.TimeoutException) and connection errors (httpx.ConnectError) reach the caller unwrapped. Stacking pico-resilience's @retryable absorbs transient ones and raises RetryExhaustedError with the last httpx error; for calls that are not safe to repeat, the FAQ narrows retries to ConnectError, ConnectTimeout and PoolTimeout, the failures where the request never left the client.

[0.1.1] - 2026-09-29

Fixed

  • Dependency floors raised to what the test suite proves: pico-ioc >= 2.3.3 (was 2.2.0; below 2.3.0 the container fails with Missing config prefix: http). A new CI job runs the suite with every declared floor pinned, so a floor that installs but does not work can no longer ship.

Added

  • __all__ declares the public API and tests/test_exports.py pins it, per the ecosystem stability policy (ADR-014 in pico-ioc).

Documentation

  • docs/architecture.md links the ADR-014 stability and deprecation policy.

[0.1.0] - 2026-07-10

Added

  • @http_client class decorator: turns a class of stubs into an injectable HTTP client component.
  • @get / @post / @put / @delete / @patch method decorators with path templating, query params and JSON body (json parameter).
  • Sync and async stubs (shared httpx.Client / httpx.AsyncClient, closed on container shutdown).
  • Base URL from the decorator or from http.clients.<name>.base_url config.
  • http.timeout_seconds setting (zero-config).
  • Auto-discovery via the pico_boot.modules entry point.