Evan Rittenhouse
741e180e2d
Change TODO directive detection to work with multiple pound signs on the same line ( #4558 )
2023-05-25 16:51:45 +02:00
konstin
b6a382eeaf
Lint pyproject.toml ( #4496 )
...
This adds a new rule `InvalidPyprojectToml` that lints pyproject.toml by checking if https://github.com/PyO3/pyproject-toml-rs can parse it. This means the linting is currently very basic, e.g. we don't check whether the name is actually a valid python project name or appropriately normalized. It does catch errors e.g. with invalid dependency requirements or problems withs the license specifications. It is open to be extended in the future (validate name, SPDX expressions, classifiers, ...), either in ruff or in pyproject-toml-rs.
Test plan:
```
scripts/ecosystem_all_check.sh check --select RUF200
```
This lead to a bunch of
```
RUF200 Failed to parse pyproject.toml: missing field `name`
```
(e.g. https://github.com/amitsk/fastapi-todos/blob/main/pyproject.toml ) which is indeed invalid (https://packaging.python.org/en/latest/specifications/declaring-project-metadata/#specification ).
Filtering those out, the following other problems were found by `cd target/ecosystem_all_results/ && rg RUF200`:
```
UCL-ARC:rred-reports.stdout.txt
1:pyproject.toml:27:16: RUF200 Failed to parse pyproject.toml: Version specifier `>='3.9'` doesn't match PEP 440 rules
EndlessTrax:python-start-project.stdout.txt
1:pyproject.toml:14:16: RUF200 Failed to parse pyproject.toml: Expected package name starting with an alphanumeric character, found '#'
redjax:gardening-api.stdout.txt
1:pyproject.toml:7:11: RUF200 Failed to parse pyproject.toml: Version `` doesn't match PEP 440 rules
ajslater:codex.stdout.txt
2: 3:17 RUF200 Failed to parse pyproject.toml: invalid type: sequence, expected a string
LDmitriy7:404_AvatarsBot.stdout.txt
1:pyproject.toml:3:11: RUF200 Failed to parse pyproject.toml: Version `` doesn't match PEP 440 rules
ajslater:comicbox.stdout.txt
1:pyproject.toml:3:17: RUF200 Failed to parse pyproject.toml: invalid type: sequence, expected a string
manueldevillena:forecast-earnings.stdout.txt
1:pyproject.toml:24:12: RUF200 Failed to parse pyproject.toml: Expected one of `@`, `(`, `<`, `=`, `>`, `~`, `!`, `;`, found `^`
redjax:ohio_utility_scraper.stdout.txt
1:pyproject.toml:11:11: RUF200 Failed to parse pyproject.toml: Version `` doesn't match PEP 440 rules
agronholm:typeguard.stdout.txt
1:pyproject.toml:40:8: RUF200 Failed to parse pyproject.toml: Expected a valid marker name, found 'python_implementation'
cyuss:decathlon-turnover.stdout.txt
1:pyproject.toml:7:12: RUF200 Failed to parse pyproject.toml: invalid type: string "Youcef", expected a table with 'name' and 'email' keys
ajslater:boilerplate.stdout.txt
1:pyproject.toml:3:17: RUF200 Failed to parse pyproject.toml: invalid type: sequence, expected a string
kaparoo:lightning-project-template.stdout.txt
1:pyproject.toml:56:16: RUF200 Failed to parse pyproject.toml: You can't mix a >= operator with a local version (`+cu117`)
dijital20:pytexas2023-decorators.stdout.txt
1:pyproject.toml:5:11: RUF200 Failed to parse pyproject.toml: Version `` doesn't match PEP 440 rules
pfouque:django-anymail-history.stdout.txt
1:pyproject.toml:137:12: RUF200 Failed to parse pyproject.toml: Version specifier `> = 1.2.0` doesn't match PEP 440 rules
pfouque:django-fakemessages.stdout.txt
1:pyproject.toml:130:12: RUF200 Failed to parse pyproject.toml: Version specifier `> = 1.2.0` doesn't match PEP 440 rules
pypa:build.stdout.txt
1:tests/packages/test-invalid-requirements/pyproject.toml:2:12: RUF200 Failed to parse pyproject.toml: Expected one of `@`, `(`, `<`, `=`, `>`, `~`, `!`, `;`, found `i`
4:tests/packages/test-no-requires/pyproject.toml:1:1: RUF200 Failed to parse pyproject.toml: missing field `requires`
UnoYakshi:FRAAND.stdout.txt
2: 3:11 RUF200 Failed to parse pyproject.toml: Version `` doesn't match PEP 440 rules
DHolmanCoding:python-template.stdout.txt
1:pyproject.toml:22:1: RUF200 Failed to parse pyproject.toml: missing field `requires`
```
Overall, this emitted errors in 43 out of 3408 projects (`rg -c RUF200 target/ecosystem_all_results/ | wc -l`)
Co-authored-by: Micha Reiser <micha@reiser.io>
2023-05-25 12:05:28 +00:00
qdegraaf
050350527c
Add autofix for PYI010 ( #4634 )
2023-05-24 22:17:44 +00:00
Charlie Marsh
c9b39e31fc
Use class name as range for `B024` ( #4647 )
2023-05-24 22:16:13 +00:00
bersbersbers
28a5e607b4
Docs: mention `task-tags` option in two rules ( #4644 )
2023-05-24 16:31:41 -04:00
Micha Reiser
09c50c311c
Testing Macros: Add `extra-traits` feature ( #4643 )
2023-05-24 17:14:58 +00:00
Charlie Marsh
f4572fe40b
Bump version to 0.0.270 ( #4637 )
2023-05-24 16:34:29 +00:00
Sladyn
8c9215489e
Migrate flake8_bugbear rules to `unspecified` to `suggested` ( #4616 )
2023-05-24 16:16:33 +00:00
qdegraaf
dcd2bfaab7
Migrate flake8_pie autofix rules from `unspecified` to `suggested` and `automatic` ( #4621 )
2023-05-24 16:08:22 +00:00
Charlie Marsh
f0e173d9fd
Use `BindingId` copies in lieu of `&BindingId` in semantic model methods ( #4633 )
2023-05-24 15:55:45 +00:00
Micha Reiser
edc6c4058f
Move `shared_traits` to `ruff_formatter` ( #4632 )
2023-05-24 17:38:11 +02:00
Jonathan Plasse
4233f6ec91
Update to the new rule architecture ( #4589 )
2023-05-24 11:30:40 -04:00
Charlie Marsh
fcdc7bdd33
Remove separate `ReferenceContext` enum ( #4631 )
2023-05-24 15:12:38 +00:00
Micha Reiser
86ced3516b
Introduce `SourceCodeSlice` to reduce the size of `FormatElement` ( #4622 )
...
Introduce `SourceCodeSlice` to reduce the size of `FormatElement`
2023-05-24 15:04:52 +00:00
Micha Reiser
6943beee66
Remove source position from `FormatElement::DynamicText` ( #4619 )
2023-05-24 16:36:14 +02:00
Micha Reiser
85f094f592
Improve `Message` sorting performance ( #4624 )
2023-05-24 16:34:48 +02:00
konstin
17d938f078
Add Checker::any_enabled shortcut ( #4630 )
...
Add Checker::any_enabled shortcut
## Summary
Akin to #4625 , This is a refactoring that shortens a bunch of code by replacing `checker.settings.rules.any_enabled` with `checker.any_enabled`.
## Test Plan
`cargo clippy`
2023-05-24 14:32:55 +00:00
Charlie Marsh
5cedf0f724
Remove `ReferenceContext::Synthetic` ( #4612 )
2023-05-24 14:30:35 +00:00
Charlie Marsh
040fb9cef4
Use a separate `PrinterFlag` for including fix diffs ( #4615 )
2023-05-24 10:22:37 -04:00
Charlie Marsh
8961d8eb6f
Track all read references in semantic model ( #4610 )
2023-05-24 14:14:27 +00:00
Charlie Marsh
31bddef98f
Visit `TypeVar` and `NewType` name arguments ( #4627 )
2023-05-24 10:10:15 -04:00
konstin
a59d252246
Add Checker::enabled shortcut ( #4625 )
...
This is a refactoring that shortens a bunch of code by replacing `checker.settings.rules.enabled` with `checker.enabled`
2023-05-24 14:56:41 +02:00
Jonathan Plasse
c6a760e298
Introduce `tab-size` to correcly calculate the line length with tabulations ( #4167 )
2023-05-24 08:37:24 +02:00
konstin
3644695bf2
Include hidden ecosystem_ci option to show fixes without feature ( #4528 )
2023-05-23 22:22:23 -04:00
Sladyn
4e84e8a8e2
Migrate some rules from `Fix::unspecified` ( #4587 )
2023-05-23 22:10:58 -04:00
Hoël Bagard
a256fdb9f4
Extend `RUF005` to recursive and literal-literal concatenations ( #4557 )
2023-05-24 01:26:34 +00:00
Tom Kuson
7479dfd815
Add Pyflakes docs ( #4588 )
2023-05-24 00:45:32 +00:00
Charlie Marsh
ba4c0a21fa
Rename `ContextFlags` to `SemanticModelFlags` ( #4611 )
2023-05-23 17:47:07 -04:00
konstin
73e179ffab
Update maturin to 1.0 ( #4605 )
...
* Refactor and fix task trigger for dependent jobs in other repos
I have confirmed (https://github.com/konstin/ruff-pre-commit/actions/runs/5056928280/jobs/9075029868 ) that this does dispatch the workflow when running with act, `owner: 'konstin'`, `needs` commented out and personal access token. I can't properly test the actual release workflow, and i'm unsure how to best handle the next release after this was merged (should we do a beta release or will this break everything that assumes we only do stable releases?)
The command for act is
```
act -j update-dependents -s RUFF_PRE_COMMIT_PAT=<...>
```
* delete old file
* Update maturin to 1.0
A 1.0 release for maturin 🎉
2023-05-23 20:55:52 +02:00
Micha Reiser
2681c0e633
Add missing nodes to `AnyNodeRef` and `AnyNode` ( #4608 )
2023-05-23 18:30:27 +02:00
Charlie Marsh
f3bdd2e7be
Make B007 fix relevance stricter ( #4607 )
2023-05-23 15:43:59 +00:00
Micha Reiser
652c644c2a
Introduce `ruff_index` crate ( #4597 )
2023-05-23 17:40:35 +02:00
Micha Reiser
154439728a
Add `AnyNode` and `AnyNodeRef` unions ( #4578 )
2023-05-23 08:53:22 +02:00
Jonathan Plasse
1ddc577204
Rework CST matchers ( #4536 )
...
Co-authored-by: Micha Reiser <micha@reiser.io>
2023-05-23 06:26:51 +00:00
Charlie Marsh
74effb40b9
Rename `index` to `binding_id` in a few iterators ( #4594 )
2023-05-23 03:56:00 +00:00
Charlie Marsh
6c3724ab98
Move `get_or_import_symbol` onto `Importer` ( #4591 )
2023-05-23 01:33:00 +00:00
Christopher Covington
3b8121379d
Name ambiguous characters ( #4448 )
2023-05-22 17:16:57 +00:00
qdegraaf
5ba47c3302
Add autofix for PYI009 ( #4583 )
2023-05-22 16:41:18 +00:00
Charlie Marsh
b613460fe5
Fix `# isort: split` comment detection in nested blocks ( #4584 )
2023-05-22 12:31:59 -04:00
Micha Reiser
daadd24bde
Include decorators in `Function` and `Class` definition ranges ( #4467 )
2023-05-22 17:50:42 +02:00
Charlie Marsh
9308e939f4
Avoid infinite loop for required imports with isort: off ( #4581 )
2023-05-22 15:49:03 +00:00
Charlie Marsh
04c9348de0
Make ambiguous-unicode detection sensitive to 'word' context ( #4552 )
2023-05-22 14:42:25 +00:00
Tom Kuson
2d3766d928
Add flake8-boolean-trap docs ( #4572 )
2023-05-22 14:11:14 +00:00
Micha Reiser
cbe344f4d5
Rename `Checker::model` to `semantic_model` ( #4573 )
2023-05-22 15:14:30 +02:00
Evan Rittenhouse
c6e5fed658
Replace token iteration with Indexer/Locator lookups for relevant rules ( #4513 )
2023-05-22 09:56:19 +02:00
Charlie Marsh
f73b398776
Reduce visibility of more functions, structs, and fields ( #4570 )
2023-05-22 03:36:48 +00:00
Charlie Marsh
55c4020ba9
Remove regex for noqa code splitting ( #4569 )
2023-05-21 23:20:49 -04:00
Charlie Marsh
d70f899f71
Use `SemanticModel` in lieu of `Checker` in more methods ( #4568 )
2023-05-22 02:58:47 +00:00
Charlie Marsh
19c4b7bee6
Rename ruff_python_semantic's `Context` struct to `SemanticModel` ( #4565 )
2023-05-22 02:35:03 +00:00
Jonathan Plasse
3238743a7b
Fix Flake8Todo typo ( #4566 )
2023-05-21 16:32:13 -04:00
Charlie Marsh
f22c269ccf
Point LSP, VS Code, and pre-commut URLs to Astral org ( #4562 )
2023-05-21 15:27:35 -04:00
Arne de Laat
8ca3977602
Fix false-positive for TRY302 if exception cause is given ( #4559 )
2023-05-21 11:49:53 -04:00
Jonathan Plasse
fc63c6f2e2
Fix PLE01310 typo ( #4550 )
2023-05-20 19:34:03 +00:00
Jonathan Plasse
f7f5bc9085
Fix SIM401 snapshot ( #4547 )
2023-05-20 14:18:19 -04:00
Charlie Marsh
6b85430a14
Ignore `#region` code folding marks in eradicate rules ( #4546 )
2023-05-20 16:45:49 +00:00
Jonathan Plasse
a68c865010
Fix SIM110 and SIM111 ranges ( #4545 )
2023-05-20 12:40:35 -04:00
Charlie Marsh
fe7f2e2e4d
Move submodule alias resolution into `Context` ( #4543 )
2023-05-20 16:34:10 +00:00
Charlie Marsh
bf5b463c0d
Include empty success test in JUnit output ( #4537 )
2023-05-20 03:38:51 +00:00
Charlie Marsh
6aa9900c03
Improve handling of `__qualname__`, `__module__`, and `__class__` ( #4512 )
2023-05-20 03:03:45 +00:00
Charlie Marsh
9e21414294
Improve reference resolution for deferred-annotations-within-classes ( #4509 )
2023-05-20 02:54:18 +00:00
Charlie Marsh
bb4e674415
Move reference-resolution into Context ( #4510 )
2023-05-20 02:47:15 +00:00
Charlie Marsh
b42ff08612
Parenthesize more sub-expressions in f-string conversion ( #4535 )
2023-05-19 19:41:30 +00:00
Jonathan Plasse
03fb62c174
Fix RUF010 auto-fix with parenthesis ( #4524 )
2023-05-19 19:05:51 +00:00
Jonathan Plasse
2dfc645ea9
Fix UP032 auto-fix with integers ( #4525 )
2023-05-19 18:53:50 +00:00
Hoël Bagard
fe8e2bb237
[`pylint`] Add `named_expr_without_context` (`W0131`) ( #4531 )
2023-05-19 18:00:01 +00:00
Tom Kuson
a9ed8d5391
Add Pylint docs ( #4530 )
2023-05-19 17:40:18 +00:00
Aaron Cunningham
41a681531d
Support new `extend-per-file-ignores` setting ( #4265 )
2023-05-19 12:24:04 -04:00
Justin Prieto
837e70677b
[`flake8-pyi`] Implement `PYI013` ( #4517 )
2023-05-19 15:39:55 +00:00
Hoël Bagard
7ebe372122
[`pylint`] Add `duplicate-value` (`W0130`) ( #4515 )
2023-05-19 15:03:47 +00:00
konstin
32f1edc555
Create dummy format CLI ( #4453 )
...
* Create dummy format CLI
* Hide format from clap, too
Missed that this is a separate option from `#[doc(hidden)]`
* Remove cargo feature and replace with warning
* No-alloc files parameter matching
* beta warning: warn -> warn_user_once
* Rephrase warning
2023-05-19 11:45:52 +02:00
Micha Reiser
2f35099f81
Remove `regex` dependency from `ruff_python_ast` ( #4518 )
2023-05-19 06:44:18 +00:00
Ville Skyttä
fdb241cad2
[`flake8-bandit`] Implement `paramiko-call` (`S601`) ( #4500 )
2023-05-19 03:40:50 +00:00
Charlie Marsh
ab303f4e09
Gate `schemars` skip under feature flag ( #4514 )
2023-05-19 03:01:31 +00:00
Charlie Marsh
15cb21a6f4
Implement `--extend-fixable` option ( #4297 )
2023-05-18 22:20:19 -04:00
Ville Skyttä
2e2ba2cb16
Avoid some false positives in dunder variable assigments ( #4508 )
2023-05-19 02:11:20 +00:00
Charlie Marsh
d4c0a41b00
Bump version to 0.0.269 ( #4506 )
2023-05-18 19:45:20 +00:00
Charlie Marsh
8702b5a40a
Bump version to 0.0.268 ( #4501 )
2023-05-18 15:35:46 -04:00
konstin
a3aa841fc9
Overhaul sdist handling ( #4439 )
...
* Reduce sdist size
`maturin sdist && du -sh target/wheels/ruff-0.0.267.tar.gz`:
Before: 1,1M
After: 668K
* Test sdist before release
* Update maturin to fix the sdist
2023-05-18 19:02:22 +02:00
Ville Skyttä
fdd894145b
S608 improvements ( #4499 )
2023-05-18 11:27:22 -04:00
Charlie Marsh
85f67b2ee3
Make the AST Checker `pub(crate)` ( #4498 )
2023-05-18 15:17:26 +00:00
Charlie Marsh
e9c6f16c56
Move unparse utility methods onto Generator ( #4497 )
2023-05-18 15:00:46 +00:00
Charlie Marsh
d3b18345c5
Move triple-quoted string detection into `Indexer` method ( #4495 )
2023-05-18 14:42:05 +00:00
Jonathan Plasse
0e4d174551
Fix COM812 false positive in string subscript ( #4493 )
2023-05-18 14:35:41 +00:00
Charlie Marsh
73efbeb581
Invert quote-style when generating code within f-strings ( #4487 )
2023-05-18 14:33:33 +00:00
Charlie Marsh
2fb312bb2b
Fix scoping of comprehensions within classes ( #4494 )
2023-05-18 14:30:02 +00:00
Charlie Marsh
e8e66f3824
Remove unnecessary path prefixes ( #4492 )
2023-05-18 10:19:09 -04:00
Charlie Marsh
a8d080c825
Extend multi-line noqa directives to start-of-line ( #4490 )
2023-05-18 13:05:27 +00:00
Charlie Marsh
ddd541b198
Move `Insertion` into its own module ( #4478 )
2023-05-17 21:11:41 +00:00
Tom Kuson
3090aec97d
Add PLW docs ( #4469 )
2023-05-17 18:30:45 +00:00
Charlie Marsh
14c6419bc1
Bring pycodestyle rules into full compatibility (on SciPy) ( #4472 )
2023-05-17 16:51:55 +00:00
Charlie Marsh
3bc29d6c0c
Allow shebang comments at start-of-file ( #4473 )
2023-05-17 16:32:12 +00:00
Charlie Marsh
67c5086aba
Include precise tokens for extraneous-whitespace diagnostics ( #4471 )
2023-05-17 16:25:17 +00:00
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
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