Commit Graph

868 Commits

Author SHA1 Message Date
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
Dhruv Manilawala 4ac506526b
Avoid `D403` if first char cannot be uppercased (#4283) 2023-05-08 15:33:24 -04:00
Calum Young cd41de2588
Check docs formatting check (#4270) 2023-05-08 19:03:22 +00:00
Dhruv Manilawala 3344d367f5
Avoid fixing `PD002` in a lambda expression (#4286) 2023-05-08 18:24:27 +00:00
Aarni Koskela d7a369e7dc
Update confusable character mapping (#4274) 2023-05-08 14:20:44 -04:00
Jonathan Plasse 1b1788c8ad
Fix replace_whitespace() tabulation to space (#4226)
Co-authored-by: Micha Reiser <micha@reiser.io>
2023-05-08 12:03:04 +00:00
Micha Reiser 4d5a339d9e
Remove `Fix::from(Edit)` and add deprecated replacement methods to `Diagnostic`s (#4275) 2023-05-08 10:25:50 +00:00
Zanie Adkins 0801f14046
Refactor `Fix` and `Edit` API (#4198) 2023-05-08 11:57:03 +02:00
Trevor McCulloch 3beff29026
[`pylint`] Implement `nested-min-max` (`W3301`) (#4200) 2023-05-07 03:14:14 +00:00