Edgar R. M
c0eb5c28d1
[docs] Add docs for `flake8-errmsg` ( #2888 )
2023-02-14 23:21:34 +00:00
Martin Fischer
a77b4566e4
Fix option links in mkdocs rule pages
...
In 28c9263722 I introduced automatic
linkification of option references in rule documentation,
which automatically converted the following:
## Options
* `namespace-packages`
to:
## Options
* [`namespace-packages`]
[`namespace-packages`]: ../../settings#namespace-packages
While the above is a correct CommonMark[1] link definition,
what I was missing was that we used mkdocs for our documentation
generation, which as it turns out uses a non-CommonMark-compliant
Markdown parser, namely Python-Markdown, which contrary to CommonMark
doesn't support link definitions containing code tags.
This commit fixes the broken links via a regex hack.
[1]: https://commonmark.org/
2023-02-14 17:56:21 -05:00
Charlie Marsh
58d4e00604
Add `publish = false` to unpublished crates ( #2905 )
2023-02-14 22:41:14 +00:00
Simon Brugman
4f927fbacc
[`flake8-tidy-imports`] autofix relative imports ( #2891 )
...
Previous fix was bugged. This one is only fixing when the `module_path` is present, making it far more robust.
Closes #2764 and closes #2869
2023-02-14 22:24:59 +00:00
Anders Kaseorg
2e41301520
Switch some quotes to backticks in errors ( #2889 )
...
Improves consistency with the style decision in #723 , I think.
2023-02-14 22:24:41 +00:00
Martin Fischer
3179fc110d
Disable many-to-one mapping for now
2023-02-14 16:16:12 -05:00
Martin Fischer
03ae0118b7
many-to-one 9/9: Update table generation
2023-02-14 16:16:12 -05:00
Martin Fischer
05176890ee
many-to-one 8/9: Drop codes from registry
...
This commit was generated by running:
fastmod --accept-all '[A-Z]+[0-9]+ => ' '' crates/ruff/src/registry.rs
2023-02-14 16:16:12 -05:00
Martin Fischer
849b947b3e
many-to-one 7/9: Update JSON schema
2023-02-14 16:16:12 -05:00
Martin Fischer
c314e10e54
many-to-one 6/9: Implement ruff_macros::map_codes
2023-02-14 16:16:12 -05:00
Martin Fischer
9eda286dcd
many-to-one 5/9: Generate codes.rs from registry.rs
...
# This commit was generated by running the following Python code:
# (followed by `sed -Ei 's/(mod registry;)/\1mod codes;/' crates/ruff/src/lib.rs`
# and `cargo fmt`).
import json
import re
import subprocess
def parse_registry():
file = open('crates/ruff/src/registry.rs')
rules = []
while next(file) != 'ruff_macros::register_rules!(\n':
continue
while (line := next(file)) != ');\n':
line = line.strip().rstrip(',')
if line.startswith('//') or line.startswith('#['):
rules.append(line)
continue
code, path = line.split(' => ')
name = path.rsplit('::')[-1]
rules.append((code, name))
while (line := next(file)) != 'pub enum Linter {\n':
continue
prefixes = []
prefix2linter = []
while (line := next(file).strip()) != '}':
if line.startswith('//'):
continue
if line.startswith('#[prefix = '):
prefixes.append(line.split()[-1].strip('"]'))
else:
for prefix in prefixes:
prefix2linter.append((prefix, line.rstrip(',')))
prefixes.clear()
prefix2linter.sort(key = lambda t: len(t[0]), reverse=True)
return rules, prefix2linter
rules, prefix2linter = parse_registry()
def parse_code(code):
prefix = re.match('[A-Z]+', code).group()
if prefix in ('E', 'W'):
return 'Pycodestyle', code
for prefix, linter in prefix2linter:
if code.startswith(prefix):
return linter, code[len(prefix) :]
assert False
text = '''
use crate::registry::{Linter, Rule};
pub fn code_to_rule(linter: Linter, code: &str) -> Option<Rule> {
#[allow(clippy::enum_glob_use)]
use Linter::*;
Some(match (linter, code) {
'''
for entry in rules:
if isinstance(entry, str):
if entry.startswith('//'):
text += '\n' + entry
else:
text += entry
else:
namespace, code = parse_code(entry[0])
text += f'({namespace}, "{code}") => Rule::{entry[1]},'
text += '\n'
text += '''
_ => return None,
})
}
'''
with open('crates/ruff/src/codes.rs', 'w') as f:
f.write(text)
2023-02-14 16:16:12 -05:00
Martin Fischer
65a3461519
many-to-one 4/9: Rename define_rule_mapping! to register_rules!
...
Currently the define_rule_mapping! macro generates both the Rule enum as
well as the RuleCodePrefix enum and the mapping between the two. After
this commit series the macro will only generate the Rule enum and the
RuleCodePrefix enum and the mapping will be generated by a new map_codes
proc macro, so we rename the macro now to fit its new purpose.
2023-02-14 16:16:12 -05:00
Martin Fischer
1b8d2df3bf
many-to-one 3/9: Update RuleSelector::short_code
...
Same reasoning as for the previous commit ... one &'static str
becomes two &'static str because we split the RuleCodePrefix enum.
Note that the .unwrap() we have to add now, will actually
be removed in the 6th commit.
2023-02-14 16:16:12 -05:00
Martin Fischer
179ead0157
many-to-one 2/9: Newtype Rule::noqa_code return type
...
Rule::noqa_code previously return a single &'static str,
which was possible because we had one enum listing all
rule code prefixes. This commit series will however split up
the RuleCodePrefix enum into several enums ... so we'll end up
with two &'static str ... this commit wraps the return type
of Rule::noqa_code into a newtype so that we can easily change
it to return two &'static str in the 6th commit of this series.
2023-02-14 16:16:12 -05:00
Martin Fischer
d451c7a506
many-to-one 1/9: Rename Rule::code to Rule::noqa_code
...
Post this commit series several codes can be mapped to a single rule,
this commit therefore renames Rule::code to Rule::noqa_code,
which is the code that --add-noqa will add to ignore a rule.
2023-02-14 16:16:12 -05:00
Martin Fischer
502ce80c91
many-to-one 0/9: Introduce RuleSelector::Linter variant
...
We want to remove the variants denoting whole Linters
from the RuleCodePrefix enum, so we have to introduce
a new RuleSelector::Linter variant.
2023-02-14 16:16:12 -05:00
Charlie Marsh
49d22d8fe2
Ignore non-imperative-mood in Google docstring convention ( #2900 )
2023-02-14 20:42:20 +00:00
Charlie Marsh
f7515739ac
Improve consistency of some rule docs ( #2887 )
2023-02-14 04:36:37 +00:00
Sawbez
53e810ed3e
[docs] Add docs for the entirety of `flake8-builtins` ( #2840 )
2023-02-14 04:30:30 +00:00
Charlie Marsh
66a195f805
Extend B904 to else branches ( #2886 )
2023-02-14 03:58:15 +00:00
Jeremiah England
b8483975a4
docs(SIM114): fix typo in example Python code ( #2884 )
2023-02-14 03:23:19 +00:00
Charlie Marsh
4dd2032687
Unversion unpublished crates ( #2882 )
2023-02-14 03:03:49 +00:00
Charlie Marsh
c6c15d5cf9
Avoid unnecessary-else violations in `elif` branches ( #2881 )
...
Long-time source of confusion -- two reports over 1800 issues apart.
Closes #1035 .
Closes #2879 .
2023-02-14 02:51:12 +00:00
Charlie Marsh
2bf7b35268
Re-enable custom allocators ( #2876 )
2023-02-14 02:37:22 +00:00
Charlie Marsh
6d1adc85fc
Remove autofix for prefer-type-error ( #2880 )
2023-02-14 02:26:22 +00:00
Martin Fischer
8120d7c974
Change rule page links in README from GitHub to beta.ruff.rs
2023-02-13 19:34:06 -05:00
Anders Kaseorg
b9d075c252
Alphabetize flake8-raise and flake8-self in documentation ( #2871 )
2023-02-13 18:03:09 -05:00
Charlie Marsh
7627e840c9
Avoid noqa removal upon unhandled syntax errors ( #2864 )
2023-02-13 10:37:55 -05:00
Charlie Marsh
3c03e2cb2e
Rename flake8-django rules to match convention ( #2861 )
2023-02-13 15:30:04 +00:00
Charlie Marsh
aeae63b7ea
Avoid false-positives for runtime-types in type checking blocks ( #2863 )
2023-02-13 10:26:34 -05:00
Charlie Marsh
7be17c5f1e
Avoid false-positives with multi-byte characters in B005 ( #2862 )
2023-02-13 15:07:55 +00:00
Charlie Marsh
6128346b08
Re-show --target-version on CLI interface ( #2859 )
2023-02-13 15:04:11 +00:00
Charlie Marsh
1705574e75
Handle multiple receiver decorators in receiver-decorator ( #2858 )
2023-02-13 14:57:11 +00:00
Ville Skyttä
d1cf0ee52b
Remove "blanket" from RUF100 README message ( #2844 )
2023-02-13 14:43:35 +00:00
Charlie Marsh
dde69d50b5
Move more dependencies into workspace dependencies ( #2842 )
2023-02-13 04:19:26 +00:00
Charlie Marsh
48a5cd1dd9
Revert "perf: Use custom allocator ( #2768 )" ( #2841 )
...
This is causing wheel creation to fail on some of our more exotic build targets: https://github.com/charliermarsh/ruff/actions/runs/4159524132 .
Let's figure out how to gate appropriately, but for now, reverting to get the release out.
2023-02-12 22:31:34 -05:00
Charlie Marsh
7dab4807d0
Allow compound statements of single ellipsis ( #2837 )
...
This allows `class C: ...`-style compound statements in stub files.
Closes #2835 .
2023-02-12 18:56:43 -05:00
Charlie Marsh
83f6e52c92
Bump version to 0.0.246 ( #2834 )
2023-02-12 23:39:51 +00:00
Charlie Marsh
5ce7ce5bc3
Check-in updated snapshot for SIM111 ( #2836 )
2023-02-12 23:37:52 +00:00
Florian Best
749d197119
docs(SIM114): fix typo in python code ( #2833 )
2023-02-12 18:35:29 -05:00
Charlie Marsh
46c184600f
Include package inference during --add-noqa command ( #2832 )
2023-02-12 22:45:39 +00:00
Charlie Marsh
e2051ef72f
Use smarter inversion for comparison checks ( #2831 )
2023-02-12 22:39:29 +00:00
Charlie Marsh
1abaece9ed
Fix unused multi-assignments in a single pass ( #2829 )
2023-02-12 22:28:03 +00:00
Charlie Marsh
8b35b052b8
Avoid duplicates in if-with-same-arms ( #2827 )
2023-02-12 22:22:19 +00:00
Charlie Marsh
5a34504149
Implement `ComparableStmt` ( #2826 )
2023-02-12 22:00:01 +00:00
Colin Delahunty
1f07ad6e61
[`flake8-simplify`]: combine-if-conditions ( #2823 )
2023-02-12 21:00:32 +00:00
Charlie Marsh
1666e8ba1e
Add a `--show-fixes` flag to include applied fixes in output ( #2707 )
2023-02-12 20:48:01 +00:00
Martin Fischer
28c9263722
Automatically linkify option references in rule documentation
...
Previously the rule documentation referenced configuration options
via full https:// URLs, which was bad for several reasons:
* changing the website would mean you'd have to change all URLs
* the links didn't work when building mkdocs locally
* the URLs showed up in the `ruff rule` output
* broken references weren't detected by our CI
This commit solves all of these problems by post-processing the
Markdown, recognizing sections such as:
## Options
* `flake8-tidy-imports.ban-relative-imports`
`cargo dev generate-all` will automatically linkify such references
and panic if the referenced option doesn't exist.
Note that the option can also be linked in the other Markdown sections
via e.g. [`flake8-tidy-imports.ban-relative-imports`] since
the post-processing code generates a CommonMark link definition.
Resolves #2766 .
2023-02-12 13:19:11 -05:00
Martin Fischer
fc4c927788
refactor: Introduce ConfigurationOptions::get method
2023-02-12 13:19:11 -05:00
Zeddicus414
26f39cac2f
Add PD002 use-of-inplace-argument documentation ( #2799 )
2023-02-12 18:10:34 +00:00
Simon Brugman
02897a141b
[`flake8-tidy-imports`] add documentation for `banned-api` ( #2819 )
2023-02-12 18:09:39 +00:00
Nyakku Shigure
fc465cc2af
[`flake8-pyi`]: add rules for unrecognized platform check (PYI007, PYI008) ( #2805 )
...
Add two [flake8-pyi](https://github.com/PyCQA/flake8-pyi ) rules (Y007, Y008). ref: #848
The specifications are described in [PEP 484 - Version and platform checking](https://peps.python.org/pep-0484/#version-and-platform-checking )
The original implementation in flake8-pyi is shown below.
- Implemention: 66f28a4407/pyi.py (L1429-L1443)
- Tests: 66f28a4407/tests/sysplatform.pyi
2023-02-12 18:02:38 +00:00
Karol Onyśko
6769a5bce7
Implement flake8-django plugin rules ( #2586 )
2023-02-12 17:47:59 +00:00
Zeddicus414
fda93c6245
Add E722 bare-except documentation ( #2796 )
2023-02-12 16:51:32 +00:00
Charlie Marsh
099d5414f2
Allow non-verbose raise when cause is present ( #2816 )
...
The motivating issue here is of the following form:
```py
try:
raise Exception("We want to hide this error message")
except Exception:
try:
raise Exception("We want to show this")
except Exception as exc:
raise exc from None
```
However, I think we should avoid this if _any_ cause is present, since causes require a named exception.
Closes #2814 .
2023-02-12 16:48:13 +00:00
Charlie Marsh
9ddd5e4cfe
Allow private accesses on super calls ( #2815 )
2023-02-12 16:11:25 +00:00
Simon Brugman
1d4422f004
[`flake8-comprehensions`] improve autofix for C401, C402 and C417 ( #2806 )
2023-02-12 16:03:37 +00:00
Simon Brugman
2dccb7611a
[`flake8-comprehensions`] bugfix for C413 autofix ( #2804 )
2023-02-12 15:56:07 +00:00
Simon Brugman
0123425be1
[`flake8-comprehensions`] autofix C414 and C417 + bugfix ( #2693 )
...
Closes https://github.com/charliermarsh/ruff/issues/2262 and closes https://github.com/charliermarsh/ruff/issues/2423
Fixes bug where some cases generated duplicated violations (see https://github.com/charliermarsh/ruff/pull/2732#issuecomment-1426397842 )
2023-02-12 05:20:42 +00:00
Charlie Marsh
c53f91d943
Remove public re-export of commands ( #2801 )
2023-02-12 04:59:35 +00:00
Charlie Marsh
4a12ebb9b1
Improve f-string-missing-placeholders documentation ( #2800 )
2023-02-12 04:58:24 +00:00
Martin Fischer
0e4d5eeea7
Implement config subcommand
...
The synopsis is as follows.
List all top-level config keys:
$ ruff config
allowed-confusables
builtins
cache-dir
... etc.
List all config keys in a specific section:
$ ruff config mccabe
max-complexity
Describe a specific config option:
$ ruff config mccabe.max-complexity
The maximum McCabe complexity to allow before triggering `C901` errors.
Default value: 10
Type: int
Example usage:
```toml
# Flag errors (`C901`) whenever the complexity level exceeds 5.
max-complexity = 5
```
2023-02-11 23:43:09 -05:00
Martin Fischer
bbe44360e8
refactor: Move name out of OptionField & OptionGroup
2023-02-11 23:43:09 -05:00
Martin Fischer
37e80d98ab
refactor: Reorder members in ruff::settings::options_base
2023-02-11 23:43:09 -05:00
Charlie Marsh
306393063d
Refactor generator to use Astor-derived precedence levels ( #2798 )
2023-02-12 04:30:16 +00:00
Martin Fischer
f5a3c90288
Rename new `ruff rule` output format to "pretty"
...
The new `ruff rule` output format introduced in
551b810aeb doesn't print Markdown but
rather some rich text with escape sequences for colors and links,
it's actually the "text" format that prints Markdown, so naming the new
format "markdown" is very confusing. This commit therefore renames it to
"pretty".
This isn't a breaking change since there hasn't been a release yet.
2023-02-11 23:23:37 -05:00
Charlie Marsh
8289ede00f
Use output-stdout pattern for linter command ( #2794 )
2023-02-12 03:09:03 +00:00
Charlie Marsh
77e65c9ff5
Split commands.rs into separate files ( #2792 )
2023-02-12 02:58:13 +00:00
Charlie Marsh
418808895e
Add docs for f-string-missing-placeholders and unused-variable ( #2790 )
2023-02-12 02:48:36 +00:00
Nick Pope
551b810aeb
Add rendering of rule markdown for terminal output ( #2747 )
...
Add rendering of rule markdown for terminal output
This is achieved by making use of the `mdcat` crate.
See the following links for details:
- https://crates.io/crates/mdcat
- https://github.com/swsnr/mdcat
- https://docs.rs/mdcat/latest/mdcat/
2023-02-12 02:32:45 +00:00
Charlie Marsh
1b61d4e18b
Support unused variable removal in multi-assignment statements ( #2786 )
2023-02-12 00:53:11 +00:00
Charlie Marsh
752c0150e1
Improve unused-variable autofixes for with statements ( #2785 )
2023-02-12 00:38:14 +00:00
Charlie Marsh
81651a8479
Respect continuations in `noqa` enforcement ( #2783 )
2023-02-11 23:29:37 +00:00
Charlie Marsh
86d0749ed7
Use consistent formatting for lint-failure messages ( #2782 )
2023-02-11 22:52:18 +00:00
Charlie Marsh
19fc410683
Remove raw string from hardcoded-sql-expression ( #2780 )
2023-02-11 20:05:57 +00:00
Charlie Marsh
5a70a573cd
Avoid treating deferred string annotations as required-at-runtime ( #2779 )
2023-02-11 15:00:08 -05:00
Charlie Marsh
74731a3456
Fix reference to ban-relative-imports setting ( #2776 )
2023-02-11 18:34:25 +00:00
Micha Reiser
863e39fe5f
perf: Use custom allocator ( #2768 )
...
This PR replaces the system allocator with a custom allocator to improve performance:
* Windows: mimalloc
* Unix: tikv-jemallocator
## Performance:
* Linux
* `cpython --no-cache`: 208.8ms -> 190.5ms
* `cpython`: 32.8ms -> 31ms
* Mac:
* `cpython --no-cache`: 436.3ms -> 380ms
* `cpython`: 40.9ms -> 39.6ms
* Windows:
* `cpython --no-cache`: 367ms -> 268ms
* `cpython`: 92.5ms -> 92.3ms
## Size
* Linux: +5MB from 13MB -> 18MB (I need to double check this)
* Mac: +0.7MB from 8.3MB-> 9MB
* Windows: -0.16MB from 8.29MB -> 8.13MB (that's unexpected)
2023-02-11 13:26:07 -05:00
Charlie Marsh
d0f9ee33ec
Remove erroneous print statements
2023-02-11 12:45:40 -05:00
Charlie Marsh
1cf3d880a7
Don't treat all future import accesses as non-runtime ( #2774 )
...
This was just an oversight and misunderstanding on my part. We had some helpful tests, but I misunderstood the "right" behavior so thought they were passing.
Closes #2761 .
2023-02-11 12:44:15 -05:00
Charlie Marsh
ffb4e89a98
Remove multiple-statements-on-one-line-def (E704) ( #2773 )
2023-02-11 12:34:21 -05:00
Charlie Marsh
43b7ee215c
Ignore colon-after-lambda in compound statement rules ( #2771 )
2023-02-11 12:22:53 -05:00
Michał Mrówka
77099dcd4d
implemented option lines-between-types for isort ( #2762 )
...
Fixes #2585
Add support for the isort option [lines_between_types](https://pycqa.github.io/isort/docs/configuration/options.html#lines-between-types )
2023-02-11 12:17:37 -05:00
Martin Fischer
70ff65154d
Rename function-is-too-complex to complex-structure
2023-02-11 12:05:17 -05:00
Martin Fischer
7db6a2d6d4
Rename rules containing PEP reference in name
2023-02-11 12:05:17 -05:00
Martin Fischer
42924c0d9a
Rename a bunch of pydocstyle rules
2023-02-11 12:05:17 -05:00
Martin Fischer
31d00936ee
Drop no- from no-unnecessary-* rule names
2023-02-11 12:05:17 -05:00
Martin Fischer
c3c5d9a852
Rename nested-if-statements to collapsible-if
2023-02-11 12:05:17 -05:00
Martin Fischer
7e5c19385c
Rename return-bool-condition-directly to needless-bool
2023-02-11 12:05:17 -05:00
Charlie Marsh
24faabf1f4
Bump version to 0.0.245
2023-02-10 22:15:27 -05:00
Charlie Marsh
9fd29e2c54
Mention default in relative-imports doc
2023-02-10 22:12:22 -05:00
Simon Brugman
e83ed0ecba
Implement autofix for relative imports (TID252) ( #2739 )
2023-02-10 22:05:47 -05:00
Charlie Marsh
dadbfea497
Flag private member accesses on calls et al ( #2753 )
2023-02-10 19:23:22 -05:00
Nick Pope
9f84c497f9
Adjust heading level in rule documentation ( #2749 )
2023-02-10 19:10:42 -05:00
Martin Fischer
0ec25d1514
Rename dynamically-typed-expression to any-type ( #2751 )
2023-02-10 19:02:31 -05:00
Charlie Marsh
6a87c99004
Use explicit fields for implicit-namespace-package
2023-02-10 18:09:30 -05:00
Charlie Marsh
c8f60c9588
Improve implicit-namespace-package documentation
2023-02-10 18:06:48 -05:00
Charlie Marsh
113610a8d4
Improve hardcoded-sql-expression documentation
2023-02-10 18:03:01 -05:00
Charlie Marsh
6376e5915e
Improve dynamically-typed-expression documentation
2023-02-10 17:55:26 -05:00
Charlie Marsh
3d8fb5be20
Rewrite documentation for yield-in-init ( #2748 )
2023-02-10 17:49:55 -05:00
Charlie Marsh
0040991778
Respect NO_COLOR flags in --show-source ( #2750 )
2023-02-10 17:27:40 -05:00
Charlie Marsh
6eb9268675
Allow named unicodes in bidirectional escape check ( #2710 )
2023-02-10 16:59:28 -05:00
Charlie Marsh
e5f5142e3e
Improve yield-in-init documentation
2023-02-10 16:47:44 -05:00
Charlie Marsh
98d5ffb817
Fix __init__.py-to-__init__ in documentation
2023-02-10 16:30:36 -05:00
Charlie Marsh
3f20f73413
Use `function_type::classify` for `yield-in-init` ( #2742 )
2023-02-10 16:19:45 -05:00
tomecki
a5e42d2f7c
pylint: E0100 yield-in-init ( #2716 )
2023-02-10 16:15:15 -05:00
Charlie Marsh
0bc1f68111
Only trigger compound statements after select keywords ( #2737 )
2023-02-10 15:21:06 -05:00
Charlie Marsh
d2b09d77c5
Only validate `__all__` bindings for global scope ( #2738 )
2023-02-10 15:16:21 -05:00
Charlie Marsh
0377834f9f
Mark `__all__` members as used at end-of-scope ( #2733 )
2023-02-10 14:32:05 -05:00
Charlie Marsh
3d650f9dd6
Relax conditions in bad-string-format-type ( #2731 )
2023-02-10 14:25:59 -05:00
Charlie Marsh
a72590ecde
Expand S110 and S112 ranges to include entire exception handler ( #2729 )
2023-02-10 13:27:18 -05:00
Charlie Marsh
812b227334
Avoid flagging typed exceptions in tuples ( #2728 )
2023-02-10 13:24:45 -05:00
Martin Fischer
6f58717ba4
refactor: Stop including Rule::code() in pycodestyle .snap filenames
2023-02-10 13:15:47 -05:00
Florian Best
8aab96fb9e
feat(isort): Implement known-local-folder ( #2657 )
2023-02-10 13:15:34 -05:00
Nick Pope
9e6f7153a9
Handle more functions that never return in RET503 ( #2719 )
2023-02-10 12:09:05 -05:00
Peter Pentchev
cda2ff0b18
Handle functions that never return in RET503 ( #2701 )
2023-02-10 09:28:34 -05:00
Martin Fischer
ec63658250
Disallow rule names starting with avoid-*
2023-02-10 09:25:29 -05:00
Martin Fischer
1a97de0b01
Disallow rule names starting with uses-*
2023-02-10 09:25:29 -05:00
Martin Fischer
1cbe48522e
Disallow rule names ending in *-used
2023-02-10 09:25:29 -05:00
Martin Fischer
bfbde537af
Disallow rule names starting with do-not-*
2023-02-10 09:25:29 -05:00
Martin Fischer
cba91b758b
Add test for rule names
2023-02-10 09:25:29 -05:00
Martin Fischer
bd09a1819f
Drop unused once_cell dependency from ruff_macros
2023-02-10 09:25:29 -05:00
Martin Fischer
682d206992
refactor: Reduce code duplication
2023-02-10 08:24:22 -05:00
Martin Fischer
c32441e4ab
refactor: Use format! keyword arguments
2023-02-10 08:24:22 -05:00
Martin Fischer
6f16f1c39b
refactor: Reduce code duplication
2023-02-10 08:24:22 -05:00
Martin Fischer
9011456aa1
refactor: Simplify attribute handling in rule_code_prefix
...
if_all_same(codes.values().cloned()).unwrap_or_default()
was quite unreadable because it wasn't obvious that codes.values() are
the prefixes. It's better to introduce another Map rather than having
Maps within Maps.
2023-02-10 08:24:22 -05:00
Martin Fischer
fa191cceeb
refactor: Avoid implicit precondition
2023-02-10 08:24:22 -05:00
Charlie Marsh
ac6c3affdd
Remove public Rust API ( #2709 )
2023-02-09 23:16:49 -05:00
Charlie Marsh
9a018c1650
Import AutofixKind from violation
2023-02-09 23:06:02 -05:00
Charlie Marsh
a048594416
Gate `Path.readlink()` behind Python 3.9+ guard ( #2708 )
2023-02-09 22:57:31 -05:00
Charlie Marsh
5437f1299b
Remove lifetimes from Printer ( #2704 )
2023-02-09 21:44:15 -05:00
Charlie Marsh
41c0608a69
Add test module a test-only module ( #2703 )
2023-02-09 21:28:10 -05:00
messense
eb0d42187f
Manage LibCST and RustPython with cargo workspace dependencies ( #2700 )
2023-02-09 20:49:50 -05:00
Colin Delahunty
48daa0f0ca
[`pylint`]: bad-string-format-type ( #2572 )
2023-02-09 20:08:56 -05:00
Charlie Marsh
417fe4355f
Add colors to statistics output ( #2699 )
2023-02-09 19:40:29 -05:00
Florian Best
a129181407
feat(cli): let --statistics show fixable codes ( #2659 )
2023-02-09 19:36:31 -05:00
Matt Oberle
fc628de667
Implement bandit's 'hardcoded-sql-expressions' S608 ( #2698 )
...
This is an attempt to implement `bandit` rule `B608` (renamed here `S608`).
- https://bandit.readthedocs.io/en/latest/plugins/b608_hardcoded_sql_expressions.html
The rule inspects strings constructed via `+`, `%`, `.format`, and `f""`.
- `+` and `%` via `BinOp`
- `.format` via `Call`
- `f""` via `JoinedString`
Any SQL-ish strings that use Python string formatting are flagged.
The expressions and targeted expression types for the rule come from here:
- 7104b336d3/bandit/plugins/injection_sql.py
> Related Issue: https://github.com/charliermarsh/ruff/issues/1646
2023-02-09 19:28:17 -05:00
Steve Dignam
67e58a024a
Add flake8-pyi with one rule ( #2682 )
...
Add basic scaffold for [flake8-pyi](https://github.com/PyCQA/flake8-pyi ) and the first rule, Y001
rel: https://github.com/charliermarsh/ruff/issues/848
2023-02-09 19:03:11 -05:00
Charlie Marsh
233be0e074
Suppress parse errors with explicit `# noqa: E999` directives ( #2697 )
2023-02-09 18:24:19 -05:00
Charlie Marsh
7d5fb0de8a
Add documentation for mccabe, isort, and flake8-annotations ( #2691 )
2023-02-09 11:56:18 -05:00
Charlie Marsh
8a98cfc4b8
Treat re-exported annotations as used-at-runtime ( #2689 )
2023-02-09 11:22:15 -05:00
Charlie Marsh
54d1719424
Hide rule configuration settings on CLI ( #2687 )
2023-02-09 11:13:04 -05:00
Charlie Marsh
0f622f0126
Upgrade RustPython to pull in newline-handling optimizations ( #2688 )
2023-02-09 11:12:43 -05:00
Charlie Marsh
739a92e99d
Implement compound-statements (E701, E702, E703, E704) ( #2680 )
2023-02-08 22:57:39 -05:00
Charlie Marsh
5a07c9f57c
Only include rule links once in README ( #2678 )
2023-02-08 21:48:05 -05:00
Colin Delahunty
31027497c6
[`flake8-bandit`]: try-except-continue ( #2674 )
2023-02-08 21:44:01 -05:00
Charlie Marsh
dabfdf718e
Mark flake8-simplify rules as unfixable in non-fixable cases ( #2676 )
2023-02-08 21:28:28 -05:00
Charlie Marsh
5829bae976
Support callable decorators in classmethod_decorators et al ( #2675 )
2023-02-08 21:11:36 -05:00
Charlie Marsh
ff3665a24b
Mark RUF005 as fixable
2023-02-08 18:02:33 -05:00
Charlie Marsh
125615af12
Bump version to 0.0.244
2023-02-08 17:28:59 -05:00
Charlie Marsh
6339f8e009
Use separate exit codes for fatal errors vs. lint errors ( #2670 )
2023-02-08 15:21:15 -05:00
Charlie Marsh
81abc5d7d8
Move error and warning messages into log macro ( #2669 )
2023-02-08 14:39:09 -05:00
Charlie Marsh
75fad989f4
Add `--exit-non-zero-on-fix` ( #2668 )
2023-02-08 14:27:54 -05:00
Charlie Marsh
cb4a221905
Treat annotated assignments in class and module scopes as runtime ( #2667 )
2023-02-08 13:59:25 -05:00
Charlie Marsh
286d8c18dd
Remove ExprKind::Call from call path collection ( #2666 )
2023-02-08 13:35:18 -05:00
Florian Best
124461bddf
test(UP003): let type reference be the builtin ( #2664 )
2023-02-08 12:44:37 -05:00
Charlie Marsh
7482a4a5b8
Avoid false-positive in chained type calls ( #2663 )
2023-02-08 12:18:36 -05:00
Charlie Marsh
9f9f25ff7c
Accommodate multiple `@pytest.mark.parametrize` decorators ( #2662 )
2023-02-08 11:13:24 -05:00
Nuno Mendes
9cd1bf9c03
doc: add documentation for TRY002 ( #2655 )
2023-02-08 11:04:31 -05:00
Charlie Marsh
824c0d2680
Implement whitespace-before-comment (E261, E262, E265, E266) ( #2654 )
2023-02-07 23:41:32 -05:00
Charlie Marsh
f5efdd058e
Implement whitespace-around-keywords (E271, E272, E273, E274) ( #2653 )
2023-02-07 22:31:13 -05:00
Charlie Marsh
4c35feaa18
Add documentation for eradicate, flake8-import-conventions, and flake8-no-pep420 ( #2652 )
2023-02-07 22:19:21 -05:00
Charlie Marsh
8261d0656e
Disable autofix for flake8-print rules ( #2651 )
2023-02-07 21:38:57 -05:00
Charlie Marsh
a9aa96b24f
Add documentation for flake8-quotes rules ( #2650 )
2023-02-07 21:20:24 -05:00
Charlie Marsh
367f115d83
Add color to fixable error asterisk ( #2647 )
2023-02-07 19:12:18 -05:00
Charlie Marsh
56398e0002
Tweak format for rule explanations ( #2645 )
2023-02-07 19:02:41 -05:00
Ville Skyttä
4b49fd9494
Ignore all non-`.py` wrt. implicit namespace package ( #2640 )
...
It's not only `.pyi` that should be exempt for this, but also for example scripts which don't have an extension, explicitly passed in command line args.
2023-02-07 18:21:59 -05:00
Charlie Marsh
271e4fda8c
Create per-rule pages and link from README ( #2644 )
2023-02-07 18:15:05 -05:00
Charlie Marsh
f1cdd108e6
Derive `explanation` method on Rule struct via rustdoc ( #2642 )
...
```console
❯ cargo run rule B017
Finished dev [unoptimized + debuginfo] target(s) in 0.13s
Running `target/debug/ruff rule B017`
no-assert-raises-exception
Code: B017 (flake8-bugbear)
### What it does
Checks for `self.assertRaises(Exception)`.
## Why is this bad?
`assertRaises(Exception)` can lead to your test passing even if the
code being tested is never executed due to a typo.
Either assert for a more specific exception (builtin or custom), use
`assertRaisesRegex` or the context manager form of `assertRaises`.
```
2023-02-07 17:23:29 -05:00
Charlie Marsh
8fd29b3b60
Remove dependency on `"unparse"` feature ( #2641 )
2023-02-07 17:23:09 -05:00
Charlie Marsh
e427171323
Unify imports from `rustpython_parser::ast` ( #2639 )
2023-02-07 16:54:50 -05:00
Charlie Marsh
2f7f4943e3
Rename some local variables
2023-02-07 16:24:53 -05:00
Charlie Marsh
67e9ff7cc8
Reorder imports ( #2638 )
2023-02-07 16:22:47 -05:00
Charlie Marsh
0355ba571e
Skip ternary fixes for yields and awaits ( #2637 )
2023-02-07 15:18:52 -05:00
Charlie Marsh
38db7fd114
Avoid boolean-trap errors in `__setitem__` ( #2636 )
2023-02-07 15:04:33 -05:00
Charlie Marsh
8ee51eb5c6
Treat @staticmethod as higher-precedence than ABC ( #2635 )
2023-02-07 14:57:03 -05:00
Aarni Koskela
2bc16eb4e3
flake8-annotations: add ignore-fully-untyped ( #2128 )
...
This PR adds a configuration option to inhibit ANN* violations for functions that have no other annotations either, for easier gradual typing of a large codebase.
2023-02-07 11:35:57 -05:00
Charlie Marsh
4e36225145
Avoid no-unnecessary-dict-kwargs errors with reserved keywords ( #2628 )
2023-02-07 11:25:09 -05:00
Charlie Marsh
850069d0aa
Avoid non-recursion in nested typing function calls ( #2627 )
2023-02-07 11:21:49 -05:00
Charlie Marsh
9fa98ed90b
Accommodate pos-only arguments when checking self name ( #2626 )
2023-02-07 10:50:50 -05:00
Charlie Marsh
2b4ce78830
Delete unreferenced snapshots ( #2619 )
2023-02-06 23:22:41 -05:00
Colin Delahunty
7647cafe12
[`pylint`]: bidirectional-unicode ( #2589 )
2023-02-06 22:49:18 -05:00
Charlie Marsh
bf718fdf26
Bump Ruff version to 0.0.243
2023-02-06 21:22:54 -05:00
Steve Dignam
3b3466f6da
Add flake8-pie single_starts_ends_with ( #2616 )
2023-02-06 21:22:32 -05:00
Charlie Marsh
f981f491aa
Support `ignore-names` for all relevant pep8-naming rules ( #2617 )
2023-02-06 21:14:55 -05:00
Charlie Marsh
95fef43c4d
Add some additional tests for relative imports
2023-02-06 21:13:23 -05:00
Charlie Marsh
097c679cf3
Support relative paths for typing-modules ( #2615 )
2023-02-06 19:51:37 -05:00
Charlie Marsh
3bca987665
Avoid removing quotes from runtime annotations ( #2614 )
2023-02-06 18:15:19 -05:00
Ville Skyttä
60ee1d2c17
fix(pep8-naming): `typing.NamedTuple` and `typing.TypedDict` treatment ( #2611 )
2023-02-06 17:11:37 -05:00
Charlie Marsh
2dd04dd6a3
Check in updated snapshot
2023-02-06 16:34:47 -05:00
Charlie Marsh
e59b75d31b
Bump version to 0.0.242
2023-02-06 16:25:29 -05:00
Charlie Marsh
610f150dd1
Remove autofix from bad-str-strip-call; add suggestions instead ( #2610 )
2023-02-06 16:25:20 -05:00
Charlie Marsh
cee0d0abaa
Check in updated snapshot
2023-02-06 15:48:23 -05:00
Charlie Marsh
12ed1837ee
Ignore typos in snapshots ( #2609 )
2023-02-06 15:43:03 -05:00
Colin Delahunty
6272293180
[`pylint`]: bad-str-strip-call (With Autofix) ( #2570 )
2023-02-06 15:34:37 -05:00
Charlie Marsh
f8b8b05b80
Visit deferred assignments after deferred type annotations ( #2607 )
2023-02-06 14:40:41 -05:00
Charlie Marsh
79776c12e2
Allow blank line before sticky-comment functions in docstrings ( #2597 )
2023-02-05 18:48:29 -05:00
Charlie Marsh
7fa5ce8b63
Automatically remove empty type-checking blocks ( #2598 )
2023-02-05 18:46:07 -05:00
Charlie Marsh
f6864a96f6
Enable autofix for unnecessary-paren-on-raise-exception ( #2596 )
2023-02-05 18:19:27 -05:00
Charlie Marsh
291ef9856a
Remove unnecessary `super_args.rs` ( #2594 )
2023-02-05 18:02:09 -05:00
Charlie Marsh
87d0aa5561
Move `python` into its own `ruff_python` crate ( #2593 )
2023-02-05 17:53:58 -05:00
Micha Reiser
cd8be8c0be
refactor: Introduce crates folder ( #2088 )
...
This PR introduces a new `crates` directory and moves all "product" crates into that folder.
Part of #2059 .
2023-02-05 16:47:48 -05:00
Charlie Marsh
937c83d57f
Remove crates subdirectory ( #563 )
2022-11-03 09:19:54 -04:00
Charlie Marsh
e00bcd19f5
Bump version to 0.0.97
2022-11-02 22:38:43 -04:00
Charlie Marsh
e473df1fe9
Bump version to 0.0.96
2022-11-02 22:10:56 -04:00
Charlie Marsh
f9def0a139
Bump version to 0.0.95
2022-11-02 09:03:34 -04:00
Charlie Marsh
b4a46ab6f0
Add tests for converter.rs ( #542 )
2022-11-01 22:36:08 -04:00
Charlie Marsh
f6e14edc3e
Use max-line-length in converter.rs ( #541 )
2022-11-01 22:27:13 -04:00
Charlie Marsh
79ca66ace5
Use nightly rustfmt with rustfmt.toml ( #536 )
2022-11-01 20:34:38 -04:00
Charlie Marsh
bad5723d80
Add plugin configuration to flake8-to-ruff ( #535 )
2022-11-01 17:08:53 -04:00
Charlie Marsh
2d83f99dbf
Bump version to 0.0.94
2022-11-01 16:38:59 -04:00
Charlie Marsh
927d716edd
Enable flake8-to-ruff builds on all platforms
2022-11-01 12:15:43 -04:00
Charlie Marsh
df6a48fced
Use separate tokens for each PyPI release
2022-10-31 22:43:38 -04:00
Charlie Marsh
5797884262
Represent per-file ignores as a map ( #531 )
2022-10-31 22:15:33 -04:00
Charlie Marsh
8fd713739b
Use pretty-print for flake8-to-ruff
2022-10-31 17:52:03 -04:00
Charlie Marsh
5de1fcd653
Add to flake8-to-ruff README
2022-10-31 17:50:32 -04:00
Charlie Marsh
621db96e7f
Use more consistent Option in pyproject settings ( #530 )
2022-10-31 16:34:58 -04:00
Charlie Marsh
1ce4585c88
Add a separate release job for flake8-to-ruff ( #529 )
2022-10-31 16:21:38 -04:00
Charlie Marsh
f3f010cdf5
Move flake8-to-ruff to a separate crate ( #528 )
2022-10-31 14:22:07 -04:00