mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-29 13:25:17 +00:00

## Summary - Implements `Y066` from `flake8-pyi` as `PYI066` - Fixes `PYI006` not being raised for `elif` clauses. This would have conflicted with PYI006's implementation, so decided to do it in the same PR. ## Test Plan `cargo test` / `cargo insta review`
54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
import sys
|
|
|
|
if sys.version_info < (3, 10): # Y066 When using if/else with sys.version_info, put the code for new Python versions first, e.g. "if sys.version_info >= (3, 10)"
|
|
def foo(x): ...
|
|
else:
|
|
def foo(x, *, bar=True): ...
|
|
|
|
if sys.version_info < (3, 8): # Y066 When using if/else with sys.version_info, put the code for new Python versions first, e.g. "if sys.version_info >= (3, 8)"
|
|
def bar(x): ...
|
|
elif sys.version_info < (3, 9): # Y066 When using if/else with sys.version_info, put the code for new Python versions first, e.g. "if sys.version_info >= (3, 9)"
|
|
def bar(x, *, bar=True): ...
|
|
elif sys.version_info < (3, 11): # Y066 When using if/else with sys.version_info, put the code for new Python versions first, e.g. "if sys.version_info >= (3, 10)"
|
|
def bar(x, *, bar=True, baz=False): ...
|
|
else:
|
|
def bar(x, *, bar=True, baz=False, qux=1): ...
|
|
|
|
|
|
if sys.version_info >= (3, 5):
|
|
...
|
|
elif sys.version_info < (3, 9): # Y066 When using if/else with sys.version_info, put the code for new Python versions first, e.g. "if sys.version_info >= (3, 10)"
|
|
...
|
|
else:
|
|
...
|
|
|
|
# Negative cases
|
|
|
|
if sys.version_info[0] == 2: ...
|
|
if sys.version_info[:1] == (2,): ...
|
|
if sys.version_info[:1] == (True,): ...
|
|
if sys.version_info < ('3', '0'): ...
|
|
if sys.version_info >= (3, 4, 3): ...
|
|
if sys.version_info == (3, 4): ...
|
|
if sys.version_info < (3, 5): ...
|
|
if sys.version_info >= (3, 5): ...
|
|
if (2, 7) <= sys.version_info < (3, 5): ...
|
|
|
|
|
|
if sys.version_info >= (3, 5):
|
|
...
|
|
else:
|
|
...
|
|
|
|
if sys.version_info >= (3, 10):
|
|
def foo1(x, *, bar=True, baz=False): ...
|
|
elif sys.version_info >= (3, 9):
|
|
def foo1(x, *, bar=True): ...
|
|
else:
|
|
def foo1(x): ...
|
|
|
|
if sys.version_info < (3, 9):
|
|
def foo2(x): ...
|
|
elif sys.version_info < (3, 10):
|
|
def foo2(x, *, bar=True): ...
|
|
# no else case, no raise
|