Immutable
release. Only release title and notes can be modified.
Added
RateLimitedError,ServiceUnavailableError, andNetworkErrorexception classes for typed handling of HTTP 429, 503, and transport-level failures. All three preserve existingexceptcatch sites via inheritance.max-inline-sleepretry-policy key (default 300 s), configurable viacustom_retry_policy; a 503 whoseRetry-Afterexceeds the cap raises instead of sleeping inline.
Changed
- HTTP 429 raises
RateLimitedErrorimmediately instead of falling through as a rawHTTPError. urllib.error.URLErroris caught and re-raised asNetworkError.- Replace
e.hdrswithe.headersinretrieveFromUrlWaiting(). - Chain re-raised exceptions with
raise ... frominclient.py,server.py, anddatestamp.pyso tracebacks show the original cause (RuffB904/ PEP 3134). - Build the published wheel inside the project's Nix flake devShell (
publish.yml). Pure-Python source semantics unchanged; published artifact bytes may differ across releases due to build-toolchain provenance. - Development tooling and CI infrastructure improvements:
lint:Add Ruff as the Python lint and format gate viapre-commit(#18)style:Repo-wideruff formatpass (#20)chore:pre-commithook forflake.lockdrift detection (#25)ci:Nix flake devShells for CI and publish workflows (#22)ci:Centralise Nix-store and uv-wheel caches via composite Actions (#24)refactor:Splitflake.nixintoflake-partsmodules;nixfmt-rfc-styleformatting andtreefmthook (#31)
Deprecated
- Passing 429 or 503 in a caller-supplied
expected-errcodesset now emitsDeprecationWarning; catch the typed exceptions instead.