From 63a7c44b7f7d90f835d0e6c70b84e0dbd353ae83 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Wed, 12 Feb 2025 12:41:44 -0500 Subject: [PATCH] chore: cleanup for 3.11+ Signed-off-by: Henry Schreiner --- cibuildwheel/frontend.py | 16 ++++++++-------- cibuildwheel/typing.py | 2 +- unit_test/main_tests/main_options_test.py | 14 ++++---------- 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/cibuildwheel/frontend.py b/cibuildwheel/frontend.py index fc863e45..f5ddad63 100644 --- a/cibuildwheel/frontend.py +++ b/cibuildwheel/frontend.py @@ -4,7 +4,7 @@ import shlex import typing from collections.abc import Sequence from dataclasses import dataclass -from typing import Literal +from typing import Literal, get_args from .logger import log from .util.helpers import parse_key_value_string @@ -21,8 +21,9 @@ class BuildFrontendConfig: def from_config_string(config_string: str) -> BuildFrontendConfig: config_dict = parse_key_value_string(config_string, ["name"], ["args"]) name = " ".join(config_dict["name"]) - if name not in {"pip", "build", "build[uv]"}: - msg = f"Unrecognised build frontend {name!r}, only 'pip', 'build', and 'build[uv]' are supported" + if name not in get_args(BuildFrontendName): + names = ", ".join(repr(n) for n in get_args(BuildFrontendName)) + msg = f"Unrecognised build frontend {name!r}, must be one of {names}" raise ValueError(msg) name = typing.cast(BuildFrontendName, name) @@ -44,22 +45,21 @@ def _get_verbosity_flags(level: int, frontend: BuildFrontendName) -> list[str]: if level < 0: return ["-" + -level * "q"] elif not 0 <= level < 2: - msg = f"build_verbosity {level} is not supported for build frontend. Ignoring." + msg = f"build_verbosity {level} is not supported for {frontend} frontend. Ignoring." log.warning(msg) return [] -def _split_config_settings(config_settings: str, frontend: BuildFrontendName) -> list[str]: +def _split_config_settings(config_settings: str) -> list[str]: config_settings_list = shlex.split(config_settings) - s = "s" if frontend == "pip" else "" - return [f"--config-setting{s}={setting}" for setting in config_settings_list] + return [f"-C{setting}" for setting in config_settings_list] def get_build_frontend_extra_flags( build_frontend: BuildFrontendConfig, verbosity_level: int, config_settings: str ) -> list[str]: return [ - *_split_config_settings(config_settings, build_frontend.name), + *_split_config_settings(config_settings), *build_frontend.args, *_get_verbosity_flags(verbosity_level, build_frontend.name), ] diff --git a/cibuildwheel/typing.py b/cibuildwheel/typing.py index 34ae273c..c9b76fde 100644 --- a/cibuildwheel/typing.py +++ b/cibuildwheel/typing.py @@ -22,7 +22,7 @@ else: PlatformName = Literal["linux", "macos", "windows", "pyodide"] -PLATFORMS: Final[set[PlatformName]] = {"linux", "macos", "windows", "pyodide"} +PLATFORMS: Final[frozenset[PlatformName]] = frozenset(typing.get_args(PlatformName)) class GenericPythonConfiguration(Protocol): diff --git a/unit_test/main_tests/main_options_test.py b/unit_test/main_tests/main_options_test.py index 6b5d51f6..2cec4b0e 100644 --- a/unit_test/main_tests/main_options_test.py +++ b/unit_test/main_tests/main_options_test.py @@ -283,16 +283,10 @@ def test_config_settings(platform_specific, platform, intercepted_build_args, mo assert build_options.config_settings == config_settings - assert _split_config_settings(config_settings, "build") == [ - "--config-setting=setting=value", - "--config-setting=setting=value2", - "--config-setting=other=something else", - ] - - assert _split_config_settings(config_settings, "pip") == [ - "--config-settings=setting=value", - "--config-settings=setting=value2", - "--config-settings=other=something else", + assert _split_config_settings(config_settings) == [ + "-Csetting=value", + "-Csetting=value2", + "-Cother=something else", ]