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
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),
]
+1 -1
View File
@@ -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):
+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 _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",
]