Skip to content

Commit 9200810

Browse files
radarherejoerick
andauthored
feat: added Python 3.14 preview for iOS (#2475)
* Added Python 3.14 preview for iOS * Test all Python versions with iOS * add cp314-ios to the build selector table --------- Co-authored-by: Andrew Murray <[email protected]> Co-authored-by: Joe Rickerby <[email protected]>
1 parent 94fe0a2 commit 9200810

File tree

3 files changed

+8
-13
lines changed

3 files changed

+8
-13
lines changed

cibuildwheel/resources/build-platforms.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,4 +229,7 @@ python_configurations = [
229229
{ identifier = "cp313-ios_arm64_iphoneos", version = "3.13", url = "https://github.com/beeware/Python-Apple-support/releases/download/3.13-b9/Python-3.13-iOS-support.b9.tar.gz" },
230230
{ identifier = "cp313-ios_x86_64_iphonesimulator", version = "3.13", url = "https://github.com/beeware/Python-Apple-support/releases/download/3.13-b9/Python-3.13-iOS-support.b9.tar.gz" },
231231
{ identifier = "cp313-ios_arm64_iphonesimulator", version = "3.13", url = "https://github.com/beeware/Python-Apple-support/releases/download/3.13-b9/Python-3.13-iOS-support.b9.tar.gz" },
232+
{ identifier = "cp314-ios_arm64_iphoneos", version = "3.14", url = "https://github.com/beeware/Python-Apple-support/releases/download/3.14-b5/Python-3.14-iOS-support.b5.tar.gz" },
233+
{ identifier = "cp314-ios_x86_64_iphonesimulator", version = "3.14", url = "https://github.com/beeware/Python-Apple-support/releases/download/3.14-b5/Python-3.14-iOS-support.b5.tar.gz" },
234+
{ identifier = "cp314-ios_arm64_iphonesimulator", version = "3.14", url = "https://github.com/beeware/Python-Apple-support/releases/download/3.14-b5/Python-3.14-iOS-support.b5.tar.gz" },
232235
]

docs/options.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ When setting the options, you can use shell-style globbing syntax, as per [fnmat
5959
| Python 3.11 | cp311-macosx_x86_64<br/>cp311-macosx_universal2<br/>cp311-macosx_arm64 | cp311-win_amd64<br/>cp311-win32<br/>cp311-win_arm64 | cp311-manylinux_x86_64<br/>cp311-manylinux_i686<br/>cp311-musllinux_x86_64<br/>cp311-musllinux_i686 | cp311-manylinux_aarch64<br/>cp311-manylinux_ppc64le<br/>cp311-manylinux_s390x<br/>cp311-manylinux_armv7l<br/>cp311-manylinux_riscv64<br/>cp311-musllinux_aarch64<br/>cp311-musllinux_ppc64le<br/>cp311-musllinux_s390x<br/>cp311-musllinux_armv7l<br/>cp311-musllinux_riscv64 | | |
6060
| Python 3.12 | cp312-macosx_x86_64<br/>cp312-macosx_universal2<br/>cp312-macosx_arm64 | cp312-win_amd64<br/>cp312-win32<br/>cp312-win_arm64 | cp312-manylinux_x86_64<br/>cp312-manylinux_i686<br/>cp312-musllinux_x86_64<br/>cp312-musllinux_i686 | cp312-manylinux_aarch64<br/>cp312-manylinux_ppc64le<br/>cp312-manylinux_s390x<br/>cp312-manylinux_armv7l<br/>cp312-manylinux_riscv64<br/>cp312-musllinux_aarch64<br/>cp312-musllinux_ppc64le<br/>cp312-musllinux_s390x<br/>cp312-musllinux_armv7l<br/>cp312-musllinux_riscv64 | | cp312-pyodide_wasm32 |
6161
| Python 3.13 | cp313-macosx_x86_64<br/>cp313-macosx_universal2<br/>cp313-macosx_arm64 | cp313-win_amd64<br/>cp313-win32<br/>cp313-win_arm64 | cp313-manylinux_x86_64<br/>cp313-manylinux_i686<br/>cp313-musllinux_x86_64<br/>cp313-musllinux_i686 | cp313-manylinux_aarch64<br/>cp313-manylinux_ppc64le<br/>cp313-manylinux_s390x<br/>cp313-manylinux_armv7l<br/>cp313-manylinux_riscv64<br/>cp313-musllinux_aarch64<br/>cp313-musllinux_ppc64le<br/>cp313-musllinux_s390x<br/>cp313-musllinux_armv7l<br/>cp313-musllinux_riscv64 | cp313-ios_arm64_iphoneos<br/>cp313-ios_arm64_iphonesimulator<br/>cp313-ios_x86_64_iphonesimulator | cp313-pyodide_wasm32 |
62-
| Python 3.14 | cp314-macosx_x86_64<br/>cp314-macosx_universal2<br/>cp314-macosx_arm64 | cp314-win_amd64<br/>cp314-win32<br/>cp314-win_arm64 | cp314-manylinux_x86_64<br/>cp314-manylinux_i686<br/>cp314-musllinux_x86_64<br/>cp314-musllinux_i686 | cp314-manylinux_aarch64<br/>cp314-manylinux_ppc64le<br/>cp314-manylinux_s390x<br/>cp314-manylinux_armv7l<br/>cp314-manylinux_riscv64<br/>cp314-musllinux_aarch64<br/>cp314-musllinux_ppc64le<br/>cp314-musllinux_s390x<br/>cp314-musllinux_armv7l<br/>cp314-musllinux_riscv64 | | |
62+
| Python 3.14 | cp314-macosx_x86_64<br/>cp314-macosx_universal2<br/>cp314-macosx_arm64 | cp314-win_amd64<br/>cp314-win32<br/>cp314-win_arm64 | cp314-manylinux_x86_64<br/>cp314-manylinux_i686<br/>cp314-musllinux_x86_64<br/>cp314-musllinux_i686 | cp314-manylinux_aarch64<br/>cp314-manylinux_ppc64le<br/>cp314-manylinux_s390x<br/>cp314-manylinux_armv7l<br/>cp314-manylinux_riscv64<br/>cp314-musllinux_aarch64<br/>cp314-musllinux_ppc64le<br/>cp314-musllinux_s390x<br/>cp314-musllinux_armv7l<br/>cp314-musllinux_riscv64 | cp314-ios_arm64_iphoneos<br/>cp314-ios_arm64_iphonesimulator<br/>cp314-ios_x86_64_iphonesimulator | |
6363
| PyPy3.8 v7.3 | pp38-macosx_x86_64<br/>pp38-macosx_arm64 | pp38-win_amd64 | pp38-manylinux_x86_64<br/>pp38-manylinux_i686 | pp38-manylinux_aarch64 | | |
6464
| PyPy3.9 v7.3 | pp39-macosx_x86_64<br/>pp39-macosx_arm64 | pp39-win_amd64 | pp39-manylinux_x86_64<br/>pp39-manylinux_i686 | pp39-manylinux_aarch64 | | |
6565
| PyPy3.10 v7.3 | pp310-macosx_x86_64<br/>pp310-macosx_arm64 | pp310-win_amd64 | pp310-manylinux_x86_64<br/>pp310-manylinux_i686 | pp310-manylinux_aarch64 | | |

test/test_ios.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ def test_ios_platforms(tmp_path, build_config, monkeypatch, capfd):
8383
project_dir,
8484
add_env={
8585
"CIBW_BEFORE_BUILD": "does-exist",
86-
"CIBW_BUILD": "cp313-*",
8786
"CIBW_XBUILD_TOOLS": "does-exist",
8887
"CIBW_TEST_SOURCES": "tests",
8988
"CIBW_TEST_COMMAND": "python -m this && python -m unittest discover tests test_platform.py",
@@ -94,7 +93,7 @@ def test_ios_platforms(tmp_path, build_config, monkeypatch, capfd):
9493

9594
# The expected wheels were produced.
9695
expected_wheels = utils.expected_wheels(
97-
"spam", "0.1.0", platform="ios", python_abi_tags=["cp313-cp313"]
96+
"spam", "0.1.0", platform="ios", python_abi_tags=["cp313-cp313", "cp314-cp314"]
9897
)
9998
assert set(actual_wheels) == set(expected_wheels)
10099

@@ -121,7 +120,6 @@ def test_no_test_sources(tmp_path, capfd):
121120
project_dir,
122121
add_env={
123122
"CIBW_PLATFORM": "ios",
124-
"CIBW_BUILD": "cp313-*",
125123
"CIBW_TEST_REQUIRES": "pytest",
126124
"CIBW_TEST_COMMAND": "python -m pytest",
127125
"CIBW_XBUILD_TOOLS": "",
@@ -153,7 +151,6 @@ def test_ios_testing_with_placeholder(tmp_path, capfd):
153151
project_dir,
154152
add_env={
155153
"CIBW_PLATFORM": "ios",
156-
"CIBW_BUILD": "cp313-*",
157154
"CIBW_TEST_REQUIRES": "pytest",
158155
"CIBW_TEST_COMMAND": "pytest {project}/tests",
159156
"CIBW_XBUILD_TOOLS": "",
@@ -180,7 +177,6 @@ def test_ios_test_command_short_circuit(tmp_path, capfd):
180177
project_dir,
181178
add_env={
182179
"CIBW_PLATFORM": "ios",
183-
"CIBW_BUILD": "cp313-*",
184180
"CIBW_XBUILD_TOOLS": "",
185181
"CIBW_TEST_SOURCES": "tests",
186182
"CIBW_TEST_COMMAND": "python -m not_a_module && python -m this",
@@ -209,7 +205,6 @@ def test_missing_xbuild_tool(tmp_path, capfd):
209205
project_dir,
210206
add_env={
211207
"CIBW_PLATFORM": "ios",
212-
"CIBW_BUILD": "cp313-*",
213208
"CIBW_TEST_COMMAND": "python -m tests",
214209
"CIBW_XBUILD_TOOLS": "does-not-exist",
215210
},
@@ -235,7 +230,6 @@ def test_no_xbuild_tool_definition(tmp_path, capfd):
235230
project_dir,
236231
add_env={
237232
"CIBW_PLATFORM": "ios",
238-
"CIBW_BUILD": "cp313-*",
239233
"CIBW_TEST_SKIP": "*",
240234
},
241235
)
@@ -245,7 +239,7 @@ def test_no_xbuild_tool_definition(tmp_path, capfd):
245239
"spam",
246240
"0.1.0",
247241
platform="ios",
248-
python_abi_tags=["cp313-cp313"],
242+
python_abi_tags=["cp313-cp313", "cp314-cp314"],
249243
)
250244
assert set(actual_wheels) == set(expected_wheels)
251245

@@ -269,14 +263,13 @@ def test_empty_xbuild_tool_definition(tmp_path, capfd):
269263
project_dir,
270264
add_env={
271265
"CIBW_PLATFORM": "ios",
272-
"CIBW_BUILD": "cp313-*",
273266
"CIBW_TEST_SKIP": "*",
274267
"CIBW_XBUILD_TOOLS": "",
275268
},
276269
)
277270

278271
expected_wheels = utils.expected_wheels(
279-
"spam", "0.1.0", platform="ios", python_abi_tags=["cp313-cp313"]
272+
"spam", "0.1.0", platform="ios", python_abi_tags=["cp313-cp313", "cp314-cp314"]
280273
)
281274
assert set(actual_wheels) == set(expected_wheels)
282275

@@ -306,7 +299,6 @@ def test_spam():
306299
project_dir,
307300
add_env={
308301
"CIBW_PLATFORM": "ios",
309-
"CIBW_BUILD": "cp313-*",
310302
"CIBW_TEST_COMMAND": "pytest ./tests",
311303
"CIBW_TEST_SOURCES": "tests",
312304
"CIBW_TEST_REQUIRES": "pytest",
@@ -315,7 +307,7 @@ def test_spam():
315307
)
316308

317309
expected_wheels = utils.expected_wheels(
318-
"spam", "0.1.0", platform="ios", python_abi_tags=["cp313-cp313"]
310+
"spam", "0.1.0", platform="ios", python_abi_tags=["cp313-cp313", "cp314-cp314"]
319311
)
320312
assert set(actual_wheels) == set(expected_wheels)
321313

0 commit comments

Comments
 (0)