chore: cleanup for 3.11+

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
This commit is contained in:
Henry Schreiner
2025-02-28 16:38:15 -05:00
committed by Henry Schreiner
parent 88ef8dbd29
commit 63a7c44b7f
3 changed files with 13 additions and 19 deletions
+8 -8
View File
@@ -4,7 +4,7 @@ import shlex
import typing import typing
from collections.abc import Sequence from collections.abc import Sequence
from dataclasses import dataclass from dataclasses import dataclass
from typing import Literal from typing import Literal, get_args
from .logger import log from .logger import log
from .util.helpers import parse_key_value_string from .util.helpers import parse_key_value_string
@@ -21,8 +21,9 @@ class BuildFrontendConfig:
def from_config_string(config_string: str) -> BuildFrontendConfig: def from_config_string(config_string: str) -> BuildFrontendConfig:
config_dict = parse_key_value_string(config_string, ["name"], ["args"]) config_dict = parse_key_value_string(config_string, ["name"], ["args"])
name = " ".join(config_dict["name"]) name = " ".join(config_dict["name"])
if name not in {"pip", "build", "build[uv]"}: if name not in get_args(BuildFrontendName):
msg = f"Unrecognised build frontend {name!r}, only 'pip', 'build', and 'build[uv]' are supported" 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) raise ValueError(msg)
name = typing.cast(BuildFrontendName, name) name = typing.cast(BuildFrontendName, name)
@@ -44,22 +45,21 @@ def _get_verbosity_flags(level: int, frontend: BuildFrontendName) -> list[str]:
if level < 0: if level < 0:
return ["-" + -level * "q"] return ["-" + -level * "q"]
elif not 0 <= level < 2: 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) log.warning(msg)
return [] 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) config_settings_list = shlex.split(config_settings)
s = "s" if frontend == "pip" else "" return [f"-C{setting}" for setting in config_settings_list]
return [f"--config-setting{s}={setting}" for setting in config_settings_list]
def get_build_frontend_extra_flags( def get_build_frontend_extra_flags(
build_frontend: BuildFrontendConfig, verbosity_level: int, config_settings: str build_frontend: BuildFrontendConfig, verbosity_level: int, config_settings: str
) -> list[str]: ) -> list[str]:
return [ return [
*_split_config_settings(config_settings, build_frontend.name), *_split_config_settings(config_settings),
*build_frontend.args, *build_frontend.args,
*_get_verbosity_flags(verbosity_level, build_frontend.name), *_get_verbosity_flags(verbosity_level, build_frontend.name),
] ]
+1 -1
View File
@@ -22,7 +22,7 @@ else:
PlatformName = Literal["linux", "macos", "windows", "pyodide"] 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): class GenericPythonConfiguration(Protocol):
+4 -10
View File
@@ -283,16 +283,10 @@ def test_config_settings(platform_specific, platform, intercepted_build_args, mo
assert build_options.config_settings == config_settings assert build_options.config_settings == config_settings
assert _split_config_settings(config_settings, "build") == [ assert _split_config_settings(config_settings) == [
"--config-setting=setting=value", "-Csetting=value",
"--config-setting=setting=value2", "-Csetting=value2",
"--config-setting=other=something else", "-Cother=something else",
]
assert _split_config_settings(config_settings, "pip") == [
"--config-settings=setting=value",
"--config-settings=setting=value2",
"--config-settings=other=something else",
] ]