Skip to content

CI: Validate on Python 3.14#270

Draft
amotl wants to merge 1 commit intomainfrom
python314
Draft

CI: Validate on Python 3.14#270
amotl wants to merge 1 commit intomainfrom
python314

Conversation

@amotl
Copy link
Copy Markdown
Member

@amotl amotl commented Mar 26, 2026

Does MLflow work with Python 3.14 already?

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 26, 2026

Walkthrough

Added Python 3.14 to the CI test matrix and the project's trove classifiers; no functional code changes were made.

Changes

Cohort / File(s) Summary
CI & Metadata
.github/workflows/main.yml, pyproject.toml
Added Python 3.14 to the GitHub Actions matrix.python-version and added the "Programming Language :: Python :: 3.14" trove classifier. No other changes.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

  • PR #203: Adds a newer Python version (3.12) to CI matrix and project classifiers (same files changed).
  • PR #255: Adds Python 3.13 to CI matrix and project classifiers (same pattern of changes).

Poem

🐰 I hopped through branches, ears to the wind,
A tiny bump—Python 3.14 pinned.
Workflows hum, classifiers cheer,
Tests will run with a new frontier.
Nibble the carrots of CI, and dance a little hop!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'CI: Validate on Python 3.14' accurately describes the main change: adding Python 3.14 to the CI workflow matrix and project classifiers.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description check ✅ Passed The description is a question about Python 3.14 compatibility, which directly relates to the changeset that adds Python 3.14 to CI and project metadata.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch python314

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/main.yml:
- Line 36: The workflow change adding Python "3.14" to the matrix must be
reverted until dependencies are upgraded: remove the "3.14" entry from the
matrix in .github/workflows/main.yml and do not add it back until you upgrade
and verify compatibility for mlflow (currently 2.22.4), sqlalchemy-cratedb
(0.38), and dev tools (mypy, ruff); update mlflow and sqlalchemy-cratedb to
versions that explicitly support Python 3.14, run dependency resolution and test
the suite under 3.14 locally/CI, and only then reintroduce "3.14" into the
matrix.

In `@pyproject.toml`:
- Line 50: Remove the incorrect Python classifier entry by deleting the line
containing the exact string "Programming Language :: Python :: 3.14" from
pyproject.toml so the package metadata does not claim unsupported Python 3.14
compatibility (leave other classifiers intact).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 59189b4c-303b-4719-8d3c-dc319282c96b

📥 Commits

Reviewing files that changed from the base of the PR and between cc92a08 and da2d1d3.

📒 Files selected for processing (2)
  • .github/workflows/main.yml
  • pyproject.toml

- "3.11"
- "3.12"
- "3.13"
- "3.14"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

Does GitHub Actions ubuntu-latest runner support Python 3.14 as of March 2026?

💡 Result:

Yes, the GitHub Actions ubuntu-latest runner supports Python 3.14 as of March 2026. ubuntu-latest refers to Ubuntu 24.04, which has Python versions pre-cached in the toolcache, including 3.14.3. Users can install it using actions/setup-python with python-version: '3.14'. The system Python is 3.12.3, but 3.14 is available via the toolcache. Python 3.14 builds are provided by actions/python-versions repository, with releases like 3.14.3 in early 2026.

Citations:


🌐 Web query:

Does astral-sh setup-uv v7 support Python 3.14?

💡 Result:

Yes, astral-sh/setup-uv v7 supports Python 3.14.

Citations:


🏁 Script executed:

#!/bin/bash
# Description: Check dependency compatibility with Python 3.14 by examining version constraints

echo "=== Core dependencies ==="
echo "mlflow[auth]==2.22.4"
echo "sqlalchemy-cratedb>=0.38.0,<1"
echo "sqlparse<0.6"
echo ""
echo "=== Dev dependencies ==="
echo "mypy<1.20"
echo "poethepoet<1"
echo "pyproject-fmt<3"
echo "ruff<0.16"
echo "validate-pyproject<1"
echo ""
echo "=== Test dependencies ==="
echo "psutil<8"
echo "pytest<9"
echo "pytest-cov<8"
echo ""
echo "Please verify these packages support Python 3.14"

Repository: crate/mlflow-cratedb

Length of output: 357


🏁 Script executed:

#!/bin/bash
# Find dependency definition files
echo "=== Looking for dependency files ==="
find . -maxdepth 2 -type f \( -name "pyproject.toml" -o -name "setup.py" -o -name "requirements*.txt" \) | head -20

Repository: crate/mlflow-cratedb

Length of output: 194


🏁 Script executed:

#!/bin/bash
# Read pyproject.toml to see actual dependencies
cat -n pyproject.toml | head -100

Repository: crate/mlflow-cratedb

Length of output: 3705


🌐 Web query:

mlflow 2.22.4 python 3.14 support pypi

💡 Result:

No, MLflow 2.22.4 does not officially support Python 3.14. MLflow 2.22.4 requires Python >=3.9, as indicated by the PyPI metadata for the 2.22.0 release and consistent patterns in the 2.x series (e.g., 2.18.0 explicitly dropped Python 3.8 support). Python 3.14 was released on 2025-10-07, after MLflow 2.22.4 (released around 2025-12-05 based on download timestamps). There is a reported bug with MLflow 3.6.0 on Python 3.14 due to pydantic 'Schema' import issues, suggesting early 3.x versions also lack full support. Current MLflow 3.10 requires Python >=3.10. Users may attempt installation, but compatibility is not guaranteed and may fail due to dependency incompatibilities like pydantic.

Citations:


🌐 Web query:

pytest 9 python 3.14 support

💡 Result:

Pytest 9 supports Python 3.14. Official support was added in pytest via #13308 (prior to 9.0 release). The current version (9.0.2 as of 2025-12-06) requires Python >=3.10 per pyproject.toml and PyPI metadata, which includes 3.14. Pytest's CI tests Python 3.14 (issue #13308 fixed test failures on 3.14.0a6). A December 2025 discussion (#14076) notes a minor pluggy dependency bug on 3.14 fixed in pluggy#623 (metadata added), with a workaround available; pluggy is compatible even pre-release. Python 3.14 was released October 2025. No sources indicate lack of support in pytest 9.

Citations:


🌐 Web query:

sqlalchemy-cratedb 0.38 python 3.14 support

💡 Result:

No, sqlalchemy-cratedb 0.38 does not explicitly support Python 3.14. Python 3.14 was released after the 0.38.0 release on 2024-06-25. PyPI classifiers for recent versions list support up to Python 3.8 explicitly, with "Python :: 3 :: Only" and requires Python >=3.6, but no mention of 3.14. CI verified Python 3.13 support was added later (in a release after 0.38, dated 2025-01-30). Official docs verify CPython support but no specific Python 3.14 mention for 0.38. It may work due to broad Python 3 support, but lacks verified support.

Citations:


🌐 Web query:

mypy 1.20 ruff 0.16 python 3.14 support

💡 Result:

Mypy development version 1.20 (as of changelog on readthedocs) supports Python 3.14, with initial support added in 1.17 (tested on 3.14, mypyc works with 3.14.0b3+), wheels for cp314, and free-threading support. However, some features like PEP 750 template strings cause crashes in master (issue #19329 from Jun 2025). Latest stable release is 1.19.1 (Dec 2025). Ruff versions 0.14+ (e.g., 0.14.0 Oct 2025, current latest 0.15.7 Mar 2026) fully support Python 3.14, with tracking issue #15506 closed Aug 2025, defaults to py314 for syntax errors, and rules updated for t-strings etc. No 0.16 found; likely refers to recent 0.1x versions. Note: Ruff 0.16 does not exist yet; support starts from 0.14. Both tools can run on and target Python 3.14, but mypy has minor outstanding issues in dev.

Citations:


Do not add Python 3.14 to the test matrix without upgrading dependencies.

mlflow 2.22.4 does not support Python 3.14 and has dependency incompatibilities (pydantic-related). sqlalchemy-cratedb 0.38 lacks verified Python 3.14 support. While GitHub Actions ubuntu-latest and setup-uv v7 support Python 3.14, these core dependencies must be upgraded to versions with confirmed Python 3.14 support before adding it to the workflow matrix. Verify and upgrade:

  • mlflow to a version supporting Python 3.14
  • sqlalchemy-cratedb to a version with verified Python 3.14 support
  • Ensure dev dependencies (mypy, ruff) are compatible with target versions
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/main.yml at line 36, The workflow change adding Python
"3.14" to the matrix must be reverted until dependencies are upgraded: remove
the "3.14" entry from the matrix in .github/workflows/main.yml and do not add it
back until you upgrade and verify compatibility for mlflow (currently 2.22.4),
sqlalchemy-cratedb (0.38), and dev tools (mypy, ruff); update mlflow and
sqlalchemy-cratedb to versions that explicitly support Python 3.14, run
dependency resolution and test the suite under 3.14 locally/CI, and only then
reintroduce "3.14" into the matrix.

"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

Is Python 3.14 officially released and stable as of March 2026?

💡 Result:

Yes, Python 3.14 is officially released and stable as of March 2026. Python 3.14.0 was released on October 7, 2025, and the latest stable version, Python 3.14.3 (a maintenance release), was released on February 3, 2026. It is the current bugfix-supported series, with official binaries available for download from python.org.

Citations:


🌐 Web query:

Does MLflow 2.22.4 support Python 3.14?

💡 Result:

No, MLflow 2.22.4 does not support Python 3.14.

Citations:


Remove Python 3.14 classifier—MLflow 2.22.4 does not support it.

While Python 3.14 is officially released and stable as of March 2026, MLflow 2.22.4 does not support Python 3.14. Adding this classifier would create a false claim of compatibility.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pyproject.toml` at line 50, Remove the incorrect Python classifier entry by
deleting the line containing the exact string "Programming Language :: Python ::
3.14" from pyproject.toml so the package metadata does not claim unsupported
Python 3.14 compatibility (leave other classifiers intact).

@amotl amotl force-pushed the python314 branch 2 times, most recently from c0cf1b1 to eb0533b Compare March 28, 2026 21:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant