Commit Graph

976 Commits

Author SHA1 Message Date
Charlie Marsh cd82b83f89
Avoid triggering `pd#at` and friends on non-subscripts (#4474) 2023-05-17 16:20:58 +00:00
Charlie Marsh 39fb2cc732
Remove special-casing for whitespace-around-@ (#4458) 2023-05-17 15:32:08 +00:00
John Kelly 9c732c7946
Implement TRY302 - `raise` after `except` (#4461) 2023-05-17 01:36:10 +00:00
Charlie Marsh 2332ea5753
Remove type-complexity ignores from `map_codes.rs` (#4463) 2023-05-17 01:02:24 +00:00
Charlie Marsh 6b1062ccc3
Enable `pycodestyle` rules under new "nursery" category (#4407) 2023-05-16 21:21:58 +00:00
Charlie Marsh 39fa38cb35
Enable `pycodestyle` rules (#3689) 2023-05-16 20:39:43 +00:00
Micha Reiser ddf7de7e86
Prototype Black's string joining/splitting (#4449) 2023-05-16 18:42:40 +01:00
Charlie Marsh e5101e8eac
Split logical lines tests into one test per assertion (#4457) 2023-05-16 17:40:39 +00:00
Charlie Marsh d9c3f8e249
Avoid flagging missing whitespace for decorators (#4454) 2023-05-16 13:15:01 -04:00
Charlie Marsh 7e0d018b35
Avoid emitting empty logical lines (#4452) 2023-05-16 16:33:33 +00:00
Jeong, YunWon 4b05ca1198
Specialize ConversionFlag (#4450) 2023-05-16 18:00:13 +02:00
Charlie Marsh f0465bf106
Emit non-logical newlines for "empty" lines (#4444) 2023-05-16 14:58:56 +00:00
Charlie Marsh 8134ec25f0
Fix expected-indentation errors with end-of-line comments (#4438) 2023-05-16 10:45:54 -04:00
Jeong, YunWon badade3ccc
Impl `Default` for `SourceLocation` (#4328)
Co-authored-by: Micha Reiser <micha@reiser.io>
2023-05-16 07:03:43 +00:00
Micha Reiser fa26860296
Refactor range from `Attributed` to `Node`s (#4422) 2023-05-16 06:36:32 +00:00
Sladyn c711db11ce
[`flake8-pyi`] Implement `unannotated-assignment-in-stub` (`PY052`) (#4293) 2023-05-16 02:06:55 +00:00
Charlie Marsh 1fe6954150
Fix bidirectional-unicode formatting (#4445) 2023-05-15 22:36:25 +00:00
Charlie Marsh 2414469ac3
Enable automatic rewrites of `typing.Deque` and `typing.DefaultDict` (#4420) 2023-05-15 22:33:24 +00:00
Tom Kuson 838ba1ca3d
Add `PLE` rule docs (#4437) 2023-05-15 19:48:18 +00:00
qdegraaf 8ba9eb83af
Implement `flake8-async` plugin (#4432) 2023-05-15 09:15:28 -04:00
Zanie Adkins 2c6efc2f5f
Update C419 to be a suggested fix (#4424) 2023-05-15 10:30:40 +02:00
Ben Doerry d6930ca991
Merge subsettings when extending configurations (#4431) 2023-05-15 02:34:58 +00:00
Charlie Marsh dcff515ad8
Make `extend_function_names` an `Option` type (#4434) 2023-05-15 02:15:02 +00:00
Jonathan Plasse b9e387013f
Fix `RUF010` autofix within f-strings (#4423) 2023-05-15 02:08:30 +00:00
Charlie Marsh a69451ff46
[`pyupgrade`] Remove `keep-runtime-typing` setting (#4427) 2023-05-14 03:12:52 +00:00
Tyler Yep 01b372a75c
Implement `flake8-future-annotations` FA100 (#3979) 2023-05-14 03:00:06 +00:00
Charlie Marsh cd2e7fa72a
Use `TextSize` for flake8-todos `Directive` methods (#4426) 2023-05-13 22:05:51 -04:00
Charlie Marsh fdf0b999cd
Replace TODO tag regex with a lexer (#4413) 2023-05-13 15:23:46 +00:00
Jonathan Plasse 45b5fa573f
Ignore ANN401 for overridden methods (#4409) 2023-05-13 15:20:04 +00:00
Jonathan Plasse a0258f2205
[`pylint`] Fix `PLW3301` auto-fix with generators (#4412) 2023-05-13 11:17:13 -04:00
alm 0a68636de3
[`pylint`] Add `duplicate-bases` rule (#4411) 2023-05-13 14:28:03 +00:00
Evan Rittenhouse 2f53781a77
Implement `flake8_todos` (#3921) 2023-05-13 14:19:06 +00:00
Micha Reiser f5afa8198c
Use new `rustpython_format` crate over `rustpython-common` (#4388) 2023-05-13 12:35:02 +00:00
Charlie Marsh eeabfd6d18
Enable autofix for split-assertions at top level (#4405) 2023-05-12 17:35:49 -04:00
Charlie Marsh 490301f9fe
Replace `macro_rules!` visitors with dedicated methods (#4402) 2023-05-12 17:05:59 -04:00
Charlie Marsh dcedd5cd9d
Bump version to 0.0.267 (#4400) 2023-05-12 19:04:56 +00:00
Lotem 52f6663089
Implement `RUF010` to detect explicit type conversions within f-strings (#4387) 2023-05-12 18:12:58 +00:00
Charlie Marsh 67076b2dcb
Bump version to 0.0.266 (#4391) 2023-05-12 13:11:03 -04:00
Charlie Marsh 7e3ba7f32a
Use `bitflags` for tracking `Context` flags (#4381) 2023-05-12 16:07:26 +00:00
konstin 09dbd2029c
Update maturin to maturin 0.15 (#3999)
* Update maturin to maturin>=0.14.17

This allows removing the deprecated `[package.metadata.maturin]`

* Update to maturin 0.15
2023-05-12 15:43:06 +02:00
Jonathan Plasse 1380bd94da
Expose more fields in rule explanation (#4367) 2023-05-11 19:22:23 -04:00
Jonathan Plasse c10a4535b9
Disallow `unreachable_pub` (#4314) 2023-05-11 18:00:00 -04:00
Charlie Marsh 97802e7466
Ignore some methods on list in `flake8-boolean-trap` (#4385) 2023-05-11 21:54:59 +00:00
Jonathan Plasse 4fd4a65718
Isolate show statistic integration test (#4383) 2023-05-11 21:42:34 +00:00
Charlie Marsh d78c614764
Remove special-casing for `flake8-builtins` rules (#4380) 2023-05-11 16:39:28 -04:00
Charlie Marsh 3f3dd7af99
Move some recursion out of the pre-visit statement phase (#4379) 2023-05-11 15:46:25 -04:00
Charlie Marsh 871b92a385
Avoid re-using imports beyond current edit site (#4378) 2023-05-11 14:47:18 -04:00
Charlie Marsh 9158f13ee6
Respect `__all__` imports when determining definition visibility (#4357) 2023-05-11 17:43:51 +00:00
Charlie Marsh 72e0ffc1ac
Delay computation of `Definition` visibility (#4339) 2023-05-11 17:14:29 +00:00
Charlie Marsh ffcf0618c7
Avoid underflow in expected-special-method-signature (#4377) 2023-05-11 12:47:47 -04:00
Micha Reiser 1ccef5150d
Remove lifetime from FormatContext (#4376) 2023-05-11 15:43:42 +00:00
konstin 3c2f41b615
Also show rule codes in autofix errors in production codes (#4327)
I needed those changes for #4326
2023-05-11 17:36:03 +02:00
Jeong, YunWon bbadbb5de5
Refactor code to use the new RustPython `is` method (#4369) 2023-05-11 16:16:36 +02:00
Jeong, YunWon be6e00ef6e
Re-integrate RustPython parser repository (#4359)
Co-authored-by: Micha Reiser <micha@reiser.io>
2023-05-11 07:47:17 +00:00
Charlie Marsh 865205d992
Implement pygrep-hook's Mock-mistake diagnostic (#4366) 2023-05-11 03:26:29 +00:00
Charlie Marsh 572adf7994
Use target name in hardcoded-password diagnostics (#4365) 2023-05-11 02:54:27 +00:00
Charlie Marsh 3b26bf84f5
Avoid debug panic with empty indent replacement (#4364) 2023-05-11 02:42:18 +00:00
Charlie Marsh f4f88308ae
Remove `Copy` and destructure `Snapshot` (#4358) 2023-05-10 19:46:18 +00:00
Charlie Marsh ea3d3a655d
Add a `Snapshot` abstraction for deferring and restoring visitor context (#4353) 2023-05-10 16:50:47 +00:00
Charlie Marsh fd34797d0f
Add a specialized `StatementVisitor` (#4349) 2023-05-10 12:42:20 -04:00
Charlie Marsh 257c571c43
Remove pub from some `Checker` fields (#4352) 2023-05-10 12:33:47 -04:00
Charlie Marsh ccdee55e6e
Tweak capitalization of B021 message (#4350) 2023-05-10 15:59:00 +00:00
Charlie Marsh 6d6d7abf70
Use short-import for `HashMap` (#4351) 2023-05-10 15:46:55 +00:00
konstin 0096938789
Optionally show fixes when using `--features ecosystem_ci` with cargo and `--show-fixes` at runtime (#4191)
* Generate fixes when using --show-fixes

Example command: `cargo run --bin ruff -- --no-cache --select F401
--show-source --show-fixes
crates/ruff/resources/test/fixtures/pyflakes/F401_9.py`

Before, `--show-fixes` was ignored:

```
crates/ruff/resources/test/fixtures/pyflakes/F401_9.py:4:22: F401 [*] `foo.baz` imported but unused
  |
4 | __all__ = ("bar",)
5 | from foo import bar, baz
  |                      ^^^ F401
  |
  = help: Remove unused import: `foo.baz`

Found 1 error.
[*] 1 potentially fixable with the --fix option.
```

After:

```
crates/ruff/resources/test/fixtures/pyflakes/F401_9.py:4:22: F401 [*] `foo.baz` imported but unused
  |
4 | __all__ = ("bar",)
5 | from foo import bar, baz
  |                      ^^^ F401
  |
  = help: Remove unused import: `foo.baz`

ℹ Suggested fix
1 1 | """Test: late-binding of `__all__`."""
2 2 |
3 3 | __all__ = ("bar",)
4   |-from foo import bar, baz
  4 |+from foo import bar

Found 1 error.
[*] 1 potentially fixable with the --fix option.
```

* Add `--format ecosystem-ci`

* cargo dev generate-all

* Put behind cargo feature

* Regenerate docs

* Don't test ecosystem_ci feature on CI

* Use top level flag instead

* Fix

* Simplify code based on #4191

* Remove old TODO comment
2023-05-10 17:45:57 +02:00
Micha Reiser 853d8354cb
JSON Emitter: Use one indexed column numbers for edits (#4007)
I noticed in the byte-offsets refactor that the `JsonEmitter` uses one indexed column numbers for the diagnostic start and end locations but not for `edits`.

This PR changes the `JsonEmitter` to emit one-indexed column numbers for edits, as we already do for `Message::location` and `Message::end_location`.

## Open questions

~We'll need to change the LSP to subtract 1 from the columns in `_parse_fix`~

6e44fadf8a/ruff_lsp/server.py (L129-L150)

~@charliermarsh is there a way to get the ruff version in that method? If not, then I recommend adding a `version` that we increment whenever we make incompatible changes to the serialized message. We can then use it in the LSP to correctly compute the column offset.~

I'll use the presence of the `Fix::applicability` field to detect if the Ruff version uses one or zero-based column indices.

See https://github.com/charliermarsh/ruff-lsp/pull/103
2023-05-10 17:21:02 +02:00
Charlie Marsh 5f64d2346f
Enforce max-doc-length for multi-line docstrings (#4347) 2023-05-10 11:06:07 -04:00
Micha Reiser ddbe5a1243
Add `Fix::applicability` to JSON output (#4341) 2023-05-10 14:34:53 +00:00
Evan Rittenhouse 04097d194c
Fix false positives in PD002 (#4337) 2023-05-10 16:04:28 +02:00
Micha Reiser a2b8487ae3
Remove functor from autofix title (#4245) 2023-05-10 07:21:15 +00:00
Micha Reiser 8969ad5879
Always generate fixes (#4239) 2023-05-10 07:06:14 +00:00
Micha Reiser bfa1c28c00
Use non-empty ranges for logical-lines diagnostics (#4133) 2023-05-10 06:44:33 +00:00
Zanie Adkins cf7aa26aa4
Add `Applicability` to `Fix` (#4303)
Co-authored-by: Micha Reiser <micha@reiser.io>
2023-05-10 08:42:46 +02:00
Micha Reiser d66ce76691
Truncate `SyntaxError`s before newline character (#4124) 2023-05-10 08:37:57 +02:00
Tom Kuson b8bb9e8b92
Add docs for `flake8-simplify` rules (#4334) 2023-05-10 03:03:24 +00:00
Charlie Marsh 5e46dcbf21
Handle `.encode` calls on parenthesized expressions (#4338) 2023-05-09 22:57:10 -04:00
trag1c 045449ab12
Improved E713 & E714 code examples (#4336) 2023-05-09 22:27:44 -04:00
Tom Kuson d5ff8d7c43
Add `flake8-pie` documentation (#4332) 2023-05-09 22:11:30 +00:00
Charlie Marsh d92fb11e80
Include positional- and keyword-only arguments in too-many-arguments (#4329) 2023-05-09 18:05:53 -04:00
Charlie Marsh 3d947196f8
Make violation struct fields private (#4331) 2023-05-09 18:00:20 -04:00
Charlie Marsh e846f2688b
Avoid SIM105 autofixes that would remove comments (#4330) 2023-05-09 21:30:56 +00:00
Charlie Marsh 7b91a162c6
Remove `current_` prefix from some Context methods (#4325) 2023-05-09 19:40:12 +00:00
Charlie Marsh 8c2cfade90
Move `show_source` onto CLI settings group (#4317) 2023-05-09 17:26:25 +00:00
Charlie Marsh a435c0df4b
Remove deprecated `update-check` setting (#4313) 2023-05-09 13:10:02 -04:00
Aaron Cunningham 48e1852893
Revert the B027 autofix logic (#4310) 2023-05-09 13:08:20 -04:00
Calum Young 03f141f53d
Check that all rules have descriptions (#4315) 2023-05-09 16:53:23 +00:00
Charlie Marsh d3b71f1e04
Run autofix on initial watcher pass (#4311) 2023-05-09 12:35:32 -04:00
Mikko Leppänen 04e8e74499
Feat: detect changes also in configuration files (#4169) 2023-05-09 16:22:52 +00:00
konstin 318653c427
Write diagnostic name when failing to create fix (#4309) 2023-05-09 17:46:40 +02:00
Micha Reiser 99a755f936
Add `schemars` feature (#4305) 2023-05-09 16:15:18 +02:00
Aurelio Jargas e7dfb35778
UP011: Fix typo in rule description (#4306) 2023-05-09 08:49:15 -04:00
Dhruv Manilawala 085fd37209
Preserve whitespace around `ListComp` brackets in `C419` (#4099) 2023-05-09 08:43:05 +02:00
Charlie Marsh 83536cf87b
Ignore `TRY301` exceptions without except handlers (#4301) 2023-05-09 03:38:02 +00:00
Charlie Marsh 9366eb919d
Specify exact command in incorrect parentheses suggestion (#4300) 2023-05-09 02:21:54 +00:00
Charlie Marsh 8be51942dd
Use `ruff_python_semantic` abstract utility in flake8-pytest-style (#4299) 2023-05-08 22:12:28 -04:00
Charlie Marsh d365dab904
Include static and class methods in in abstract decorator list (#4298) 2023-05-08 21:54:02 -04:00
Charlie Marsh f23851130a
Add `flynt` to documentation (#4295) 2023-05-09 00:52:41 +00:00
Aarni Koskela efdf383f5e
Implement Flynt static string join transform as FLY002 (#4196) 2023-05-08 20:46:38 -04:00
Charlie Marsh 61f21a6513
Rewrite `not not a` as `bool(a)` in boolean contexts (#4294) 2023-05-08 23:38:24 +00:00
Charlie Marsh c54e48dce5
Avoid panics for f-string rewrites at start-of-file (#4291) 2023-05-08 19:44:57 +00:00
Charlie Marsh b913e99bde
Explicitly support ASCII-only for capitalization checks (#4290) 2023-05-08 15:41:11 -04:00