ADR-011: Dependency Management

Status

Accepted. Superseded in part by ADR-025, which moves the ranges into pyproject.toml and compiles the requirements files.

Adapts the platform’s ADR-015: Dependency Management.

Context

An application, like the platform, pins its dependencies. A library can’t: its pins would conflict with its callers’.

Decision

Runtime dependencies are few (httpx, pydantic, pydantic-settings, PyYAML) and declared as compatible ranges in requirements/base.txt, which setup.py installs. Development tools are pinned in requirements/local.txt. Dependabot and Mergify keep both current, as on the platform.

Alternatives Considered

  • Pin runtime dependencies.

  • Unbounded ranges.

Consequences

  • Positive:

    • The SDK installs beside any application’s own pins.

  • Negative:

    • The ranges must be tested: CI’s matrix runs the latest versions within them.