Skip to content

Add Python 3.15 support - #843

Merged
jonathan343 merged 1 commit into
developfrom
add-3.15
Oct 10, 2026
Merged

jonathan343 merged 1 commit into
developfrom
add-3.15

Conversation

@jonathan343

Copy link
Copy Markdown
Contributor

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.15 classifier to every package under packages/ and to the pyproject.toml that SetupGenerator writes for generated clients. It regenerates the codegen-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 raises IncompleteJSONError with Incomplete JSON content, which the test's premature EOF|parse error pattern 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 -q

Before (develop)

E       AssertionError: Regex pattern did not match.
E         Expected regex: 'premature EOF|parse error'
E         Actual message: 'Incomplete JSON content'

packages/smithy-aws-core/tests/unit/aio/test_protocols.py:470: AssertionError
1 failed in 0.28s

After

1 passed in 0.08s

Testing

The full runtime suite also passes on the pure-Python backend, so no other test depends on the C backend:

IJSON_BACKEND=python uv run pytest packages --no-cov -q
2404 passed, 9 skipped, 1 warning in 19.55s

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.

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.
@jonathan343
jonathan343 requested a review from a team as a code owner October 9, 2026 21:33
@jonathan343
jonathan343 merged commit d155c61 into develop Oct 10, 2026
11 checks passed
@jonathan343
jonathan343 deleted the add-3.15 branch October 10, 2026 00:09
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.

3 participants