Merge pull request #1479 from henryiii/henryiii/fix/py37
fix: Python 3.7 support
This commit is contained in:
@@ -39,6 +39,9 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-20.04, windows-latest, macos-11]
|
os: [ubuntu-20.04, windows-latest, macos-11]
|
||||||
python_version: ['3.11']
|
python_version: ['3.11']
|
||||||
|
include:
|
||||||
|
- os: ubuntu-22.04
|
||||||
|
python_version: '3.7'
|
||||||
timeout-minutes: 180
|
timeout-minutes: 180
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ from __future__ import annotations
|
|||||||
import copy
|
import copy
|
||||||
import difflib
|
import difflib
|
||||||
import logging
|
import logging
|
||||||
import sys
|
|
||||||
from collections.abc import Mapping, MutableMapping
|
from collections.abc import Mapping, MutableMapping
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any, Union
|
from typing import Any, Union
|
||||||
@@ -13,19 +12,14 @@ from typing import Any, Union
|
|||||||
import click
|
import click
|
||||||
import requests
|
import requests
|
||||||
import rich
|
import rich
|
||||||
|
|
||||||
if sys.version_info >= (3, 11):
|
|
||||||
import tomllib
|
|
||||||
else:
|
|
||||||
import tomli as tomllib
|
|
||||||
|
|
||||||
from packaging.specifiers import Specifier
|
from packaging.specifiers import Specifier
|
||||||
from packaging.version import Version
|
from packaging.version import Version
|
||||||
from rich.logging import RichHandler
|
from rich.logging import RichHandler
|
||||||
from rich.syntax import Syntax
|
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
|
from cibuildwheel.extra import dump_python_configurations
|
||||||
from cibuildwheel.typing import Final, Literal, TypedDict
|
|
||||||
|
|
||||||
log = logging.getLogger("cibw")
|
log = logging.getLogger("cibw")
|
||||||
|
|
||||||
|
|||||||
@@ -5,23 +5,17 @@ from __future__ import annotations
|
|||||||
import difflib
|
import difflib
|
||||||
import logging
|
import logging
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import click
|
import click
|
||||||
import rich
|
import rich
|
||||||
|
|
||||||
if sys.version_info >= (3, 11):
|
|
||||||
import tomllib
|
|
||||||
else:
|
|
||||||
import tomli as tomllib
|
|
||||||
|
|
||||||
from packaging.version import InvalidVersion, Version
|
from packaging.version import InvalidVersion, Version
|
||||||
from rich.logging import RichHandler
|
from rich.logging import RichHandler
|
||||||
from rich.syntax import Syntax
|
from rich.syntax import Syntax
|
||||||
|
|
||||||
from cibuildwheel.typing import Final
|
from cibuildwheel._compat import tomllib
|
||||||
|
from cibuildwheel._compat.typing import Final
|
||||||
|
|
||||||
log = logging.getLogger("cibw")
|
log = logging.getLogger("cibw")
|
||||||
|
|
||||||
|
|||||||
@@ -16,15 +16,11 @@ import cibuildwheel.linux
|
|||||||
import cibuildwheel.macos
|
import cibuildwheel.macos
|
||||||
import cibuildwheel.util
|
import cibuildwheel.util
|
||||||
import cibuildwheel.windows
|
import cibuildwheel.windows
|
||||||
|
from cibuildwheel._compat.typing import Protocol, assert_never
|
||||||
from cibuildwheel.architecture import Architecture, allowed_architectures_check
|
from cibuildwheel.architecture import Architecture, allowed_architectures_check
|
||||||
from cibuildwheel.logger import log
|
from cibuildwheel.logger import log
|
||||||
from cibuildwheel.options import CommandLineArguments, Options, compute_options
|
from cibuildwheel.options import CommandLineArguments, Options, compute_options
|
||||||
from cibuildwheel.typing import (
|
from cibuildwheel.typing import PLATFORMS, GenericPythonConfiguration, PlatformName
|
||||||
PLATFORMS,
|
|
||||||
GenericPythonConfiguration,
|
|
||||||
PlatformName,
|
|
||||||
assert_never,
|
|
||||||
)
|
|
||||||
from cibuildwheel.util import (
|
from cibuildwheel.util import (
|
||||||
CIBW_CACHE_PATH,
|
CIBW_CACHE_PATH,
|
||||||
BuildSelector,
|
BuildSelector,
|
||||||
@@ -244,7 +240,7 @@ def _compute_platform(args: CommandLineArguments) -> PlatformName:
|
|||||||
return _compute_platform_ci()
|
return _compute_platform_ci()
|
||||||
|
|
||||||
|
|
||||||
class PlatformModule(typing.Protocol):
|
class PlatformModule(Protocol):
|
||||||
# note that as per PEP544, the self argument is ignored when the protocol
|
# note that as per PEP544, the self argument is ignored when the protocol
|
||||||
# is applied to a module
|
# is applied to a module
|
||||||
def get_python_configurations(
|
def get_python_configurations(
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
from __future__ import annotations
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
if sys.version_info >= (3, 8):
|
||||||
|
from functools import cached_property
|
||||||
|
else:
|
||||||
|
from ._functools_cached_property_38 import cached_property
|
||||||
|
|
||||||
|
__all__ = ("cached_property",)
|
||||||
@@ -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",)
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
if sys.version_info < (3, 8):
|
||||||
|
from typing_extensions import Final, Literal, OrderedDict, Protocol, TypedDict
|
||||||
|
else:
|
||||||
|
from typing import Final, Literal, OrderedDict, Protocol, TypedDict # noqa: TID251
|
||||||
|
|
||||||
|
if sys.version_info < (3, 11):
|
||||||
|
from typing_extensions import NotRequired, assert_never
|
||||||
|
else:
|
||||||
|
from typing import NotRequired, assert_never # noqa: TID251
|
||||||
|
|
||||||
|
__all__ = (
|
||||||
|
"Final",
|
||||||
|
"Literal",
|
||||||
|
"Protocol",
|
||||||
|
"Protocol",
|
||||||
|
"TypedDict",
|
||||||
|
"OrderedDict",
|
||||||
|
"assert_never",
|
||||||
|
"NotRequired",
|
||||||
|
)
|
||||||
@@ -7,7 +7,8 @@ import sys
|
|||||||
from collections.abc import Set
|
from collections.abc import Set
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
from .typing import Final, Literal, PlatformName, assert_never
|
from ._compat.typing import Final, Literal, assert_never
|
||||||
|
from .typing import PlatformName
|
||||||
|
|
||||||
PRETTY_NAMES: Final = {"linux": "Linux", "macos": "macOS", "windows": "Windows"}
|
PRETTY_NAMES: Final = {"linux": "Linux", "macos": "macOS", "windows": "Windows"}
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,8 @@ from typing import Any
|
|||||||
import bashlex
|
import bashlex
|
||||||
import bashlex.errors
|
import bashlex.errors
|
||||||
|
|
||||||
from cibuildwheel.typing import Protocol
|
|
||||||
|
|
||||||
from . import bashlex_eval
|
from . import bashlex_eval
|
||||||
|
from ._compat.typing import Protocol
|
||||||
|
|
||||||
|
|
||||||
class EnvironmentParseError(Exception):
|
class EnvironmentParseError(Exception):
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from __future__ import annotations
|
|||||||
from collections.abc import Mapping, Sequence
|
from collections.abc import Mapping, Sequence
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
|
|
||||||
from .typing import Protocol
|
from ._compat.typing import Protocol
|
||||||
|
|
||||||
__all__ = ("Printable", "dump_python_configurations")
|
__all__ = ("Printable", "dump_python_configurations")
|
||||||
|
|
||||||
|
|||||||
@@ -8,11 +8,12 @@ from dataclasses import dataclass
|
|||||||
from pathlib import Path, PurePath, PurePosixPath
|
from pathlib import Path, PurePath, PurePosixPath
|
||||||
from typing import Tuple
|
from typing import Tuple
|
||||||
|
|
||||||
|
from ._compat.typing import OrderedDict, assert_never
|
||||||
from .architecture import Architecture
|
from .architecture import Architecture
|
||||||
from .logger import log
|
from .logger import log
|
||||||
from .oci_container import OCIContainer
|
from .oci_container import OCIContainer
|
||||||
from .options import Options
|
from .options import Options
|
||||||
from .typing import OrderedDict, PathOrStr, assert_never
|
from .typing import PathOrStr
|
||||||
from .util import (
|
from .util import (
|
||||||
AlreadyBuiltWheelError,
|
AlreadyBuiltWheelError,
|
||||||
BuildSelector,
|
BuildSelector,
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import sys
|
|||||||
import time
|
import time
|
||||||
from typing import IO, AnyStr
|
from typing import IO, AnyStr
|
||||||
|
|
||||||
from cibuildwheel.typing import Final
|
from ._compat.typing import Final
|
||||||
from cibuildwheel.util import CIProvider, detect_ci_provider
|
from .util import CIProvider, detect_ci_provider
|
||||||
|
|
||||||
DEFAULT_FOLD_PATTERN: Final = ("{name}", "")
|
DEFAULT_FOLD_PATTERN: Final = ("{name}", "")
|
||||||
FOLD_PATTERNS: Final = {
|
FOLD_PATTERNS: Final = {
|
||||||
|
|||||||
@@ -16,11 +16,12 @@ from typing import Tuple
|
|||||||
|
|
||||||
from filelock import FileLock
|
from filelock import FileLock
|
||||||
|
|
||||||
|
from ._compat.typing import Literal, assert_never
|
||||||
from .architecture import Architecture
|
from .architecture import Architecture
|
||||||
from .environment import ParsedEnvironment
|
from .environment import ParsedEnvironment
|
||||||
from .logger import log
|
from .logger import log
|
||||||
from .options import Options
|
from .options import Options
|
||||||
from .typing import Literal, PathOrStr, assert_never
|
from .typing import PathOrStr
|
||||||
from .util import (
|
from .util import (
|
||||||
CIBW_CACHE_PATH,
|
CIBW_CACHE_PATH,
|
||||||
AlreadyBuiltWheelError,
|
AlreadyBuiltWheelError,
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ from pathlib import Path, PurePath, PurePosixPath
|
|||||||
from types import TracebackType
|
from types import TracebackType
|
||||||
from typing import IO, Dict
|
from typing import IO, Dict
|
||||||
|
|
||||||
from cibuildwheel.util import CIProvider, detect_ci_provider
|
from ._compat.typing import Literal
|
||||||
|
from .typing import PathOrStr, PopenBytes
|
||||||
from .typing import Literal, PathOrStr, PopenBytes
|
from .util import CIProvider, detect_ci_provider
|
||||||
|
|
||||||
ContainerEngine = Literal["docker", "podman"]
|
ContainerEngine = Literal["docker", "podman"]
|
||||||
|
|
||||||
|
|||||||
@@ -15,19 +15,16 @@ from collections.abc import Callable, Generator, Iterable, Iterator, Mapping, Se
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any, Dict, List, Union
|
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 packaging.specifiers import SpecifierSet
|
||||||
|
|
||||||
|
from ._compat import tomllib
|
||||||
|
from ._compat.typing import Literal, NotRequired, TypedDict
|
||||||
from .architecture import Architecture
|
from .architecture import Architecture
|
||||||
from .environment import EnvironmentParseError, ParsedEnvironment, parse_environment
|
from .environment import EnvironmentParseError, ParsedEnvironment, parse_environment
|
||||||
from .logger import log
|
from .logger import log
|
||||||
from .oci_container import ContainerEngine
|
from .oci_container import ContainerEngine
|
||||||
from .projectfiles import get_requires_python_str
|
from .projectfiles import get_requires_python_str
|
||||||
from .typing import PLATFORMS, Literal, NotRequired, PlatformName, TypedDict
|
from .typing import PLATFORMS, PlatformName
|
||||||
from .util import (
|
from .util import (
|
||||||
MANYLINUX_ARCHS,
|
MANYLINUX_ARCHS,
|
||||||
MUSLLINUX_ARCHS,
|
MUSLLINUX_ARCHS,
|
||||||
|
|||||||
@@ -7,10 +7,7 @@ import sys
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
if sys.version_info >= (3, 11):
|
from ._compat import tomllib
|
||||||
import tomllib
|
|
||||||
else:
|
|
||||||
import tomli as tomllib
|
|
||||||
|
|
||||||
if sys.version_info < (3, 8):
|
if sys.version_info < (3, 8):
|
||||||
Constant = ast.Str
|
Constant = ast.Str
|
||||||
|
|||||||
+4
-20
@@ -2,37 +2,21 @@ from __future__ import annotations
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import typing
|
||||||
from typing import TYPE_CHECKING, Union
|
from typing import Union
|
||||||
|
|
||||||
if sys.version_info < (3, 8):
|
from ._compat.typing import Final, Literal, Protocol
|
||||||
from typing_extensions import Final, Literal, OrderedDict, Protocol, TypedDict
|
|
||||||
else:
|
|
||||||
from typing import Final, Literal, OrderedDict, Protocol, TypedDict
|
|
||||||
|
|
||||||
if sys.version_info < (3, 11):
|
|
||||||
from typing_extensions import NotRequired, assert_never
|
|
||||||
else:
|
|
||||||
from typing import NotRequired, assert_never
|
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
"Final",
|
|
||||||
"Literal",
|
|
||||||
"PLATFORMS",
|
"PLATFORMS",
|
||||||
"PathOrStr",
|
"PathOrStr",
|
||||||
"PlatformName",
|
"PlatformName",
|
||||||
"Protocol",
|
|
||||||
"PLATFORMS",
|
"PLATFORMS",
|
||||||
"PopenBytes",
|
"PopenBytes",
|
||||||
"Protocol",
|
|
||||||
"TypedDict",
|
|
||||||
"OrderedDict",
|
|
||||||
"assert_never",
|
|
||||||
"NotRequired",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if typing.TYPE_CHECKING:
|
||||||
PopenBytes = subprocess.Popen[bytes]
|
PopenBytes = subprocess.Popen[bytes]
|
||||||
PathOrStr = Union[str, os.PathLike[str]]
|
PathOrStr = Union[str, os.PathLike[str]]
|
||||||
else:
|
else:
|
||||||
|
|||||||
+4
-13
@@ -23,12 +23,6 @@ from typing import Any, ClassVar, TextIO, TypeVar
|
|||||||
|
|
||||||
import bracex
|
import bracex
|
||||||
import certifi
|
import certifi
|
||||||
|
|
||||||
if sys.version_info >= (3, 11):
|
|
||||||
import tomllib
|
|
||||||
else:
|
|
||||||
import tomli as tomllib
|
|
||||||
|
|
||||||
from filelock import FileLock
|
from filelock import FileLock
|
||||||
from packaging.requirements import InvalidRequirement, Requirement
|
from packaging.requirements import InvalidRequirement, Requirement
|
||||||
from packaging.specifiers import SpecifierSet
|
from packaging.specifiers import SpecifierSet
|
||||||
@@ -36,7 +30,10 @@ from packaging.utils import parse_wheel_filename
|
|||||||
from packaging.version import Version
|
from packaging.version import Version
|
||||||
from platformdirs import user_cache_path
|
from platformdirs import user_cache_path
|
||||||
|
|
||||||
from cibuildwheel.typing import Final, Literal, PathOrStr, PlatformName
|
from ._compat import tomllib
|
||||||
|
from ._compat.functools import cached_property
|
||||||
|
from ._compat.typing import Final, Literal
|
||||||
|
from .typing import PathOrStr, PlatformName
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"resources_dir",
|
"resources_dir",
|
||||||
@@ -661,12 +658,6 @@ def find_compatible_wheel(wheels: Sequence[T], identifier: str) -> T | None:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
if sys.version_info >= (3, 8):
|
|
||||||
from functools import cached_property
|
|
||||||
else:
|
|
||||||
from .functools_cached_property_38 import cached_property
|
|
||||||
|
|
||||||
|
|
||||||
# Can be replaced by contextlib.chdir in Python 3.11
|
# Can be replaced by contextlib.chdir in Python 3.11
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def chdir(new_path: Path | str) -> Generator[None, None, None]:
|
def chdir(new_path: Path | str) -> Generator[None, None, None]:
|
||||||
|
|||||||
@@ -16,11 +16,12 @@ from zipfile import ZipFile
|
|||||||
from filelock import FileLock
|
from filelock import FileLock
|
||||||
from packaging.version import Version
|
from packaging.version import Version
|
||||||
|
|
||||||
|
from ._compat.typing import assert_never
|
||||||
from .architecture import Architecture
|
from .architecture import Architecture
|
||||||
from .environment import ParsedEnvironment
|
from .environment import ParsedEnvironment
|
||||||
from .logger import log
|
from .logger import log
|
||||||
from .options import Options
|
from .options import Options
|
||||||
from .typing import PathOrStr, assert_never
|
from .typing import PathOrStr
|
||||||
from .util import (
|
from .util import (
|
||||||
CIBW_CACHE_PATH,
|
CIBW_CACHE_PATH,
|
||||||
AlreadyBuiltWheelError,
|
AlreadyBuiltWheelError,
|
||||||
|
|||||||
+10
-1
@@ -149,7 +149,7 @@ extend-ignore = [
|
|||||||
"PT007", # False positive (fixed upstream)
|
"PT007", # False positive (fixed upstream)
|
||||||
]
|
]
|
||||||
target-version = "py37"
|
target-version = "py37"
|
||||||
typing-modules = ["cibuildwheel.typing"]
|
typing-modules = ["cibuildwheel._compat.typing"]
|
||||||
flake8-unused-arguments.ignore-variadic-names = true
|
flake8-unused-arguments.ignore-variadic-names = true
|
||||||
|
|
||||||
[tool.ruff.flake8-tidy-imports.banned-api]
|
[tool.ruff.flake8-tidy-imports.banned-api]
|
||||||
@@ -158,6 +158,15 @@ flake8-unused-arguments.ignore-variadic-names = true
|
|||||||
"typing.Iterator".msg = "Use collections.abc.Iterator instead."
|
"typing.Iterator".msg = "Use collections.abc.Iterator instead."
|
||||||
"typing.Sequence".msg = "Use collections.abc.Sequence instead."
|
"typing.Sequence".msg = "Use collections.abc.Sequence instead."
|
||||||
"typing.Set".msg = "Use collections.abc.Set instead."
|
"typing.Set".msg = "Use collections.abc.Set instead."
|
||||||
|
"typing.Protocol".msg = "Use cibuildwheel._compat.typing.Protocol instead."
|
||||||
|
"typing.Final".msg = "Use cibuildwheel._compat.typing.Final instead."
|
||||||
|
"typing.Literal".msg = "Use cibuildwheel._compat.typing.Literal instead."
|
||||||
|
"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 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]
|
[tool.ruff.per-file-ignores]
|
||||||
"unit_test/*" = ["PLC1901"]
|
"unit_test/*" = ["PLC1901"]
|
||||||
|
|||||||
@@ -1,14 +1,8 @@
|
|||||||
from __future__ import annotations
|
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 packaging.version import Version
|
||||||
|
|
||||||
|
from cibuildwheel._compat import tomllib
|
||||||
from cibuildwheel.extra import Printable, dump_python_configurations
|
from cibuildwheel.extra import Printable, dump_python_configurations
|
||||||
from cibuildwheel.util import resources_dir
|
from cibuildwheel.util import resources_dir
|
||||||
|
|
||||||
|
|||||||
@@ -6,12 +6,8 @@ from pathlib import Path
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
if sys.version_info >= (3, 11):
|
|
||||||
import tomllib
|
|
||||||
else:
|
|
||||||
import tomli as tomllib
|
|
||||||
|
|
||||||
from cibuildwheel.__main__ import main
|
from cibuildwheel.__main__ import main
|
||||||
|
from cibuildwheel._compat import tomllib
|
||||||
from cibuildwheel.environment import ParsedEnvironment
|
from cibuildwheel.environment import ParsedEnvironment
|
||||||
from cibuildwheel.options import BuildOptions, _get_pinned_container_images
|
from cibuildwheel.options import BuildOptions, _get_pinned_container_images
|
||||||
from cibuildwheel.util import BuildSelector, resources_dir, split_config_settings
|
from cibuildwheel.util import BuildSelector, resources_dir, split_config_settings
|
||||||
|
|||||||
Reference in New Issue
Block a user