Zanie Blue
7706f561a9
Do not offer an invalid fix for PLR1716 when the comparisons contain parenthesis ( #13527 )
...
Related to https://github.com/astral-sh/ruff/issues/13524
Doesn't offer a valid fix, opting to instead just not offer a fix at
all. If someone points me to a good way to handle parenthesis here I'm
down to try to fix the fix separately, but it looks quite hard.
2024-09-26 19:01:06 +00:00
Zanie Blue
58a8e9c511
Fix handling of slices in tuples for FURB118, e.g., `x[:, 1]` ( #13518 )
...
There was already handling for the singleton `x[:]` case but not the
tuple case.
Closes https://github.com/astral-sh/ruff/issues/13508
2024-09-26 14:20:03 +00:00
ukyen
e83388dcea
Don't raise `D208` when last line is non-empty ( #13372 )
...
Co-authored-by: Micha Reiser <micha@reiser.io>
2024-09-26 14:53:21 +02:00
Zanie Blue
481065238b
Avoid UP028 false negatives with non-reference shadowed bindings of loop variables ( #13504 )
...
Closes https://github.com/astral-sh/ruff/issues/13266
Avoids false negatives for shadowed bindings that aren't actually
references to the loop variable. There are some shadowed bindings we
need to support still, e.g., `del` requires the loop variable to exist.
2024-09-25 10:03:09 -05:00
Zanie Blue
11f06e0d55
Detect SIM910 when using variadic keyword arguments, i.e., `**kwargs` ( #13503 )
...
Closes https://github.com/astral-sh/ruff/issues/13493
2024-09-25 10:02:59 -05:00
Vince van Noort
ca0ae0a484
[pylint] Implement `boolean-chained-comparison` (`R1716`) ( #13435 )
...
Co-authored-by: Micha Reiser <micha@reiser.io>
2024-09-25 09:14:12 +00:00
yahayaohinoyi
03f3a4e855
[pycodestyle] Fix: Don't autofix if the first line ends in a question mark? (D400) ( #13399 )
...
Co-authored-by: Micha Reiser <micha@reiser.io>
2024-09-20 11:05:26 +00:00
Dylan
f110d80279
[refurb] Skip `slice-to-remove-prefix-or-suffix (FURB188)` when nontrivial slice step is present ( #13405 )
2024-09-19 12:47:17 -04:00
Charlie Marsh
44d916fb4e
Respect FastAPI aliases in route definitions ( #13394 )
...
## Summary
Closes https://github.com/astral-sh/ruff/issues/13263
2024-09-18 12:06:49 -04:00
Charlie Marsh
70748950ae
Respect word boundaries when detecting function signature in docs ( #13388 )
...
## Summary
Closes https://github.com/astral-sh/ruff/issues/13242 .
2024-09-18 00:01:38 -04:00
Auguste Lalande
d6bd841512
[`pydoclint`] Ignore `DOC201` when function name is "__new__" ( #13300 )
2024-09-10 13:25:38 -04:00
Micha Reiser
ac720cd705
`ERA001`: Ignore script-comments with multiple end-tags ( #13283 )
2024-09-09 19:47:39 +01:00
Dylan
b04948fb72
[refurb] Implement `slice-to-remove-prefix-or-suffix` (`FURB188`) ( #13256 )
2024-09-09 15:08:44 +00:00
Dylan
a7c936878d
[`ruff`] Handle unary operators in `decimal-from-float-literal (RUF032)` ( #13275 )
...
Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
2024-09-07 13:25:49 +00:00
Lucas Vieira dos Santos
9d1bd7a8a7
[pylint] removed dunder methods in Python 3 (PLW3201) ( #13194 )
...
Co-authored-by: Micha Reiser <micha@reiser.io>
2024-09-04 08:23:08 +02:00
Lucas Vieira dos Santos
e37bde458e
[ruff] implement useless if-else (RUF034) ( #13218 )
2024-09-04 08:22:17 +02:00
Alex Waygood
387af831f9
Improve detection of whether a symbol refers to a builtin exception ( #13215 )
2024-09-03 10:33:03 +00:00
Alex Waygood
c0e2c13d0d
[`flake8-pyi`] Teach various rules that annotations might be stringized ( #12951 )
2024-09-02 13:40:06 +00:00
Tom Kuson
ea0246c51a
[`ruff`] Implement post-init-default (`RUF033`) ( #13192 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2024-09-02 13:10:55 +01:00
Charlie Marsh
c4aad4b161
Use dynamic builtins list based on Python version ( #13172 )
...
## Summary
Closes https://github.com/astral-sh/ruff/issues/13037 .
2024-09-01 17:03:44 +00:00
Alex Waygood
3abd5c08a5
[`pylint`] Recurse into subscript subexpressions when searching for list/dict lookups (`PLR1733`, `PLR1736`) ( #13186 )
...
## Summary
The `SequenceIndexVisitor` currently does not recurse into
subexpressions of subscripts when searching for subscript accesses that
would trigger this rule. That means that we don't currently detect
violations of the rule on snippets like this:
```py
data = {"a": 1, "b": 2}
column_names = ["a", "b"]
for index, column_name in enumerate(column_names):
_ = data[column_names[index]]
```
Fixes #13183
## Test Plan
`cargo test -p ruff_linter`
2024-09-01 17:22:45 +01:00
Tom Kuson
bf620dcb38
[`pydoclint`] Permit yielding `None` in DOC402 and DOC403 ( #13148 )
...
Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
2024-09-01 02:03:39 +01:00
Charlie Marsh
828871dc5c
[`pyupgrade`] Detect `aiofiles.open` calls in `UP015` ( #13173 )
...
## Summary
Closes https://github.com/astral-sh/ruff/issues/12879 .
2024-08-30 19:39:00 -04:00
Charlie Marsh
ee21fc7fd8
Mark `sys.version_info[0] < 3` and similar comparisons as outdated ( #13175 )
...
## Summary
Closes https://github.com/astral-sh/ruff/issues/12993 .
2024-08-30 19:38:46 -04:00
Charlie Marsh
a73bebcf15
Avoid `no-self-use` for `attrs`-style validators ( #13166 )
...
## Summary
Closes https://github.com/astral-sh/ruff/issues/12568 .
2024-08-30 12:39:05 -04:00
Charlie Marsh
34dafb67a2
Treat `sep` arguments with effects as unsafe removals ( #13165 )
...
## Summary
Closes https://github.com/astral-sh/ruff/issues/13126 .
2024-08-30 12:17:47 -04:00
Alex Waygood
34b4732c46
[`flake8-pyi`] Respect `pep8_naming.classmethod-decorators` settings when determining if a method is a classmethod in `custom-type-var-return-type` (`PYI019`) ( #13162 )
2024-08-30 14:24:01 +01:00
Alex Waygood
281e6d9791
[`pydocstyle`] Improve heuristics for detecting Google-style docstrings ( #13142 )
2024-08-29 16:33:18 +01:00
Steve C
a99832088a
[`ruff`] - extend comment deletions for unused-noqa (`RUF100`) ( #13105 )
...
## Summary
Extends deletions for RUF100, deleting trailing text from noqa
directives, while preserving upcoming comments on the same line if any.
In cases where it deletes a comment up to another comment on the same
line, the whitespace between them is now shown to be in the autofix in
the diagnostic as well. Leading whitespace before the removed comment is
not, though.
Fixes #12251
## Test Plan
`cargo test`
2024-08-29 10:50:16 +05:30
Adam Kuhn
df694ca1c1
[`FastAPI`] Avoid introducing invalid syntax in fix for `fast-api-non-annotated-dependency` (`FAST002`) ( #13133 )
2024-08-28 15:29:00 +00:00
Dylan
483748c188
[`flake8-implicit-str-concat`] Normalize octals before merging concatenated strings in `single-line-implicit-string-concatenation` (`ISC001`) ( #13118 )
...
Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
2024-08-27 18:53:27 +01:00
Tom Kuson
96b42b0c8f
[`DOC201`] Permit explicit `None` in functions that only return `None` ( #13064 )
...
Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
2024-08-27 16:00:18 +00:00
Calum Young
4e1b289a67
Disable E741 in stub files ( #13119 )
...
Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
2024-08-27 15:02:14 +01:00
Steve C
0b5828a1e8
[`flake8-simplify`] - extend open-file-with-context-handler to work with dbm.sqlite3 (`SIM115`) ( #13104 )
...
## Summary
Adds upcoming `dbm.sqlite3` to rule that suggests using context managers
to open things with.
See: https://docs.python.org/3.13/library/dbm.html#module-dbm.sqlite3
## Test Plan
`cargo test`
2024-08-26 08:11:03 +01:00
Steve C
5af48337a5
[`pylint`] - fix incorrect starred expression replacement for `nested-min-max` (`PLW3301`) ( #13089 )
...
## Summary
Moves the min/max detection up, and fixes #13088
## Test Plan
`cargo test`
2024-08-26 10:01:38 +05:30
Steve C
d37e2e5d33
[`flake8-simplify`] Extend open-file-with-context-handler to work with other standard-library IO modules (`SIM115`) ( #12959 )
...
Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
2024-08-22 14:18:55 +01:00
Dylan
9baab8672a
[`flake8-pyi`] Skip type annotations in `string-or-bytes-too-long` (`PYI053`) ( #13002 )
2024-08-20 10:53:22 +01:00
Ken Baskett
f4c8c7eb70
[ruff] Implement check for Decimal called with a float literal (RUF032) ( #12909 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
Co-authored-by: Micha Reiser <micha@reiser.io>
2024-08-19 09:22:19 +00:00
Steve C
4881d32c80
[`pylint`] - remove AugAssign errors from `self-cls-assignment` (`W0642`) ( #12957 )
2024-08-18 15:31:09 +00:00
Steve C
81a2220ce1
[`pylint`] - Allow `__new__` methods to have `cls` as their first argument even if decorated with `@staticmethod` for `bad-staticmethod-argument` (`PLW0211`) ( #12958 )
2024-08-18 16:30:22 +01:00
TomerBin
52ba94191a
[`ruff`] Reduce FastAPI false positives in `unused-async` (`RUF029`) ( #12938 )
2024-08-17 14:25:14 +00:00
Micha Reiser
96802d6a7f
[`pep8-naming`] Don't flag `from` imports following conventional import names (`N817`) ( #12946 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2024-08-17 12:05:42 +00:00
Daniel Sonbolian
25f5ae44c4
[flake8_bugbear] message based on expression location [B015] ( #12944 )
2024-08-17 13:54:19 +02:00
Alex Waygood
251efe5c41
[`ruff`] Ignore `fstring-missing-syntax` (`RUF027`) for `fastAPI` paths ( #12939 )
...
## Summary
As suggested by @MichaReiser in
https://github.com/astral-sh/ruff/pull/12886#pullrequestreview-2237679793 ,
this adds an exemption to `RUF027` for `fastAPI` paths, which require
template strings rather than eagerly evaluated f-strings.
## Test Plan
I added a fixture that causes Ruff to emit a false-positive error on
`main` but no longer does with this PR.
2024-08-17 11:10:34 +01:00
Micha Reiser
aba0d83c11
[`flake8-naming`]: Respect import conventions (`N817`) ( #12922 )
2024-08-16 16:28:57 +01:00
Matthieu LAURENT
f121f8b31b
[`fastapi`] Implement `fast-api-unused-path-parameter` (`FAST003`) ( #12638 )
...
This adds the `fast-api-unused-path-parameter` lint rule, as described
in #12632 .
I'm still pretty new to rust, so the code can probably be improved, feel
free to tell me if there's any changes i should make.
Also, i needed to add the `add_parameter` edit function, not sure if it
was in the scope of the PR or if i should've made another one.
2024-08-16 01:46:35 +00:00
Jonathan Plasse
52d27befe8
Rename too-many-positional(-arguments) ( #12905 )
2024-08-15 18:13:25 +02:00
Dylan
e4c2859c0f
[`flake8-async`] Do not lint yield in context manager `cancel-scope-no-checkpoint` (`ASYNC100`) ( #12896 )
...
For compatibility with upstream, treat `yield` as a checkpoint inside
cancel scopes.
Closes #12873 .
2024-08-15 01:02:57 +00:00
Dylan
6dcd743111
[`flake8-comprehensions`] Do not lint `async for` comprehensions in `unnecessary-comprehension-in-call (`C419`)` ( #12895 )
...
List and set comprehensions using `async for` cannot be replaced with
underlying generators; this PR modifies C419 to skip such
comprehensions.
Closes #12891 .
2024-08-15 01:00:10 +00:00
Micha Reiser
eb9c7ae869
Stabilize fixes for `RET50{5-8}` ( #12840 )
...
Fixes #10099
2024-08-14 18:15:45 +02:00