diff --git a/bin/update_pythons.py b/bin/update_pythons.py index 8649f765e..e57a71735 100755 --- a/bin/update_pythons.py +++ b/bin/update_pythons.py @@ -5,7 +5,6 @@ import copy import difflib import logging -import sys from collections.abc import Mapping, MutableMapping from pathlib import Path from typing import Any, Union @@ -13,17 +12,12 @@ import click import requests import rich - -if sys.version_info >= (3, 11): - import tomllib -else: - import tomli as tomllib - from packaging.specifiers import Specifier from packaging.version import Version from rich.logging import RichHandler from rich.syntax import Syntax +from cibuildwheel._compat import tomllib from cibuildwheel._compat.typing import Final, Literal, TypedDict from cibuildwheel.extra import dump_python_configurations diff --git a/bin/update_virtualenv.py b/bin/update_virtualenv.py index 7e22d3834..a00724063 100755 --- a/bin/update_virtualenv.py +++ b/bin/update_virtualenv.py @@ -5,22 +5,16 @@ import difflib import logging import subprocess -import sys from dataclasses import dataclass from pathlib import Path import click import rich - -if sys.version_info >= (3, 11): - import tomllib -else: - import tomli as tomllib - from packaging.version import InvalidVersion, Version from rich.logging import RichHandler from rich.syntax import Syntax +from cibuildwheel._compat import tomllib from cibuildwheel._compat.typing import Final log = logging.getLogger("cibw") diff --git a/cibuildwheel/_compat/tomllib.py b/cibuildwheel/_compat/tomllib.py new file mode 100644 index 000000000..f3b30fe65 --- /dev/null +++ b/cibuildwheel/_compat/tomllib.py @@ -0,0 +1,10 @@ +from __future__ import annotations + +import sys + +if sys.version_info >= (3, 11): + from tomllib import load # noqa: TID251 +else: + from tomli import load # noqa: TID251 + +__all__ = ("load",) diff --git a/cibuildwheel/options.py b/cibuildwheel/options.py index d4c88222b..736f13a73 100644 --- a/cibuildwheel/options.py +++ b/cibuildwheel/options.py @@ -15,13 +15,9 @@ from pathlib import Path from typing import Any, Dict, List, Union -if sys.version_info >= (3, 11): - import tomllib -else: - import tomli as tomllib - from packaging.specifiers import SpecifierSet +from ._compat import tomllib from ._compat.typing import Literal, NotRequired, TypedDict from .architecture import Architecture from .environment import EnvironmentParseError, ParsedEnvironment, parse_environment diff --git a/cibuildwheel/projectfiles.py b/cibuildwheel/projectfiles.py index 0b87415b6..95dc150d8 100644 --- a/cibuildwheel/projectfiles.py +++ b/cibuildwheel/projectfiles.py @@ -7,10 +7,7 @@ from pathlib import Path from typing import Any -if sys.version_info >= (3, 11): - import tomllib -else: - import tomli as tomllib +from ._compat import tomllib if sys.version_info < (3, 8): Constant = ast.Str diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index 00771eb5b..8b5f9f620 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -23,12 +23,6 @@ import bracex import certifi - -if sys.version_info >= (3, 11): - import tomllib -else: - import tomli as tomllib - from filelock import FileLock from packaging.requirements import InvalidRequirement, Requirement from packaging.specifiers import SpecifierSet @@ -36,6 +30,7 @@ from packaging.version import Version from platformdirs import user_cache_path +from ._compat import tomllib from ._compat.functools import cached_property from ._compat.typing import Final, Literal from .typing import PathOrStr, PlatformName diff --git a/pyproject.toml b/pyproject.toml index 29e9c2312..90420fcaf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -164,7 +164,9 @@ flake8-unused-arguments.ignore-variadic-names = true "typing.OrderedDict".msg = "Use cibuildwheel._compat.typing.OrderedDict instead." "typing.TypedDict".msg = "Use cibuildwheel._compat.typing.TypedDict instead." "typing.NotRequired".msg = "Use cibuildwheel._compat.typing.NotRequired instead." -"typing.assert_never".msg = "Use cibuildwhee._compat.typing.assert_never instead." +"typing.assert_never".msg = "Use cibuildwheel._compat.typing.assert_never instead." +"tomllib".msg = "Use cibuildwheel._compat.tomllib instead." +"tomli".msg = "Use cibuildwheel._compat.tomllib instead." [tool.ruff.per-file-ignores] "unit_test/*" = ["PLC1901"] diff --git a/unit_test/build_ids_test.py b/unit_test/build_ids_test.py index 0f62ba408..a42af93de 100644 --- a/unit_test/build_ids_test.py +++ b/unit_test/build_ids_test.py @@ -1,14 +1,8 @@ from __future__ import annotations -import sys - -if sys.version_info >= (3, 11): - import tomllib -else: - import tomli as tomllib - from packaging.version import Version +from cibuildwheel._compat import tomllib from cibuildwheel.extra import Printable, dump_python_configurations from cibuildwheel.util import resources_dir diff --git a/unit_test/main_tests/main_options_test.py b/unit_test/main_tests/main_options_test.py index 6cda8967b..8d2010ee3 100644 --- a/unit_test/main_tests/main_options_test.py +++ b/unit_test/main_tests/main_options_test.py @@ -6,12 +6,8 @@ import pytest -if sys.version_info >= (3, 11): - import tomllib -else: - import tomli as tomllib - from cibuildwheel.__main__ import main +from cibuildwheel._compat import tomllib from cibuildwheel.environment import ParsedEnvironment from cibuildwheel.options import BuildOptions, _get_pinned_container_images from cibuildwheel.util import BuildSelector, resources_dir, split_config_settings