All notable changes to this project will be documented in this file. The format follows Keep a Changelog and this project adheres to Semantic Versioning.
- Refactor: PYTHON_SDK_GUIDE.md conformance. Non-breaking internal
restructure to meet the guide's hard limits and lint rules. No public
API symbols were removed or renamed.
- Split oversized modules along responsibility lines:
_runtime/server.py(744 LOC) →server.py+_handshake.py_accept.py+_handlers.py+_handler_list_jobs.py_job_runner.py.
_client/client.py(479 LOC) →client.py+dispatch.pyops.py.
_messages/execution.py(348 LOC) →execution.pyevent_bodies.py.
_runtime/job.py(372 LOC) →job.py+result_stream.py.
- All source modules are now ≤ 296 lines (guide §0).
- Split oversized modules along responsibility lines:
- Reduced cyclomatic complexity on
_dispatch,_run_job,is_lease_subset, andotel._extract_attrsto ≤ 8 via guard-clause extraction and dict-of-handlers dispatch (guide §14).
- Tighter lint rules in
pyproject.toml:ruff.lint.selectnow includesC90(mccabe),PLR(pylint refactor).ruff.lint.mccabe.max-complexity = 8.ruff.lint.pylint.max-args = 5.
[tool.mypy]block withstrict = true,warn_unreachable = true,plugins = ["pydantic.mypy"].--cov-fail-underraised from 60 → 90 (current actual: 73%).mypy>=2.1added to thedevdependency group.
mypy --strictnow passes (14 → 0 errors). Fixes include:- JSON-frame parsers in transports/middleware now check the parsed
value is a
dictbefore returning, eliminatingno-any-return. EventLog.read_since_seqProtocol signature aligned with async- generator semantics (the implementations stay unchanged).Envelope_envelopevalidators no longer carry an unused# type: ignore[unreachable].- CLI imports
ARCPClientandStaticBearerVerifierfrom their public submodules (arcp.client,arcp.runtime) rather than a non-existent top-level re-export.
- JSON-frame parsers in transports/middleware now check the parsed
value is a
- PLR0913 noqa for keyword-only constructors with optional knobs.
JWTVerifier.__init__,ARCPClient.__init__,ARCPRuntime.__init__,ARCPClient.submit, and a small number of private helpers carry a documented# noqa: PLR0913. Every argument is already keyword-only with a default; grouping them in a config dataclass is a breaking signature change with no clarity gain. - Coverage gate not yet met. The guide and CI target is
--cov-fail-under=90; current actual is 73%. New tests for server/transport branches are deferred.
- Initial v1.1 reference implementation.