ruff/crates/ruff_linter/resources/test/fixtures/flake8_pyi/PYI066.py
Tushar Sadhwani 531ae5227c
[flake8-pyi] Implement PYI066 (#11541)
## 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`
2024-05-29 00:30:00 +00:00

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