Skip to content

Commit cc178f2

Browse files
committed
combine the typing rewrite info
1 parent c6d5e6c commit cc178f2

File tree

2 files changed

+23
-30
lines changed

2 files changed

+23
-30
lines changed

reorder_python_imports.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -420,14 +420,8 @@ def _fix_file(
420420
# GENERATED VIA generate-typing-rewrite-info
421421
# Using:
422422
# flake8-typing-imports==1.12.0
423-
# mypy_extensions==0.4.3
424-
# typing_extensions==4.3.0
425-
REPLACES[(3, 7)].update((
426-
'mypy_extensions=typing:NoReturn',
427-
))
428-
REPLACES[(3, 8)].update((
429-
'mypy_extensions=typing:TypedDict',
430-
))
423+
# mypy-extensions==0.4.3
424+
# typing-extensions==4.3.0
431425
REPLACES[(3, 6)].update((
432426
'typing_extensions=typing:AsyncIterable',
433427
'typing_extensions=typing:AsyncIterator',
@@ -443,6 +437,7 @@ def _fix_file(
443437
'typing_extensions=typing:get_type_hints',
444438
))
445439
REPLACES[(3, 7)].update((
440+
'mypy_extensions=typing:NoReturn',
446441
'typing_extensions=typing:AsyncContextManager',
447442
'typing_extensions=typing:AsyncGenerator',
448443
'typing_extensions=typing:ChainMap',
@@ -451,6 +446,7 @@ def _fix_file(
451446
'typing_extensions=typing:NoReturn',
452447
))
453448
REPLACES[(3, 8)].update((
449+
'mypy_extensions=typing:TypedDict',
454450
'typing_extensions=typing:Final',
455451
'typing_extensions=typing:Literal',
456452
'typing_extensions=typing:OrderedDict',

testing/generate-typing-rewrite-info

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#!/usr/bin/env python3
22
from __future__ import annotations
33

4+
import collections
45
import os
56
import sys
6-
from collections import defaultdict
77

88
import flake8_typing_imports
99
import mypy_extensions
@@ -50,53 +50,50 @@ def main() -> int:
5050
for attr in attrs:
5151
min_contiguous_versions.setdefault(attr, v)
5252

53-
symbols: dict[flake8_typing_imports.Version, set[str]] = defaultdict(set)
53+
symbols = collections.defaultdict(set)
5454
for a, v in min_contiguous_versions.items():
5555
symbols[v].add(a)
5656

5757
# --pyXX-plus assumes the min --pyXX so group symbols by their
5858
# rounded up major version
59-
symbols_rounded_up: dict[tuple[int, int], set[str]] = defaultdict(set)
59+
symbols_rounded_up: dict[tuple[int, int], set[str]]
60+
symbols_rounded_up = collections.defaultdict(set)
6061
for v, attrs in sorted(symbols.items()):
6162
symbols_rounded_up[v.major, v.minor + int(v.patch != 0)] |= attrs
6263

6364
# combine 3.5 and 3.6 because this lib is 3.7+
6465
symbols_rounded_up[(3, 6)] |= symbols_rounded_up.pop((3, 5))
6566

66-
deltas: dict[tuple[int, int], set[str]] = defaultdict(set)
67+
deltas = collections.defaultdict(set)
6768
prev: set[str] = set()
6869
for v, attrs in sorted(symbols_rounded_up.items()):
6970
deltas[v] = attrs - prev
7071
prev = attrs
7172

72-
mypy_extensions_added: dict[tuple[int, int], set[str]] = {}
73-
typing_extensions_added: dict[tuple[int, int], set[str]] = defaultdict(set)
73+
replaces: dict[tuple[int, int], set[str]] = collections.defaultdict(set)
7474
for v, attrs in deltas.items():
75-
mypy_extensions_added[v] = attrs & mypy_extensions_all
76-
typing_extensions_added[v] = attrs & typing_extensions_all
75+
replaces[v] |= {
76+
f'mypy_extensions=typing:{s}'
77+
for s in attrs & mypy_extensions_all
78+
} | {
79+
f'typing_extensions=typing:{s}'
80+
for s in attrs & typing_extensions_all
81+
}
7782
for v, attrs in CUSTOM_TYPING_EXT_SYMBOLS.items():
78-
typing_extensions_added[v] |= attrs
83+
replaces[v] |= {f'typing_extensions=typing:{s}' for s in attrs}
7984

8085
print(f'# GENERATED VIA {os.path.basename(sys.argv[0])}')
8186
print('# Using:')
8287
print(f'# flake8-typing-imports=={flake8_typing_imports_version}')
83-
print(f'# mypy_extensions=={mypy_extensions_version}')
84-
print(f'# typing_extensions=={typing_extensions_version}')
88+
print(f'# mypy-extensions=={mypy_extensions_version}')
89+
print(f'# typing-extensions=={typing_extensions_version}')
8590

86-
for k, v in sorted(mypy_extensions_added.items()):
91+
for k, v in sorted(replaces.items()):
8792
if not v:
8893
continue
8994
print(f'REPLACES[{k}].update((')
90-
for symbol in sorted(v):
91-
print(f" 'mypy_extensions=typing:{symbol}',")
92-
print('))')
93-
94-
for k, v in sorted(typing_extensions_added.items()):
95-
if not v:
96-
continue
97-
print(f'REPLACES[{k}].update((')
98-
for symbol in sorted(v):
99-
print(f" 'typing_extensions=typing:{symbol}',")
95+
for replace in sorted(v):
96+
print(f' {replace!r},')
10097
print('))')
10198

10299
print('# END GENERATED')

0 commit comments

Comments
 (0)