fix: Dockerfile Python 3.14 + docs version updates#4162
fix: Dockerfile Python 3.14 + docs version updates#4162MarkusNeusinger merged 3 commits intomainfrom
Conversation
…3.14 - Python: requires-python >=3.14 (was >=3.12) - numpy >=2.0.0, pandas >=3.0.0, cachetools >=7.0.0 - fastmcp >=2.0.0, google-cloud-storage >=3.0.0 - plotly >=6.0.0, kaleido >=1.0.0, matplotlib >=3.10.0 - fastapi >=0.115.0, pillow >=11.0.0, httpx >=0.28.0 - Frontend: eslint 10, typescript 5.9.3 - Add 21 tests for upgrade safety: GCS (core/images), fastmcp protocol, numpy/pandas API smoke tests, cachetools maxsize edge-case All 1011 unit tests pass. Frontend build, lint, and 19 tests pass. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Address Copilot review feedback: - CI workflows: bump python-version from 3.13 to 3.14 - Docs: update Python 3.12+ references to 3.14+ - Serena memories: update ESLint 9 to 10, ruff target to py314 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The pyproject.toml now requires Python >=3.14, but the Dockerfile was still using python:3.13-slim, causing uv sync to fail during Cloud Build. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR updates the project’s runtime/tooling baseline to Python 3.14 and refreshes related configuration/documentation, while also introducing substantial dependency upgrades and a few new regression/smoke tests.
Changes:
- Move backend Docker image and GitHub Actions workflows to Python 3.14; update docs/memories to match.
- Update
pyproject.tomlto require Python 3.14 and bump multiple backend dependencies (incl. numpy/pandas major versions). - Update frontend lint dependencies (ESLint 10) and add/extend unit tests for GCS font caching, cache eviction, MCP protocol surface, and numpy/pandas compatibility.
Reviewed changes
Copilot reviewed 20 out of 23 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
api/Dockerfile |
Bumps base image to python:3.14-slim to match new runtime requirement. |
pyproject.toml |
Sets requires-python >=3.14 and upgrades many backend dependencies/optionals. |
.github/workflows/ci-tests.yml |
Runs unit tests on Python 3.14 in CI. |
.github/workflows/ci-lint.yml |
Runs linting on Python 3.14 in CI. |
.github/workflows/impl-generate.yml |
Updates implementation generation workflow to Python 3.14. |
.github/workflows/impl-repair.yml |
Updates implementation repair workflow to Python 3.14. |
.github/workflows/sync-postgres.yml |
Updates sync workflow to Python 3.14. |
tests/unit/core/test_images.py |
Adds tests for _get_monolisa_font_path cache/download behavior. |
tests/unit/core/test_data_deps.py |
Adds numpy/pandas API “smoke tests” aimed at catching breaking upgrades. |
tests/unit/api/test_cache.py |
Adds coverage for cachetools.TTLCache eviction when exceeding maxsize. |
tests/unit/api/mcp/test_tools.py |
Adds protocol-level tests to detect FastMCP registration/schema surface changes. |
app/package.json |
Bumps ESLint/@eslint-js and React type deps. |
app/yarn.lock |
Updates lockfile to reflect frontend dependency upgrades. |
agentic/docs/project-guide.md |
Updates architecture/stack docs (Python 3.14+, workflow naming, structure). |
agentic/context/.gitkeep |
Keeps agentic/context/ tracked in git. |
.github/copilot-instructions.md |
Updates repo guidance (Python 3.14+, structure, linting note). |
.serena/memories/task_completion.md |
Refreshes “how to run checks/tests” guidance (adds frontend commands). |
.serena/memories/commands.md |
Adds consolidated commands reference. |
.serena/memories/code_style.md |
Updates style guidance (mentions target py314, ESLint 10, etc.). |
.serena/memories/project_overview.md |
Expands/updates project overview (Python 3.14+, workflows, structure). |
.serena/memories/suggested_commands.md |
Removes older suggested-commands doc. |
.serena/memories/directory_structure.md |
Removes older directory-structure doc in favor of updated overview. |
| # Core Framework | ||
| "fastapi>=0.104.0", | ||
| "uvicorn[standard]>=0.24.0", | ||
| "fastapi>=0.115.0", | ||
| "uvicorn[standard]>=0.34.0", | ||
| # MCP Server | ||
| "mcp>=1.0.0", | ||
| "fastmcp>=0.1.0", | ||
| "fastmcp>=2.0.0", |
There was a problem hiding this comment.
The PR title/description focuses on moving the runtime to Python 3.14, but this hunk also introduces broad major dependency upgrades (e.g., FastAPI/uvicorn, fastmcp 2.x, numpy 2.x, pandas 3.x, google-cloud-storage 3.x, pillow 11, cachetools 7). This is a much larger surface area than the stated scope; consider splitting dependency upgrades into a dedicated PR (or at least explicitly calling out each breaking upgrade + why it’s safe) so regressions are easier to attribute and review.
| """Should return cached font path without calling GCS when file exists.""" | ||
| from unittest.mock import patch | ||
|
|
||
| import core.images |
There was a problem hiding this comment.
Module 'core.images' is imported with both 'import' and 'import from'.
| """Should download font from GCS when not cached.""" | ||
| from unittest.mock import MagicMock, patch | ||
|
|
||
| import core.images |
There was a problem hiding this comment.
Module 'core.images' is imported with both 'import' and 'import from'.
| """Should return None gracefully when GCS download fails.""" | ||
| from unittest.mock import patch | ||
|
|
||
| import core.images |
There was a problem hiding this comment.
Module 'core.images' is imported with both 'import' and 'import from'.
| """Should create cache directory if it doesn't exist before downloading.""" | ||
| from unittest.mock import MagicMock, patch | ||
|
|
||
| import core.images |
There was a problem hiding this comment.
Module 'core.images' is imported with both 'import' and 'import from'.
Summary
api/Dockerfilefrompython:3.13-slimtopython:3.14-slim(fixes Cloud Build failure —requires-python >= 3.14brokeuv syncon 3.13)python-version: '3.14'(ci-tests, ci-lint, impl-generate, impl-repair, sync-postgres)Test plan
python:3.14-slim🤖 Generated with Claude Code