Commit Graph

1439 Commits

Author SHA1 Message Date
Charlie Marsh 1279c20ee1
Avoid using `typing.Self` in stub files pre-Python 3.11 (#14230)
## Summary

See:
https://github.com/astral-sh/ruff/pull/14217#discussion_r1835340869.

This means we're recommending `typing_extensions` in non-stubs pre-3.11,
which may not be a valid project dependency, but that's a separate issue
(https://github.com/astral-sh/ruff/issues/9761).
2024-11-09 13:17:36 -05:00
Charlie Marsh ce3af27f59
Avoid treating lowercase letters as `# noqa` codes (#14229)
## Summary

An oversight from the original implementation.

Closes https://github.com/astral-sh/ruff/issues/14228.
2024-11-09 12:49:35 -05:00
Harutaka Kawamura 71da1d6df5
Fix `await-outside-async` to allow `await` at the top-level scope of a notebook (#14225)
## Summary

<!-- What's the purpose of the change? What does it do, and why? -->

Fix `await-outside-async` to allow `await` at the top-level scope of a
notebook.

```python
# foo.ipynb

await asyncio.sleep(1)  # should be allowed
```

## Test Plan

<!-- How was it tested? -->

A unit test
2024-11-09 12:44:48 -05:00
InSync c9b84e2a85
[`ruff`] Do not report when `Optional` has no type arguments (`RUF013`) (#14181)
## Summary

Resolves #13833.

## Test Plan

`cargo nextest run` and `cargo insta test`.

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2024-11-09 08:48:56 -05:00
InSync eea6b31980
[`flake8-pyi`] Add "replace with `Self`" fix (`PYI034`) (#14217)
## Summary

Resolves #14184.

## Test Plan

`cargo nextest run` and `cargo insta test`.
2024-11-09 02:11:38 +00:00
Dylan b8dc780bdc
[`refurb`] Further special cases added to `verbose-decimal-constructor (FURB157)` (#14216)
This PR accounts for further subtleties in `Decimal` parsing:

- Strings which are empty modulo underscores and surrounding whitespace
are skipped
- `Decimal("-0")` is skipped
- `Decimal("{integer literal that is longer than 640 digits}")` are
skipped (see linked issue for explanation)

NB: The snapshot did not need to be updated since the new test cases are
"Ok" instances and added below the diff.

Closes #14204
2024-11-08 21:08:22 -05:00
Charlie Marsh 93fdf7ed36
Fix miscellaneous issues in `await-outside-async detection` (#14218)
## Summary

Closes https://github.com/astral-sh/ruff/issues/14167.
2024-11-08 21:07:13 -05:00
Michal Čihař b19f388249
[`refurb`] Use `UserString` instead of non-existent `UserStr` (#14209)
## Summary

The class name is UserString, not a UserStr, see
https://docs.python.org/3.9/library/collections.html#collections.UserString
2024-11-08 20:54:18 -05:00
Dhruv Manilawala fbf140a665
Bump version to 0.7.3 (#14197) 2024-11-08 16:39:37 +05:30
Simon Brugman d1ef418bb0
Docs: tweak rules documentation (#14180)
Co-authored-by: Micha Reiser <micha@reiser.io>
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2024-11-08 09:01:53 +00:00
Charlie Marsh 272d24bf3e
[`flake8-pyi`] Add a fix for `duplicate-literal-member` (#14188)
## Summary

Closes https://github.com/astral-sh/ruff/issues/14187.
2024-11-08 03:45:19 +00:00
Simon Brugman 2040e93add
[`flake8-logging-format`] Fix invalid formatting value in docs of `logging-extra-attr-clash` (`G101`) (#14165) 2024-11-07 21:00:05 +01:00
Simon Brugman 794eb886e4
[`flake8-bandit`] Typo in docs `suspicious-pickle-import` (`S403`) (#14175) 2024-11-07 20:59:18 +01:00
Simon Brugman fe8e49de9a
[`pyflakes`] Typo in docs for `if-tuple` (`F634`) (#14158) 2024-11-07 15:28:20 +00:00
InSync b8188b2262
[`flake8-pyi`] Add autofix for `docstring-in-stub` (`PYI021`) (#14150)
Co-authored-by: Micha Reiser <micha@reiser.io>
Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
2024-11-07 12:00:19 +00:00
Simon Brugman 136721e608
[`refurb`] Implement `subclass-builtin` (`FURB189`) (#14105)
## Summary

Implementation for one of the rules in
https://github.com/astral-sh/ruff/issues/1348
Refurb only deals only with classes with a single base, however the rule
is valid for any base.
(`str, Enum` is common prior to `StrEnum`)

## Test Plan

`cargo test`

---------

Co-authored-by: Dhruv Manilawala <dhruvmanila@gmail.com>
2024-11-07 17:26:19 +05:30
Dhruv Manilawala 5b500b838b
Update known dunder methods for Python 3.13 (#14146)
## Summary

Closes: #14145
2024-11-07 11:39:00 +05:30
Dylan cb003ebe22
[`flake8-builtins`] Skip lambda expressions in `builtin-argument-shadowing (A002)` (#14144)
Flake8-builtins provides two checks for arguments (really, parameters)
of a function shadowing builtins: A002 checks function definitions, and
A006 checks lambda expressions. This PR ensures that A002 is restricted
to functions rather than lambda expressions.

Closes #14135 .
2024-11-07 05:34:09 +00:00
InSync 46c5a13103
[`eradicate`] Better detection of IntelliJ language injection comments (`ERA001`) (#14094) 2024-11-06 18:24:15 +00:00
Lokejoke abafeb4bee
Fix: Recover boolean test flag after visiting subexpressions (#13909)
Co-authored-by: xbrtnik1 <524841@mail.muni.cz>
2024-11-05 20:55:49 +01:00
Dylan 2b76fa8fa1
[refurb] Parse more exotic decimal strings in `verbose-decimal-constructor (FURB157)` (#14098)
FURB157 suggests replacing expressions like `Decimal("123")` with
`Decimal(123)`. This PR extends the rule to cover cases where the input
string to `Decimal` can be easily transformed into an integer literal.

For example:

```python
Decimal("1__000")   # fix: `Decimal(1000)`
```

Note: we do not implement the full decimal parsing logic from CPython on
the grounds that certain acceptable string inputs to the `Decimal`
constructor may be presumed purposeful on the part of the developer. For
example, as in the linked issue, `Decimal("١٢٣")` is valid and equal to
`Decimal(123)`, but we do not suggest a replacement in this case.

Closes #13807
2024-11-05 13:33:04 -06:00
InSync bb25bd9c6c
Also remove trailing comma while fixing C409 and C419 (#14097) 2024-11-04 20:33:30 +00:00
Simon Brugman b7e32b0a18
Re-enable clippy `useless-format` (#14095) 2024-11-04 18:25:25 +01:00
Simon Brugman fb94b71e63
Derive message formats macro support to string (#14093) 2024-11-04 18:06:25 +01:00
Simon Brugman a7a78f939c
Replace `format!` without parameters with `.to_string()` (#14090)
Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
2024-11-04 14:09:30 +00:00
Fábio D. Batista 2b73a1c039
[`eradicate`] ignore `# language=` in commented-out-code rule (ERA001) (#14069)
## Summary

The `commented-out-code` rule (ERA001) from `eradicate` is currently
flagging a very common idiom that marks Python strings as another
language, to help with syntax highlighting:


![image](https://github.com/user-attachments/assets/d523e83d-95cb-4668-a793-45f01d162234)

This PR adds this idiom to the list of allowed exceptions to the rule.

## Test Plan

I've added some additional test cases.
2024-11-03 16:50:00 -05:00
Charlie Marsh 2b0cdd2338
Improve some rule messages and docs (#14068) 2024-11-03 19:25:43 +00:00
Charlie Marsh f09dc8b67c
Detect items that hash to same value in duplicate dictionaries (#14065)
## Summary

Closes https://github.com/astral-sh/ruff/issues/12772.
2024-11-03 14:16:34 -05:00
Charlie Marsh 71a122f060
Allow `open` without context manager in `return` statement (#14066)
## Summary

Closes https://github.com/astral-sh/ruff/issues/13862.
2024-11-03 14:16:27 -05:00
Matt Norton 3ca24785ae
Add links to missing related options within rule documentations (#13971)
Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2024-11-03 14:15:57 -05:00
Charlie Marsh 1de36cfe4c
Fix wrong-size header in `open-file-with-context-handler` (#14067) 2024-11-03 19:06:40 +00:00
Charlie Marsh 66872a41fc
Detect items that hash to same value in duplicate sets (#14064)
## Summary

Like https://github.com/astral-sh/ruff/pull/14063, but ensures that we
catch cases like `{1, True}` in which the items hash to the same value
despite not being identical.
2024-11-03 18:49:11 +00:00
Charlie Marsh e00594e8d2
Respect hash-equivalent literals in `iteration-over-set` (#14063)
## Summary

Closes https://github.com/astral-sh/ruff/issues/14049.
2024-11-03 18:44:52 +00:00
Steve C ae9f08d1e5
[`ruff`] - fix false positive for decorators (`RUF028`) (#14061) 2024-11-03 11:49:03 +00:00
Steve C f69712c11d
[`flake8-pyi`] - include all python file types for `PYI006` and `PYI066` (#14059) 2024-11-03 11:47:36 +00:00
Steve C be485602de
Fix preview link references in 2 rule docs (#14060) 2024-11-03 11:45:35 +00:00
Steve C bc7615af0e
[`flake8-bugbear`] - do not run `mutable-argument-default` on stubs (`B006`) (#14058)
## Summary

Early-exits in `B006` when the file is a stub. Fixes #14026 

## Test Plan

`cargo test`
2024-11-02 22:48:48 -04:00
Charlie Marsh 4a3eeeff86
Remove `HashableExpr` abstraction (#14057)
## Summary

It looks like `ComparableExpr` now implements `Hash` so we can just
remove this.
2024-11-02 20:28:35 +00:00
Charlie Marsh 35c6dfe481
Avoid parsing joint rule codes as distinct codes in `# noqa` (#12809)
## Summary

We should enable warnings for unsupported codes, but this at least fixes
the parsing for `# noqa: F401F841`.

Closes https://github.com/astral-sh/ruff/issues/12808.
2024-11-02 20:24:59 +00:00
Simon Brugman f8374280c0
[`flake8-simplify`] Implementation for `split-of-static-string` (SIM905) (#14008)
## Summary

Closes https://github.com/astral-sh/ruff/issues/13944

## Test Plan

Standard snapshot testing

flake8-simplify surprisingly only has a single test case

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2024-11-02 17:15:36 +00:00
Steve C 0925513529
[`pyupgrade`] - ignore kwarg unpacking for `UP044` (#14053)
## Summary

Fixes #14047 

## Test Plan

`catgo test`

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2024-11-02 13:10:56 -04:00
Simon Brugman 5053d2c127
Doc: markdown link fix (#14041)
Typo in `mutable-contextvar-default` in `flake8-bugbear`
2024-11-01 14:19:00 +00:00
Dhruv Manilawala ef72fd79a7
Bump version to 0.7.2 (#14039) 2024-11-01 19:09:07 +05:30
STACIA 658a51ea10
Fix typo for static method decorator (#14038) 2024-11-01 12:30:50 +00:00
Simon Brugman 9a6b08b557
[`flake8-simplify`] Include caveats of enabling `if-else-block-instead-of-if-exp` (SIM108) (#14019) 2024-10-31 17:26:22 +00:00
Steve C 2d917d72f6
[`pyupgrade`] - add PEP646 Unpack conversion to `*` with fix (`UP044`) (#13988)
Co-authored-by: Micha Reiser <micha@reiser.io>
2024-10-31 06:58:34 +00:00
Simon Brugman f426349051
docs: typo in refurb-sorted-min-max (#13993) 2024-10-30 12:07:42 +00:00
Charlie Marsh b6847b371e
Skip namespace package enforcement for PEP 723 scripts (#13974)
## Summary

Vendors the PEP 723 parser from
[uv](debe67ffdb/crates/uv-scripts/src/lib.rs (L283)).

Closes https://github.com/astral-sh/ruff/issues/13912.
2024-10-29 02:11:31 +00:00
Dhruv Manilawala ec6208e51b
Treat return type of `singledispatch` as runtime-required (#13957)
## Summary

fixes: #13955 

## Test Plan

Update existing test case to use a return type hint for which `main`
flags `TCH003`.
2024-10-28 20:33:28 -04:00
Micha Reiser 9f3a38d408
Extract `LineIndex` independent methods from `Locator` (#13938) 2024-10-28 07:53:41 +00:00