feat: drop python 3.6 & 3.7 support (#2282)
This commit is contained in:
@@ -26,15 +26,12 @@ While cibuildwheel itself requires a recent Python version to run (we support th
|
|||||||
|
|
||||||
| | macOS Intel | macOS Apple Silicon | Windows 64bit | Windows 32bit | Windows Arm64 | manylinux<br/>musllinux x86_64 | manylinux<br/>musllinux i686 | manylinux<br/>musllinux aarch64 | manylinux<br/>musllinux ppc64le | manylinux<br/>musllinux s390x | manylinux<br/>musllinux armv7l | Pyodide |
|
| | macOS Intel | macOS Apple Silicon | Windows 64bit | Windows 32bit | Windows Arm64 | manylinux<br/>musllinux x86_64 | manylinux<br/>musllinux i686 | manylinux<br/>musllinux aarch64 | manylinux<br/>musllinux ppc64le | manylinux<br/>musllinux s390x | manylinux<br/>musllinux armv7l | Pyodide |
|
||||||
|----------------|----|-----|-----|-----|-----|----|-----|----|-----|-----|---|-----|
|
|----------------|----|-----|-----|-----|-----|----|-----|----|-----|-----|---|-----|
|
||||||
| CPython 3.6 | ✅ | N/A | ✅ | ✅ | N/A | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |
|
|
||||||
| CPython 3.7 | ✅ | N/A | ✅ | ✅ | N/A | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |
|
|
||||||
| CPython 3.8 | ✅ | ✅ | ✅ | ✅ | N/A | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |
|
| CPython 3.8 | ✅ | ✅ | ✅ | ✅ | N/A | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |
|
||||||
| CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |
|
| CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |
|
||||||
| CPython 3.10 | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |
|
| CPython 3.10 | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |
|
||||||
| CPython 3.11 | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |
|
| CPython 3.11 | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |
|
||||||
| CPython 3.12 | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | ✅⁴ |
|
| CPython 3.12 | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | ✅⁴ |
|
||||||
| CPython 3.13³ | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |
|
| CPython 3.13³ | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁵ | N/A |
|
||||||
| PyPy 3.7 v7.3 | ✅ | N/A | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A |
|
|
||||||
| PyPy 3.8 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A |
|
| PyPy 3.8 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A |
|
||||||
| PyPy 3.9 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A |
|
| PyPy 3.9 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A |
|
||||||
| PyPy 3.10 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A |
|
| PyPy 3.10 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A | N/A | N/A |
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ def build_in_container(
|
|||||||
log.build_start(config.identifier)
|
log.build_start(config.identifier)
|
||||||
build_options = options.build_options(config.identifier)
|
build_options = options.build_options(config.identifier)
|
||||||
build_frontend = build_options.build_frontend or BuildFrontendConfig("pip")
|
build_frontend = build_options.build_frontend or BuildFrontendConfig("pip")
|
||||||
use_uv = build_frontend.name == "build[uv]" and Version(config.version) >= Version("3.8")
|
use_uv = build_frontend.name == "build[uv]"
|
||||||
pip = ["uv", "pip"] if use_uv else ["pip"]
|
pip = ["uv", "pip"] if use_uv else ["pip"]
|
||||||
|
|
||||||
dependency_constraint_flags: list[PathOrStr] = []
|
dependency_constraint_flags: list[PathOrStr] = []
|
||||||
|
|||||||
+14
-23
@@ -191,11 +191,6 @@ def install_pypy(tmp: Path, url: str) -> Path:
|
|||||||
return installation_path / "bin" / "pypy3"
|
return installation_path / "bin" / "pypy3"
|
||||||
|
|
||||||
|
|
||||||
def can_use_uv(python_configuration: PythonConfiguration) -> bool:
|
|
||||||
conditions = (Version(python_configuration.version) >= Version("3.8"),)
|
|
||||||
return all(conditions)
|
|
||||||
|
|
||||||
|
|
||||||
def setup_python(
|
def setup_python(
|
||||||
tmp: Path,
|
tmp: Path,
|
||||||
python_configuration: PythonConfiguration,
|
python_configuration: PythonConfiguration,
|
||||||
@@ -203,9 +198,6 @@ def setup_python(
|
|||||||
environment: ParsedEnvironment,
|
environment: ParsedEnvironment,
|
||||||
build_frontend: BuildFrontendName,
|
build_frontend: BuildFrontendName,
|
||||||
) -> tuple[Path, dict[str, str]]:
|
) -> tuple[Path, dict[str, str]]:
|
||||||
if build_frontend == "build[uv]" and not can_use_uv(python_configuration):
|
|
||||||
build_frontend = "build"
|
|
||||||
|
|
||||||
uv_path = find_uv()
|
uv_path = find_uv()
|
||||||
use_uv = build_frontend == "build[uv]"
|
use_uv = build_frontend == "build[uv]"
|
||||||
|
|
||||||
@@ -315,20 +307,19 @@ def setup_python(
|
|||||||
)
|
)
|
||||||
env["MACOSX_DEPLOYMENT_TARGET"] = default_target
|
env["MACOSX_DEPLOYMENT_TARGET"] = default_target
|
||||||
|
|
||||||
if python_configuration.version not in {"3.6", "3.7"}:
|
if config_is_arm64:
|
||||||
if config_is_arm64:
|
# macOS 11 is the first OS with arm64 support, so the wheels
|
||||||
# macOS 11 is the first OS with arm64 support, so the wheels
|
# have that as a minimum.
|
||||||
# have that as a minimum.
|
env.setdefault("_PYTHON_HOST_PLATFORM", "macosx-11.0-arm64")
|
||||||
env.setdefault("_PYTHON_HOST_PLATFORM", "macosx-11.0-arm64")
|
env.setdefault("ARCHFLAGS", "-arch arm64")
|
||||||
env.setdefault("ARCHFLAGS", "-arch arm64")
|
elif config_is_universal2:
|
||||||
elif config_is_universal2:
|
env.setdefault("_PYTHON_HOST_PLATFORM", "macosx-10.9-universal2")
|
||||||
env.setdefault("_PYTHON_HOST_PLATFORM", "macosx-10.9-universal2")
|
env.setdefault("ARCHFLAGS", "-arch arm64 -arch x86_64")
|
||||||
env.setdefault("ARCHFLAGS", "-arch arm64 -arch x86_64")
|
elif python_configuration.identifier.endswith("x86_64"):
|
||||||
elif python_configuration.identifier.endswith("x86_64"):
|
# even on the macos11.0 Python installer, on the x86_64 side it's
|
||||||
# even on the macos11.0 Python installer, on the x86_64 side it's
|
# compatible back to 10.9.
|
||||||
# compatible back to 10.9.
|
env.setdefault("_PYTHON_HOST_PLATFORM", "macosx-10.9-x86_64")
|
||||||
env.setdefault("_PYTHON_HOST_PLATFORM", "macosx-10.9-x86_64")
|
env.setdefault("ARCHFLAGS", "-arch x86_64")
|
||||||
env.setdefault("ARCHFLAGS", "-arch x86_64")
|
|
||||||
|
|
||||||
building_arm64 = config_is_arm64 or config_is_universal2
|
building_arm64 = config_is_arm64 or config_is_universal2
|
||||||
if building_arm64 and get_macos_version() < (10, 16) and "SDKROOT" not in env:
|
if building_arm64 and get_macos_version() < (10, 16) and "SDKROOT" not in env:
|
||||||
@@ -416,7 +407,7 @@ def build(options: Options, tmp_path: Path) -> None:
|
|||||||
for config in python_configurations:
|
for config in python_configurations:
|
||||||
build_options = options.build_options(config.identifier)
|
build_options = options.build_options(config.identifier)
|
||||||
build_frontend = build_options.build_frontend or BuildFrontendConfig("pip")
|
build_frontend = build_options.build_frontend or BuildFrontendConfig("pip")
|
||||||
use_uv = build_frontend.name == "build[uv]" and can_use_uv(config)
|
use_uv = build_frontend.name == "build[uv]"
|
||||||
uv_path = find_uv()
|
uv_path = find_uv()
|
||||||
if use_uv and uv_path is None:
|
if use_uv and uv_path is None:
|
||||||
msg = "uv not found"
|
msg = "uv not found"
|
||||||
|
|||||||
@@ -980,7 +980,12 @@ def _get_pinned_container_images() -> Mapping[str, Mapping[str, str]]:
|
|||||||
|
|
||||||
def deprecated_selectors(name: str, selector: str, *, error: bool = False) -> None:
|
def deprecated_selectors(name: str, selector: str, *, error: bool = False) -> None:
|
||||||
if "p2" in selector or "p35" in selector:
|
if "p2" in selector or "p35" in selector:
|
||||||
msg = f"cibuildwheel 2.x no longer supports Python < 3.6. Please use the 1.x series or update {name}"
|
msg = f"cibuildwheel 3.x no longer supports Python < 3.8. Please use the 1.x series or update {name}"
|
||||||
|
if error:
|
||||||
|
raise errors.DeprecationError(msg)
|
||||||
|
log.warning(msg)
|
||||||
|
if "p36" in selector or "p37" in selector:
|
||||||
|
msg = f"cibuildwheel 3.x no longer supports Python < 3.8. Please use the 2.x series or update {name}"
|
||||||
if error:
|
if error:
|
||||||
raise errors.DeprecationError(msg)
|
raise errors.DeprecationError(msg)
|
||||||
log.warning(msg)
|
log.warning(msg)
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
[linux]
|
[linux]
|
||||||
python_configurations = [
|
python_configurations = [
|
||||||
{ identifier = "cp36-manylinux_x86_64", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
|
|
||||||
{ identifier = "cp37-manylinux_x86_64", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
|
|
||||||
{ identifier = "cp38-manylinux_x86_64", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
{ identifier = "cp38-manylinux_x86_64", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
||||||
{ identifier = "cp39-manylinux_x86_64", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
{ identifier = "cp39-manylinux_x86_64", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
||||||
{ identifier = "cp310-manylinux_x86_64", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
{ identifier = "cp310-manylinux_x86_64", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
||||||
@@ -9,8 +7,6 @@ python_configurations = [
|
|||||||
{ identifier = "cp312-manylinux_x86_64", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
{ identifier = "cp312-manylinux_x86_64", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
||||||
{ identifier = "cp313-manylinux_x86_64", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
{ identifier = "cp313-manylinux_x86_64", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
||||||
{ identifier = "cp313t-manylinux_x86_64", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
{ identifier = "cp313t-manylinux_x86_64", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
||||||
{ identifier = "cp36-manylinux_i686", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
|
|
||||||
{ identifier = "cp37-manylinux_i686", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
|
|
||||||
{ identifier = "cp38-manylinux_i686", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
{ identifier = "cp38-manylinux_i686", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
||||||
{ identifier = "cp39-manylinux_i686", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
{ identifier = "cp39-manylinux_i686", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
||||||
{ identifier = "cp310-manylinux_i686", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
{ identifier = "cp310-manylinux_i686", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
||||||
@@ -18,13 +14,10 @@ python_configurations = [
|
|||||||
{ identifier = "cp312-manylinux_i686", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
{ identifier = "cp312-manylinux_i686", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
||||||
{ identifier = "cp313-manylinux_i686", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
{ identifier = "cp313-manylinux_i686", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
||||||
{ identifier = "cp313t-manylinux_i686", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
{ identifier = "cp313t-manylinux_i686", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
||||||
{ identifier = "pp37-manylinux_x86_64", version = "3.7", path_str = "/opt/python/pp37-pypy37_pp73" },
|
|
||||||
{ identifier = "pp38-manylinux_x86_64", version = "3.8", path_str = "/opt/python/pp38-pypy38_pp73" },
|
{ identifier = "pp38-manylinux_x86_64", version = "3.8", path_str = "/opt/python/pp38-pypy38_pp73" },
|
||||||
{ identifier = "pp39-manylinux_x86_64", version = "3.9", path_str = "/opt/python/pp39-pypy39_pp73" },
|
{ identifier = "pp39-manylinux_x86_64", version = "3.9", path_str = "/opt/python/pp39-pypy39_pp73" },
|
||||||
{ identifier = "pp310-manylinux_x86_64", version = "3.10", path_str = "/opt/python/pp310-pypy310_pp73" },
|
{ identifier = "pp310-manylinux_x86_64", version = "3.10", path_str = "/opt/python/pp310-pypy310_pp73" },
|
||||||
{ identifier = "pp311-manylinux_x86_64", version = "3.11", path_str = "/opt/python/pp311-pypy311_pp73" },
|
{ identifier = "pp311-manylinux_x86_64", version = "3.11", path_str = "/opt/python/pp311-pypy311_pp73" },
|
||||||
{ identifier = "cp36-manylinux_aarch64", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
|
|
||||||
{ identifier = "cp37-manylinux_aarch64", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
|
|
||||||
{ identifier = "cp38-manylinux_aarch64", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
{ identifier = "cp38-manylinux_aarch64", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
||||||
{ identifier = "cp39-manylinux_aarch64", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
{ identifier = "cp39-manylinux_aarch64", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
||||||
{ identifier = "cp310-manylinux_aarch64", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
{ identifier = "cp310-manylinux_aarch64", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
||||||
@@ -32,8 +25,6 @@ python_configurations = [
|
|||||||
{ identifier = "cp312-manylinux_aarch64", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
{ identifier = "cp312-manylinux_aarch64", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
||||||
{ identifier = "cp313-manylinux_aarch64", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
{ identifier = "cp313-manylinux_aarch64", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
||||||
{ identifier = "cp313t-manylinux_aarch64", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
{ identifier = "cp313t-manylinux_aarch64", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
||||||
{ identifier = "cp36-manylinux_ppc64le", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
|
|
||||||
{ identifier = "cp37-manylinux_ppc64le", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
|
|
||||||
{ identifier = "cp38-manylinux_ppc64le", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
{ identifier = "cp38-manylinux_ppc64le", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
||||||
{ identifier = "cp39-manylinux_ppc64le", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
{ identifier = "cp39-manylinux_ppc64le", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
||||||
{ identifier = "cp310-manylinux_ppc64le", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
{ identifier = "cp310-manylinux_ppc64le", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
||||||
@@ -41,8 +32,6 @@ python_configurations = [
|
|||||||
{ identifier = "cp312-manylinux_ppc64le", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
{ identifier = "cp312-manylinux_ppc64le", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
||||||
{ identifier = "cp313-manylinux_ppc64le", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
{ identifier = "cp313-manylinux_ppc64le", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
||||||
{ identifier = "cp313t-manylinux_ppc64le", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
{ identifier = "cp313t-manylinux_ppc64le", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
||||||
{ identifier = "cp36-manylinux_s390x", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
|
|
||||||
{ identifier = "cp37-manylinux_s390x", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
|
|
||||||
{ identifier = "cp38-manylinux_s390x", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
{ identifier = "cp38-manylinux_s390x", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
||||||
{ identifier = "cp39-manylinux_s390x", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
{ identifier = "cp39-manylinux_s390x", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
||||||
{ identifier = "cp310-manylinux_s390x", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
{ identifier = "cp310-manylinux_s390x", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
||||||
@@ -50,8 +39,6 @@ python_configurations = [
|
|||||||
{ identifier = "cp312-manylinux_s390x", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
{ identifier = "cp312-manylinux_s390x", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
||||||
{ identifier = "cp313-manylinux_s390x", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
{ identifier = "cp313-manylinux_s390x", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
||||||
{ identifier = "cp313t-manylinux_s390x", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
{ identifier = "cp313t-manylinux_s390x", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
||||||
{ identifier = "cp36-manylinux_armv7l", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
|
|
||||||
{ identifier = "cp37-manylinux_armv7l", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
|
|
||||||
{ identifier = "cp38-manylinux_armv7l", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
{ identifier = "cp38-manylinux_armv7l", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
||||||
{ identifier = "cp39-manylinux_armv7l", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
{ identifier = "cp39-manylinux_armv7l", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
||||||
{ identifier = "cp310-manylinux_armv7l", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
{ identifier = "cp310-manylinux_armv7l", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
||||||
@@ -59,18 +46,14 @@ python_configurations = [
|
|||||||
{ identifier = "cp312-manylinux_armv7l", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
{ identifier = "cp312-manylinux_armv7l", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
||||||
{ identifier = "cp313-manylinux_armv7l", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
{ identifier = "cp313-manylinux_armv7l", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
||||||
{ identifier = "cp313t-manylinux_armv7l", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
{ identifier = "cp313t-manylinux_armv7l", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
||||||
{ identifier = "pp37-manylinux_aarch64", version = "3.7", path_str = "/opt/python/pp37-pypy37_pp73" },
|
|
||||||
{ identifier = "pp38-manylinux_aarch64", version = "3.8", path_str = "/opt/python/pp38-pypy38_pp73" },
|
{ identifier = "pp38-manylinux_aarch64", version = "3.8", path_str = "/opt/python/pp38-pypy38_pp73" },
|
||||||
{ identifier = "pp39-manylinux_aarch64", version = "3.9", path_str = "/opt/python/pp39-pypy39_pp73" },
|
{ identifier = "pp39-manylinux_aarch64", version = "3.9", path_str = "/opt/python/pp39-pypy39_pp73" },
|
||||||
{ identifier = "pp310-manylinux_aarch64", version = "3.10", path_str = "/opt/python/pp310-pypy310_pp73" },
|
{ identifier = "pp310-manylinux_aarch64", version = "3.10", path_str = "/opt/python/pp310-pypy310_pp73" },
|
||||||
{ identifier = "pp311-manylinux_aarch64", version = "3.11", path_str = "/opt/python/pp311-pypy311_pp73" },
|
{ identifier = "pp311-manylinux_aarch64", version = "3.11", path_str = "/opt/python/pp311-pypy311_pp73" },
|
||||||
{ identifier = "pp37-manylinux_i686", version = "3.7", path_str = "/opt/python/pp37-pypy37_pp73" },
|
|
||||||
{ identifier = "pp38-manylinux_i686", version = "3.8", path_str = "/opt/python/pp38-pypy38_pp73" },
|
{ identifier = "pp38-manylinux_i686", version = "3.8", path_str = "/opt/python/pp38-pypy38_pp73" },
|
||||||
{ identifier = "pp39-manylinux_i686", version = "3.9", path_str = "/opt/python/pp39-pypy39_pp73" },
|
{ identifier = "pp39-manylinux_i686", version = "3.9", path_str = "/opt/python/pp39-pypy39_pp73" },
|
||||||
{ identifier = "pp310-manylinux_i686", version = "3.10", path_str = "/opt/python/pp310-pypy310_pp73" },
|
{ identifier = "pp310-manylinux_i686", version = "3.10", path_str = "/opt/python/pp310-pypy310_pp73" },
|
||||||
{ identifier = "pp311-manylinux_i686", version = "3.11", path_str = "/opt/python/pp311-pypy311_pp73" },
|
{ identifier = "pp311-manylinux_i686", version = "3.11", path_str = "/opt/python/pp311-pypy311_pp73" },
|
||||||
{ identifier = "cp36-musllinux_x86_64", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
|
|
||||||
{ identifier = "cp37-musllinux_x86_64", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
|
|
||||||
{ identifier = "cp38-musllinux_x86_64", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
{ identifier = "cp38-musllinux_x86_64", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
||||||
{ identifier = "cp39-musllinux_x86_64", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
{ identifier = "cp39-musllinux_x86_64", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
||||||
{ identifier = "cp310-musllinux_x86_64", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
{ identifier = "cp310-musllinux_x86_64", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
||||||
@@ -78,8 +61,6 @@ python_configurations = [
|
|||||||
{ identifier = "cp312-musllinux_x86_64", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
{ identifier = "cp312-musllinux_x86_64", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
||||||
{ identifier = "cp313-musllinux_x86_64", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
{ identifier = "cp313-musllinux_x86_64", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
||||||
{ identifier = "cp313t-musllinux_x86_64", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
{ identifier = "cp313t-musllinux_x86_64", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
||||||
{ identifier = "cp36-musllinux_i686", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
|
|
||||||
{ identifier = "cp37-musllinux_i686", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
|
|
||||||
{ identifier = "cp38-musllinux_i686", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
{ identifier = "cp38-musllinux_i686", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
||||||
{ identifier = "cp39-musllinux_i686", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
{ identifier = "cp39-musllinux_i686", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
||||||
{ identifier = "cp310-musllinux_i686", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
{ identifier = "cp310-musllinux_i686", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
||||||
@@ -87,8 +68,6 @@ python_configurations = [
|
|||||||
{ identifier = "cp312-musllinux_i686", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
{ identifier = "cp312-musllinux_i686", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
||||||
{ identifier = "cp313-musllinux_i686", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
{ identifier = "cp313-musllinux_i686", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
||||||
{ identifier = "cp313t-musllinux_i686", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
{ identifier = "cp313t-musllinux_i686", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
||||||
{ identifier = "cp36-musllinux_aarch64", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
|
|
||||||
{ identifier = "cp37-musllinux_aarch64", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
|
|
||||||
{ identifier = "cp38-musllinux_aarch64", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
{ identifier = "cp38-musllinux_aarch64", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
||||||
{ identifier = "cp39-musllinux_aarch64", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
{ identifier = "cp39-musllinux_aarch64", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
||||||
{ identifier = "cp310-musllinux_aarch64", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
{ identifier = "cp310-musllinux_aarch64", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
||||||
@@ -96,8 +75,6 @@ python_configurations = [
|
|||||||
{ identifier = "cp312-musllinux_aarch64", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
{ identifier = "cp312-musllinux_aarch64", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
||||||
{ identifier = "cp313-musllinux_aarch64", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
{ identifier = "cp313-musllinux_aarch64", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
||||||
{ identifier = "cp313t-musllinux_aarch64", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
{ identifier = "cp313t-musllinux_aarch64", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
||||||
{ identifier = "cp36-musllinux_ppc64le", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
|
|
||||||
{ identifier = "cp37-musllinux_ppc64le", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
|
|
||||||
{ identifier = "cp38-musllinux_ppc64le", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
{ identifier = "cp38-musllinux_ppc64le", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
||||||
{ identifier = "cp39-musllinux_ppc64le", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
{ identifier = "cp39-musllinux_ppc64le", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
||||||
{ identifier = "cp310-musllinux_ppc64le", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
{ identifier = "cp310-musllinux_ppc64le", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
||||||
@@ -105,8 +82,6 @@ python_configurations = [
|
|||||||
{ identifier = "cp312-musllinux_ppc64le", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
{ identifier = "cp312-musllinux_ppc64le", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
||||||
{ identifier = "cp313-musllinux_ppc64le", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
{ identifier = "cp313-musllinux_ppc64le", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
||||||
{ identifier = "cp313t-musllinux_ppc64le", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
{ identifier = "cp313t-musllinux_ppc64le", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
||||||
{ identifier = "cp36-musllinux_s390x", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
|
|
||||||
{ identifier = "cp37-musllinux_s390x", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
|
|
||||||
{ identifier = "cp38-musllinux_s390x", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
{ identifier = "cp38-musllinux_s390x", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
||||||
{ identifier = "cp39-musllinux_s390x", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
{ identifier = "cp39-musllinux_s390x", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
||||||
{ identifier = "cp310-musllinux_s390x", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
{ identifier = "cp310-musllinux_s390x", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
||||||
@@ -114,8 +89,6 @@ python_configurations = [
|
|||||||
{ identifier = "cp312-musllinux_s390x", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
{ identifier = "cp312-musllinux_s390x", version = "3.12", path_str = "/opt/python/cp312-cp312" },
|
||||||
{ identifier = "cp313-musllinux_s390x", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
{ identifier = "cp313-musllinux_s390x", version = "3.13", path_str = "/opt/python/cp313-cp313" },
|
||||||
{ identifier = "cp313t-musllinux_s390x", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
{ identifier = "cp313t-musllinux_s390x", version = "3.13", path_str = "/opt/python/cp313-cp313t" },
|
||||||
{ identifier = "cp36-musllinux_armv7l", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
|
|
||||||
{ identifier = "cp37-musllinux_armv7l", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
|
|
||||||
{ identifier = "cp38-musllinux_armv7l", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
{ identifier = "cp38-musllinux_armv7l", version = "3.8", path_str = "/opt/python/cp38-cp38" },
|
||||||
{ identifier = "cp39-musllinux_armv7l", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
{ identifier = "cp39-musllinux_armv7l", version = "3.9", path_str = "/opt/python/cp39-cp39" },
|
||||||
{ identifier = "cp310-musllinux_armv7l", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
{ identifier = "cp310-musllinux_armv7l", version = "3.10", path_str = "/opt/python/cp310-cp310" },
|
||||||
@@ -127,8 +100,6 @@ python_configurations = [
|
|||||||
|
|
||||||
[macos]
|
[macos]
|
||||||
python_configurations = [
|
python_configurations = [
|
||||||
{ identifier = "cp36-macosx_x86_64", version = "3.6", url = "https://www.python.org/ftp/python/3.6.8/python-3.6.8-macosx10.9.pkg" },
|
|
||||||
{ identifier = "cp37-macosx_x86_64", version = "3.7", url = "https://www.python.org/ftp/python/3.7.9/python-3.7.9-macosx10.9.pkg" },
|
|
||||||
{ identifier = "cp38-macosx_x86_64", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
|
{ identifier = "cp38-macosx_x86_64", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
|
||||||
{ identifier = "cp38-macosx_arm64", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
|
{ identifier = "cp38-macosx_arm64", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
|
||||||
{ identifier = "cp38-macosx_universal2", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
|
{ identifier = "cp38-macosx_universal2", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
|
||||||
@@ -150,7 +121,6 @@ python_configurations = [
|
|||||||
{ identifier = "cp313t-macosx_x86_64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.2/python-3.13.2-macos11.pkg" },
|
{ identifier = "cp313t-macosx_x86_64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.2/python-3.13.2-macos11.pkg" },
|
||||||
{ identifier = "cp313t-macosx_arm64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.2/python-3.13.2-macos11.pkg" },
|
{ identifier = "cp313t-macosx_arm64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.2/python-3.13.2-macos11.pkg" },
|
||||||
{ identifier = "cp313t-macosx_universal2", version = "3.13", url = "https://www.python.org/ftp/python/3.13.2/python-3.13.2-macos11.pkg" },
|
{ identifier = "cp313t-macosx_universal2", version = "3.13", url = "https://www.python.org/ftp/python/3.13.2/python-3.13.2-macos11.pkg" },
|
||||||
{ identifier = "pp37-macosx_x86_64", version = "3.7", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.9-osx64.tar.bz2" },
|
|
||||||
{ identifier = "pp38-macosx_x86_64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_x86_64.tar.bz2" },
|
{ identifier = "pp38-macosx_x86_64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_x86_64.tar.bz2" },
|
||||||
{ identifier = "pp38-macosx_arm64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_arm64.tar.bz2" },
|
{ identifier = "pp38-macosx_arm64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_arm64.tar.bz2" },
|
||||||
{ identifier = "pp39-macosx_x86_64", version = "3.9", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.16-macos_x86_64.tar.bz2" },
|
{ identifier = "pp39-macosx_x86_64", version = "3.9", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.16-macos_x86_64.tar.bz2" },
|
||||||
@@ -163,10 +133,6 @@ python_configurations = [
|
|||||||
|
|
||||||
[windows]
|
[windows]
|
||||||
python_configurations = [
|
python_configurations = [
|
||||||
{ identifier = "cp36-win32", version = "3.6.8", arch = "32" },
|
|
||||||
{ identifier = "cp36-win_amd64", version = "3.6.8", arch = "64" },
|
|
||||||
{ identifier = "cp37-win32", version = "3.7.9", arch = "32" },
|
|
||||||
{ identifier = "cp37-win_amd64", version = "3.7.9", arch = "64" },
|
|
||||||
{ identifier = "cp38-win32", version = "3.8.10", arch = "32" },
|
{ identifier = "cp38-win32", version = "3.8.10", arch = "32" },
|
||||||
{ identifier = "cp38-win_amd64", version = "3.8.10", arch = "64" },
|
{ identifier = "cp38-win_amd64", version = "3.8.10", arch = "64" },
|
||||||
{ identifier = "cp39-win32", version = "3.9.13", arch = "32" },
|
{ identifier = "cp39-win32", version = "3.9.13", arch = "32" },
|
||||||
@@ -187,7 +153,6 @@ python_configurations = [
|
|||||||
{ identifier = "cp312-win_arm64", version = "3.12.9", arch = "ARM64" },
|
{ identifier = "cp312-win_arm64", version = "3.12.9", arch = "ARM64" },
|
||||||
{ identifier = "cp313-win_arm64", version = "3.13.2", arch = "ARM64" },
|
{ identifier = "cp313-win_arm64", version = "3.13.2", arch = "ARM64" },
|
||||||
{ identifier = "cp313t-win_arm64", version = "3.13.2", arch = "ARM64" },
|
{ identifier = "cp313t-win_arm64", version = "3.13.2", arch = "ARM64" },
|
||||||
{ identifier = "pp37-win_amd64", version = "3.7", arch = "64", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.9-win64.zip" },
|
|
||||||
{ identifier = "pp38-win_amd64", version = "3.8", arch = "64", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-win64.zip" },
|
{ identifier = "pp38-win_amd64", version = "3.8", arch = "64", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-win64.zip" },
|
||||||
{ identifier = "pp39-win_amd64", version = "3.9", arch = "64", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.16-win64.zip" },
|
{ identifier = "pp39-win_amd64", version = "3.9", arch = "64", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.16-win64.zip" },
|
||||||
{ identifier = "pp310-win_amd64", version = "3.10", arch = "64", url = "https://downloads.python.org/pypy/pypy3.10-v7.3.18-win64.zip" },
|
{ identifier = "pp310-win_amd64", version = "3.10", arch = "64", url = "https://downloads.python.org/pypy/pypy3.10-v7.3.18-win64.zip" },
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
#
|
|
||||||
# This file is autogenerated by pip-compile with python 3.6
|
|
||||||
# To update, run:
|
|
||||||
#
|
|
||||||
# nox -s update_constraints-3.6
|
|
||||||
#
|
|
||||||
build==0.9.0
|
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
|
||||||
delocate==0.10.2
|
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
|
||||||
distlib==0.3.8
|
|
||||||
# via virtualenv
|
|
||||||
filelock==3.4.1
|
|
||||||
# via virtualenv
|
|
||||||
importlib-metadata==4.8.3
|
|
||||||
# via
|
|
||||||
# build
|
|
||||||
# pep517
|
|
||||||
# virtualenv
|
|
||||||
importlib-resources==5.4.0
|
|
||||||
# via virtualenv
|
|
||||||
packaging==21.3
|
|
||||||
# via build
|
|
||||||
pep517==0.13.1
|
|
||||||
# via build
|
|
||||||
platformdirs==2.4.0
|
|
||||||
# via virtualenv
|
|
||||||
pyparsing==3.1.1
|
|
||||||
# via packaging
|
|
||||||
tomli==1.2.3
|
|
||||||
# via
|
|
||||||
# build
|
|
||||||
# pep517
|
|
||||||
typing-extensions==4.1.1
|
|
||||||
# via
|
|
||||||
# delocate
|
|
||||||
# importlib-metadata
|
|
||||||
virtualenv==20.17.1
|
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
|
||||||
wheel==0.37.1
|
|
||||||
# via delocate
|
|
||||||
zipp==3.6.0
|
|
||||||
# via
|
|
||||||
# importlib-metadata
|
|
||||||
# importlib-resources
|
|
||||||
# pep517
|
|
||||||
|
|
||||||
# The following packages are considered to be unsafe in a requirements file:
|
|
||||||
pip==21.3.1
|
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
|
||||||
setuptools==59.6.0
|
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
# This file was autogenerated by uv via the following command:
|
|
||||||
# nox -s update_constraints
|
|
||||||
altgraph==0.17.4
|
|
||||||
# via macholib
|
|
||||||
build==1.1.1
|
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
|
||||||
delocate==0.12.0
|
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
|
||||||
distlib==0.3.9
|
|
||||||
# via virtualenv
|
|
||||||
filelock==3.12.2
|
|
||||||
# via virtualenv
|
|
||||||
importlib-metadata==6.7.0
|
|
||||||
# via
|
|
||||||
# build
|
|
||||||
# virtualenv
|
|
||||||
macholib==1.16.3
|
|
||||||
# via delocate
|
|
||||||
packaging==24.0
|
|
||||||
# via
|
|
||||||
# build
|
|
||||||
# delocate
|
|
||||||
pip==24.0
|
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
|
||||||
platformdirs==4.0.0
|
|
||||||
# via virtualenv
|
|
||||||
pyproject-hooks==1.2.0
|
|
||||||
# via build
|
|
||||||
tomli==2.0.1
|
|
||||||
# via build
|
|
||||||
typing-extensions==4.7.1
|
|
||||||
# via
|
|
||||||
# delocate
|
|
||||||
# importlib-metadata
|
|
||||||
# platformdirs
|
|
||||||
virtualenv==20.26.6
|
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
|
||||||
zipp==3.15.0
|
|
||||||
# via importlib-metadata
|
|
||||||
@@ -1,2 +1 @@
|
|||||||
py36 = { version = "20.21.1", url = "https://github.com/pypa/get-virtualenv/blob/20.21.1/public/virtualenv.pyz?raw=true" }
|
|
||||||
default = { version = "20.29.1", url = "https://github.com/pypa/get-virtualenv/blob/20.29.1/public/virtualenv.pyz?raw=true" }
|
default = { version = "20.29.1", url = "https://github.com/pypa/get-virtualenv/blob/20.29.1/public/virtualenv.pyz?raw=true" }
|
||||||
|
|||||||
@@ -212,10 +212,7 @@ def setup_rust_cross_compile(
|
|||||||
|
|
||||||
|
|
||||||
def can_use_uv(python_configuration: PythonConfiguration) -> bool:
|
def can_use_uv(python_configuration: PythonConfiguration) -> bool:
|
||||||
conditions = (
|
conditions = (not python_configuration.identifier.startswith("pp38-"),)
|
||||||
Version(python_configuration.version) >= Version("3.8"),
|
|
||||||
not python_configuration.identifier.startswith("pp38-"),
|
|
||||||
)
|
|
||||||
return all(conditions)
|
return all(conditions)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+36
-46
@@ -161,15 +161,15 @@ which means it can be given multiple times.
|
|||||||
manylinux-x86_64-image = "manylinux2014"
|
manylinux-x86_64-image = "manylinux2014"
|
||||||
|
|
||||||
[[tool.cibuildwheel.overrides]]
|
[[tool.cibuildwheel.overrides]]
|
||||||
select = "cp36-*"
|
select = "cp38-*"
|
||||||
manylinux-x86_64-image = "manylinux1"
|
manylinux-x86_64-image = "manylinux1"
|
||||||
|
|
||||||
[[tool.cibuildwheel.overrides]]
|
[[tool.cibuildwheel.overrides]]
|
||||||
select = "cp3{7,8,9}-*"
|
select = "cp3{9,10}-*"
|
||||||
manylinux-x86_64-image = "manylinux2010"
|
manylinux-x86_64-image = "manylinux2010"
|
||||||
```
|
```
|
||||||
|
|
||||||
This example will build CPython 3.6 wheels on manylinux1, CPython 3.7-3.9
|
This example will build CPython 3.8 wheels on manylinux1, CPython 3.9-3.10
|
||||||
wheels on manylinux2010, and manylinux2014 wheels for any newer Python
|
wheels on manylinux2010, and manylinux2014 wheels for any newer Python
|
||||||
(like 3.10).
|
(like 3.10).
|
||||||
|
|
||||||
@@ -290,15 +290,12 @@ When setting the options, you can use shell-style globbing syntax, as per [fnmat
|
|||||||
|
|
||||||
| | macOS | Windows | Linux Intel | Linux Other |
|
| | macOS | Windows | Linux Intel | Linux Other |
|
||||||
|---------------|------------------------------------------------------------------------|-----------------------------------------------------|-----------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|---------------|------------------------------------------------------------------------|-----------------------------------------------------|-----------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| Python 3.6 | cp36-macosx_x86_64 | cp36-win_amd64<br/>cp36-win32 | cp36-manylinux_x86_64<br/>cp36-manylinux_i686<br/>cp36-musllinux_x86_64<br/>cp36-musllinux_i686 | cp36-manylinux_aarch64<br/>cp36-manylinux_ppc64le<br/>cp36-manylinux_s390x<br/>cp36-manylinux_armv7l<br/>cp36-musllinux_aarch64<br/>cp36-musllinux_ppc64le<br/>cp36-musllinux_s390x<br/>cp36-musllinux_armv7l |
|
|
||||||
| Python 3.7 | cp37-macosx_x86_64 | cp37-win_amd64<br/>cp37-win32 | cp37-manylinux_x86_64<br/>cp37-manylinux_i686<br/>cp37-musllinux_x86_64<br/>cp37-musllinux_i686 | cp37-manylinux_aarch64<br/>cp37-manylinux_ppc64le<br/>cp37-manylinux_s390x<br/>cp37-manylinux_armv7l<br/>cp37-musllinux_aarch64<br/>cp37-musllinux_ppc64le<br/>cp37-musllinux_s390x<br/>cp37-musllinux_armv7l |
|
|
||||||
| Python 3.8 | cp38-macosx_x86_64<br/>cp38-macosx_universal2<br/>cp38-macosx_arm64 | cp38-win_amd64<br/>cp38-win32 | cp38-manylinux_x86_64<br/>cp38-manylinux_i686<br/>cp38-musllinux_x86_64<br/>cp38-musllinux_i686 | cp38-manylinux_aarch64<br/>cp38-manylinux_ppc64le<br/>cp38-manylinux_s390x<br/>cp38-manylinux_armv7l<br/>cp38-musllinux_aarch64<br/>cp38-musllinux_ppc64le<br/>cp38-musllinux_s390x<br/>cp38-musllinux_armv7l |
|
| Python 3.8 | cp38-macosx_x86_64<br/>cp38-macosx_universal2<br/>cp38-macosx_arm64 | cp38-win_amd64<br/>cp38-win32 | cp38-manylinux_x86_64<br/>cp38-manylinux_i686<br/>cp38-musllinux_x86_64<br/>cp38-musllinux_i686 | cp38-manylinux_aarch64<br/>cp38-manylinux_ppc64le<br/>cp38-manylinux_s390x<br/>cp38-manylinux_armv7l<br/>cp38-musllinux_aarch64<br/>cp38-musllinux_ppc64le<br/>cp38-musllinux_s390x<br/>cp38-musllinux_armv7l |
|
||||||
| Python 3.9 | cp39-macosx_x86_64<br/>cp39-macosx_universal2<br/>cp39-macosx_arm64 | cp39-win_amd64<br/>cp39-win32<br/>cp39-win_arm64 | cp39-manylinux_x86_64<br/>cp39-manylinux_i686<br/>cp39-musllinux_x86_64<br/>cp39-musllinux_i686 | cp39-manylinux_aarch64<br/>cp39-manylinux_ppc64le<br/>cp39-manylinux_s390x<br/>cp39-manylinux_armv7l<br/>cp39-musllinux_aarch64<br/>cp39-musllinux_ppc64le<br/>cp39-musllinux_s390x<br/>cp39-musllinux_armv7l |
|
| Python 3.9 | cp39-macosx_x86_64<br/>cp39-macosx_universal2<br/>cp39-macosx_arm64 | cp39-win_amd64<br/>cp39-win32<br/>cp39-win_arm64 | cp39-manylinux_x86_64<br/>cp39-manylinux_i686<br/>cp39-musllinux_x86_64<br/>cp39-musllinux_i686 | cp39-manylinux_aarch64<br/>cp39-manylinux_ppc64le<br/>cp39-manylinux_s390x<br/>cp39-manylinux_armv7l<br/>cp39-musllinux_aarch64<br/>cp39-musllinux_ppc64le<br/>cp39-musllinux_s390x<br/>cp39-musllinux_armv7l |
|
||||||
| Python 3.10 | cp310-macosx_x86_64<br/>cp310-macosx_universal2<br/>cp310-macosx_arm64 | cp310-win_amd64<br/>cp310-win32<br/>cp310-win_arm64 | cp310-manylinux_x86_64<br/>cp310-manylinux_i686<br/>cp310-musllinux_x86_64<br/>cp310-musllinux_i686 | cp310-manylinux_aarch64<br/>cp310-manylinux_ppc64le<br/>cp310-manylinux_s390x<br/>cp310-manylinux_armv7l<br/>cp310-musllinux_aarch64<br/>cp310-musllinux_ppc64le<br/>cp310-musllinux_s390x<br/>cp310-musllinux_armv7l |
|
| Python 3.10 | cp310-macosx_x86_64<br/>cp310-macosx_universal2<br/>cp310-macosx_arm64 | cp310-win_amd64<br/>cp310-win32<br/>cp310-win_arm64 | cp310-manylinux_x86_64<br/>cp310-manylinux_i686<br/>cp310-musllinux_x86_64<br/>cp310-musllinux_i686 | cp310-manylinux_aarch64<br/>cp310-manylinux_ppc64le<br/>cp310-manylinux_s390x<br/>cp310-manylinux_armv7l<br/>cp310-musllinux_aarch64<br/>cp310-musllinux_ppc64le<br/>cp310-musllinux_s390x<br/>cp310-musllinux_armv7l |
|
||||||
| 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-musllinux_aarch64<br/>cp311-musllinux_ppc64le<br/>cp311-musllinux_s390x<br/>cp311-musllinux_armv7l |
|
| 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-musllinux_aarch64<br/>cp311-musllinux_ppc64le<br/>cp311-musllinux_s390x<br/>cp311-musllinux_armv7l |
|
||||||
| 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-musllinux_armv7l<br/>cp312-musllinux_ppc64le<br/>cp312-musllinux_s390x<br/>cp312-musllinux_armv7l |
|
| 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-musllinux_armv7l<br/>cp312-musllinux_ppc64le<br/>cp312-musllinux_s390x<br/>cp312-musllinux_armv7l |
|
||||||
| 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-musllinux_aarch64<br/>cp313-musllinux_ppc64le<br/>cp313-musllinux_s390x<br/>cp313-musllinux_armv7l |
|
| 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-musllinux_aarch64<br/>cp313-musllinux_ppc64le<br/>cp313-musllinux_s390x<br/>cp313-musllinux_armv7l |
|
||||||
| PyPy3.7 v7.3 | pp37-macosx_x86_64 | pp37-win_amd64 | pp37-manylinux_x86_64<br/>pp37-manylinux_i686 | pp37-manylinux_aarch64 |
|
|
||||||
| 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 |
|
| 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 |
|
||||||
| 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 |
|
| 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 |
|
||||||
| 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 |
|
| 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 |
|
||||||
@@ -311,10 +308,10 @@ The lowest value you can set `MACOSX_DEPLOYMENT_TARGET` is as follows:
|
|||||||
|
|
||||||
| Arch | Python version range | Minimum target |
|
| Arch | Python version range | Minimum target |
|
||||||
|-------|----------------------|----------------|
|
|-------|----------------------|----------------|
|
||||||
| Intel | CPython 3.6-3.11 | 10.9 |
|
| Intel | CPython 3.8-3.11 | 10.9 |
|
||||||
| Intel | CPython 3.12+ | 10.13 |
|
| Intel | CPython 3.12+ | 10.13 |
|
||||||
| AS | CPython or PyPy | 11 |
|
| AS | CPython or PyPy | 11 |
|
||||||
| Intel | PyPy 3.7-3.8 | 10.13 |
|
| Intel | PyPy 3.8 | 10.13 |
|
||||||
| Intel | PyPy 3.9+ | 10.15 |
|
| Intel | PyPy 3.9+ | 10.15 |
|
||||||
|
|
||||||
If you set the value lower, cibuildwheel will cap it to the lowest supported value for each target as needed.
|
If you set the value lower, cibuildwheel will cap it to the lowest supported value for each target as needed.
|
||||||
@@ -331,29 +328,26 @@ See the [cibuildwheel 1 documentation](https://cibuildwheel.pypa.io/en/1.x/) for
|
|||||||
!!! tab examples "Environment variables"
|
!!! tab examples "Environment variables"
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Only build on CPython 3.6
|
# Only build on CPython 3.8
|
||||||
CIBW_BUILD: cp36-*
|
CIBW_BUILD: cp38-*
|
||||||
|
|
||||||
# Skip building on CPython 3.6 on the Mac
|
|
||||||
CIBW_SKIP: cp36-macosx_x86_64
|
|
||||||
|
|
||||||
# Skip building on CPython 3.8 on the Mac
|
# Skip building on CPython 3.8 on the Mac
|
||||||
CIBW_SKIP: cp38-macosx_x86_64
|
CIBW_SKIP: cp38-macosx_x86_64
|
||||||
|
|
||||||
# Skip building on CPython 3.6 on all platforms
|
# Skip building on CPython 3.8 on all platforms
|
||||||
CIBW_SKIP: cp36-*
|
CIBW_SKIP: cp38-*
|
||||||
|
|
||||||
# Skip CPython 3.6 on Windows
|
# Skip CPython 3.8 on Windows
|
||||||
CIBW_SKIP: cp36-win*
|
CIBW_SKIP: cp38-win*
|
||||||
|
|
||||||
# Skip CPython 3.6 on 32-bit Windows
|
# Skip CPython 3.8 on 32-bit Windows
|
||||||
CIBW_SKIP: cp36-win32
|
CIBW_SKIP: cp38-win32
|
||||||
|
|
||||||
# Skip CPython 3.6 and CPython 3.7
|
# Skip CPython 3.8 and CPython 3.9
|
||||||
CIBW_SKIP: cp36-* cp37-*
|
CIBW_SKIP: cp38-* cp39-*
|
||||||
|
|
||||||
# Skip Python 3.6 on Linux
|
# Skip Python 3.8 on Linux
|
||||||
CIBW_SKIP: cp36-manylinux*
|
CIBW_SKIP: cp38-manylinux*
|
||||||
|
|
||||||
# Skip 32-bit builds
|
# Skip 32-bit builds
|
||||||
CIBW_SKIP: "*-win32 *-manylinux_i686"
|
CIBW_SKIP: "*-win32 *-manylinux_i686"
|
||||||
@@ -368,29 +362,26 @@ See the [cibuildwheel 1 documentation](https://cibuildwheel.pypa.io/en/1.x/) for
|
|||||||
|
|
||||||
```toml
|
```toml
|
||||||
[tool.cibuildwheel]
|
[tool.cibuildwheel]
|
||||||
# Only build on CPython 3.6
|
# Only build on CPython 3.8
|
||||||
build = "cp36-*"
|
build = "cp38-*"
|
||||||
|
|
||||||
# Skip building on CPython 3.6 on the Mac
|
|
||||||
skip = "cp36-macosx_x86_64"
|
|
||||||
|
|
||||||
# Skip building on CPython 3.8 on the Mac
|
# Skip building on CPython 3.8 on the Mac
|
||||||
skip = "cp38-macosx_x86_64"
|
skip = "cp38-macosx_x86_64"
|
||||||
|
|
||||||
# Skip building on CPython 3.6 on all platforms
|
# Skip building on CPython 3.8 on all platforms
|
||||||
skip = "cp36-*"
|
skip = "cp38-*"
|
||||||
|
|
||||||
# Skip CPython 3.6 on Windows
|
# Skip CPython 3.8 on Windows
|
||||||
skip = "cp36-win*"
|
skip = "cp38-win*"
|
||||||
|
|
||||||
# Skip CPython 3.6 on 32-bit Windows
|
# Skip CPython 3.8 on 32-bit Windows
|
||||||
skip = "cp36-win32"
|
skip = "cp38-win32"
|
||||||
|
|
||||||
# Skip CPython 3.6 and CPython 3.7
|
# Skip CPython 3.8 and CPython 3.9
|
||||||
skip = ["cp36-*", "cp37-*"]
|
skip = ["cp38-*", "cp39-*"]
|
||||||
|
|
||||||
# Skip Python 3.6 on Linux
|
# Skip Python 3.8 on Linux
|
||||||
skip = "cp36-manylinux*"
|
skip = "cp38-manylinux*"
|
||||||
|
|
||||||
# Skip 32-bit builds
|
# Skip 32-bit builds
|
||||||
skip = ["*-win32", "*-manylinux_i686"]
|
skip = ["*-win32", "*-manylinux_i686"]
|
||||||
@@ -518,7 +509,7 @@ simple keyword assignment in a top level function call. If you need to override
|
|||||||
this behaviour for some reason, you can use this option.
|
this behaviour for some reason, you can use this option.
|
||||||
|
|
||||||
When setting this option, the syntax is the same as `project.requires-python`,
|
When setting this option, the syntax is the same as `project.requires-python`,
|
||||||
using 'version specifiers' like `>=3.6`, according to
|
using 'version specifiers' like `>=3.8`, according to
|
||||||
[PEP440](https://www.python.org/dev/peps/pep-0440/#version-specifiers).
|
[PEP440](https://www.python.org/dev/peps/pep-0440/#version-specifiers).
|
||||||
|
|
||||||
Default: reads your package's Python compatibility from `pyproject.toml`
|
Default: reads your package's Python compatibility from `pyproject.toml`
|
||||||
@@ -539,7 +530,7 @@ the package is compatible with all versions of Python that it can build.
|
|||||||
```toml
|
```toml
|
||||||
[project]
|
[project]
|
||||||
...
|
...
|
||||||
requires-python = ">=3.6"
|
requires-python = ">=3.8"
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that not all build backends fully support using a `[project]` table yet;
|
Note that not all build backends fully support using a `[project]` table yet;
|
||||||
@@ -555,7 +546,7 @@ the package is compatible with all versions of Python that it can build.
|
|||||||
!!! tab examples "Environment variables"
|
!!! tab examples "Environment variables"
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
CIBW_PROJECT_REQUIRES_PYTHON: ">=3.6"
|
CIBW_PROJECT_REQUIRES_PYTHON: ">=3.8"
|
||||||
```
|
```
|
||||||
|
|
||||||
### `CIBW_ENABLE` {: #enable}
|
### `CIBW_ENABLE` {: #enable}
|
||||||
@@ -683,10 +674,9 @@ possible, both through `--installer=uv` passed to build, as well as when making
|
|||||||
all build and test environments. This will generally speed up cibuildwheel.
|
all build and test environments. This will generally speed up cibuildwheel.
|
||||||
Make sure you have an external uv on Windows and macOS, either by
|
Make sure you have an external uv on Windows and macOS, either by
|
||||||
pre-installing it, or installing cibuildwheel with the uv extra,
|
pre-installing it, or installing cibuildwheel with the uv extra,
|
||||||
`cibuildwheel[uv]`. `uv` will not be used for Python 3.6 or Python 3.7. You
|
`cibuildwheel[uv]`. You cannot use uv currently on Windows for ARM or for
|
||||||
cannot use uv currently on Windows for ARM or for musllinux on s390x as
|
musllinux on s390x as binaries are not provided by uv. Legacy dependencies like
|
||||||
binaries are not provided by uv. Legacy dependencies like setuptools on Python
|
setuptools on Python < 3.12 and pip are not installed if using uv.
|
||||||
< 3.12 and pip are not installed if using uv.
|
|
||||||
|
|
||||||
Pyodide ignores this setting, as only "build" is supported.
|
Pyodide ignores this setting, as only "build" is supported.
|
||||||
|
|
||||||
@@ -1389,7 +1379,7 @@ here and it will be used instead.
|
|||||||
If you need different dependencies for each python version, provide them
|
If you need different dependencies for each python version, provide them
|
||||||
in the same folder with a `-pythonXY` suffix. e.g. if your
|
in the same folder with a `-pythonXY` suffix. e.g. if your
|
||||||
`CIBW_DEPENDENCY_VERSIONS=./constraints.txt`, cibuildwheel will use
|
`CIBW_DEPENDENCY_VERSIONS=./constraints.txt`, cibuildwheel will use
|
||||||
`./constraints-python37.txt` on Python 3.7, or fallback to
|
`./constraints-python38.txt` on Python 3.8, or fallback to
|
||||||
`./constraints.txt` if that's not found.
|
`./constraints.txt` if that's not found.
|
||||||
|
|
||||||
Platform-specific environment variables are also available:<br/>
|
Platform-specific environment variables are also available:<br/>
|
||||||
|
|||||||
+3
-3
@@ -100,11 +100,11 @@ You can override the cache folder using the ``CIBW_CACHE_PATH`` environment vari
|
|||||||
CPython:
|
CPython:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
Error: CPython 3.6 is not installed.
|
Error: CPython 3.9 is not installed.
|
||||||
cibuildwheel will not perform system-wide installs when running outside of CI.
|
cibuildwheel will not perform system-wide installs when running outside of CI.
|
||||||
To build locally, install CPython 3.6 on this machine, or, disable this version of Python using CIBW_SKIP=cp36-macosx_*
|
To build locally, install CPython 3.9 on this machine, or, disable this version of Python using CIBW_SKIP=cp39-macosx_*
|
||||||
|
|
||||||
Download link: https://www.python.org/ftp/python/3.6.8/python-3.6.8-macosx10.9.pkg
|
Download link: https://www.python.org/ftp/python/3.9.8/python-3.9.8-macosx10.9.pkg
|
||||||
```
|
```
|
||||||
|
|
||||||
### Pyodide (WebAssembly) builds (experimental)
|
### Pyodide (WebAssembly) builds (experimental)
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ def test(tmp_path):
|
|||||||
add_env={
|
add_env={
|
||||||
"CIBW_MANYLINUX_X86_64_IMAGE": "dockcross/manylinux2014-x64",
|
"CIBW_MANYLINUX_X86_64_IMAGE": "dockcross/manylinux2014-x64",
|
||||||
"CIBW_MANYLINUX_I686_IMAGE": "dockcross/manylinux2014-x86",
|
"CIBW_MANYLINUX_I686_IMAGE": "dockcross/manylinux2014-x86",
|
||||||
"CIBW_BUILD": "cp3{6,7,8,9}-manylinux*",
|
"CIBW_BUILD": "cp3{8,9}-manylinux*",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -48,6 +48,6 @@ def test(tmp_path):
|
|||||||
expected_wheels = [
|
expected_wheels = [
|
||||||
w
|
w
|
||||||
for w in utils.expected_wheels("spam", "0.1.0", musllinux_versions=[])
|
for w in utils.expected_wheels("spam", "0.1.0", musllinux_versions=[])
|
||||||
if "-cp36-" in w or "-cp37-" in w or "-cp38-" in w or "-cp39-" in w
|
if "-cp38-" in w or "-cp39-" in w
|
||||||
]
|
]
|
||||||
assert set(actual_wheels) == set(expected_wheels)
|
assert set(actual_wheels) == set(expected_wheels)
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import platform
|
|
||||||
import re
|
import re
|
||||||
import textwrap
|
import textwrap
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -53,12 +52,10 @@ def get_versions_from_constraint_file(constraint_file: Path) -> dict[str, str]:
|
|||||||
return dict(re.findall(VERSION_REGEX, constraint_file_text))
|
return dict(re.findall(VERSION_REGEX, constraint_file_text))
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("python_version", ["3.6", "3.8", "3.12"])
|
@pytest.mark.parametrize("python_version", ["3.8", "3.12"])
|
||||||
def test_pinned_versions(tmp_path, python_version, build_frontend_env_nouv):
|
def test_pinned_versions(tmp_path, python_version, build_frontend_env_nouv):
|
||||||
if utils.platform == "linux":
|
if utils.platform == "linux":
|
||||||
pytest.skip("linux doesn't pin individual tool versions, it pins manylinux images instead")
|
pytest.skip("linux doesn't pin individual tool versions, it pins manylinux images instead")
|
||||||
if python_version == "3.6" and utils.platform == "macos" and platform.machine() == "arm64":
|
|
||||||
pytest.skip("macOS arm64 does not support Python 3.6")
|
|
||||||
if python_version != "3.12" and utils.platform == "pyodide":
|
if python_version != "3.12" and utils.platform == "pyodide":
|
||||||
pytest.skip(f"pyodide does not support Python {python_version}")
|
pytest.skip(f"pyodide does not support Python {python_version}")
|
||||||
|
|
||||||
@@ -132,12 +129,11 @@ def test_dependency_constraints_file(tmp_path, build_frontend_env_nouv):
|
|||||||
add_env={
|
add_env={
|
||||||
"CIBW_ENVIRONMENT": cibw_environment_option,
|
"CIBW_ENVIRONMENT": cibw_environment_option,
|
||||||
"CIBW_DEPENDENCY_VERSIONS": str(constraints_file),
|
"CIBW_DEPENDENCY_VERSIONS": str(constraints_file),
|
||||||
"CIBW_SKIP": "cp36-*",
|
|
||||||
**build_frontend_env_nouv,
|
**build_frontend_env_nouv,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
# also check that we got the right wheels
|
# also check that we got the right wheels
|
||||||
expected_wheels = [w for w in utils.expected_wheels("spam", "0.1.0") if "-cp36" not in w]
|
expected_wheels = utils.expected_wheels("spam", "0.1.0")
|
||||||
|
|
||||||
assert set(actual_wheels) == set(expected_wheels)
|
assert set(actual_wheels) == set(expected_wheels)
|
||||||
|
|||||||
+2
-5
@@ -198,8 +198,6 @@ def expected_wheels(
|
|||||||
python_abi_tags = ["cp312-cp312"]
|
python_abi_tags = ["cp312-cp312"]
|
||||||
if python_abi_tags is None:
|
if python_abi_tags is None:
|
||||||
python_abi_tags = [
|
python_abi_tags = [
|
||||||
"cp36-cp36m",
|
|
||||||
"cp37-cp37m",
|
|
||||||
"cp38-cp38",
|
"cp38-cp38",
|
||||||
"cp39-cp39",
|
"cp39-cp39",
|
||||||
"cp310-cp310",
|
"cp310-cp310",
|
||||||
@@ -211,7 +209,6 @@ def expected_wheels(
|
|||||||
|
|
||||||
if machine_arch in ["x86_64", "AMD64", "x86", "aarch64"]:
|
if machine_arch in ["x86_64", "AMD64", "x86", "aarch64"]:
|
||||||
python_abi_tags += [
|
python_abi_tags += [
|
||||||
"pp37-pypy37_pp73",
|
|
||||||
"pp38-pypy38_pp73",
|
"pp38-pypy38_pp73",
|
||||||
"pp39-pypy39_pp73",
|
"pp39-pypy39_pp73",
|
||||||
"pp310-pypy310_pp73",
|
"pp310-pypy310_pp73",
|
||||||
@@ -297,12 +294,12 @@ def expected_wheels(
|
|||||||
|
|
||||||
elif platform == "macos":
|
elif platform == "macos":
|
||||||
if python_abi_tag.startswith("pp"):
|
if python_abi_tag.startswith("pp"):
|
||||||
if python_abi_tag.startswith(("pp37", "pp38")):
|
if python_abi_tag.startswith("pp38"):
|
||||||
min_macosx = macosx_deployment_target
|
min_macosx = macosx_deployment_target
|
||||||
else:
|
else:
|
||||||
min_macosx = _floor_macosx(macosx_deployment_target, "10.15")
|
min_macosx = _floor_macosx(macosx_deployment_target, "10.15")
|
||||||
elif python_abi_tag.startswith("cp"):
|
elif python_abi_tag.startswith("cp"):
|
||||||
if python_abi_tag.startswith(("cp36", "cp37", "cp38", "cp39", "cp310", "cp311")):
|
if python_abi_tag.startswith(("cp38", "cp39", "cp310", "cp311")):
|
||||||
min_macosx = macosx_deployment_target
|
min_macosx = macosx_deployment_target
|
||||||
else:
|
else:
|
||||||
min_macosx = _floor_macosx(macosx_deployment_target, "10.13")
|
min_macosx = _floor_macosx(macosx_deployment_target, "10.13")
|
||||||
|
|||||||
@@ -18,6 +18,6 @@ def test_defaults():
|
|||||||
assert dependency_constraints.get_for_python_version("3.9").samefile(
|
assert dependency_constraints.get_for_python_version("3.9").samefile(
|
||||||
resources_dir / "constraints-python39.txt"
|
resources_dir / "constraints-python39.txt"
|
||||||
)
|
)
|
||||||
assert dependency_constraints.get_for_python_version("3.6").samefile(
|
assert dependency_constraints.get_for_python_version("3.13").samefile(
|
||||||
resources_dir / "constraints-python36.txt"
|
resources_dir / "constraints-python313.txt"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ def test_linux_container_split(tmp_path: Path, monkeypatch: pytest.MonkeyPatch)
|
|||||||
archs = "x86_64 i686"
|
archs = "x86_64 i686"
|
||||||
|
|
||||||
[[tool.cibuildwheel.overrides]]
|
[[tool.cibuildwheel.overrides]]
|
||||||
select = "cp{37,38,39,310}-*"
|
select = "cp{38,39,310}-*"
|
||||||
manylinux-x86_64-image = "other_container_image"
|
manylinux-x86_64-image = "other_container_image"
|
||||||
manylinux-i686-image = "other_container_image"
|
manylinux-i686-image = "other_container_image"
|
||||||
|
|
||||||
@@ -68,29 +68,28 @@ def test_linux_container_split(tmp_path: Path, monkeypatch: pytest.MonkeyPatch)
|
|||||||
|
|
||||||
default_container_engine = OCIContainerEngineConfig(name="docker")
|
default_container_engine = OCIContainerEngineConfig(name="docker")
|
||||||
|
|
||||||
assert build_steps[0].container_image == "normal_container_image"
|
assert build_steps[0].container_image == "other_container_image"
|
||||||
assert identifiers(build_steps[0]) == [
|
assert identifiers(build_steps[0]) == ["cp38-manylinux_x86_64"]
|
||||||
"cp36-manylinux_x86_64",
|
assert before_alls(build_steps[0]) == [""]
|
||||||
|
assert container_engines(build_steps[0]) == [default_container_engine]
|
||||||
|
|
||||||
|
assert build_steps[1].container_image == "other_container_image"
|
||||||
|
assert identifiers(build_steps[1]) == ["cp39-manylinux_x86_64"]
|
||||||
|
assert before_alls(build_steps[1]) == ["echo 'a cp39-only command'"]
|
||||||
|
assert container_engines(build_steps[1]) == [default_container_engine]
|
||||||
|
|
||||||
|
assert build_steps[2].container_image == "other_container_image"
|
||||||
|
assert identifiers(build_steps[2]) == ["cp310-manylinux_x86_64"]
|
||||||
|
assert before_alls(build_steps[2]) == [""]
|
||||||
|
assert container_engines(build_steps[2]) == [
|
||||||
|
OCIContainerEngineConfig(name="docker", create_args=("--privileged",))
|
||||||
|
]
|
||||||
|
|
||||||
|
assert build_steps[3].container_image == "normal_container_image"
|
||||||
|
assert identifiers(build_steps[3]) == [
|
||||||
"cp311-manylinux_x86_64",
|
"cp311-manylinux_x86_64",
|
||||||
"cp312-manylinux_x86_64",
|
"cp312-manylinux_x86_64",
|
||||||
"cp313-manylinux_x86_64",
|
"cp313-manylinux_x86_64",
|
||||||
]
|
]
|
||||||
assert before_alls(build_steps[0]) == [""] * 4
|
assert before_alls(build_steps[3]) == [""] * 3
|
||||||
assert container_engines(build_steps[0]) == [default_container_engine] * 4
|
assert container_engines(build_steps[3]) == [default_container_engine] * 3
|
||||||
|
|
||||||
assert build_steps[1].container_image == "other_container_image"
|
|
||||||
assert identifiers(build_steps[1]) == ["cp37-manylinux_x86_64", "cp38-manylinux_x86_64"]
|
|
||||||
assert before_alls(build_steps[1]) == [""] * 2
|
|
||||||
assert container_engines(build_steps[1]) == [default_container_engine] * 2
|
|
||||||
|
|
||||||
assert build_steps[2].container_image == "other_container_image"
|
|
||||||
assert identifiers(build_steps[2]) == ["cp39-manylinux_x86_64"]
|
|
||||||
assert before_alls(build_steps[2]) == ["echo 'a cp39-only command'"]
|
|
||||||
assert container_engines(build_steps[2]) == [default_container_engine]
|
|
||||||
|
|
||||||
assert build_steps[3].container_image == "other_container_image"
|
|
||||||
assert identifiers(build_steps[3]) == ["cp310-manylinux_x86_64"]
|
|
||||||
assert before_alls(build_steps[3]) == [""]
|
|
||||||
assert container_engines(build_steps[3]) == [
|
|
||||||
OCIContainerEngineConfig(name="docker", create_args=("--privileged",))
|
|
||||||
]
|
|
||||||
|
|||||||
@@ -309,6 +309,7 @@ def test_config_settings(platform_specific, platform, intercepted_build_args, mo
|
|||||||
[
|
[
|
||||||
"cp27-*",
|
"cp27-*",
|
||||||
"cp35-*",
|
"cp35-*",
|
||||||
|
"?p36-*",
|
||||||
"?p27*",
|
"?p27*",
|
||||||
"?p2*",
|
"?p2*",
|
||||||
"?p35*",
|
"?p35*",
|
||||||
@@ -327,7 +328,8 @@ def test_build_selector_deprecated_error(monkeypatch, selector, pattern, capsys)
|
|||||||
main()
|
main()
|
||||||
|
|
||||||
stderr = capsys.readouterr().err
|
stderr = capsys.readouterr().err
|
||||||
msg = f"cibuildwheel 2.x no longer supports Python < 3.6. Please use the 1.x series or update {selector}"
|
series = "2" if "6" in pattern else "1"
|
||||||
|
msg = f"cibuildwheel 3.x no longer supports Python < 3.8. Please use the {series}.x series or update {selector}"
|
||||||
assert msg in stderr
|
assert msg in stderr
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ from cibuildwheel.__main__ import main
|
|||||||
from cibuildwheel.oci_container import OCIPlatform
|
from cibuildwheel.oci_container import OCIPlatform
|
||||||
from cibuildwheel.util import file
|
from cibuildwheel.util import file
|
||||||
|
|
||||||
DEFAULT_IDS = {"cp36", "cp37", "cp38", "cp39", "cp310", "cp311", "cp312", "cp313"}
|
DEFAULT_IDS = {"cp38", "cp39", "cp310", "cp311", "cp312", "cp313"}
|
||||||
ALL_IDS = DEFAULT_IDS | {"cp313t", "pp37", "pp38", "pp39", "pp310", "pp311"}
|
ALL_IDS = DEFAULT_IDS | {"cp313t", "pp38", "pp39", "pp310", "pp311"}
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
@@ -114,7 +114,7 @@ manylinux-i686-image = "manylinux2014"
|
|||||||
musllinux-x86_64-image = "musllinux_1_1"
|
musllinux-x86_64-image = "musllinux_1_1"
|
||||||
|
|
||||||
[[tool.cibuildwheel.overrides]]
|
[[tool.cibuildwheel.overrides]]
|
||||||
select = "cp36-manylinux_x86_64"
|
select = "cp38-manylinux_x86_64"
|
||||||
before-all = "true"
|
before-all = "true"
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
@@ -134,8 +134,8 @@ before-all = "true"
|
|||||||
assert kwargs["container"]["oci_platform"] == OCIPlatform.AMD64
|
assert kwargs["container"]["oci_platform"] == OCIPlatform.AMD64
|
||||||
|
|
||||||
identifiers = {x.identifier for x in kwargs["platform_configs"]}
|
identifiers = {x.identifier for x in kwargs["platform_configs"]}
|
||||||
assert identifiers == {"cp36-manylinux_x86_64"}
|
assert identifiers == {"cp38-manylinux_x86_64"}
|
||||||
assert kwargs["options"].build_options("cp36-manylinux_x86_64").before_all == "true"
|
assert kwargs["options"].build_options("cp38-manylinux_x86_64").before_all == "true"
|
||||||
|
|
||||||
kwargs = build_in_container.call_args_list[1][1]
|
kwargs = build_in_container.call_args_list[1][1]
|
||||||
assert "quay.io/pypa/manylinux2014_x86_64" in kwargs["container"]["image"]
|
assert "quay.io/pypa/manylinux2014_x86_64" in kwargs["container"]["image"]
|
||||||
@@ -147,20 +147,19 @@ before-all = "true"
|
|||||||
f"{x}-manylinux_x86_64"
|
f"{x}-manylinux_x86_64"
|
||||||
for x in ALL_IDS
|
for x in ALL_IDS
|
||||||
- {
|
- {
|
||||||
"cp36",
|
"cp38",
|
||||||
"cp310",
|
"cp310",
|
||||||
"cp311",
|
"cp311",
|
||||||
"cp312",
|
"cp312",
|
||||||
"cp313",
|
"cp313",
|
||||||
"cp313t",
|
"cp313t",
|
||||||
"pp37",
|
|
||||||
"pp38",
|
"pp38",
|
||||||
"pp39",
|
"pp39",
|
||||||
"pp310",
|
"pp310",
|
||||||
"pp311",
|
"pp311",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assert kwargs["options"].build_options("cp37-manylinux_x86_64").before_all == ""
|
assert kwargs["options"].build_options("cp39-manylinux_x86_64").before_all == ""
|
||||||
|
|
||||||
kwargs = build_in_container.call_args_list[2][1]
|
kwargs = build_in_container.call_args_list[2][1]
|
||||||
assert "quay.io/pypa/manylinux_2_28_x86_64" in kwargs["container"]["image"]
|
assert "quay.io/pypa/manylinux_2_28_x86_64" in kwargs["container"]["image"]
|
||||||
@@ -175,7 +174,6 @@ before-all = "true"
|
|||||||
"cp312",
|
"cp312",
|
||||||
"cp313",
|
"cp313",
|
||||||
"cp313t",
|
"cp313t",
|
||||||
"pp37",
|
|
||||||
"pp38",
|
"pp38",
|
||||||
"pp39",
|
"pp39",
|
||||||
"pp310",
|
"pp310",
|
||||||
@@ -198,7 +196,7 @@ before-all = "true"
|
|||||||
|
|
||||||
identifiers = {x.identifier for x in kwargs["platform_configs"]}
|
identifiers = {x.identifier for x in kwargs["platform_configs"]}
|
||||||
assert identifiers == {
|
assert identifiers == {
|
||||||
f"{x}-musllinux_x86_64" for x in ALL_IDS & {"cp36", "cp37", "cp38", "cp39"} if "pp" not in x
|
f"{x}-musllinux_x86_64" for x in ALL_IDS & {"cp38", "cp39"} if "pp" not in x
|
||||||
}
|
}
|
||||||
|
|
||||||
kwargs = build_in_container.call_args_list[5][1]
|
kwargs = build_in_container.call_args_list[5][1]
|
||||||
@@ -207,7 +205,7 @@ before-all = "true"
|
|||||||
assert kwargs["container"]["oci_platform"] == OCIPlatform.AMD64
|
assert kwargs["container"]["oci_platform"] == OCIPlatform.AMD64
|
||||||
identifiers = {x.identifier for x in kwargs["platform_configs"]}
|
identifiers = {x.identifier for x in kwargs["platform_configs"]}
|
||||||
assert identifiers == {
|
assert identifiers == {
|
||||||
f"{x}-musllinux_x86_64" for x in ALL_IDS - {"cp36", "cp37", "cp38", "cp39"} if "pp" not in x
|
f"{x}-musllinux_x86_64" for x in ALL_IDS - {"cp38", "cp39"} if "pp" not in x
|
||||||
}
|
}
|
||||||
|
|
||||||
kwargs = build_in_container.call_args_list[6][1]
|
kwargs = build_in_container.call_args_list[6][1]
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ from cibuildwheel.selector import EnableGroup
|
|||||||
|
|
||||||
PYPROJECT_1 = """
|
PYPROJECT_1 = """
|
||||||
[tool.cibuildwheel]
|
[tool.cibuildwheel]
|
||||||
build = ["cp38*", "cp37*"]
|
build = ["cp38-*", "cp313-*"]
|
||||||
skip = ["*musllinux*"]
|
skip = ["*musllinux*"]
|
||||||
environment = {FOO="BAR"}
|
environment = {FOO="BAR"}
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ environment-pass = ["EXAMPLE_ENV"]
|
|||||||
test-requires = "else"
|
test-requires = "else"
|
||||||
|
|
||||||
[[tool.cibuildwheel.overrides]]
|
[[tool.cibuildwheel.overrides]]
|
||||||
select = "cp37*"
|
select = "cp313-*"
|
||||||
test-command = "pyproject-override"
|
test-command = "pyproject-override"
|
||||||
manylinux-x86_64-image = "manylinux2014"
|
manylinux-x86_64-image = "manylinux2014"
|
||||||
"""
|
"""
|
||||||
@@ -60,7 +60,7 @@ def test_options_1(tmp_path, monkeypatch):
|
|||||||
|
|
||||||
override_display = """\
|
override_display = """\
|
||||||
*: pyproject
|
*: pyproject
|
||||||
cp37-manylinux_x86_64, cp37-manylinux_i686: pyproject-override"""
|
cp313-manylinux_x86_64, cp313-manylinux_i686: pyproject-override"""
|
||||||
print(options.summary(identifiers))
|
print(options.summary(identifiers))
|
||||||
|
|
||||||
assert override_display in options.summary(identifiers)
|
assert override_display in options.summary(identifiers)
|
||||||
@@ -78,7 +78,7 @@ def test_options_1(tmp_path, monkeypatch):
|
|||||||
assert local.test_sources == ["test", "other dir"]
|
assert local.test_sources == ["test", "other dir"]
|
||||||
assert local.manylinux_images["x86_64"] == pinned_x86_64_container_image["manylinux1"]
|
assert local.manylinux_images["x86_64"] == pinned_x86_64_container_image["manylinux1"]
|
||||||
|
|
||||||
local = options.build_options("cp37-manylinux_x86_64")
|
local = options.build_options("cp313-manylinux_x86_64")
|
||||||
assert local.manylinux_images is not None
|
assert local.manylinux_images is not None
|
||||||
assert local.test_command == "pyproject-override"
|
assert local.test_command == "pyproject-override"
|
||||||
assert local.test_sources == ["test", "other dir"]
|
assert local.test_sources == ["test", "other dir"]
|
||||||
|
|||||||
Reference in New Issue
Block a user