-
Notifications
You must be signed in to change notification settings - Fork 293
refactor: identifiers in a file #511
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
97ddab5
b1f1f23
9bb8c95
b54f665
9090072
67f59dd
1d91408
4674245
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,67 @@ | ||
| [linux] | ||
| python_configurations = [ | ||
| { identifier = "cp27-manylinux_x86_64", version = "2.7", path_str = "/opt/python/cp27-cp27m" }, | ||
| { identifier = "cp27-manylinux_x86_64", version = "2.7", path_str = "/opt/python/cp27-cp27mu" }, | ||
| { identifier = "cp35-manylinux_x86_64", version = "3.5", path_str = "/opt/python/cp35-cp35m" }, | ||
| { 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 = "cp39-manylinux_x86_64", version = "3.9", path_str = "/opt/python/cp39-cp39" }, | ||
| { identifier = "cp27-manylinux_i686", version = "2.7", path_str = "/opt/python/cp27-cp27m" }, | ||
| { identifier = "cp27-manylinux_i686", version = "2.7", path_str = "/opt/python/cp27-cp27mu" }, | ||
| { identifier = "cp35-manylinux_i686", version = "3.5", path_str = "/opt/python/cp35-cp35m" }, | ||
| { 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 = "cp39-manylinux_i686", version = "3.9", path_str = "/opt/python/cp39-cp39" }, | ||
| { identifier = "pp27-manylinux_x86_64", version = "2.7", path_str = "/opt/python/pp27-pypy_73" }, | ||
| { identifier = "pp36-manylinux_x86_64", version = "3.6", path_str = "/opt/python/pp36-pypy36_pp73" }, | ||
| { identifier = "pp37-manylinux_x86_64", version = "3.7", path_str = "/opt/python/pp37-pypy37_pp73" }, | ||
| { identifier = "cp35-manylinux_aarch64", version = "3.5", path_str = "/opt/python/cp35-cp35m" }, | ||
| { 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 = "cp39-manylinux_aarch64", version = "3.9", path_str = "/opt/python/cp39-cp39" }, | ||
| { identifier = "cp35-manylinux_ppc64le", version = "3.5", path_str = "/opt/python/cp35-cp35m" }, | ||
| { 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 = "cp39-manylinux_ppc64le", version = "3.9", path_str = "/opt/python/cp39-cp39" }, | ||
| { identifier = "cp35-manylinux_s390x", version = "3.5", path_str = "/opt/python/cp35-cp35m" }, | ||
| { 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 = "cp39-manylinux_s390x", version = "3.9", path_str = "/opt/python/cp39-cp39" }, | ||
| ] | ||
|
|
||
| [macos] | ||
| python_configurations = [ | ||
| { identifier = "cp27-macosx_x86_64", version = "2.7", url = "https://www.python.org/ftp/python/2.7.18/python-2.7.18-macosx10.9.pkg" }, | ||
| { identifier = "cp35-macosx_x86_64", version = "3.5", url = "https://www.python.org/ftp/python/3.5.4/python-3.5.4-macosx10.6.pkg" }, | ||
| { 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.7/python-3.8.7-macosx10.9.pkg" }, | ||
| { identifier = "cp39-macosx_x86_64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.1/python-3.9.1-macosx10.9.pkg" }, | ||
| { identifier = "pp27-macosx_x86_64", version = "2.7", url = "https://downloads.python.org/pypy/pypy2.7-v7.3.3-osx64.tar.bz2" }, | ||
| { identifier = "pp36-macosx_x86_64", version = "3.6", url = "https://downloads.python.org/pypy/pypy3.6-v7.3.3-osx64.tar.bz2" }, | ||
| { identifier = "pp37-macosx_x86_64", version = "3.7", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.3-osx64.tar.bz2" }, | ||
| ] | ||
|
|
||
| [windows] | ||
| python_configurations = [ | ||
| { identifier = "cp27-win32", version = "2.7.18", arch = "32" }, | ||
| { identifier = "cp27-win_amd64", version = "2.7.18", arch = "64" }, | ||
| { identifier = "cp35-win32", version = "3.5.4", arch = "32" }, | ||
| { identifier = "cp35-win_amd64", version = "3.5.4", arch = "64" }, | ||
| { 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.7", arch = "32" }, | ||
| { identifier = "cp38-win_amd64", version = "3.8.7", arch = "64" }, | ||
| { identifier = "cp39-win32", version = "3.9.1", arch = "32" }, | ||
| { identifier = "cp39-win_amd64", version = "3.9.1", arch = "64" }, | ||
| { identifier = "pp27-win32", version = "2.7", arch = "32", url = "https://downloads.python.org/pypy/pypy2.7-v7.3.3-win32.zip" }, | ||
| { identifier = "pp36-win32", version = "3.6", arch = "32", url = "https://downloads.python.org/pypy/pypy3.6-v7.3.3-win32.zip" }, | ||
| { identifier = "pp37-win32", version = "3.7", arch = "32", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.3-win32.zip" }, | ||
| ] |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,10 +1,25 @@ | ||
| import os | ||
| import subprocess | ||
| from typing import TYPE_CHECKING, Union | ||
| import sys | ||
| from typing import TYPE_CHECKING, NoReturn, Set, Union | ||
|
|
||
| if sys.version_info < (3, 8): | ||
| from typing_extensions import Final, Literal | ||
| else: | ||
| from typing import Final, Literal | ||
|
|
||
|
|
||
| if TYPE_CHECKING: | ||
| PopenBytes = subprocess.Popen[bytes] | ||
| PathOrStr = Union[str, os.PathLike[str]] | ||
| else: | ||
| PopenBytes = subprocess.Popen | ||
| PathOrStr = Union[str, "os.PathLike[str]"] | ||
|
|
||
|
|
||
| PlatformName = Literal["linux", "macos", "windows"] | ||
| PLATFORMS: Final[Set[PlatformName]] = {"linux", "macos", "windows"} | ||
|
|
||
|
|
||
| def assert_never(value: NoReturn) -> NoReturn: | ||
| assert False, f'Unhandled value: {value} ({type(value).__name__})' # noqa: B011 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -13,14 +13,20 @@ | |
| from typing import Dict, List, NamedTuple, Optional, Set | ||
|
|
||
| import certifi | ||
| import toml | ||
|
|
||
| from .environment import ParsedEnvironment | ||
| from .typing import PathOrStr | ||
| from .typing import PathOrStr, PlatformName | ||
|
|
||
| if sys.version_info < (3, 8): | ||
| from typing_extensions import Literal | ||
| if sys.version_info < (3, 9): | ||
| from importlib_resources import files | ||
| else: | ||
| from typing import Literal | ||
| from importlib.resources import files | ||
|
|
||
|
|
||
| resources_dir = files('cibuildwheel') / 'resources' | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Out of curiosity, what does
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It supports directories that are zip files (see https://github.com/scikit-hep/particle/releases/tag/v0.14.0 - that Though, however, I'm using it here because it's more elegant and the "right' thing to do. We are accessing a resource. PS: There's a few tricks when running from a zip file, you can open the path or access the filename, but cannot use the file name to open the file without a little workaround which I didn't attempt to implement. |
||
| get_pip_script = resources_dir / 'get-pip.py' | ||
| install_certifi_script = resources_dir / "install_certifi.py" | ||
|
|
||
|
|
||
| def prepare_command(command: str, **kwargs: PathOrStr) -> str: | ||
|
|
@@ -42,6 +48,13 @@ def get_build_verbosity_extra_flags(level: int) -> List[str]: | |
| return [] | ||
|
|
||
|
|
||
| def read_python_configs(config: PlatformName) -> List[Dict[str, str]]: | ||
| input_file = resources_dir / 'build-platforms.toml' | ||
| loaded_file = toml.load(input_file) | ||
| results: List[Dict[str, str]] = list(loaded_file[config]['python_configurations']) | ||
| return results | ||
|
|
||
|
|
||
| class BuildSelector: | ||
| def __init__(self, build_config: str, skip_config: str): | ||
| self.build_patterns = build_config.split() | ||
|
|
@@ -151,7 +164,7 @@ def __lt__(self, other: "Architecture") -> bool: | |
| return self.value < other.value | ||
|
|
||
| @staticmethod | ||
| def parse_config(config: str, platform: str) -> 'Set[Architecture]': | ||
| def parse_config(config: str, platform: PlatformName) -> 'Set[Architecture]': | ||
| result = set() | ||
| for arch_str in re.split(r'[\s,]+', config): | ||
| if arch_str == 'auto': | ||
|
|
@@ -161,7 +174,7 @@ def parse_config(config: str, platform: str) -> 'Set[Architecture]': | |
| return result | ||
|
|
||
| @staticmethod | ||
| def auto_archs(platform: str) -> 'Set[Architecture]': | ||
| def auto_archs(platform: PlatformName) -> 'Set[Architecture]': | ||
| native_architecture = Architecture(platform_module.machine()) | ||
| result = {native_architecture} | ||
| if platform == 'linux' and native_architecture == Architecture.x86_64: | ||
|
|
@@ -190,11 +203,6 @@ class BuildOptions(NamedTuple): | |
| build_verbosity: int | ||
|
|
||
|
|
||
| resources_dir = Path(__file__).resolve().parent / 'resources' | ||
| get_pip_script = resources_dir / 'get-pip.py' | ||
| install_certifi_script = resources_dir / "install_certifi.py" | ||
|
|
||
|
|
||
| class NonPlatformWheelError(Exception): | ||
| def __init__(self) -> None: | ||
| message = textwrap.dedent(''' | ||
|
|
@@ -255,7 +263,7 @@ def detect_ci_provider() -> Optional[CIProvider]: | |
|
|
||
|
|
||
| def allowed_architectures_check( | ||
| name: Literal['linux', 'macos', 'windows'], | ||
| name: PlatformName, | ||
| options: BuildOptions, | ||
| ) -> None: | ||
|
|
||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.