style: apply black via pre-commit run -a
This commit is contained in:
committed by
Henry Schreiner
parent
9cbed6a9be
commit
178aaea6c7
+132
-58
@@ -30,10 +30,22 @@ from cibuildwheel.util import (
|
||||
|
||||
|
||||
@overload
|
||||
def get_option_from_environment(option_name: str, *, platform: Optional[str] = None, default: str) -> str: ... # noqa: E704
|
||||
def get_option_from_environment(
|
||||
option_name: str, *, platform: Optional[str] = None, default: str
|
||||
) -> str:
|
||||
... # noqa: E704
|
||||
|
||||
|
||||
@overload
|
||||
def get_option_from_environment(option_name: str, *, platform: Optional[str] = None, default: None = None) -> Optional[str]: ... # noqa: E704 E302
|
||||
def get_option_from_environment(option_name: str, *, platform: Optional[str] = None, default: Optional[str] = None) -> Optional[str]: # noqa: E302
|
||||
def get_option_from_environment(
|
||||
option_name: str, *, platform: Optional[str] = None, default: None = None
|
||||
) -> Optional[str]:
|
||||
... # noqa: E704 E302
|
||||
|
||||
|
||||
def get_option_from_environment(
|
||||
option_name: str, *, platform: Optional[str] = None, default: Optional[str] = None
|
||||
) -> Optional[str]: # noqa: E302
|
||||
'''
|
||||
Returns an option from the environment, optionally scoped by the platform.
|
||||
|
||||
@@ -59,53 +71,66 @@ def main() -> None:
|
||||
epilog='''
|
||||
Most options are supplied via environment variables.
|
||||
See https://github.com/joerick/cibuildwheel#options for info.
|
||||
''')
|
||||
''',
|
||||
)
|
||||
|
||||
parser.add_argument('--platform',
|
||||
choices=['auto', 'linux', 'macos', 'windows'],
|
||||
default=os.environ.get('CIBW_PLATFORM', 'auto'),
|
||||
help='''
|
||||
parser.add_argument(
|
||||
'--platform',
|
||||
choices=['auto', 'linux', 'macos', 'windows'],
|
||||
default=os.environ.get('CIBW_PLATFORM', 'auto'),
|
||||
help='''
|
||||
Platform to build for. For "linux" you need docker running, on Mac
|
||||
or Linux. For "macos", you need a Mac machine, and note that this
|
||||
script is going to automatically install MacPython on your system,
|
||||
so don't run on your development machine. For "windows", you need to
|
||||
run in Windows, and it will build and test for all versions of
|
||||
Python. Default: auto.
|
||||
''')
|
||||
''',
|
||||
)
|
||||
|
||||
arch_list_str = ", ".join(a.name for a in Architecture)
|
||||
parser.add_argument('--archs',
|
||||
default=None,
|
||||
help=f'''
|
||||
parser.add_argument(
|
||||
'--archs',
|
||||
default=None,
|
||||
help=f'''
|
||||
Comma-separated list of CPU architectures to build for.
|
||||
When set to 'auto', builds the architectures natively supported
|
||||
on this machine. Set this option to build an architecture
|
||||
via emulation, for example, using binfmt_misc and QEMU.
|
||||
Default: auto.
|
||||
Choices: auto, auto64, auto32, native, all, {arch_list_str}
|
||||
''')
|
||||
''',
|
||||
)
|
||||
|
||||
parser.add_argument('--output-dir',
|
||||
default=os.environ.get('CIBW_OUTPUT_DIR', 'wheelhouse'),
|
||||
help='Destination folder for the wheels.')
|
||||
parser.add_argument(
|
||||
'--output-dir',
|
||||
default=os.environ.get('CIBW_OUTPUT_DIR', 'wheelhouse'),
|
||||
help='Destination folder for the wheels.',
|
||||
)
|
||||
|
||||
parser.add_argument('package_dir',
|
||||
default='.',
|
||||
nargs='?',
|
||||
help='''
|
||||
parser.add_argument(
|
||||
'package_dir',
|
||||
default='.',
|
||||
nargs='?',
|
||||
help='''
|
||||
Path to the package that you want wheels for. Must be a subdirectory of
|
||||
the working directory. When set, the working directory is still
|
||||
considered the 'project' and is copied into the Docker container on
|
||||
Linux. Default: the working directory.
|
||||
''')
|
||||
''',
|
||||
)
|
||||
|
||||
parser.add_argument('--print-build-identifiers',
|
||||
action='store_true',
|
||||
help='Print the build identifiers matched by the current invocation and exit.')
|
||||
parser.add_argument(
|
||||
'--print-build-identifiers',
|
||||
action='store_true',
|
||||
help='Print the build identifiers matched by the current invocation and exit.',
|
||||
)
|
||||
|
||||
parser.add_argument('--allow-empty',
|
||||
action='store_true',
|
||||
help='Do not report an error code if the build does not match any wheels.',)
|
||||
parser.add_argument(
|
||||
'--allow-empty',
|
||||
action='store_true',
|
||||
help='Do not report an error code if the build does not match any wheels.',
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
@@ -116,12 +141,17 @@ def main() -> None:
|
||||
else:
|
||||
ci_provider = detect_ci_provider()
|
||||
if ci_provider is None:
|
||||
print(textwrap.dedent('''
|
||||
print(
|
||||
textwrap.dedent(
|
||||
'''
|
||||
cibuildwheel: Unable to detect platform. cibuildwheel should run on your CI server;
|
||||
Travis CI, AppVeyor, Azure Pipelines, GitHub Actions, CircleCI, and Gitlab are
|
||||
supported. You can run on your development machine or other CI providers using the
|
||||
--platform argument. Check --help output for more information.
|
||||
'''), file=sys.stderr)
|
||||
'''
|
||||
),
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(2)
|
||||
if sys.platform.startswith('linux'):
|
||||
platform = 'linux'
|
||||
@@ -130,9 +160,11 @@ def main() -> None:
|
||||
elif sys.platform == 'win32':
|
||||
platform = 'windows'
|
||||
else:
|
||||
print('cibuildwheel: Unable to detect platform from "sys.platform" in a CI environment. You can run '
|
||||
'cibuildwheel using the --platform argument. Check --help output for more information.',
|
||||
file=sys.stderr)
|
||||
print(
|
||||
'cibuildwheel: Unable to detect platform from "sys.platform" in a CI environment. You can run '
|
||||
'cibuildwheel using the --platform argument. Check --help output for more information.',
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(2)
|
||||
|
||||
if platform not in PLATFORMS:
|
||||
@@ -154,29 +186,45 @@ def main() -> None:
|
||||
build_config = os.environ.get('CIBW_BUILD') or '*'
|
||||
skip_config = os.environ.get('CIBW_SKIP', '')
|
||||
test_skip = os.environ.get('CIBW_TEST_SKIP', '')
|
||||
environment_config = get_option_from_environment('CIBW_ENVIRONMENT', platform=platform, default='')
|
||||
environment_config = get_option_from_environment(
|
||||
'CIBW_ENVIRONMENT', platform=platform, default=''
|
||||
)
|
||||
before_all = get_option_from_environment('CIBW_BEFORE_ALL', platform=platform, default='')
|
||||
before_build = get_option_from_environment('CIBW_BEFORE_BUILD', platform=platform)
|
||||
repair_command = get_option_from_environment('CIBW_REPAIR_WHEEL_COMMAND', platform=platform, default=repair_command_default)
|
||||
dependency_versions = get_option_from_environment('CIBW_DEPENDENCY_VERSIONS', platform=platform, default='pinned')
|
||||
repair_command = get_option_from_environment(
|
||||
'CIBW_REPAIR_WHEEL_COMMAND', platform=platform, default=repair_command_default
|
||||
)
|
||||
dependency_versions = get_option_from_environment(
|
||||
'CIBW_DEPENDENCY_VERSIONS', platform=platform, default='pinned'
|
||||
)
|
||||
test_command = get_option_from_environment('CIBW_TEST_COMMAND', platform=platform)
|
||||
before_test = get_option_from_environment('CIBW_BEFORE_TEST', platform=platform)
|
||||
test_requires = get_option_from_environment('CIBW_TEST_REQUIRES', platform=platform, default='').split()
|
||||
test_requires = get_option_from_environment(
|
||||
'CIBW_TEST_REQUIRES', platform=platform, default=''
|
||||
).split()
|
||||
test_extras = get_option_from_environment('CIBW_TEST_EXTRAS', platform=platform, default='')
|
||||
build_verbosity_str = get_option_from_environment('CIBW_BUILD_VERBOSITY', platform=platform, default='')
|
||||
build_verbosity_str = get_option_from_environment(
|
||||
'CIBW_BUILD_VERBOSITY', platform=platform, default=''
|
||||
)
|
||||
|
||||
package_files = {'setup.py', 'setup.cfg', 'pyproject.toml'}
|
||||
|
||||
if not any(package_dir.joinpath(name).exists() for name in package_files):
|
||||
names = ', '.join(sorted(package_files, reverse=True))
|
||||
print(f'cibuildwheel: Could not find any of {{{names}}} at root of package', file=sys.stderr)
|
||||
print(
|
||||
f'cibuildwheel: Could not find any of {{{names}}} at root of package', file=sys.stderr
|
||||
)
|
||||
sys.exit(2)
|
||||
|
||||
# Passing this in as an environment variable will override pyproject.toml, setup.cfg, or setup.py
|
||||
requires_python_str: Optional[str] = os.environ.get('CIBW_PROJECT_REQUIRES_PYTHON') or get_requires_python_str(package_dir)
|
||||
requires_python_str: Optional[str] = os.environ.get(
|
||||
'CIBW_PROJECT_REQUIRES_PYTHON'
|
||||
) or get_requires_python_str(package_dir)
|
||||
requires_python = None if requires_python_str is None else SpecifierSet(requires_python_str)
|
||||
|
||||
build_selector = BuildSelector(build_config=build_config, skip_config=skip_config, requires_python=requires_python)
|
||||
build_selector = BuildSelector(
|
||||
build_config=build_config, skip_config=skip_config, requires_python=requires_python
|
||||
)
|
||||
test_selector = TestSelector(skip_config=test_skip)
|
||||
|
||||
try:
|
||||
@@ -187,7 +235,9 @@ def main() -> None:
|
||||
sys.exit(2)
|
||||
|
||||
if dependency_versions == 'pinned':
|
||||
dependency_constraints: Optional[DependencyConstraints] = DependencyConstraints.with_defaults()
|
||||
dependency_constraints: Optional[
|
||||
DependencyConstraints
|
||||
] = DependencyConstraints.with_defaults()
|
||||
elif dependency_versions == 'latest':
|
||||
dependency_constraints = None
|
||||
else:
|
||||
@@ -209,7 +259,9 @@ def main() -> None:
|
||||
if args.archs is not None:
|
||||
archs_config_str = args.archs
|
||||
else:
|
||||
archs_config_str = get_option_from_environment('CIBW_ARCHS', platform=platform, default='auto')
|
||||
archs_config_str = get_option_from_environment(
|
||||
'CIBW_ARCHS', platform=platform, default='auto'
|
||||
)
|
||||
|
||||
archs = Architecture.parse_config(archs_config_str, platform=platform)
|
||||
|
||||
@@ -287,7 +339,9 @@ def main() -> None:
|
||||
if not output_dir.exists():
|
||||
output_dir.mkdir(parents=True)
|
||||
|
||||
with cibuildwheel.util.print_new_wheels("\n{n} wheels produced in {m:.0f} minutes:", output_dir):
|
||||
with cibuildwheel.util.print_new_wheels(
|
||||
"\n{n} wheels produced in {m:.0f} minutes:", output_dir
|
||||
):
|
||||
if platform == 'linux':
|
||||
cibuildwheel.linux.build(build_options)
|
||||
elif platform == 'windows':
|
||||
@@ -300,10 +354,14 @@ def main() -> None:
|
||||
|
||||
def detect_obsolete_options() -> None:
|
||||
# Check the old 'MANYLINUX1_*_IMAGE' options
|
||||
for (deprecated, alternative) in [('CIBW_MANYLINUX1_X86_64_IMAGE', 'CIBW_MANYLINUX_X86_64_IMAGE'),
|
||||
('CIBW_MANYLINUX1_I686_IMAGE', 'CIBW_MANYLINUX_I686_IMAGE')]:
|
||||
for (deprecated, alternative) in [
|
||||
('CIBW_MANYLINUX1_X86_64_IMAGE', 'CIBW_MANYLINUX_X86_64_IMAGE'),
|
||||
('CIBW_MANYLINUX1_I686_IMAGE', 'CIBW_MANYLINUX_I686_IMAGE'),
|
||||
]:
|
||||
if deprecated in os.environ:
|
||||
print(f"'{deprecated}' has been deprecated, and will be removed in a future release. Use the option '{alternative}' instead.")
|
||||
print(
|
||||
f"'{deprecated}' has been deprecated, and will be removed in a future release. Use the option '{alternative}' instead."
|
||||
)
|
||||
if alternative not in os.environ:
|
||||
print(f"Using value of option '{deprecated}' as replacement for '{alternative}'")
|
||||
os.environ[alternative] = os.environ[deprecated]
|
||||
@@ -313,21 +371,29 @@ def detect_obsolete_options() -> None:
|
||||
|
||||
# Check for deprecated identifiers in 'CIBW_BUILD' and 'CIBW_SKIP' options
|
||||
for option in ['CIBW_BUILD', 'CIBW_SKIP']:
|
||||
for deprecated, alternative in [('manylinux1', 'manylinux'),
|
||||
('macosx_10_6_intel', 'macosx_x86_64'),
|
||||
('macosx_10_9_x86_64', 'macosx_x86_64')]:
|
||||
for deprecated, alternative in [
|
||||
('manylinux1', 'manylinux'),
|
||||
('macosx_10_6_intel', 'macosx_x86_64'),
|
||||
('macosx_10_9_x86_64', 'macosx_x86_64'),
|
||||
]:
|
||||
if option in os.environ and deprecated in os.environ[option]:
|
||||
print(f"Build identifiers with '{deprecated}' have been deprecated. Replacing all occurences of '{deprecated}' with '{alternative}' in the option '{option}'")
|
||||
print(
|
||||
f"Build identifiers with '{deprecated}' have been deprecated. Replacing all occurences of '{deprecated}' with '{alternative}' in the option '{option}'"
|
||||
)
|
||||
os.environ[option] = os.environ[option].replace(deprecated, alternative)
|
||||
|
||||
|
||||
def print_preamble(platform: str, build_options: BuildOptions) -> None:
|
||||
print(textwrap.dedent('''
|
||||
print(
|
||||
textwrap.dedent(
|
||||
'''
|
||||
_ _ _ _ _ _ _
|
||||
___|_| |_ _ _|_| |_| |_ _ _| |_ ___ ___| |
|
||||
| _| | . | | | | | . | | | | | -_| -_| |
|
||||
|___|_|___|___|_|_|___|_____|_|_|___|___|_|
|
||||
'''))
|
||||
'''
|
||||
)
|
||||
)
|
||||
|
||||
print(f'cibuildwheel version {cibuildwheel.__version__}\n')
|
||||
|
||||
@@ -348,16 +414,24 @@ def print_preamble(platform: str, build_options: BuildOptions) -> None:
|
||||
def get_build_identifiers(
|
||||
platform: PlatformName, build_selector: BuildSelector, architectures: Set[Architecture]
|
||||
) -> List[str]:
|
||||
python_configurations: Union[List[cibuildwheel.linux.PythonConfiguration],
|
||||
List[cibuildwheel.windows.PythonConfiguration],
|
||||
List[cibuildwheel.macos.PythonConfiguration]]
|
||||
python_configurations: Union[
|
||||
List[cibuildwheel.linux.PythonConfiguration],
|
||||
List[cibuildwheel.windows.PythonConfiguration],
|
||||
List[cibuildwheel.macos.PythonConfiguration],
|
||||
]
|
||||
|
||||
if platform == 'linux':
|
||||
python_configurations = cibuildwheel.linux.get_python_configurations(build_selector, architectures)
|
||||
python_configurations = cibuildwheel.linux.get_python_configurations(
|
||||
build_selector, architectures
|
||||
)
|
||||
elif platform == 'windows':
|
||||
python_configurations = cibuildwheel.windows.get_python_configurations(build_selector, architectures)
|
||||
python_configurations = cibuildwheel.windows.get_python_configurations(
|
||||
build_selector, architectures
|
||||
)
|
||||
elif platform == 'macos':
|
||||
python_configurations = cibuildwheel.macos.get_python_configurations(build_selector, architectures)
|
||||
python_configurations = cibuildwheel.macos.get_python_configurations(
|
||||
build_selector, architectures
|
||||
)
|
||||
else:
|
||||
assert_never(platform)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user