style(types): use new bracex static typing support (#887)

* style(types): use new bracex static typing support

* style(types): add a bit more basic typing

* style(types): globally ignore ghapi

* style(types): include a bit more in the global ignores

* fix(types): line invalid on Python 3.6

* fix: require typing_extensions 3.10
This commit is contained in:
Henry Schreiner
2021-10-26 15:56:35 -04:00
committed by GitHub
parent 2f4987fab9
commit 603a7b5bde
7 changed files with 21 additions and 20 deletions
+4 -1
View File
@@ -55,7 +55,9 @@ repos:
exclude: ^(bin|cibuildwheel/resources|docs)/.*py$
args: ["--python-version=3.6", "--scripts-are-modules", "--show-error-codes"]
additional_dependencies: &mypy-dependencies
- nox
- packaging>=21.0
- pygithub
- rich
- tomli
- types-certifi
@@ -64,9 +66,10 @@ repos:
- types-jinja2
- types-pyyaml
- types-requests
- bracex
- id: mypy
name: mypy 3.7+ on bin/
files: ^((bin|docs)/.*py|noxfile.py)$
files: ^((bin|docs)/.*py)$
args: ["--python-version=3.7", "--scripts-are-modules", "--show-error-codes"]
additional_dependencies: *mypy-dependencies
+1 -1
View File
@@ -7,7 +7,7 @@ from typing import Iterator
import click
import yaml
from ghapi.core import GhApi, HTTP404NotFoundError # type: ignore[import]
from ghapi.core import GhApi, HTTP404NotFoundError
from rich import print
from cibuildwheel.projectfiles import Analyzer
+1 -1
View File
@@ -163,7 +163,7 @@ def main() -> None:
os.environ["CIBUILDWHEEL"] = "1"
# Python is buffering by default when running on the CI platforms, giving problems interleaving subprocess call output with unflushed calls to 'print'
sys.stdout = Unbuffered(sys.stdout) # type: ignore[no-untyped-call,assignment]
sys.stdout = Unbuffered(sys.stdout) # type: ignore[assignment]
print_preamble(platform=platform, options=options, identifiers=identifiers)
+3 -4
View File
@@ -1,15 +1,14 @@
import subprocess
import sys
import textwrap
from collections import OrderedDict
from pathlib import Path, PurePath
from typing import Iterator, List, NamedTuple, Set
from typing import Iterator, List, NamedTuple, Set, Tuple
from .architecture import Architecture
from .docker_container import DockerContainer
from .logger import log
from .options import Options
from .typing import PathOrStr, assert_never
from .typing import OrderedDict, PathOrStr, assert_never
from .util import (
BuildSelector,
NonPlatformWheelError,
@@ -80,7 +79,7 @@ def get_build_steps(
Groups PythonConfigurations into BuildSteps. Each BuildStep represents a
separate Docker container.
"""
steps: OrderedDict[tuple, BuildStep] = OrderedDict() # type: ignore[type-arg]
steps = OrderedDict[Tuple[str, str, str], BuildStep]()
for config in python_configurations:
_, platform_tag = config.identifier.split("-", 1)
+8 -8
View File
@@ -12,7 +12,7 @@ import urllib.request
from enum import Enum
from pathlib import Path
from time import sleep
from typing import Dict, Iterator, List, Optional
from typing import Any, Dict, Iterable, Iterator, List, Optional, TextIO
import bracex
import certifi
@@ -84,9 +84,9 @@ def selector_matches(patterns: str, string: str) -> bool:
expansion. For example, 'cp{36,37}-*' would match either of 'cp36-*' or
'cp37-*'.
"""
patterns_list: List[str] = patterns.split()
patterns_list = itertools.chain.from_iterable(bracex.expand(p) for p in patterns_list) # type: ignore[assignment]
return any(fnmatch.fnmatch(string, pat) for pat in patterns_list)
patterns_list = patterns.split()
expanded_patterns = itertools.chain.from_iterable(bracex.expand(p) for p in patterns_list)
return any(fnmatch.fnmatch(string, pat) for pat in expanded_patterns)
class IdentifierSelector:
@@ -161,18 +161,18 @@ class TestSelector(IdentifierSelector):
# Taken from https://stackoverflow.com/a/107717
class Unbuffered:
def __init__(self, stream): # type: ignore[no-untyped-def]
def __init__(self, stream: TextIO) -> None:
self.stream = stream
def write(self, data): # type: ignore[no-untyped-def]
def write(self, data: str) -> None:
self.stream.write(data)
self.stream.flush()
def writelines(self, data): # type: ignore[no-untyped-def]
def writelines(self, data: Iterable[str]) -> None:
self.stream.writelines(data)
self.stream.flush()
def __getattr__(self, attr): # type: ignore[no-untyped-def]
def __getattr__(self, attr: str) -> Any:
return getattr(self.stream, attr)
+3 -4
View File
@@ -32,7 +32,8 @@ files = [
"cibuildwheel/*.py",
"test/**/*.py",
"unit_test/**/*.py",
"bin/*.py"
"bin/*.py",
"noxfile.py",
]
warn_unused_configs = true
warn_redundant_casts = true
@@ -58,10 +59,8 @@ module = [
"setuptools",
"pytest", # ignored in pre-commit to speed up check
"bashlex",
"bracex",
"importlib_resources",
"nox",
"github",
"ghapi.*",
]
ignore_missing_imports = true
+1 -1
View File
@@ -37,7 +37,7 @@ install_requires =
packaging
tomli
dataclasses;python_version < '3.7'
typing_extensions;python_version < '3.8'
typing_extensions>=3.10.0.0;python_version < '3.8'
python_requires = >=3.6
include_package_data = True
zip_safe = False