feat(sdk): accept python 3.13 as a target version#338
Open
deanq wants to merge 5 commits into
Open
Conversation
Extend GPU_PYTHON_VERSIONS, CPU_PYTHON_VERSIONS, and SUPPORTED_PYTHON_VERSIONS to include "3.13". DEFAULT_PYTHON_VERSION, WORKER_PYTHON_VERSION, and GPU_BASE_IMAGE_PYTHON_VERSION remain "3.12". Update tests to assert 3.13 is valid and use "3.9" as the invalid-version sentinel.
Direct test that a single resource declaring python_version="3.13" reconciles to "3.13" without raising.
Bump upper bound from <3.13 to <3.14 and add Python 3.13 PyPI classifier.
Expand the quality-gates matrix in both ci.yml and release-please.yml to include '3.13'. Single-version setup-python lines are left unchanged.
4 tasks
|
Promptless prepared a documentation update related to this change. Triggered by PR #338 Updated 6 documentation files to reflect Python 3.13 support in the Flash SDK, replacing "coming soon" notices with actual support documentation. Review: Flash Python 3.13 support |
Contributor
There was a problem hiding this comment.
Pull request overview
Adds Python 3.13 as an opt-in target/runtime version for the Flash SDK, updating version validation, image-name resolution, packaging metadata, CI matrices, and accompanying unit tests. Default behavior remains pinned to Python 3.12.
Changes:
- Extend supported/CPU/GPU Python version constants to include
"3.13"and validate"3.13"for image name resolution. - Broaden packaging metadata (
requires-python) and update GitHub Actions matrices to test on Python 3.13. - Update unit tests to cover
"3.13"acceptance and shift “invalid version” sentinels away from"3.13".
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
src/runpod_flash/core/resources/constants.py |
Adds 3.13 to supported/CPU/GPU version lists used for validation and image resolution. |
pyproject.toml |
Expands requires-python to <3.14 and adds Python 3.12/3.13 classifiers. |
tests/unit/core/resources/test_constants.py |
Updates constants/image/version-validation tests to include 3.13 and adjusts invalid-version cases. |
tests/unit/cli/commands/build_utils/test_manifest.py |
Adds a unit test ensuring _reconcile_python_version accepts a 3.13 resource declaration. |
tests/unit/resources/test_serverless.py |
Updates invalid-version test sentinel away from 3.13. |
.github/workflows/ci.yml |
Extends CI test matrix to include Python 3.13. |
.github/workflows/release-please.yml |
Extends release workflow quality gate matrix to include Python 3.13. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Add Python 3.10/3.11 classifiers (we still support them per requires-python) - Use distinct invalid sentinels: "3.99" for the "unknown version" tests, keep "3.9" for the explicit "too-old" tests
KAJdev
approved these changes
May 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds Python 3.13 to the SDK's supported target versions. Strictly additive — non-breaking. Users opt in by declaring
python_version="3.13"on a resource; default deploy behavior is unchanged.What's in this PR
core/resources/constants.py: add"3.13"toSUPPORTED_PYTHON_VERSIONS,GPU_PYTHON_VERSIONS,CPU_PYTHON_VERSIONS.DEFAULT_PYTHON_VERSION,WORKER_PYTHON_VERSION, andGPU_BASE_IMAGE_PYTHON_VERSIONremain"3.12".pyproject.toml:requires-python = ">=3.10,<3.14". AddProgramming Language :: Python :: 3.13(and3.12) classifier.validate_python_version("3.13")succeeds,_reconcile_python_versionaccepts apython_version="3.13"resource declaration, image-name resolution for 3.13 yieldsrunpod/flash:py3.13-latest. The previously-existing "invalid version" sentinel tests were flipped from"3.13"to"3.9".python-versionmatrix inci.ymlandrelease-please.ymlextended to include3.13.Why
Extracted from AE-2827 / #330 so 3.13 support can land independently of the broader match-local-by-default work (which is a BREAKING CHANGE and still in flight on #330). This PR has no breaking changes.
Pairs with flash-worker #98 which publishes the
py3.13-*Docker image variants.Release coordination
Both PRs can merge to main in any order. The only ordering constraint is between the release-please PRs:
runpod/flash:py3.13-{gpu,cpu,lb,lb-cpu}.python_version="3.13".If the SDK release lands first, no user can hit a broken state until they explicitly set
python_version="3.13", which would then pull a missing image tag. Reversing the release order eliminates that window.Linear
AE-3152 (child of AE-2827)
Test plan
validate_python_version("3.13")returns"3.13"_reconcile_python_versionacceptspython_version="3.13"on a resourceLiveServerless(python_version="3.13", ...)succeeds and handler returns a response