* optimise unit tests - Cache loading the config TOML Unit test time: 13.1s -> 10.5s * optimise unit tests - use the same pyproject validator across the tests Unit test time: 10.5s -> 5.7s * optimise unit tests - selector optimisation Unit test time: 5.7s -> 5.1s * optimise unit tests - build options computation cache Unit test time: 5.1s -> 3.2s * Use functools.cache rather than functools.lru_cache * Don't overwrite build_options when applying functools.cache
27 lines
1.0 KiB
Python
27 lines
1.0 KiB
Python
import functools
|
|
import tomllib
|
|
from pathlib import Path
|
|
from typing import Final
|
|
|
|
from ..typing import PlatformName
|
|
|
|
PATH: Final[Path] = Path(__file__).parent.parent / "resources"
|
|
INSTALL_CERTIFI_SCRIPT: Final[Path] = PATH / "install_certifi.py"
|
|
FREE_THREAD_ENABLE_313: Final[Path] = PATH / "free-threaded-enable-313.xml"
|
|
NODEJS: Final[Path] = PATH / "nodejs.toml"
|
|
DEFAULTS: Final[Path] = PATH / "defaults.toml"
|
|
PINNED_DOCKER_IMAGES: Final[Path] = PATH / "pinned_docker_images.cfg"
|
|
BUILD_PLATFORMS: Final[Path] = PATH / "build-platforms.toml"
|
|
CONSTRAINTS: Final[Path] = PATH / "constraints.txt"
|
|
VIRTUALENV: Final[Path] = PATH / "virtualenv.toml"
|
|
CIBUILDWHEEL_SCHEMA: Final[Path] = PATH / "cibuildwheel.schema.json"
|
|
|
|
|
|
# this value is cached because it's used a lot in unit tests
|
|
@functools.cache
|
|
def read_python_configs(config: PlatformName) -> list[dict[str, str]]:
|
|
with BUILD_PLATFORMS.open("rb") as f:
|
|
loaded_file = tomllib.load(f)
|
|
results: list[dict[str, str]] = list(loaded_file[config]["python_configurations"])
|
|
return results
|