Replace remaining aliases to built-in types (#4485)
This commit is contained in:
parent
fff747d61b
commit
484a669699
@ -10,7 +10,7 @@
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
from functools import lru_cache, partial
|
||||
from pathlib import Path
|
||||
from typing import Generator, List, NamedTuple, Optional, Tuple, Union, cast
|
||||
from typing import Generator, NamedTuple, Optional, Union, cast
|
||||
from urllib.request import urlopen, urlretrieve
|
||||
|
||||
PYPI_INSTANCE = "https://pypi.org/pypi"
|
||||
@ -54,7 +54,7 @@ def get_pypi_download_url(package: str, version: Optional[str]) -> str:
|
||||
return cast(str, source["url"])
|
||||
|
||||
|
||||
def get_top_packages() -> List[str]:
|
||||
def get_top_packages() -> list[str]:
|
||||
with urlopen(PYPI_TOP_PACKAGES) as page:
|
||||
result = json.load(page)
|
||||
|
||||
@ -150,7 +150,7 @@ def git_switch_branch(
|
||||
subprocess.run(args, cwd=repo)
|
||||
|
||||
|
||||
def init_repos(options: Namespace) -> Tuple[Path, ...]:
|
||||
def init_repos(options: Namespace) -> tuple[Path, ...]:
|
||||
options.output.mkdir(exist_ok=True)
|
||||
|
||||
if options.top_packages:
|
||||
@ -206,7 +206,7 @@ def format_repo_with_version(
|
||||
git_switch_branch(black_version.version, repo=black_repo)
|
||||
git_switch_branch(current_branch, repo=repo, new=True, from_branch=from_branch)
|
||||
|
||||
format_cmd: List[Union[Path, str]] = [
|
||||
format_cmd: list[Union[Path, str]] = [
|
||||
black_runner(black_version.version, black_repo),
|
||||
(black_repo / "black.py").resolve(),
|
||||
".",
|
||||
@ -222,7 +222,7 @@ def format_repo_with_version(
|
||||
return current_branch
|
||||
|
||||
|
||||
def format_repos(repos: Tuple[Path, ...], options: Namespace) -> None:
|
||||
def format_repos(repos: tuple[Path, ...], options: Namespace) -> None:
|
||||
black_versions = tuple(
|
||||
BlackVersion(*version.split(":")) for version in options.versions
|
||||
)
|
||||
|
@ -18,12 +18,12 @@
|
||||
|
||||
import sys
|
||||
from os.path import basename, dirname, join
|
||||
from typing import Iterable, Tuple
|
||||
from typing import Iterable
|
||||
|
||||
import wcwidth # type: ignore[import-not-found]
|
||||
|
||||
|
||||
def make_width_table() -> Iterable[Tuple[int, int, int]]:
|
||||
def make_width_table() -> Iterable[tuple[int, int, int]]:
|
||||
start_codepoint = -1
|
||||
end_codepoint = -1
|
||||
range_width = -2
|
||||
@ -53,9 +53,9 @@ def main() -> None:
|
||||
f.write(f"""# Generated by {basename(__file__)}
|
||||
# wcwidth {wcwidth.__version__}
|
||||
# Unicode {wcwidth.list_versions()[-1]}
|
||||
from typing import Final, List, Tuple
|
||||
from typing import Final
|
||||
|
||||
WIDTH_TABLE: Final[List[Tuple[int, int, int]]] = [
|
||||
WIDTH_TABLE: Final[list[tuple[int, int, int]]] = [
|
||||
""")
|
||||
for triple in make_width_table():
|
||||
f.write(f" {triple!r},\n")
|
||||
|
@ -18,7 +18,7 @@
|
||||
import logging
|
||||
import re
|
||||
from functools import lru_cache
|
||||
from typing import TYPE_CHECKING, FrozenSet, List, Set
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
import pytest
|
||||
|
||||
@ -46,8 +46,8 @@
|
||||
from _pytest.nodes import Node
|
||||
|
||||
|
||||
ALL_POSSIBLE_OPTIONAL_MARKERS = StashKey[FrozenSet[str]]()
|
||||
ENABLED_OPTIONAL_MARKERS = StashKey[FrozenSet[str]]()
|
||||
ALL_POSSIBLE_OPTIONAL_MARKERS = StashKey[frozenset[str]]()
|
||||
ENABLED_OPTIONAL_MARKERS = StashKey[frozenset[str]]()
|
||||
|
||||
|
||||
def pytest_addoption(parser: "Parser") -> None:
|
||||
@ -69,7 +69,7 @@ def pytest_configure(config: "Config") -> None:
|
||||
"""
|
||||
ot_ini = config.inicfg.get("optional-tests") or []
|
||||
ot_markers = set()
|
||||
ot_run: Set[str] = set()
|
||||
ot_run: set[str] = set()
|
||||
if isinstance(ot_ini, str):
|
||||
ot_ini = ot_ini.strip().split("\n")
|
||||
marker_re = re.compile(r"^\s*(?P<no>no_)?(?P<marker>\w+)(:\s*(?P<description>.*))?")
|
||||
@ -103,7 +103,7 @@ def pytest_configure(config: "Config") -> None:
|
||||
store[ENABLED_OPTIONAL_MARKERS] = frozenset(ot_run)
|
||||
|
||||
|
||||
def pytest_collection_modifyitems(config: "Config", items: "List[Node]") -> None:
|
||||
def pytest_collection_modifyitems(config: "Config", items: "list[Node]") -> None:
|
||||
store = config._store
|
||||
all_possible_optional_markers = store[ALL_POSSIBLE_OPTIONAL_MARKERS]
|
||||
enabled_optional_markers = store[ENABLED_OPTIONAL_MARKERS]
|
||||
@ -120,7 +120,7 @@ def pytest_collection_modifyitems(config: "Config", items: "List[Node]") -> None
|
||||
|
||||
|
||||
@lru_cache
|
||||
def skip_mark(tests: FrozenSet[str]) -> "MarkDecorator":
|
||||
def skip_mark(tests: frozenset[str]) -> "MarkDecorator":
|
||||
names = ", ".join(sorted(tests))
|
||||
return pytest.mark.skip(reason=f"Marked with disabled optional tests ({names})")
|
||||
|
||||
|
@ -17,19 +17,7 @@
|
||||
from pathlib import Path, WindowsPath
|
||||
from platform import system
|
||||
from tempfile import TemporaryDirectory
|
||||
from typing import (
|
||||
Any,
|
||||
Callable,
|
||||
Dict,
|
||||
Iterator,
|
||||
List,
|
||||
Optional,
|
||||
Sequence,
|
||||
Set,
|
||||
Type,
|
||||
TypeVar,
|
||||
Union,
|
||||
)
|
||||
from typing import Any, Callable, Iterator, Optional, Sequence, TypeVar, Union
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import click
|
||||
@ -107,11 +95,11 @@ class FakeContext(click.Context):
|
||||
"""A fake click Context for when calling functions that need it."""
|
||||
|
||||
def __init__(self) -> None:
|
||||
self.default_map: Dict[str, Any] = {}
|
||||
self.params: Dict[str, Any] = {}
|
||||
self.default_map: dict[str, Any] = {}
|
||||
self.params: dict[str, Any] = {}
|
||||
self.command: click.Command = black.main
|
||||
# Dummy root, since most of the tests don't care about it
|
||||
self.obj: Dict[str, Any] = {"root": PROJECT_ROOT}
|
||||
self.obj: dict[str, Any] = {"root": PROJECT_ROOT}
|
||||
|
||||
|
||||
class FakeParameter(click.Parameter):
|
||||
@ -129,7 +117,7 @@ def __init__(self) -> None:
|
||||
|
||||
|
||||
def invokeBlack(
|
||||
args: List[str], exit_code: int = 0, ignore_config: bool = True
|
||||
args: list[str], exit_code: int = 0, ignore_config: bool = True
|
||||
) -> None:
|
||||
runner = BlackRunner()
|
||||
if ignore_config:
|
||||
@ -933,7 +921,7 @@ def test_get_features_used(self) -> None:
|
||||
"with ((a, ((b as c)))): pass", {Feature.PARENTHESIZED_CONTEXT_MANAGERS}
|
||||
)
|
||||
|
||||
def check_features_used(self, source: str, expected: Set[Feature]) -> None:
|
||||
def check_features_used(self, source: str, expected: set[Feature]) -> None:
|
||||
node = black.lib2to3_parse(source)
|
||||
actual = black.get_features_used(node)
|
||||
msg = f"Expected {expected} but got {actual} for {source!r}"
|
||||
@ -1365,7 +1353,7 @@ def test_reformat_one_with_stdin_empty(self) -> None:
|
||||
]
|
||||
|
||||
def _new_wrapper(
|
||||
output: io.StringIO, io_TextIOWrapper: Type[io.TextIOWrapper]
|
||||
output: io.StringIO, io_TextIOWrapper: type[io.TextIOWrapper]
|
||||
) -> Callable[[Any, Any], io.TextIOWrapper]:
|
||||
def get_output(*args: Any, **kwargs: Any) -> io.TextIOWrapper:
|
||||
if args == (sys.stdout.buffer,):
|
||||
@ -2350,7 +2338,7 @@ def test_read_cache_line_lengths(self) -> None:
|
||||
def test_cache_key(self) -> None:
|
||||
# Test that all members of the mode enum affect the cache key.
|
||||
for field in fields(Mode):
|
||||
values: List[Any]
|
||||
values: list[Any]
|
||||
if field.name == "target_versions":
|
||||
values = [
|
||||
{TargetVersion.PY312},
|
||||
@ -2463,7 +2451,7 @@ def test_gitignore_exclude(self) -> None:
|
||||
gitignore = PathSpec.from_lines(
|
||||
"gitwildmatch", ["exclude/", ".definitely_exclude"]
|
||||
)
|
||||
sources: List[Path] = []
|
||||
sources: list[Path] = []
|
||||
expected = [
|
||||
Path(path / "b/dont_exclude/a.py"),
|
||||
Path(path / "b/dont_exclude/a.pyi"),
|
||||
@ -2491,7 +2479,7 @@ def test_nested_gitignore(self) -> None:
|
||||
exclude = re.compile(r"")
|
||||
root_gitignore = black.files.get_gitignore(path)
|
||||
report = black.Report()
|
||||
expected: List[Path] = [
|
||||
expected: list[Path] = [
|
||||
Path(path / "x.py"),
|
||||
Path(path / "root/b.py"),
|
||||
Path(path / "root/c.py"),
|
||||
|
@ -7,7 +7,7 @@
|
||||
import re
|
||||
from itertools import islice
|
||||
from pathlib import Path
|
||||
from typing import Optional, Sequence, Set
|
||||
from typing import Optional, Sequence
|
||||
|
||||
import pytest
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
|
||||
|
||||
def check_feature_list(
|
||||
lines: Sequence[str], expected_feature_names: Set[str], label: str
|
||||
lines: Sequence[str], expected_feature_names: set[str], label: str
|
||||
) -> Optional[str]:
|
||||
start_index = lines.index(f"(labels/{label}-features)=\n")
|
||||
if start_index == -1:
|
||||
|
@ -1,7 +1,5 @@
|
||||
"""Test the black.ranges module."""
|
||||
|
||||
from typing import List, Tuple
|
||||
|
||||
import pytest
|
||||
|
||||
from black.ranges import adjusted_lines, sanitized_lines
|
||||
@ -11,7 +9,7 @@
|
||||
"lines",
|
||||
[[(1, 1)], [(1, 3)], [(1, 1), (3, 4)]],
|
||||
)
|
||||
def test_no_diff(lines: List[Tuple[int, int]]) -> None:
|
||||
def test_no_diff(lines: list[tuple[int, int]]) -> None:
|
||||
source = """\
|
||||
import re
|
||||
|
||||
@ -32,7 +30,7 @@ def func():
|
||||
[(0, 8), (3, 1)],
|
||||
],
|
||||
)
|
||||
def test_invalid_lines(lines: List[Tuple[int, int]]) -> None:
|
||||
def test_invalid_lines(lines: list[tuple[int, int]]) -> None:
|
||||
original_source = """\
|
||||
import re
|
||||
def foo(arg):
|
||||
@ -83,7 +81,7 @@ def func(arg1, arg2, arg3):
|
||||
],
|
||||
)
|
||||
def test_removals(
|
||||
lines: List[Tuple[int, int]], adjusted: List[Tuple[int, int]]
|
||||
lines: list[tuple[int, int]], adjusted: list[tuple[int, int]]
|
||||
) -> None:
|
||||
original_source = """\
|
||||
1. first line
|
||||
@ -118,7 +116,7 @@ def test_removals(
|
||||
],
|
||||
)
|
||||
def test_additions(
|
||||
lines: List[Tuple[int, int]], adjusted: List[Tuple[int, int]]
|
||||
lines: list[tuple[int, int]], adjusted: list[tuple[int, int]]
|
||||
) -> None:
|
||||
original_source = """\
|
||||
1. first line
|
||||
@ -154,7 +152,7 @@ def test_additions(
|
||||
([(9, 10), (1, 1)], [(1, 1), (9, 9)]),
|
||||
],
|
||||
)
|
||||
def test_diffs(lines: List[Tuple[int, int]], adjusted: List[Tuple[int, int]]) -> None:
|
||||
def test_diffs(lines: list[tuple[int, int]], adjusted: list[tuple[int, int]]) -> None:
|
||||
original_source = """\
|
||||
1. import re
|
||||
2. def foo(arg):
|
||||
@ -231,7 +229,7 @@ def test_diffs(lines: List[Tuple[int, int]], adjusted: List[Tuple[int, int]]) ->
|
||||
],
|
||||
)
|
||||
def test_sanitize(
|
||||
lines: List[Tuple[int, int]], sanitized: List[Tuple[int, int]]
|
||||
lines: list[tuple[int, int]], sanitized: list[tuple[int, int]]
|
||||
) -> None:
|
||||
source = """\
|
||||
1. import re
|
||||
|
@ -4,7 +4,6 @@
|
||||
import sys
|
||||
import textwrap
|
||||
from dataclasses import dataclass
|
||||
from typing import List
|
||||
|
||||
import black
|
||||
from blib2to3.pgen2 import token, tokenize
|
||||
@ -18,10 +17,10 @@ class Token:
|
||||
end: tokenize.Coord
|
||||
|
||||
|
||||
def get_tokens(text: str) -> List[Token]:
|
||||
def get_tokens(text: str) -> list[Token]:
|
||||
"""Return the tokens produced by the tokenizer."""
|
||||
readline = io.StringIO(text).readline
|
||||
tokens: List[Token] = []
|
||||
tokens: list[Token] = []
|
||||
|
||||
def tokeneater(
|
||||
type: int, string: str, start: tokenize.Coord, end: tokenize.Coord, line: str
|
||||
@ -32,7 +31,7 @@ def tokeneater(
|
||||
return tokens
|
||||
|
||||
|
||||
def assert_tokenizes(text: str, tokens: List[Token]) -> None:
|
||||
def assert_tokenizes(text: str, tokens: list[Token]) -> None:
|
||||
"""Assert that the tokenizer produces the expected tokens."""
|
||||
actual_tokens = get_tokens(text)
|
||||
assert actual_tokens == tokens
|
||||
|
@ -1,11 +1,9 @@
|
||||
from typing import List, Tuple
|
||||
|
||||
from black.trans import iter_fexpr_spans
|
||||
|
||||
|
||||
def test_fexpr_spans() -> None:
|
||||
def check(
|
||||
string: str, expected_spans: List[Tuple[int, int]], expected_slices: List[str]
|
||||
string: str, expected_spans: list[tuple[int, int]], expected_slices: list[str]
|
||||
) -> None:
|
||||
spans = list(iter_fexpr_spans(string))
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
from dataclasses import dataclass, field, replace
|
||||
from functools import partial
|
||||
from pathlib import Path
|
||||
from typing import Any, Collection, Iterator, List, Optional, Tuple
|
||||
from typing import Any, Collection, Iterator, Optional
|
||||
|
||||
import black
|
||||
from black.const import DEFAULT_LINE_LENGTH
|
||||
@ -44,8 +44,8 @@
|
||||
class TestCaseArgs:
|
||||
mode: black.Mode = field(default_factory=black.Mode)
|
||||
fast: bool = False
|
||||
minimum_version: Optional[Tuple[int, int]] = None
|
||||
lines: Collection[Tuple[int, int]] = ()
|
||||
minimum_version: Optional[tuple[int, int]] = None
|
||||
lines: Collection[tuple[int, int]] = ()
|
||||
no_preview_line_length_1: bool = False
|
||||
|
||||
|
||||
@ -95,8 +95,8 @@ def assert_format(
|
||||
mode: black.Mode = DEFAULT_MODE,
|
||||
*,
|
||||
fast: bool = False,
|
||||
minimum_version: Optional[Tuple[int, int]] = None,
|
||||
lines: Collection[Tuple[int, int]] = (),
|
||||
minimum_version: Optional[tuple[int, int]] = None,
|
||||
lines: Collection[tuple[int, int]] = (),
|
||||
no_preview_line_length_1: bool = False,
|
||||
) -> None:
|
||||
"""Convenience function to check that Black formats as expected.
|
||||
@ -164,8 +164,8 @@ def _assert_format_inner(
|
||||
mode: black.Mode = DEFAULT_MODE,
|
||||
*,
|
||||
fast: bool = False,
|
||||
minimum_version: Optional[Tuple[int, int]] = None,
|
||||
lines: Collection[Tuple[int, int]] = (),
|
||||
minimum_version: Optional[tuple[int, int]] = None,
|
||||
lines: Collection[tuple[int, int]] = (),
|
||||
) -> None:
|
||||
actual = black.format_str(source, mode=mode, lines=lines)
|
||||
if expected is not None:
|
||||
@ -195,7 +195,7 @@ def get_base_dir(data: bool) -> Path:
|
||||
return DATA_DIR if data else PROJECT_ROOT
|
||||
|
||||
|
||||
def all_data_cases(subdir_name: str, data: bool = True) -> List[str]:
|
||||
def all_data_cases(subdir_name: str, data: bool = True) -> list[str]:
|
||||
cases_dir = get_base_dir(data) / subdir_name
|
||||
assert cases_dir.is_dir()
|
||||
return [case_path.stem for case_path in cases_dir.iterdir()]
|
||||
@ -214,18 +214,18 @@ def get_case_path(
|
||||
|
||||
def read_data_with_mode(
|
||||
subdir_name: str, name: str, data: bool = True
|
||||
) -> Tuple[TestCaseArgs, str, str]:
|
||||
) -> tuple[TestCaseArgs, str, str]:
|
||||
"""read_data_with_mode('test_name') -> Mode(), 'input', 'output'"""
|
||||
return read_data_from_file(get_case_path(subdir_name, name, data))
|
||||
|
||||
|
||||
def read_data(subdir_name: str, name: str, data: bool = True) -> Tuple[str, str]:
|
||||
def read_data(subdir_name: str, name: str, data: bool = True) -> tuple[str, str]:
|
||||
"""read_data('test_name') -> 'input', 'output'"""
|
||||
_, input, output = read_data_with_mode(subdir_name, name, data)
|
||||
return input, output
|
||||
|
||||
|
||||
def _parse_minimum_version(version: str) -> Tuple[int, int]:
|
||||
def _parse_minimum_version(version: str) -> tuple[int, int]:
|
||||
major, minor = version.split(".")
|
||||
return int(major), int(minor)
|
||||
|
||||
@ -302,11 +302,11 @@ def parse_mode(flags_line: str) -> TestCaseArgs:
|
||||
)
|
||||
|
||||
|
||||
def read_data_from_file(file_name: Path) -> Tuple[TestCaseArgs, str, str]:
|
||||
def read_data_from_file(file_name: Path) -> tuple[TestCaseArgs, str, str]:
|
||||
with open(file_name, encoding="utf8") as test:
|
||||
lines = test.readlines()
|
||||
_input: List[str] = []
|
||||
_output: List[str] = []
|
||||
_input: list[str] = []
|
||||
_output: list[str] = []
|
||||
result = _input
|
||||
mode = TestCaseArgs()
|
||||
for line in lines:
|
||||
|
Loading…
Reference in New Issue
Block a user