Skip to content

Commit 6f8432d

Browse files
committed
pyupgrade fixes for python 3.14
1 parent 99080c3 commit 6f8432d

File tree

4 files changed

+18
-2
lines changed

4 files changed

+18
-2
lines changed

‎pyupgrade/_main.py‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,10 @@ def main(argv: Sequence[str] | None = None) -> int:
382382
'--py313-plus',
383383
action='store_const', dest='min_version', const=(3, 13),
384384
)
385+
parser.add_argument(
386+
'--py314-plus',
387+
action='store_const', dest='min_version', const=(3, 14),
388+
)
385389
args = parser.parse_args(argv)
386390

387391
ret = 0

‎pyupgrade/_plugins/imports.py‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from pyupgrade._token_helpers import indented_amount
2222

2323
# GENERATED VIA generate-imports
24-
# Using reorder-python-imports==3.14.0
24+
# Using reorder-python-imports==3.15.0
2525
REMOVALS = {
2626
(3,): {
2727
'__future__': {
@@ -38,6 +38,7 @@
3838
'six.moves': {'filter', 'input', 'map', 'range', 'zip'},
3939
},
4040
(3, 7): {'__future__': {'generator_stop'}},
41+
(3, 14): {'__future__': {'annotations'}},
4142
}
4243
REMOVALS[(3,)]['six.moves.builtins'] = REMOVALS[(3,)]['builtins']
4344
REPLACE_EXACT = {
@@ -236,6 +237,7 @@
236237
('typing_extensions', 'TypeVar'): 'typing',
237238
('typing_extensions', 'TypeVarTuple'): 'typing',
238239
('typing_extensions', 'TypedDict'): 'typing',
240+
('typing_extensions', 'deprecated'): 'warnings',
239241
('typing_extensions', 'get_protocol_members'): 'typing',
240242
('typing_extensions', 'is_protocol'): 'typing',
241243
('typing_extensions', 'runtime_checkable'): 'typing',

‎pyupgrade/_plugins/typing_pep563.py‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@
1616

1717

1818
def _supported_version(state: State) -> bool:
19-
return 'annotations' in state.from_imports['__future__']
19+
return (
20+
state.settings.min_version >= (3, 14) or
21+
'annotations' in state.from_imports['__future__']
22+
)
2023

2124

2225
def _dequote(i: int, tokens: list[Token], *, new: str) -> None:

‎tests/features/typing_pep563_test.py‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,13 @@ def test_fix_typing_pep563(s, expected):
372372
assert ret == expected
373373

374374

375+
def test_fixes_in_py314():
376+
src = 'def f(x: "X") -> "Y": pass\n'
377+
expected = 'def f(x: X) -> Y: pass\n'
378+
ret = _fix_plugins(src, settings=Settings(min_version=(3, 14)))
379+
assert ret == expected
380+
381+
375382
@pytest.mark.xfail(sys.version_info < (3, 12), reason='3.12+ syntax')
376383
def test_typevar_bound():
377384
src = '''\

0 commit comments

Comments
 (0)