chore: enable more Ruff checks (#2654)

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
This commit is contained in:
Henry Schreiner
2025-11-07 18:48:20 -05:00
committed by GitHub
parent 1f2f8b28d5
commit e1baa60eb0
16 changed files with 51 additions and 37 deletions
+2 -2
View File
@@ -68,8 +68,8 @@ def bump_version() -> None:
sys.exit(1) sys.exit(1)
# fmt: off # fmt: off
print( 'Current version:', current_version) print( "Current version:", current_version)
new_version = input(' New version: ').strip() new_version = input(" New version: ").strip()
# fmt: on # fmt: on
try: try:
+1 -1
View File
@@ -314,7 +314,7 @@ def _compute_platform(args: CommandLineArguments) -> PlatformName:
if args.only: if args.only:
return _compute_platform_only(args.only) return _compute_platform_only(args.only)
elif platform_option_value != "auto": elif platform_option_value != "auto":
return typing.cast(PlatformName, platform_option_value) return typing.cast("PlatformName", platform_option_value)
return native_platform() return native_platform()
+2 -2
View File
@@ -41,7 +41,7 @@ def dump_python_configurations(
def _json_request(request: urllib.request.Request, timeout: int = 30) -> dict[str, Any]: def _json_request(request: urllib.request.Request, timeout: int = 30) -> dict[str, Any]:
with urllib.request.urlopen(request, timeout=timeout) as response: with urllib.request.urlopen(request, timeout=timeout) as response:
return typing.cast(dict[str, Any], json.load(response)) return typing.cast("dict[str, Any]", json.load(response))
def github_api_request(path: str, *, max_retries: int = 3) -> dict[str, Any]: def github_api_request(path: str, *, max_retries: int = 3) -> dict[str, Any]:
@@ -98,4 +98,4 @@ def get_pyodide_xbuildenv_info() -> PyodideXBuildEnvInfo:
"https://pyodide.github.io/pyodide/api/pyodide-cross-build-environments.json" "https://pyodide.github.io/pyodide/api/pyodide-cross-build-environments.json"
) )
with urllib.request.urlopen(xbuildenv_info_url) as response: with urllib.request.urlopen(xbuildenv_info_url) as response:
return typing.cast(PyodideXBuildEnvInfo, json.loads(response.read().decode("utf-8"))) return typing.cast("PyodideXBuildEnvInfo", json.loads(response.read().decode("utf-8")))
+1 -1
View File
@@ -24,7 +24,7 @@ class BuildFrontendConfig:
msg = f"Unrecognised build frontend {name!r}, must be one of {names}" 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)
args = config_dict.get("args") or [] args = config_dict.get("args") or []
return cls(name=name, args=args) return cls(name=name, args=args)
+2 -2
View File
@@ -78,7 +78,7 @@ class OCIContainerEngineConfig:
msg = f"unknown container engine {name}" msg = f"unknown container engine {name}"
raise ValueError(msg) raise ValueError(msg)
name = typing.cast(ContainerEngineName, name) name = typing.cast("ContainerEngineName", name)
# some flexibility in the option names to cope with TOML conventions # some flexibility in the option names to cope with TOML conventions
create_args = config_dict.get("create_args") or config_dict.get("create-args") or [] create_args = config_dict.get("create_args") or config_dict.get("create-args") or []
disable_host_mount_options = ( disable_host_mount_options = (
@@ -515,7 +515,7 @@ class OCIContainer:
capture_output=True, capture_output=True,
) )
) )
return typing.cast(dict[str, str], env) return typing.cast("dict[str, str]", env)
def environment_executor(self, command: Sequence[str], environment: dict[str, str]) -> str: def environment_executor(self, command: Sequence[str], environment: dict[str, str]) -> str:
# used as an EnvironmentExecutor to evaluate commands and capture output # used as an EnvironmentExecutor to evaluate commands and capture output
+10 -7
View File
@@ -1,16 +1,19 @@
from __future__ import annotations from __future__ import annotations
import sys import sys
from collections.abc import Sequence from typing import TYPE_CHECKING, Final, Protocol
from pathlib import Path
from typing import Final, Protocol
from cibuildwheel import errors from cibuildwheel import errors
from cibuildwheel.architecture import Architecture
from cibuildwheel.options import Options
from cibuildwheel.platforms import android, ios, linux, macos, pyodide, windows from cibuildwheel.platforms import android, ios, linux, macos, pyodide, windows
from cibuildwheel.selector import BuildSelector
from cibuildwheel.typing import GenericPythonConfiguration, PlatformName if TYPE_CHECKING:
from collections.abc import Sequence
from pathlib import Path
from cibuildwheel.architecture import Architecture
from cibuildwheel.options import Options
from cibuildwheel.selector import BuildSelector
from cibuildwheel.typing import GenericPythonConfiguration, PlatformName
class PlatformModule(Protocol): class PlatformModule(Protocol):
+9 -6
View File
@@ -8,22 +8,17 @@ import shutil
import subprocess import subprocess
import sys import sys
import textwrap import textwrap
from collections.abc import Sequence, Set
from pathlib import Path from pathlib import Path
from typing import assert_never from typing import TYPE_CHECKING, assert_never
from filelock import FileLock from filelock import FileLock
from .. import errors from .. import errors
from ..architecture import Architecture
from ..environment import ParsedEnvironment
from ..frontend import ( from ..frontend import (
BuildFrontendName, BuildFrontendName,
get_build_frontend_extra_flags, get_build_frontend_extra_flags,
) )
from ..logger import log from ..logger import log
from ..options import Options
from ..selector import BuildSelector
from ..util import resources from ..util import resources
from ..util.cmd import call, shell, split_command from ..util.cmd import call, shell, split_command
from ..util.file import ( from ..util.file import (
@@ -39,6 +34,14 @@ from ..util.packaging import (
from ..venv import constraint_flags, virtualenv from ..venv import constraint_flags, virtualenv
from .macos import install_cpython as install_build_cpython from .macos import install_cpython as install_build_cpython
if TYPE_CHECKING:
from collections.abc import Sequence, Set
from ..architecture import Architecture
from ..environment import ParsedEnvironment
from ..options import Options
from ..selector import BuildSelector
@dataclasses.dataclass(frozen=True, kw_only=True) @dataclasses.dataclass(frozen=True, kw_only=True)
class PythonConfiguration: class PythonConfiguration:
+4 -2
View File
@@ -6,7 +6,7 @@ import textwrap
from collections import OrderedDict from collections import OrderedDict
from collections.abc import Iterable, Iterator, Sequence, Set from collections.abc import Iterable, Iterator, Sequence, Set
from pathlib import Path, PurePath, PurePosixPath from pathlib import Path, PurePath, PurePosixPath
from typing import assert_never from typing import TYPE_CHECKING, assert_never
from .. import errors from .. import errors
from ..architecture import Architecture from ..architecture import Architecture
@@ -15,12 +15,14 @@ from ..logger import log
from ..oci_container import OCIContainer, OCIContainerEngineConfig, OCIPlatform from ..oci_container import OCIContainer, OCIContainerEngineConfig, OCIPlatform
from ..options import BuildOptions, Options from ..options import BuildOptions, Options
from ..selector import BuildSelector from ..selector import BuildSelector
from ..typing import PathOrStr
from ..util import resources from ..util import resources
from ..util.file import copy_test_sources from ..util.file import copy_test_sources
from ..util.helpers import prepare_command, unwrap from ..util.helpers import prepare_command, unwrap
from ..util.packaging import find_compatible_wheel from ..util.packaging import find_compatible_wheel
if TYPE_CHECKING:
from ..typing import PathOrStr
ARCHITECTURE_OCI_PLATFORM_MAP = { ARCHITECTURE_OCI_PLATFORM_MAP = {
Architecture.x86_64: OCIPlatform.AMD64, Architecture.x86_64: OCIPlatform.AMD64,
Architecture.i686: OCIPlatform.i386, Architecture.i686: OCIPlatform.i386,
+1 -1
View File
@@ -60,7 +60,7 @@ def get_macos_version() -> tuple[int, int]:
capture_stdout=True, capture_stdout=True,
) )
version = tuple(map(int, version_str.split(".")[:2])) version = tuple(map(int, version_str.split(".")[:2]))
return typing.cast(tuple[int, int], version) return typing.cast("tuple[int, int]", version)
@functools.cache @functools.cache
+1 -1
View File
@@ -130,7 +130,7 @@ def get_all_xbuildenv_version_info(env: dict[str, str]) -> list[PyodideXBuildEnv
msg = f"Invalid xbuildenvs info, got {xbuildenvs_info}" msg = f"Invalid xbuildenvs info, got {xbuildenvs_info}"
raise ValueError(msg) raise ValueError(msg)
return typing.cast(list[PyodideXBuildEnvInfo], xbuildenvs_info["environments"]) return typing.cast("list[PyodideXBuildEnvInfo]", xbuildenvs_info["environments"])
def get_xbuildenv_version_info( def get_xbuildenv_version_info(
+1 -1
View File
@@ -72,7 +72,7 @@ def call(
if not capture_stdout: if not capture_stdout:
return None return None
sys.stderr.write(result.stderr) sys.stderr.write(result.stderr)
return typing.cast(str, result.stdout) return typing.cast("str", result.stdout)
def shell( def shell(
+1 -1
View File
@@ -28,7 +28,7 @@ class PythonBuildStandaloneReleaseData(typing.TypedDict):
@functools.cache @functools.cache
def get_python_build_standalone_release_data() -> PythonBuildStandaloneReleaseData: def get_python_build_standalone_release_data() -> PythonBuildStandaloneReleaseData:
with open(PYTHON_BUILD_STANDALONE_RELEASES, "rb") as f: with open(PYTHON_BUILD_STANDALONE_RELEASES, "rb") as f:
return typing.cast(PythonBuildStandaloneReleaseData, json.load(f)) return typing.cast("PythonBuildStandaloneReleaseData", json.load(f))
class PythonBuildStandaloneError(Exception): class PythonBuildStandaloneError(Exception):
+9
View File
@@ -216,6 +216,15 @@ extend-select = [
"EXE", # flake8-executable "EXE", # flake8-executable
"PYI", # flake8-pyi "PYI", # flake8-pyi
"PERF101", "PERF102", "PERF401", "PERF402", "PERF403", # A selection of perflint codes "PERF101", "PERF102", "PERF401", "PERF402", "PERF403", # A selection of perflint codes
"DTZ", # flake8-datetimez
"FA", # flake8-future-annotations
"FLY", # flynt
"FURB", # refurb
"LOG", # flake8-logging
"Q", # flake8-quotes
"SLOT", # flake8-slots
"T10", # flake8-debugger
"TC", # flake8-type-checking
] ]
ignore = [ ignore = [
"PLR", # Design related pylint codes "PLR", # Design related pylint codes
+1 -7
View File
@@ -385,13 +385,7 @@ def test_environment_markers(tmp_path):
**cp313_env, **cp313_env,
"CIBW_TEST_COMMAND": f"python -m pytest {test_filename}", "CIBW_TEST_COMMAND": f"python -m pytest {test_filename}",
"CIBW_TEST_SOURCES": test_filename, "CIBW_TEST_SOURCES": test_filename,
"CIBW_TEST_REQUIRES": " ".join( "CIBW_TEST_REQUIRES": "pytest certifi;sys_platform=='android' platformdirs;sys_platform!='android'",
[
"pytest",
"certifi;sys_platform=='android'",
"platformdirs;sys_platform!='android'",
]
),
}, },
) )
+2 -2
View File
@@ -56,7 +56,7 @@ def test_build_default_launches(monkeypatch):
main() main()
build_in_container = typing.cast(mock.Mock, platforms.linux.build_in_container) build_in_container = typing.cast("mock.Mock", platforms.linux.build_in_container)
assert build_in_container.call_count == 4 assert build_in_container.call_count == 4
@@ -126,7 +126,7 @@ before-all = "true"
main() main()
build_in_container = typing.cast(mock.Mock, platforms.linux.build_in_container) build_in_container = typing.cast("mock.Mock", platforms.linux.build_in_container)
assert build_in_container.call_count == 7 assert build_in_container.call_count == 7
+4 -1
View File
@@ -1,5 +1,5 @@
import shlex import shlex
from pathlib import Path from typing import TYPE_CHECKING
import pytest import pytest
@@ -13,6 +13,9 @@ from cibuildwheel.options import (
_resolve_cascade, _resolve_cascade,
) )
if TYPE_CHECKING:
from pathlib import Path
PYPROJECT_1 = """ PYPROJECT_1 = """
[tool.cibuildwheel] [tool.cibuildwheel]
build = "cp39*" build = "cp39*"