Julian LaNeve
5756829344
markdownlint: enforce 100 char max length ( #4698 )
2023-05-28 22:45:56 -04:00
qdegraaf
0911ce4cbc
[`flake8-pyi`] Add `PYI032` rule with autofix ( #4695 )
2023-05-28 22:41:15 +00:00
Tom Kuson
51f04ee6ef
Add more Pyflakes docs ( #4689 )
2023-05-28 22:29:03 +00:00
Charlie Marsh
dbeadd99a8
Remove impossible states from version-comparison representation ( #4696 )
2023-05-28 22:08:40 +00:00
Dhruv Manilawala
79b35fc3cc
Handle dotted alias imports to check for implicit imports ( #4685 )
2023-05-27 23:58:03 -04:00
Jonathan Plasse
9f16ae354e
Fix UP036 auto-fix error ( #4679 )
2023-05-28 03:37:22 +00:00
Charlie Marsh
9741f788c7
Remove globals table from `Scope` ( #4686 )
2023-05-27 22:35:20 -04:00
Jonathan Plasse
901060fa96
Fix PLW3301 false positive single argument nested min/max ( #4683 )
2023-05-27 15:34:55 -04:00
Charlie Marsh
f069eb9e3d
Fix `async for` formatting ( #4675 )
2023-05-27 02:53:33 +00:00
Tom Kuson
fe72bde23c
Add Pylint string formatting rule docs ( #4638 )
2023-05-27 02:47:14 +00:00
Chris Chan
1268ddca92
Implement Pylint's `yield-inside-async-function` rule (`PLE1700`) ( #4668 )
2023-05-27 01:14:41 +00:00
Charlie Marsh
af433ac14d
Avoid using typing-imported symbols for runtime edits ( #4649 )
2023-05-26 20:36:37 -04:00
qdegraaf
ccca11839a
Allow more immutable funcs for RUF009 ( #4660 )
2023-05-26 15:18:52 -04:00
Micha Reiser
33a7ed058f
Create `PreorderVisitor` trait ( #4658 )
2023-05-26 06:14:08 +00:00
qdegraaf
52deeb36ee
Implement PYI048 for `flake8-pyi` plugin ( #4645 )
2023-05-25 20:04:14 +00:00
Charlie Marsh
0f610f2cf7
Remove dedicated ScopeKind structs in favor of AST nodes ( #4648 )
2023-05-25 19:31:02 +00:00
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
Jerome Leclanche
5ac2c7d293
Add .git-rewrite folder to default ignored folder paths ( #4261 )
2023-05-06 22:40:38 -04:00
Charlie Marsh
e66fdb83d0
Respect insertion location when importing symbols ( #4258 )
2023-05-07 02:32:40 +00:00
Charlie Marsh
a95bafefb0
Fix `RET504` example in docs ( #4260 )
2023-05-06 16:56:52 -04:00
Charlie Marsh
539af34f58
Add a utility method to detect top-level state ( #4259 )
2023-05-06 20:24:27 +00:00
Charlie Marsh
983bb31577
Remove `RefEquality` usages from `Context` ( #4257 )
2023-05-06 15:55:14 -04:00
Charlie Marsh
b98b604071
Remove some deferred `&Stmt` references ( #4256 )
2023-05-06 18:42:35 +00:00
Charlie Marsh
cd27b39aff
Re-order some code in scope.rs ( #4255 )
2023-05-06 16:36:20 +00:00
Charlie Marsh
a9fc648faf
Use `NodeId` for `Binding` source ( #4234 )
2023-05-06 16:20:08 +00:00
Charlie Marsh
c1f0661225
Replace `parents` statement stack with a `Nodes` abstraction ( #4233 )
2023-05-06 16:12:41 +00:00
Dhruv Manilawala
2c91412321
Consider Flask app logger as logger candidate ( #4253 )
2023-05-06 11:31:10 -04:00
Charlie Marsh
11e1380df4
Bump version to 0.0.265 ( #4248 )
2023-05-05 13:16:05 -04:00
Micha Reiser
e93f378635
Refactor whitespace around operator ( #4223 )
2023-05-05 09:37:56 +02:00
Micha Reiser
2124feb0e7
Fail lint tests if the fix creates a syntax error ( #4202 )
2023-05-05 07:59:33 +02:00
Charlie Marsh
c0e7269b07
Update doc defaults for `section-order` ( #4232 )
2023-05-04 21:35:27 +00:00
Chris Chan
c2921e957b
[`pylint`] Implement import-self (`W0406`) ( #4154 )
2023-05-04 16:05:15 -04:00
Charlie Marsh
93cfce674a
Ignore __debuggerskip__ in unused variable checks ( #4229 )
2023-05-04 15:45:49 -04:00
Charlie Marsh
b71cc3789f
Change `--fix-only` exit semantics to mirror `--fix` ( #4146 )
2023-05-04 19:03:15 +00:00
Zanie Adkins
717128112d
Fix panic in pydocstyle D214 when docstring indentation is empty ( #4216 )
2023-05-04 14:42:34 -04:00
Arya Kumar
e9e194ab32
[`flake8-pyi`] Implement `PYI042` and `PYI043` ( #4214 )
2023-05-04 14:35:26 -04:00
Calum Young
890e630c41
Allow linking to individual rules ( #4158 )
2023-05-04 13:43:53 -04:00
Aaron Cunningham
d78287540d
Update B027 to support autofixing ( #4178 )
2023-05-04 16:36:32 +00:00
Charlie Marsh
494e807315
Add space when joining rule codes for debug messages ( #4225 )
2023-05-04 15:34:34 +00:00
Tom Kuson
6db1a32eb9
Add docs for PLC rules ( #4224 )
2023-05-04 10:56:00 -04:00
Dhruv Manilawala
bb2cbf1f25
End of statement insertion should occur after newline ( #4215 )
2023-05-04 16:17:41 +02:00
konstin
badfdab61a
Show rule codes on autofix failure ( #4220 )
2023-05-04 15:25:07 +02:00
Dhruv Manilawala
59d40f9f81
Show settings path in `--show-settings` output ( #4199 )
2023-05-04 08:22:31 +02:00
Arya Kumar
37aae666c7
[flake8-pyi] PYI020 ( #4211 )
2023-05-03 22:37:32 -04:00
Leiser Fernández Gallo
460023a959
Fix era panic caused by out of bound edition ( #4206 )
2023-05-03 15:48:43 +02:00
Aarni Koskela
d0e3ca29d9
Print out autofix-broken or non-converging code when debugging ( #4201 )
2023-05-03 13:50:03 +02:00
Micha Reiser
b14358fbfe
Render tabs as 4 spaces in diagnostics ( #4132 )
2023-05-02 13:14:02 +00:00
wookie184
ac600bb3da
Warn on PEP 604 syntax not in an annotation, but don't autofix ( #4170 )
2023-05-01 23:49:20 -07:00
Charlie Marsh
8cb76f85eb
Bump version to 0.0.264 ( #4179 )
2023-05-01 23:33:38 -07:00
Charlie Marsh
56c45013c2
Allow boolean parameters for `pytest.param` ( #4176 )
2023-05-02 01:07:50 +00:00
Calum Young
a4ce746892
Reference related settings in rules ( #4157 )
2023-05-02 00:59:00 +00:00
Calum Young
2d6d51f3a1
Add `flake8-return` docs ( #4164 )
2023-05-02 00:53:46 +00:00
Jonathan Plasse
814731364a
Fix UP032 auto-fix ( #4165 )
2023-04-30 16:57:41 -04:00
Jonathan Plasse
8c97e7922b
Fix F811 false positive with match ( #4161 )
2023-04-30 14:39:45 -04:00
Charlie Marsh
64b7280eb8
Respect parent-scoping rules for `NamedExpr` assignments ( #4145 )
2023-04-29 22:45:30 +00:00
Evan Rittenhouse
8d64747d34
Remove `pyright` comment prefix from PYI033 checks ( #4152 )
2023-04-29 18:41:04 -04:00
Charlie Marsh
2115d99c43
Remove `ScopeStack` in favor of child-parent `ScopeId` pointers ( #4138 )
2023-04-29 18:23:51 -04:00
Calum Young
39ed75f643
Document `flake8-unused-arguments` ( #4147 )
2023-04-29 19:17:50 +00:00
Calum Young
8f61eae1e7
Add remaining `pep8-naming` docs ( #4149 )
2023-04-29 15:13:10 -04:00
Calum Young
f0f4bf2929
Move typos to pre-commit config ( #4148 )
2023-04-29 12:13:35 -04:00
Calum Young
03144b2fad
Document `flake8-commas` ( #4142 )
2023-04-29 03:24:15 +00:00
Calum Young
0172cc51a7
Document `flake8-print` ( #4144 )
2023-04-29 03:19:00 +00:00
Calum Young
12d64a223b
Document RUF100 ( #4141 )
2023-04-28 22:14:15 +00:00
Charlie Marsh
432ea6f2e2
Tweak rule documentation for `B008` ( #4137 )
2023-04-28 01:29:03 +00:00
Evan Rittenhouse
b34804ceb5
Make D410/D411 autofixes mutually exclusive ( #4110 )
2023-04-28 01:24:35 +00:00
Moritz Sauter
ee6d8f7467
Add bugbear immutable functions as allowed in dataclasses ( #4122 )
2023-04-27 21:23:06 -04:00
Dhruv Manilawala
089b64e9c1
Autofix `EM101`, `EM102`, `EM103` if possible ( #4123 )
2023-04-27 18:53:27 +00:00
Tom Kuson
3e81403fbe
Add pygrep-hooks documentation ( #4131 )
2023-04-27 18:33:07 +00:00
Charlie Marsh
3c9f5e2fdc
Preserve star-handling special-casing for force-single-line ( #4129 )
2023-04-27 00:02:17 -04:00
Micha Reiser
17db2e2a62
Fix B023 shadowed variables in nested functions ( #4111 )
2023-04-26 22:01:31 +01:00
Micha Reiser
e04ef42334
Use `memchr` to speedup newline search on x86 ( #3985 )
2023-04-26 20:15:47 +01:00
Micha Reiser
f3e6ddda62
perf(logical-lines): Various small perf improvements ( #4022 )
2023-04-26 20:10:35 +01:00
Micha Reiser
cab65b25da
Replace row/column based `Location` with byte-offsets. ( #3931 )
2023-04-26 18:11:02 +00:00
Charlie Marsh
ee91598835
Tweak `--show-fixes` documentation ( #4117 )
2023-04-26 15:15:56 +00:00
Dhruv Manilawala
b9c06b48e1
Document that `--diff` implies `--fix-only` ( #4098 )
2023-04-25 21:19:44 -06:00
Charlie Marsh
7266eb0d69
Add support for providing command-line arguments via `argfile` ( #4087 )
2023-04-25 17:58:21 -06:00
Jonathan Plasse
4df7bc0bcd
Fix `E713` and `E714` false positives for multiple comparisons ( #4083 )
2023-04-25 11:37:56 -06:00
Charlie Marsh
fd7ccb4c9e
Bump version to 0.0.263 ( #4086 )
2023-04-24 23:32:29 -06:00
Evan Rittenhouse
ae6f38344a
Unify positional and keyword arguments when checking for missing arguments in docstring ( #4067 )
2023-04-25 05:32:15 +00:00
Trevor McCulloch
bbf658d4c5
[`pylint`] Implement PLE0302 `unexpected-special-method-signature` ( #4075 )
2023-04-25 04:51:21 +00:00
Jonathan Plasse
1f3b0fd602
Fix `SIM222` and `SIM223` false positives and auto-fix ( #4063 )
2023-04-25 04:44:02 +00:00
Dhruv Manilawala
37483f3ac9
Ignore `ClassVar` annotation for `RUF008`, `RUF009` ( #4081 )
2023-04-24 23:58:30 +00:00
Jonathan Plasse
5e91211e6d
Add `in_boolean_test` to `Context` ( #4072 )
2023-04-23 23:18:23 -06:00
Jonathan Plasse
df77595426
Move `Truthiness` into `ruff_python_ast` ( #4071 )
2023-04-24 04:54:31 +00:00
Charlie Marsh
407af6e0ae
Avoid infinite-propagation of inline comments when force-splitting imports ( #4074 )
2023-04-23 22:39:51 -06:00
Dhruv Manilawala
d64146683e
Increment priority should be (branch-local, global) ( #4070 )
2023-04-23 00:04:15 -06:00
Charlie Marsh
0e7914010f
Misc. small clean-up of `flake8-import-conventions` rules ( #4069 )
2023-04-23 04:57:15 +00:00
Edgar R. M
cfc7d8a2b5
[`flake8-import-conventions`] Implement new rule `ICN003` to ban `from ... import ...` for selected modules ( #4040 )
2023-04-23 04:40:36 +00:00
Tom Kuson
f5cd659292
Add docs for `tryceratops` rules ( #4042 )
2023-04-23 04:35:56 +00:00
Charlie Marsh
260138b427
Use `Context` for pep8-naming helpers ( #4068 )
2023-04-22 18:44:54 -04:00
Jonathan Plasse
2da149fd7e
Ignore `N815` for `TypedDict` fields ( #4066 )
2023-04-22 18:17:14 -04:00
Micha Reiser
e33887718d
Use Rust 1.69 ( #4065 )
2023-04-22 23:04:17 +01:00
Micha Reiser
ba4f4f4672
Upgrade dependencies ( #4064 )
2023-04-22 18:04:01 +01:00
Alan Du
82abbc7234
[`flake8-bugbear`] Add pytest.raises(Exception) support to `B017` ( #4052 )
2023-04-21 03:43:01 +00:00
Dhruv Manilawala
ba98149022
Avoid `RUF008` if field annotation is immutable ( #4039 )
2023-04-20 16:02:12 -04:00
Dhruv Manilawala
7fd44a3e12
Avoid `PYI015` for valid default value without annotation ( #4043 )
2023-04-20 15:45:47 -04:00
Evan Rittenhouse
6e8d561090
Support --fix in watch mode ( #4035 )
2023-04-19 23:33:12 -04:00
Charlie Marsh
eed6866b7e
Add relative-path tests for `banned-api` ( #4033 )
2023-04-19 16:04:22 -04:00
Charlie Marsh
25a6bfa9ee
Bump version to 0.0.262 ( #4032 )
2023-04-19 15:49:28 -04:00
Charlie Marsh
b3f8f2a5c1
Remove TODO in `handle_node_store` ( #4031 )
2023-04-19 15:28:56 -04:00
Charlie Marsh
cc8b5a543b
Ignore stub file assignments to value-requiring targets ( #4030 )
2023-04-19 15:26:00 -04:00
Charlie Marsh
10d5415bcb
Ignore certain flake8-pyi errors within function bodies ( #4029 )
2023-04-19 15:10:29 -04:00
Charlie Marsh
827cbe7f97
Treat non-future function annotations as required-at-runtime ( #4028 )
2023-04-19 14:43:55 -04:00
Charlie Marsh
0d84517fbc
Use module path resolver for relative autofix ( #4027 )
2023-04-19 14:43:45 -04:00
Charlie Marsh
7fa1da20fb
Support relative imports in `banned-api` enforcement ( #4025 )
2023-04-19 14:30:13 -04:00
Francesco Nuzzo
f13a161ead
remove unnecessary f-string formatting ( #4026 )
2023-04-19 18:14:33 +00:00
Charlie Marsh
c4cda301aa
Ignore relative imports in `banned-api` rules ( #4024 )
2023-04-19 13:30:08 -04:00
Charlie Marsh
13fda30051
Refactor `flake8_tidy_imports` rules to consistently take `Checker` ( #4023 )
2023-04-19 16:42:15 +00:00
Micha Reiser
a3146ab1ca
Fix (doc-)line-too-long start location ( #4006 )
2023-04-19 08:42:28 +02:00
Micha Reiser
c0cf87356e
Set non-empty range for indentation diagnostics ( #4005 )
2023-04-18 16:26:13 +02:00
Charlie Marsh
6c038830a8
Ignore argument assignments when enforcing `RET504` ( #4004 )
2023-04-18 03:22:38 +00:00
Charlie Marsh
064a293b80
Fix defaults for section-order ( #4003 )
2023-04-18 03:00:17 +00:00
Charlie Marsh
79c47e29ee
Avoid short-circuiting when detecting RET rules ( #4002 )
2023-04-17 22:52:26 -04:00
Charlie Marsh
be87a29a9d
Respect typing-modules when evaluating no-return functions ( #4001 )
2023-04-17 20:25:44 +00:00
Micha Reiser
280dffb5e1
Add parser benchmark ( #3990 )
2023-04-17 16:43:59 +02:00
Tom Kuson
516cb10000
Add more documentation for `flake8-type-checking` ( #3994 )
2023-04-17 09:51:54 -04:00
Charlie Marsh
1cdd5e3424
Remove autofix behavior for uncapitalized-environment-variables (`SIM112`) ( #3988 )
2023-04-16 23:19:05 +00:00
Dhruv Manilawala
bd78c6ade2
Preserve type annotations when fixing `E731` ( #3983 )
2023-04-16 23:15:38 +00:00
Dhruv Manilawala
5ce35faa86
Do not consider nested comment as part of code ( #3984 )
2023-04-16 19:11:01 -04:00
Charlie Marsh
c457752f36
Redirect `PIE802` to `C419` ( #3971 )
2023-04-13 22:12:32 -04:00
Charlie Marsh
289289bfd3
Implement `unnecessary-literal-within-dict-call` (`C418`) ( #3969 )
2023-04-14 01:39:35 +00:00
Charlie Marsh
d8718dcf54
Remove extraneous debug and TODO ( #3967 )
2023-04-13 18:45:18 -04:00
Charlie Marsh
fb9eeba422
Move user-defined section validation into `Settings` ( #3966 )
2023-04-13 22:40:05 +00:00
Paul
2d2630ef07
Implement isort custom sections and ordering ( #2419 ) ( #3900 )
2023-04-13 21:28:22 +00:00
Charlie Marsh
1f22e035e3
Add 'or if cond' to `E712` message ( #3962 )
2023-04-13 19:02:23 +00:00
Rob Young
a6a7584d79
Implement `flake8-bandit` shell injection rules ( #3924 )
2023-04-13 14:45:27 -04:00
Charlie Marsh
ffac4f6ec3
Ignore assert errors (S101) in `TYPE_CHECKING` blocks ( #3960 )
2023-04-13 18:20:44 +00:00
Dhruv Manilawala
032a84b167
Check for parenthesis in implicit str concat in `PT006` ( #3955 )
2023-04-13 17:56:18 +00:00
Charlie Marsh
3357aaef4b
Add docs for assert rule (S101) ( #3959 )
2023-04-13 13:43:00 -04:00
Charlie Marsh
e160a52bfd
Raise percent-format upgrade rule (`UP031`) for hanging modulos ( #3953 )
2023-04-12 23:59:20 -04:00
Charlie Marsh
9067ae47d1
Allow `typing_extensions.TypeVar` assignments in `.pyi` files ( #3951 )
2023-04-12 17:30:15 -04:00
Charlie Marsh
1e2df07544
Use identifier range for pytest rules ( #3948 )
2023-04-12 15:28:25 +00:00
USER-5
860841468c
[`flake8-pyi`] Implement duplicate types in unions (`PYI016`) ( #3922 )
2023-04-12 04:06:09 +00:00
Charlie Marsh
ed4ecc3255
Remove unused import ( #3944 )
2023-04-12 03:55:38 +00:00
Charlie Marsh
b999e4b1e2
Allow users to extend the set of included files via `include` ( #3914 )
2023-04-11 23:39:43 -04:00
Charlie Marsh
8ce227047d
Tidy up some `pygrep-hooks` rules ( #3942 )
2023-04-12 03:35:15 +00:00
Daniel Stancl
523515f936
[`flake8-import-conventions`] Add a rule for `BannedImportAlias` ( #3926 )
2023-04-12 03:29:24 +00:00
Charlie Marsh
10da3bc8dd
Support `pyright: ignore` comments ( #3941 )
2023-04-12 03:10:29 +00:00
Charlie Marsh
eb0dd74040
Avoid adding required imports to stub files ( #3940 )
2023-04-11 22:31:20 -04:00
Micha Reiser
61200d2171
lint snapshots: Use filename only to avoid platform specific separators ( #3930 )
2023-04-11 11:40:51 +02:00
Micha Reiser
e8aebee3f6
Pretty print `Diagnostic`s in snapshot tests ( #3906 )
2023-04-11 09:03:00 +00:00
Micha Reiser
210083bdd8
Order `Edit`s by `Location`s ( #3905 )
2023-04-11 08:56:41 +00:00
Micha Reiser
c33c9dc585
Introduce SourceFile to avoid cloning the message filename ( #3904 )
2023-04-11 08:28:55 +00:00
Micha Reiser
056c212975
Render code frame with context ( #3901 )
2023-04-11 10:22:11 +02:00
Micha Reiser
381203c084
Store source code on message ( #3897 )
2023-04-11 07:57:36 +00:00
Micha Reiser
76c47a9a43
Cheap cloneable LineIndex ( #3896 )
2023-04-11 07:33:40 +00:00
Micha Reiser
9209e57c5a
Extract message emitters from Printer ( #3895 )
2023-04-11 07:24:25 +00:00
Leiser Fernández Gallo
333f1bd9ce
Extend SIM105 to match also 'Ellipsis only' bodies in exception handlers ( #3925 )
2023-04-10 09:55:02 -04:00
Leiser Fernández Gallo
002caadf9e
[`flake8-simplify`] Add autofix for `contextlib.suppress` (`SIM105`) ( #3915 )
2023-04-09 22:45:19 +00:00
Dhruv Manilawala
311ba29d0f
Do not skip analysis if `*args` present for `F523` ( #3923 )
2023-04-09 18:34:52 -04:00
Dhruv Manilawala
237a64d922
Check for arguments in inner/outer call for `C414` ( #3916 )
2023-04-09 18:33:11 -04:00
Moritz Sauter
d4af2dd5cf
[`ruff`] Add checks for mutable defaults in `dataclass`es ( #3877 )
2023-04-09 02:46:28 +00:00
Charlie Marsh
a36ce585ce
Remove `extract_path_names` helper ( #3920 )
2023-04-08 11:14:42 -04:00
Charlie Marsh
29ec6df24f
Avoid N802 violations for `@override` methods ( #3912 )
2023-04-08 03:11:50 +00:00
Evan Rittenhouse
abaf0a198d
Ensure that tab characters aren't in multi-line strings before throwing a violation ( #3837 )
2023-04-06 22:25:40 -04:00
konstin
cae5503e34
[`pylint`] Fix unicode handling in `PLE2515` ( #3898 )
2023-04-06 13:54:52 -04:00
Dhruv Manilawala
34e9786a41
Visit comprehension to detect group name usage/overrides ( #3887 )
2023-04-05 18:03:11 -04:00
Dhruv Manilawala
5467d45dfa
Ignore `PLW2901` when using typing cast ( #3891 )
2023-04-05 18:02:32 -04:00
Charlie Marsh
ac87137c1c
Avoid printing docs on cargo dev generate-all ( #3890 )
2023-04-05 14:18:33 -04:00
Charlie Marsh
e0bccfd2d9
Allow legacy C and T selectors in JSON schema ( #3889 )
2023-04-05 17:58:36 +00:00
Tom Kuson
7b6e55a2e0
Add documentation for `flake8-type-checking` ( #3886 )
2023-04-05 17:30:25 +00:00
Charlie Marsh
255b094b33
Bump version to 0.0.261 ( #3881 )
2023-04-04 22:31:01 -04:00
Dhruv Manilawala
b6155232ac
Consider logger candidate from `logging` module only ( #3878 )
2023-04-04 19:52:57 +00:00
kyoto7250
390d7dcf39
Supports more cases in `SIM112` ( #3876 )
2023-04-04 15:49:24 -04:00
Charlie Marsh
d919adc13c
Introduce a `ruff_python_semantic` crate ( #3865 )
2023-04-04 16:50:47 +00:00
kyoto7250
46bcb1f725
[`flake8-simplify`] Implement `dict-get-with-none-default` (`SIM910`) ( #3874 )
2023-04-04 03:52:10 +00:00
Dhruv Manilawala
2b21effa77
fixup! Support mutually exclusive branches for `B031` ( #3844 ) ( #3875 )
2023-04-03 23:34:11 -04:00
Chris Chan
10504eb9ed
Generate `ImportMap` from module path to imported dependencies ( #3243 )
2023-04-04 03:31:37 +00:00
Dhruv Manilawala
76e111c874
Support mutually exclusive branches for `B031` ( #3844 )
2023-04-04 02:33:17 +00:00
Charlie Marsh
60f6a8571a
Allow starred arguments in B030 ( #3871 )
2023-04-03 23:20:34 +00:00
Charlie Marsh
f4173b2a93
Move shadow tracking into `Scope` directly ( #3854 )
2023-04-03 15:33:44 -04:00
Charlie Marsh
449e08ed08
Rename `autofix::helpers` to `autofix::actions` ( #3866 )
2023-04-03 13:34:49 -04:00
Charlie Marsh
5625410936
Remove `uses_magic_variable_access` dependence on `Checker` ( #3864 )
2023-04-03 12:22:06 -04:00
Charlie Marsh
3744e9ab3f
Remove `contains_effect`'s dependency on `Context` ( #3855 )
2023-04-03 12:08:13 -04:00
Nazia Povey
849091d846
When checking module visibility, don't check entire ancestry ( #3835 )
2023-04-03 11:38:41 -04:00
Ran Benita
d2f2544f6e
flake8-pyi: fix PYI015 false positive on assignment of TypeVar & friends ( #3861 )
2023-04-03 11:28:46 -04:00
Charlie Marsh
25771cd4b9
Use references for `Export` binding type ( #3853 )
2023-04-03 15:26:42 +00:00
Charlie Marsh
924bebbb4a
Change "indexes" to "indices" in various contexts ( #3856 )
2023-04-02 23:08:03 +00:00
Charlie Marsh
08e5b3fa61
Make `collect_call_path` return an `Option` ( #3849 )
2023-04-01 22:29:32 -04:00
Charlie Marsh
d822e08111
Move `CallPath` into its own module ( #3847 )
2023-04-01 11:25:04 -04:00
Charlie Marsh
2f90157ce2
Move logging resolver into `logging.rs` ( #3843 )
2023-04-01 03:50:44 +00:00
Charlie Marsh
88308ef9cc
Move `Binding` structs out of `scope.rs` ( #3842 )
2023-03-31 23:49:48 -04:00
Charlie Marsh
6d80c79bac
Combine `operations.rs` and `helpers.rs` ( #3841 )
2023-04-01 03:40:34 +00:00
Charlie Marsh
2fbc620ad3
Move `__all__` utilities to `all.rs` ( #3840 )
2023-04-01 03:31:15 +00:00
Charlie Marsh
27e40e9b31
Remove `helpers.rs` dependency on `Binding` ( #3839 )
2023-04-01 03:19:45 +00:00
Charlie Marsh
b6276e2d95
Move f-string identification into rule module ( #3838 )
2023-03-31 23:10:11 -04:00
Charlie Marsh
66d72b1c7b
Move keyword checks into `is_identifier` ( #3834 )
2023-03-31 16:56:33 -04:00
Jonathan Plasse
968c7df770
Fix `is_module_name()` and improve perf of `is_identifier()` ( #3795 )
2023-03-31 15:15:36 -04:00
Jonathan Plasse
fe38597279
Fix `SIM222` and `SIM223` false positive ( #3832 )
2023-03-31 14:50:35 -04:00
Micha Reiser
48d8680e71
Ambiguous unicode, only test unicode characters ( #3814 )
2023-03-31 18:03:00 +01:00
Charlie Marsh
82584ad101
Extend `unncessary-generator-any-all` to set comprehensions ( #3824 )
2023-03-31 16:29:25 +00:00
Charlie Marsh
dfc872c9a0
Track star imports on `Scope` directly ( #3822 )
2023-03-31 15:01:12 +00:00
Charlie Marsh
cf7e1ddd08
Remove some `usize` references ( #3819 )
2023-03-30 17:35:42 -04:00
Charlie Marsh
9de1f82658
Avoid `unnecessary-comprehension-any-all` for async generators ( #3823 )
2023-03-30 18:43:59 +00:00
Charlie Marsh
54ad9397e5
Flag non-`Name` expressions in `duplicate-isinstance-call` ( #3817 )
2023-03-30 12:19:53 -04:00
Jonathan Plasse
29c8b75fd4
Ignore `collapsible-if` violations for `if False:` and `if True:` ( #3732 )
2023-03-30 15:52:43 +00:00
Charlie Marsh
0b586d5451
Use `panic` instead of `unreachable` for invalid arguments ( #3816 )
2023-03-30 15:40:53 +00:00
Charlie Marsh
01357f62e5
Add import insertion support to autofix capabilities ( #3787 )
2023-03-30 15:33:46 +00:00
Micha Reiser
d7113d3995
refactor: `StateMachine` use `match` statement ( #3811 )
2023-03-30 15:55:54 +02:00
Charlie Marsh
f79506f5a4
Move some generic structs out of `isort` ( #3788 )
2023-03-30 08:58:01 -04:00
Dhruv Manilawala
44ae3237b8
Additional simple magic return types ( #3805 )
2023-03-30 08:57:49 -04:00