Skip to content

feat: add CPython 3.15 support for Android - #2858

Merged
henryiii merged 7 commits into
pypa:mainfrom
henryiii:henryiii/feat/cp315-android
May 16, 2026
Merged

henryiii merged 7 commits into
pypa:mainfrom
henryiii:henryiii/feat/cp315-android

Conversation

@henryiii

Copy link
Copy Markdown
Contributor

🤖 Human triggered, AI assisted PR (using this skill). AI text below. 🤖

Summary

Adds CPython 3.15 support for the Android platform, cherry-picked from henryiii/feat/cp315-ios-android with all iOS-specific changes reverted.

What's included (from the source branch)

  • Android cp315 entries in build-platforms.toml
  • Android cp315 test expectations in test/utils.py
  • README table updates (Android column for 3.15, footnote renumbering, Pyodide/delvewheel docs fixes)

What was reverted (iOS-specific)

  • iOS cp315 entries in build-platforms.toml
  • ios.py assert removal (restored assert target_python.exists())
  • update_pythons.py iOS 3.15+ download URL logic
  • iOS cp315 test expectations in test/utils.py
  • README iOS column for 3.15 (set to N/A)

Assisted-by: OpenCode:glm-5

henryiii added 7 commits May 15, 2026 14:14
Add cp315 identifiers to build-platforms.toml for both iOS (arm64_iphoneos,
x86_64_iphonesimulator, arm64_iphonesimulator) and Android (arm64_v8a, x86_64).
Update bin/update_pythons.py to route iOS 3.15+ to python.org instead of
BeeWare GitHub releases. Update README.md platform table to show Android and
iOS as supported for 3.15. Add cp315-cp315 to expected_wheels test defaults
for android and ios platforms.

Assisted-by: OpenCode:Kimi-K2.6
Signed-off-by: Henry Schreiner <[email protected]>
All changes made and linting passes. Here's a summary of what was done:
1. test/utils.py:390-394 — Added "cp315-cp315": 24 to the Android API level mapping, fixing the KeyError: 'cp315-cp315' in test_android.py::test_expected_wheels.
2. cibuildwheel/resources/build-platforms.toml:247 — Removed the cp315-ios_x86_64_iphonesimulator entry since CPython 3.15 dropped Intel iOS simulator support.
3. test/utils.py:397-405 — Updated the iOS expected wheels logic to return an empty platform_tags list for x86_64 when the Python version is 3.15+, so no x86_64_iphonesimulator wheels are expected for cp315+ on Intel Macs.
The XCframework slice name (ios-arm64_x86_64-simulator) stays the same in ios.py — I verified the 3.15 tarball still uses that name. The target_python.exists() iOS ARM64 failure on the feature branch is a separate issue (the 3.15 python.org distribution has a different structure than the beeware distributions used for 3.13/3.14) — left alone per your request.

Signed-off-by: Henry Schreiner <[email protected]>
Assisted-by: OpenCode:glm-5.1
Signed-off-by: Henry Schreiner <[email protected]>
Signed-off-by: Henry Schreiner <[email protected]>
Signed-off-by: Henry Schreiner <[email protected]>
Cherry-picked all changes from henryiii/feat/cp315-ios-android, then
reverted iOS-specific parts (iOS 3.15 build configs, ios.py assert
removal, update_pythons.py iOS URL logic, iOS test expectations, and
README iOS column for 3.15). Android cp315 entries, test expectations,
and README Android column remain.

Assisted-by: OpenCode:glm-5
@henryiii
henryiii merged commit c274b4e into pypa:main May 16, 2026
45 checks passed
@henryiii
henryiii deleted the henryiii/feat/cp315-android branch May 16, 2026 06:47
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.

2 participants