Repository navigation
Add Python 3.15 support - #843
Merged
Merged
Conversation
Add the Python 3.15 classifier to the runtime packages and to generated clients, regenerate the protocol-test snapshots, and make the 3.15 CI job blocking. Loosen the expected message in test_aws_json11_raises_parse_error_for_invalid_error_body so it also matches ijson's pure-Python backend. No ijson release ships a cp315 wheel yet, so 3.15 can fall back to that backend.
stobrien89
approved these changes
Oct 9, 2026
kuhe
approved these changes
Oct 9, 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
Python 3.15.0 is out, but the runtime packages and generated clients still list 3.14 as the newest supported version, and the 3.15 CI job added in #688 is non-blocking. This PR adds the
Programming Language :: Python :: 3.15classifier to every package underpackages/and to thepyproject.tomlthatSetupGeneratorwrites for generated clients. It regenerates thecodegen-output/snapshots and makes the 3.15 CI job blocking.It also fixes
test_aws_json11_raises_parse_error_for_invalid_error_body, which only passed when ijson used its C backend. The locked ijson 3.3.0 ships wheels only up to cp312, and no ijson release ships a cp315 wheel yet. When ijson is installed without its C extension, it falls back to the pure-Python backend. That backend raisesIncompleteJSONErrorwithIncomplete JSON content, which the test'spremature EOF|parse errorpattern rejected. The pattern now accepts all three messages.Upgrading the locked ijson would add wheels for 3.13 and 3.14 but not 3.15, so it is left for a separate PR.
Before / After
Run the test with ijson forced to its pure-Python backend:
IJSON_BACKEND=python uv run pytest \ "packages/smithy-aws-core/tests/unit/aio/test_protocols.py::test_aws_json11_raises_parse_error_for_invalid_error_body" \ --no-cov -qBefore (
develop)After
Testing
The full runtime suite also passes on the pure-Python backend, so no other test depends on the C backend:
This ran locally on macOS with Python 3.12. CI covers the C backend, which the old pattern already matched.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.