Tests / Test passed: 789
paddlepaddle has no Python 3.14 (cp314) wheel on PyPI, so host-agent
deployments on 3.14 can never install it, causing OCR to fail at
runtime with RuntimeError. Pin the workspace to Python 3.13 across
all pyproject.toml files, the Docker base image, and the Jenkins CI
image; regenerate uv.lock against 3.13.
Also fixes a pre-existing Python-2-style `except X, Y:` syntax error
(invalid in all Python 3.x) in runtime/task.py and
packages/cloud-platform/cloud/{sql_repository,internal_api/api}.py,
introduced in 22d37ca9 and unrelated to this change's scope, which
blocked the full test suite from collecting on any interpreter
version.
openspec change: downgrade-python-3-13-paddleocr
1.8 KiB
1.8 KiB
ADDED Requirements
Requirement: Workspace-wide supported Python version
The system SHALL declare a single, consistent supported Python interpreter version range across the uv workspace root and every workspace member (apps/device-host-agent, apps/cloud-api, packages/cloud-platform), such that the range admits Python 3.13 and excludes Python 3.14, so that paddlepaddle (which has no Python 3.14 wheel available on PyPI) can be installed in every environment that follows the project's documented setup.
Scenario: Workspace resolves and syncs on Python 3.13
- WHEN an operator runs
uv python install 3.13followed byuv sync --locked --all-packagesin the repository root - THEN the sync succeeds and provisions a
.venvusing a Python 3.13 interpreter, withuv.lockresolved against that interpreter
Scenario: A Python 3.14 interpreter is rejected
- WHEN
uvattempts to resolve or sync the workspace against a Python 3.14 interpreter - THEN
uvreports the interpreter as incompatible with the declaredrequires-pythonrange, rather than silently proceeding
Requirement: Container and CI images match the declared Python baseline
The system SHALL build its Docker image and Jenkins CI pipeline using a base image whose Python version matches the workspace's declared requires-python range, so that containerized and CI environments never diverge from what local development targets.
Scenario: Docker image build uses the supported Python version
- WHEN the project's
Dockerfileis built - THEN the resulting image's base image is
astral-sh/uv:python3.13-bookworm-slim
Scenario: CI pipeline uses the supported Python version
- WHEN the Jenkins pipeline defined in
Jenkinsfileexecutes - THEN it runs inside the
astral-sh/uv:python3.13-bookworm-slimimage