SG-42304 Add Python 3.13 support#315
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #315 +/- ##
=======================================
Coverage 65.82% 65.82%
=======================================
Files 24 24
Lines 1870 1870
=======================================
Hits 1231 1231
Misses 639 639
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
52a1609 to
3fa4131
Compare
There was a problem hiding this comment.
Pull request overview
Adds Python 3.13 support to the bundled-dependency update workflow by introducing a 3.13 requirements set and extending the Azure pipeline to generate/install source and binary dependencies for 3.13.
Changes:
- Add
git addof newly generatedexplicit_requirements.txtfiles during requirements generation. - Introduce
resources/python/requirements/3.13/requirements.txtand extend CI pipeline jobs to run 3.13 source/binary dependency updates. - Update documentation and Snyk policy to reflect Python 3.13 support.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| resources/python/update_requirements.py | Stages newly generated explicit requirements files so they can be committed by CI. |
| resources/python/requirements/3.13/requirements.txt | Adds initial dependency set for Python 3.13. |
| resources/python/pipelines/pipelines.yml | Adds/threads Python 3.13 through source + binary dependency jobs across OSes. |
| resources/python/README.md | Updates documented supported Python versions to include 3.13. |
| README.md | Updates badges for supported VFX platform years and Python versions. |
| .snyk | Adds Python 3.13 explicit requirements path to an ignore rule. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| cffi~=1.17.1 | ||
| cryptography~=44.0.1 # Only for SAST. | ||
| hyperlink~=21.0.0 | ||
| idna~=3.8 | ||
| zope.interface~=7.1.0 |
There was a problem hiding this comment.
These dependencies are specified with ~= here, whereas other Python version requirement files in this repo use exact == pins for reproducibility. Consider pinning these to exact versions as well to avoid unexpected updates during installs/builds.
| # sys.modules (from the system install), that import will fail with: | ||
| # ImportError: cannot import name 'Converter' from 'attr' | ||
| # | ||
| # All other Python versions (3.9, 3.10, 3.11) already bundle 22.2.0. |
There was a problem hiding this comment.
The comment says "All other Python versions (3.9, 3.10, 3.11) already bundle 22.2.0", but Python 3.7 also bundles attrs==22.2.0 in this repo. Please update the comment to include 3.7 (or explain why it’s excluded) to keep the documentation accurate.
| # All other Python versions (3.9, 3.10, 3.11) already bundle 22.2.0. | |
| # All other supported Python versions (3.7, 3.9, 3.10, 3.11) already bundle 22.2.0. |
| - 3.9.16 | ||
| - 3.10.13 | ||
| - 3.11.9 | ||
| - 3.13 |
There was a problem hiding this comment.
This list uses full patch versions for other entries (e.g. 3.11.9), but this new entry is just "3.13". Please align the format (either specify the exact patch version for 3.13, or use a consistent “3.13.x” style for all).
| - 3.13 | ||
| - Windows | ||
| - 3.7.9 | ||
| - 3.9.13 | ||
| - 3.10.11 | ||
| - 3.11.9 | ||
| - 3.13 | ||
| - Linux: | ||
| - 3.7.16 | ||
| - 3.9.16 | ||
| - 3.10.13 | ||
| - 3.11.9 | ||
| - 3.13 |
There was a problem hiding this comment.
This list uses full patch versions for other entries (e.g. 3.11.9), but this new entry is just "3.13". Please align the format (either specify the exact patch version for 3.13, or use a consistent “3.13.x” style for all).
| - 3.13 | |
| - Windows | |
| - 3.7.9 | |
| - 3.9.13 | |
| - 3.10.11 | |
| - 3.11.9 | |
| - 3.13 | |
| - Linux: | |
| - 3.7.16 | |
| - 3.9.16 | |
| - 3.10.13 | |
| - 3.11.9 | |
| - 3.13 | |
| - 3.13.x | |
| - Windows | |
| - 3.7.9 | |
| - 3.9.13 | |
| - 3.10.11 | |
| - 3.11.9 | |
| - 3.13.x | |
| - Linux: | |
| - 3.7.16 | |
| - 3.9.16 | |
| - 3.10.13 | |
| - 3.11.9 | |
| - 3.13.x |
| - 3.13 | ||
| - Windows | ||
| - 3.7.9 | ||
| - 3.9.13 | ||
| - 3.10.11 | ||
| - 3.11.9 | ||
| - 3.13 | ||
| - Linux: | ||
| - 3.7.16 | ||
| - 3.9.16 | ||
| - 3.10.13 | ||
| - 3.11.9 | ||
| - 3.13 |
There was a problem hiding this comment.
This list uses full patch versions for other entries (e.g. 3.11.9), but this new entry is just "3.13". Please align the format (either specify the exact patch version for 3.13, or use a consistent “3.13.x” style for all).
| - 3.13 | |
| - Windows | |
| - 3.7.9 | |
| - 3.9.13 | |
| - 3.10.11 | |
| - 3.11.9 | |
| - 3.13 | |
| - Linux: | |
| - 3.7.16 | |
| - 3.9.16 | |
| - 3.10.13 | |
| - 3.11.9 | |
| - 3.13 | |
| - 3.13.x | |
| - Windows | |
| - 3.7.9 | |
| - 3.9.13 | |
| - 3.10.11 | |
| - 3.11.9 | |
| - 3.13.x | |
| - Linux: | |
| - 3.7.16 | |
| - 3.9.16 | |
| - 3.10.13 | |
| - 3.11.9 | |
| - 3.13.x |
| Twisted~=24.11.0 | ||
| autobahn~=24.4.2 | ||
| certifi~=2025.7.14 | ||
| pyOpenSSL~=25.0.0 | ||
| service-identity~=24.2.0 |
There was a problem hiding this comment.
This requirements file uses compatible-release specifiers (~=) for several packages, but the other pinned requirement sets (e.g. 3.9/3.10/3.11) use exact == pins. Using ~= can introduce dependency drift and make the generated explicit_requirements.txt / bundled binaries non-reproducible; consider switching these entries to exact pins to match the established pattern.
Summary
Adds Python 3.13 support to tk-framework-desktopserver, aligned with VFX
Reference Platform CY2026.
Changes
requirements.txtseed file used to drive dependencyresolution
pipelines.yml) with new jobs forsource and binary dependency resolution across macOS, Linux and Windows
for Python 3.13
update_requirements.pyto handle Python 3.13resources/python/src/3.13/explicit_requirements.txtfrom Snykscans (consistent with other Python versions)
CY2026
Notes
The actual resolved dependency lock files (explicit_requirements) are
generated automatically by the CI pipeline and land via PR #317, which
must be merged into this branch before this PR can be merged into master.
Do not mind the 3.13 CI failures. This is a chicken and egg problem and is resolved by #317.
Related