Charlie Marsh
4cfa350112
Bump version to 0.0.249 ( #3063 )
2023-02-20 13:11:29 -05:00
Charlie Marsh
41f163fc8d
Avoid assert() to assert statement conversion in expressions ( #3062 )
2023-02-20 17:49:22 +00:00
Charlie Marsh
d21dd994e6
Increase expected size of FormatElement ( #3049 )
2023-02-20 12:47:35 -05:00
Josh Karpel
6f5a6b8c8b
Do not autofix E731 in class bodies ( #3050 )
2023-02-20 12:38:42 -05:00
Jeong YunWon
35606d7b05
clean up to fix nightly clippy warnings and dedents ( #3057 )
2023-02-20 09:33:47 -05:00
Matthew Lloyd
3ad257cfea
Add PDM to "Who's Using Ruff?" ( #3048 )
2023-02-20 03:58:22 +00:00
Charlie Marsh
b39f960cd1
Relax constraints on pep8-naming module validation ( #3043 )
2023-02-19 17:34:23 -05:00
Charlie Marsh
c297d46899
Remove unused AsFormat trait for Option<T> ( #3041 )
...
We should re-add this, but it's currently unused and doesn't compile under 1.66.0.
See: #3039 .
2023-02-19 20:19:35 +00:00
Jonathan Plasse
d6a100028c
Update docs and pre-commit after #3006 ( #3038 )
2023-02-19 14:23:01 -05:00
Jonathan Plasse
35d4e03f2a
Fix ruff_dev regex workspace dependency ( #3037 )
2023-02-19 18:02:08 +00:00
Charlie Marsh
41e77bb01d
Add some additional users to "Who's Using Ruff?" ( #3035 )
2023-02-19 16:30:01 +00:00
Charlie Marsh
2ff3dd5fbe
Bump version to 0.0.248 ( #3034 )
2023-02-19 16:21:30 +00:00
Charlie Marsh
0f0e7a521a
Avoid false-positives for break in with ( #3032 )
2023-02-19 11:17:04 -05:00
Jonathan Plasse
b75663be6d
Add missing rust-version in crates ( #3009 )
2023-02-19 15:07:17 +00:00
Tomer Chachamu
4d3d04ee61
[PLE0101] error when __init__ returns a value ( #3007 )
2023-02-19 14:54:43 +00:00
Manuel Jacob
87422ba362
Add configuration option for C408 to allow dict calls with keyword arguments. ( #2977 )
...
When creating a dict with string keys, some prefer to call dict instead of writing a dict literal.
For example: `dict(a=1, b=2, c=3)` instead of `{"a": 1, "b": 2, "c": 3}`.
2023-02-19 14:47:03 +00:00
Jeremy Goh
c1d2976fff
[docs] Add docs for flake8-implicit-str-concat rules ( #3028 )
2023-02-19 14:38:59 +00:00
Jeremy Goh
13281cd9ca
[docs] Add some docs for flake8-simplify ( #3027 )
2023-02-19 14:26:56 +00:00
Jonathan Plasse
e53652779d
Avoid raising B027 violations in .pyi files ( #3016 )
2023-02-19 14:21:33 +00:00
Jonathan Plasse
db4c611c6f
Fix broken links and markdown style ( #3017 )
2023-02-19 08:46:49 -05:00
Charlie Marsh
c25be31eb1
Fix documentation-link detection in generate_mkdocs.py ( #3030 )
2023-02-19 12:20:44 +00:00
Micha Reiser
a7c533634d
chore: Remove default_members from Cargo.toml ( #3006 )
...
This PR removes the `default_members` from the workspace configuration.
## Why
I'm not familiar with the motivation for why the `default_members` setting was added initially, and I do not object to keeping it. I'll explain my motivation for removing it below.
My main reason for removing the `default_members` override is that new contributors may not know that `cargo test`, `cargo build`, and other commands only run on a subset of crates. They may then be surprised that their PRs are failing in CI, but everything works locally.
My guess why `default_members` was added is to speed up the development workflow. That's fair, but I question the value because `ruff` is the heaviest crate to build.
2023-02-19 07:18:47 -05:00
Simon Brugman
cfa6883431
docs(readme): add Diffusers ( #3029 )
2023-02-19 07:10:02 -05:00
Nyakku Shigure
216aa929af
Remove duplicate underline in B007 autofix message ( #3021 )
2023-02-18 19:38:20 -05:00
Simon Brugman
9e45424ed6
[pycodestyle] autofix useless semicolons ( #3001 )
2023-02-17 18:52:42 -05:00
Charlie Marsh
db7f16e276
Support positional messages in assertion rewrites ( #3002 )
2023-02-17 23:44:13 +00:00
Charlie Marsh
a10a500a26
Ignore namedtuple methods in flake8-self ( #2998 )
2023-02-17 17:16:25 -05:00
Charlie Marsh
b9fef7cef7
Unlink flake8-bugbear in summary ( #2997 )
2023-02-17 15:58:33 -05:00
Charlie Marsh
34294ccc00
Deduplicate user list ( #2996 )
2023-02-17 20:07:42 +00:00
Simon Brugman
a934d01bdb
[flake8-tidy-imports] extend autofix of relative imports ( #2990 )
...
This extends the autofix for TID252 to work with for relative imports without `module` (i.e. `from .. import`). Tested with `matplotlib` and `bokeh`.
(Previously it would panic on unwrap of the module)
Note that pandas has [replaced](6057d7a93e ) `absolufy-imports` with `ruff` now!
2023-02-17 19:35:28 +00:00
Simon Brugman
0dd590f137
Fix for F541 unescape f-string ( #2971 )
2023-02-17 14:27:01 -05:00
Charlie Marsh
909a5c3253
Avoid zero-indexed column for IOError ( #2995 )
2023-02-17 14:14:28 -05:00
Charlie Marsh
5c987874c4
Enforce D403 on methods ( #2992 )
2023-02-17 18:05:48 +00:00
Nyakku Shigure
0cfe4f9c69
Remove a whitespace in B004 message ( #2991 )
2023-02-17 12:37:08 -05:00
Charlie Marsh
6a369e4a30
Remove via from sentence in README ( #2987 )
2023-02-17 13:49:09 +00:00
Charlie Marsh
6f97e2c457
Split list of users into top-level and dedicated section ( #2986 )
2023-02-17 13:36:32 +00:00
Charlie Marsh
bebd412469
Adjust header depth in docs ( #2985 )
2023-02-17 13:19:55 +00:00
Charlie Marsh
cd1f57b713
Move FAQ into MkDocs ( #2984 )
2023-02-17 13:15:53 +00:00
Charlie Marsh
a0912deb2b
Move editor integrations into MkDocs ( #2983 )
2023-02-17 13:12:20 +00:00
Charlie Marsh
50ee14a418
Fix references to specific settings in README.md ( #2982 )
2023-02-17 13:07:37 +00:00
Martin Fischer
f5adbbebc5
Fix table of contents enumeration
2023-02-17 07:55:50 -05:00
Martin Fischer
c88e05dc1b
Merge Reference README section into Configuration section
2023-02-17 07:55:50 -05:00
Martin Fischer
d658bfc024
Remove options from README
2023-02-17 07:55:50 -05:00
Martin Fischer
b0d72c47b4
refactor: Move Top-level heading into ruff_dev
2023-02-17 07:55:50 -05:00
Martin Fischer
8195873cdf
Remove rule tables from README
2023-02-17 07:55:50 -05:00
Martin Fischer
bf8108469f
Remove auto-generated table of contents
2023-02-17 07:55:50 -05:00
Martin Fischer
a2277cfeba
refactor: Move fix symbol legend into ruff_dev
2023-02-17 07:55:50 -05:00
Charlie Marsh
180541a924
Unify comment terminology with that of rome_formatter ( #2979 )
2023-02-17 03:02:25 +00:00
Simon Brugman
34664a0ca0
[numpy] numpy-legacy-random ( #2960 )
...
The new `Generator` in NumPy uses bits provided by [PCG64](https://numpy.org/doc/stable/reference/random/bit_generators/pcg64.html#numpy.random.PCG64 ) which has better statistical properties than the legacy [MT19937](https://numpy.org/doc/stable/reference/random/bit_generators/mt19937.html#numpy.random.MT19937 ) used in [RandomState](https://numpy.org/doc/stable/reference/random/legacy.html#numpy.random.RandomState ). Global random functions can also be problematic with parallel processing.
This rule is probably quite useful for data scientists (perhaps in combination with `nbqa`)
References:
- [Legacy Random Generation](https://numpy.org/doc/stable/reference/random/legacy.html#legacy )
- [Random Sampling](https://numpy.org/doc/stable/reference/random/index.html#random-quick-start )
- [Using PyTorch + NumPy? You're making a mistake.](https://tanelp.github.io/posts/a-bug-that-plagues-thousands-of-open-source-ml-projects/ )
2023-02-17 02:06:30 +00:00
Charlie Marsh
e081455b06
Add support for file-scoped noqa directives ( #2978 )
...
# Summary
This allows users to do things like:
```py
# ruff: noqa: F401
```
...to ignore all `F401` directives in a file. It's equivalent to `per-file-ignores`, but allows users to specify the behavior inline.
Note that Flake8 does _not_ support this, so we _don't_ respect `# flake8: noqa: F401`. (Flake8 treats that as equivalent to `# flake8: noqa`, so ignores _all_ errors in the file. I think all of [these usages](https://cs.github.com/?scopeName=All+repos&scope=&q=%22%23+flake8%3A+noqa%3A+%22 ) are probably mistakes!)
A couple notes on the details:
- If a user has `# ruff: noqa: F401` in the file, but also `# noqa: F401` on a line that would legitimately trigger an `F401` violation, we _do_ mark that as "unused" for `RUF100` purposes. This may be the wrong choice. The `noqa` is legitimately unused, but it's also not "wrong". It's just redundant.
- If a user has `# ruff: noqa: F401`, and runs `--add-noqa`, we _won't_ add `# noqa: F401` to any lines (which seems like the obvious right choice to me).
Closes #1054 (which has some extra pieces that I'll carve out into a separate issue).
Closes #2446 .
2023-02-17 01:59:01 +00:00
Artem Mukhin
4f18fa6733
Add test case for '\u' prefix in B005 ( #2976 )
...
Based on #2958 .
2023-02-16 19:45:29 -05:00
Charlie Marsh
6088a36cd3
Use line_suffix for end-of-line comments ( #2975 )
2023-02-16 18:37:40 -05:00
Charlie Marsh
66a162fa40
Handle non-from __future__ imports ( #2974 )
...
These are uncommon, but currently panic.
Closes #2967 .
2023-02-16 22:56:03 +00:00
Mike Taves
e6722f92ed
Add Rust Trove classifier ( #2973 )
2023-02-16 17:38:36 -05:00
Charlie Marsh
750c28868f
Enable jemalloc on FreeBSD and NetBSD ( #2965 )
2023-02-16 15:21:34 -05:00
Charlie Marsh
5157f584ab
Improve pow operator spacing ( #2970 )
...
Ensure that we add spaces to expressions like `foo.bar() ** 2`.
2023-02-16 15:17:32 -05:00
Charlie Marsh
1c01ec21cb
Regenerate expected Black snapshots ( #2968 )
2023-02-16 19:39:17 +00:00
Manuel Jacob
879512742f
Skip .pytype directory by default. ( #2966 )
...
Pytype stores .pyi files in .pytype that ruff shouldn’t check or touch.
2023-02-16 14:38:08 -05:00
Florian Best
a919041dda
feat(isort): Implement isort.force_to_top ( #2877 )
2023-02-16 19:01:59 +00:00
Charlie Marsh
059601d968
Avoid trying to fix implicit returns with control flow ( #2962 )
2023-02-16 13:42:46 -05:00
Charlie Marsh
2ec1701543
Remove link in asyncio.create_task ( #2963 )
2023-02-16 17:50:56 +00:00
Charlie Marsh
370c3a5daf
Remove mdcat dependency ( #2959 )
2023-02-16 12:09:37 -05:00
Charlie Marsh
fdcb78fd8c
Avoid jemallocator on BSD ( #2957 )
2023-02-16 11:48:51 -05:00
Simon Brugman
2a744d24e5
docs: flake8-self remove unnecessary backticks ( #2951 )
2023-02-16 08:25:34 -05:00
Simon Brugman
cc30738148
Implement flake8-module-naming ( #2855 )
...
- Implement N999 (following flake8-module-naming) in pep8_naming
- Refactor pep8_naming: split rules.rs into file per rule
- Documentation for majority of the violations
Closes https://github.com/charliermarsh/ruff/issues/2734
2023-02-16 04:20:33 +00:00
Edgar R. M
147c6ff1db
Exclude crates/ruff_python_formatter/resources from pre-commit check ( #2947 )
2023-02-15 22:56:42 -05:00
Charlie Marsh
036380e6a8
Fix add-required-import with multi-line offsets ( #2946 )
2023-02-16 03:24:55 +00:00
Charlie Marsh
b6587e51ee
Use an enum to represent composition kind ( #2945 )
2023-02-15 22:14:00 -05:00
Simon Brugman
1bc37110d4
[flake8-pytest-style] autofix for composite-assertion (PT018) ( #2732 )
2023-02-16 00:36:07 +00:00
Lunarmagpie
28acdb76cf
Add support for ensure_future for RUF006 ( #2943 )
2023-02-15 23:18:11 +00:00
Martin Fischer
7b09972c97
Merge convert-loop-to-any & convert-loop-to-all to reimplemented-builtin
2023-02-15 16:24:31 -05:00
Charlie Marsh
f8d46d09ef
Implement asyncio-dangling-task to track asyncio.create_task calls ( #2935 )
...
This rule guards against `asyncio.create_task` usages of the form:
```py
asyncio.create_task(coordinator.ws_connect()) # Error
```
...which can lead to unexpected bugs due to the lack of a strong reference to the created task. See Will McGugan's blog post for reference: https://textual.textualize.io/blog/2023/02/11/the-heisenbug-lurking-in-your-async-code/ .
Note that we can't detect issues like:
```py
def f():
# Stored as `task`, but never used...
task = asyncio.create_task(coordinator.ws_connect())
```
So that would be a false negative. But this catches the common case of failing to assign the task in any way.
Closes #2809 .
2023-02-15 15:19:03 -05:00
Martin Fischer
294cd95c54
Update clap to fix ruff check --help description
...
My two clap bug fixes[1][2] have been merged and released
(see the change in README.md).
[1]: https://github.com/clap-rs/clap/pull/4710
[2]: https://github.com/clap-rs/clap/pull/4712
2023-02-15 13:30:06 -05:00
Charlie Marsh
d8e709648d
Add Transformers to README ( #2933 )
2023-02-15 17:09:50 +00:00
Charlie Marsh
52cc4d6537
Deduplicate files provided on the command-line ( #2931 )
2023-02-15 12:08:34 -05:00
messense
08e9d12137
Upload ruff binaries to GitHub release ( #2930 )
2023-02-15 12:07:47 -05:00
Charlie Marsh
39fdc71b49
Bump version to 0.0.247 ( #2932 )
2023-02-15 12:06:58 -05:00
Charlie Marsh
6b0736cf4b
Allow private accesses on current class ( #2929 )
2023-02-15 16:52:05 +00:00
Charlie Marsh
58269a918a
Apply nullable-model-string-field to all classes ( #2928 )
2023-02-15 15:54:14 +00:00
Sawbez
9168a12679
[docs] flake8-self Private member access docs ( #2912 )
2023-02-15 15:42:38 +00:00
Charlie Marsh
cb971d3a48
Respect self as positional-only argument in annotation rules ( #2927 )
2023-02-15 15:25:17 +00:00
Charlie Marsh
57a5071b4e
Rename some methods on Locator ( #2926 )
2023-02-15 10:21:49 -05:00
Charlie Marsh
976fe364d4
Remove setup.py ( #2922 )
2023-02-15 14:35:11 +00:00
messense
028c7855b2
Simplify release workflows ( #2913 )
...
* No need to build for PyPy since it only contains a binary so the platform tag is the same as CPython
* Update `maturin-action` location
2023-02-15 08:15:19 -05:00
Nick Pope
e5179f67fd
Remove autogenerated docs/rules/*.md files ( #2917 )
2023-02-15 08:11:11 -05:00
Simon Brugman
c9c199dbca
Remove testing resource introduced in #2891 ( #2916 )
2023-02-15 08:10:58 -05:00
Martin Fischer
70e378b736
Implement shell autocompletion for rule codes
...
For example:
$ ruff check --select=EM<Tab>
EM -- flake8-errmsg
EM10 EM1 --
EM101 -- raw-string-in-exception
EM102 -- f-string-in-exception
EM103 -- dot-format-in-exception
(You will need to enable autocompletion as described
in the Autocompletion section in the README.)
Fixes #2808 .
(The --help help change in the README is due to a clap bug,
for which I already submitted a fix:
https://github.com/clap-rs/clap/pull/4710 .)
2023-02-15 08:09:34 -05:00
Charlie Marsh
ca49b00e55
Add initial formatter implementation ( #2883 )
...
# Summary
This PR contains the code for the autoformatter proof-of-concept.
## Crate structure
The primary formatting hook is the `fmt` function in `crates/ruff_python_formatter/src/lib.rs`.
The current formatter approach is outlined in `crates/ruff_python_formatter/src/lib.rs`, and is structured as follows:
- Tokenize the code using the RustPython lexer.
- In `crates/ruff_python_formatter/src/trivia.rs`, extract a variety of trivia tokens from the token stream. These include comments, trailing commas, and empty lines.
- Generate the AST via the RustPython parser.
- In `crates/ruff_python_formatter/src/cst.rs`, convert the AST to a CST structure. As of now, the CST is nearly identical to the AST, except that every node gets a `trivia` vector. But we might want to modify it further.
- In `crates/ruff_python_formatter/src/attachment.rs`, attach each trivia token to the corresponding CST node. The logic for this is mostly in `decorate_trivia` and is ported almost directly from Prettier (given each token, find its preceding, following, and enclosing nodes, then attach the token to the appropriate node in a second pass).
- In `crates/ruff_python_formatter/src/newlines.rs`, normalize newlines to match Black’s preferences. This involves traversing the CST and inserting or removing `TriviaToken` values as we go.
- Call `format!` on the CST, which delegates to type-specific formatter implementations (e.g., `crates/ruff_python_formatter/src/format/stmt.rs` for `Stmt` nodes, and similar for `Expr` nodes; the others are trivial). Those type-specific implementations delegate to kind-specific functions (e.g., `format_func_def`).
## Testing and iteration
The formatter is being developed against the Black test suite, which was copied over in-full to `crates/ruff_python_formatter/resources/test/fixtures/black`.
The Black fixtures had to be modified to create `[insta](https://github.com/mitsuhiko/insta )`-compatible snapshots, which now exist in the repo.
My approach thus far has been to try and improve coverage by tackling fixtures one-by-one.
## What works, and what doesn’t
- *Most* nodes are supported at a basic level (though there are a few stragglers at time of writing, like `StmtKind::Try`).
- Newlines are properly preserved in most cases.
- Magic trailing commas are properly preserved in some (but not all) cases.
- Trivial leading and trailing standalone comments mostly work (although maybe not at the end of a file).
- Inline comments, and comments within expressions, often don’t work -- they work in a few cases, but it’s one-off right now. (We’re probably associating them with the “right” nodes more often than we are actually rendering them in the right place.)
- We don’t properly normalize string quotes. (At present, we just repeat any constants verbatim.)
- We’re mishandling a bunch of wrapping cases (if we treat Black as the reference implementation). Here are a few examples (demonstrating Black's stable behavior):
```py
# In some cases, if the end expression is "self-closing" (functions,
# lists, dictionaries, sets, subscript accesses, and any length-two
# boolean operations that end in these elments), Black
# will wrap like this...
if some_expression and f(
b,
c,
d,
):
pass
# ...whereas we do this:
if (
some_expression
and f(
b,
c,
d,
)
):
pass
# If function arguments can fit on a single line, then Black will
# format them like this, rather than exploding them vertically.
if f(
a, b, c, d, e, f, g, ...
):
pass
```
- We don’t properly preserve parentheses in all cases. Black preserves parentheses in some but not all cases.
2023-02-15 04:06:35 +00:00
Charlie Marsh
f661c90bd7
Remove dependency on ruff_rowan ( #2875 )
...
This PR removes the dependency on `ruff_rowan` (i.e., Rome's fork of rust-analyzer's `rowan`), and in turn, trims out a lot of code in `ruff_formatter` that isn't necessary (or isn't _yet_ necessary) to power the autoformatter.
We may end up pulling some of this back in -- TBD. For example, the autoformatter has its own comment representation right now, but we may eventually want to use the `comments.rs` data structures defined in `rome_formatter`.
2023-02-15 03:54:08 +00:00
Charlie Marsh
5a84df293f
Allow printing of consecutive empty lines ( #2874 )
2023-02-14 22:35:02 -05:00
Charlie Marsh
23d9309111
Remove JetBrains webinar badge ( #2910 )
2023-02-15 03:28:12 +00:00
Charlie Marsh
98ea94fdb7
Add StaticTextSlice kind to FormatElement enum ( #2873 )
...
Given our current parser abstractions, we need the ability to tell `ruff_formatter` to print a pre-defined slice from a fixed string of source code, which we've introduced here as `FormatElement::StaticTextSlice`.
2023-02-14 22:27:52 -05:00
Charlie Marsh
746e1d3436
Add contributors to acknowledgements ( #2909 )
2023-02-15 03:15:38 +00:00
Charlie Marsh
016ff01a04
Add an FAQ question around Python version support ( #2908 )
2023-02-15 03:11:44 +00:00
Charlie Marsh
298498e934
Add an Acknowledgements section to the README ( #2907 )
2023-02-15 00:25:07 +00:00
Charlie Marsh
3ef1c2e303
Add rome_formatter fork as ruff_formatter ( #2872 )
...
The Ruff autoformatter is going to be based on an intermediate representation (IR) formatted via [Wadler's algorithm](https://homepages.inf.ed.ac.uk/wadler/papers/prettier/prettier.pdf ). This is architecturally similar to [Rome](https://github.com/rome/tools ), Prettier, [Skip](https://github.com/skiplang/skip/blob/master/src/tools/printer/printer.sk ), and others.
This PR adds a fork of the `rome_formatter` crate from [Rome](https://github.com/rome/tools ), renamed here to `ruff_formatter`, which provides generic definitions for a formatter IR as well as a generic IR printer. (We've also pulled in `rome_rowan`, `rome_text_size`, and `rome_text_edit`, though some of these will be removed in future PRs.)
Why fork? `rome_formatter` contains code that's specific to Rome's AST representation (e.g., it relies on a fork of rust-analyzer's `rowan`), and we'll likely want to support different abstractions and formatting capabilities (there are already a few changes coming in future PRs). Once we've dropped `ruff_rowan` and trimmed down `ruff_formatter` to the code we currently need, it's also not a huge surface area to maintain and update.
2023-02-14 19:22:55 -05:00
Simon Brugman
ac028cd9f8
[numpy] deprecated type aliases ( #2810 )
...
Closes https://github.com/charliermarsh/ruff/issues/2455
Used `NPY` as prefix code as agreed in the issue.
2023-02-14 23:45:12 +00:00
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
Martin Fischer
860993187e
Fix link relativization in generate_mkdocs.py
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 Legner
2d95912699
docs: fix ruff generate-shell-completion ( #2904 )
2023-02-14 22:38:29 +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
Chris May
08e0b76587
Add headers to configutation options ( #2896 )
...
This completes the word from the discussion in #2643 , adding headers to clarify the `pyproject.toml` and `ruff.toml` sections.
2023-02-14 13:45:59 -05: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
02285c18d1
Remove autogenerated docs/rules/*.md files
2023-02-13 19:34:06 -05:00
Martin Fischer
8120d7c974
Change rule page links in README from GitHub to beta.ruff.rs
2023-02-13 19:34:06 -05:00
Martin Fischer
c858804ed4
refactor: Move docs/ gitignores to docs/.gitignore
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
Charlie Marsh
15f65fa8d6
Run cargo dev generate-all ( #2860 )
2023-02-13 14:55:44 +00:00
Ville Skyttä
d1cf0ee52b
Remove "blanket" from RUF100 README message ( #2844 )
2023-02-13 14:43:35 +00:00
Florian Best
32520ff07f
ci(gitignore): ignore VIM files ( #2856 )
2023-02-13 09:29:53 -05:00
Ville Skyttä
3659236580
Remove no longer needed setup.py INP001 ignore ( #2846 )
2023-02-13 09:00:35 -05:00
Charlie Marsh
dde69d50b5
Move more dependencies into workspace dependencies ( #2842 )
2023-02-13 04:19:26 +00:00
Charlie Marsh
67198ce7b3
Revert "Run release on tag creation"
...
This reverts commit c21a5912b9 .
2023-02-12 23:11:31 -05:00
Charlie Marsh
c21a5912b9
Run release on tag creation
2023-02-12 22:33:01 -05: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
63f3d5e610
Update pre-commit instructions ( #2838 )
2023-02-13 00:06:40 +00: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
trag1c
0e53ddc2b3
Added Tables of Contents for CONTRIBUTING.md and CODE_OF_CONDUCT.md ( #2824 )
2023-02-12 16:38:18 -05: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
Charlie Marsh
c399b3e6c1
Run cargo dev generate-all ( #2822 )
2023-02-12 19:11:49 +00:00
Charlie Marsh
9089ef74bc
Upgrade RustPython ( #2821 )
2023-02-12 18:45:59 +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
Charlie Marsh
ca8a122889
Add flake8-django to LICENSE ( #2820 )
2023-02-12 17:51:40 +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
trag1c
b8835c2e35
Added MkDocs section to CONTRIBUTING.md ( #2803 )
2023-02-12 16:07:24 +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
f8ac6d7bf0
fix: script add_plugin.py test import ( #2807 )
2023-02-12 09:58:23 -05: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
d827a9156e
Add documentation on enabling autocompletion ( #2791 )
2023-02-12 02:51:50 +00:00
Charlie Marsh
418808895e
Add docs for f-string-missing-placeholders and unused-variable ( #2790 )
2023-02-12 02:48:36 +00:00
Charlie Marsh
ac4e212ed2
Move Wasm clippy to its own job ( #2789 )
2023-02-12 02:41:28 +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
97dcb738fa
Run cargo dev generate-all
2023-02-11 12:43:48 -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
Simon Brugman
5b54325c81
enable navigation in footer in docs ( #2760 )
2023-02-11 05:08:33 -05:00
trag1c
e6538a7969
Added logo and favicon for mkdocs ( #2757 )
2023-02-10 23:34:47 -05:00
Charlie Marsh
24faabf1f4
Bump version to 0.0.245
2023-02-10 22:15:27 -05:00
Charlie Marsh
9b0a160239
Only update docs on release ( #2755 )
2023-02-10 22:14:50 -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
acb70520f8
Add colored environment variables to README ( #2746 )
2023-02-10 17:06:02 -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
0bab642f5a
Describe rule naming convention in CONTRIBUTING.md
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
0aef5c67a3
Remove src/registry.rs
2023-02-09 23:04:28 -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
Charlie Marsh
9e2418097c
Run cargo dev generate-all
2023-02-09 19:14:02 -05:00
Charlie Marsh
d4e5639aaf
Add flake8-pyi to CONTRIBUTING.md
2023-02-09 19:04:55 -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
Nick Pope
7750087f56
Remove duplicate documentation for TRY002 ( #2692 )
2023-02-09 12:08:00 -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
Florian Best
3862dc2626
docs: use new command line arguments ( #2658 )
2023-02-08 10:36:53 -05:00
Charlie Marsh
2a0927a5ef
Update Discord link
2023-02-08 04:36:59 -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
be08384fb0
Run cargo dev generate-all
2023-02-07 16:48:06 -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
7686179318
Remove unused src/registry.rs
2023-02-06 22:43:25 -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
Charlie Marsh
ecc9f5de99
Fix accidental setup.py changes
2023-02-05 17:18:11 -05:00
Charlie Marsh
f40b974206
Add a description of project structure ( #2590 )
2023-02-05 17:01:09 -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
e3dfa2e04e
Implement pycodestyle's logical line detection ( #1130 )
...
Along with the logical line detection, this adds 14 of the missing `pycodestyle` rules.
For now, this is all gated behind a `logical_lines` feature that's off-by-default, which will let us implement all rules prior to shipping, since we want to couple the release of these rules with new defaults and instructions.
2023-02-05 15:06:02 -05:00
Ville Skyttä
f03c8fff14
fix(commented-out-code): mypy and SPDX-License-Identifier false positives ( #2587 )
...
https://mypy.readthedocs.io/en/stable/inline_config.html#configuration-comment-format
https://spdx.github.io/spdx-spec/v2.3/using-SPDX-short-identifiers-in-source-files/#e2-format-for-spdx-license-identifier
2023-02-05 15:04:36 -05:00
Charlie Marsh
452b5a4b79
Propagate attribute-like macros in define_rule_mapping ( #2583 )
...
This enables us to feature-flag rules, like:
```rust
ruff_macros::define_rule_mapping!(
#[cfg(feature = "logical_lines")]
E111 => rules::pycodestyle::rules::IndentationWithInvalidMultiple,
...
)
```
2023-02-05 12:26:23 -05:00
Colin Delahunty
1e1dc3a7ed
[pyupgrade]: Removes quotes from annotations ( #2431 )
2023-02-05 09:43:09 -05:00
Charlie Marsh
84be1df9d5
Avoid infinite renames for unused-loop-control-variable ( #2581 )
2023-02-05 08:01:07 -05:00
Florian Best
6b3ae1a8e1
fix: fix syntax error in Python test COM81 ( #2575 )
2023-02-05 07:11:46 -05:00
Colin Delahunty
5275f6c90e
Allows UP030 to work better with *args and **kwargs ( #2568 )
2023-02-04 17:34:48 -05:00
Anders Kaseorg
6683ed49bc
Portably find ruff binary path from Python ( #2574 )
...
Prefer the version from a currently active virtualenv over a version
from `pip install --user`. Add the .exe extension on Windows, and
find the path for `pip install --user` correctly on Windows.
Signed-off-by: Anders Kaseorg <andersk@mit.edu >
2023-02-04 17:19:27 -05:00
Chris Chan
ced55084db
Implement pylint's too-many-return-statements rule (PLR0911) ( #2564 )
2023-02-04 16:56:36 -05:00
Chris Chan
f8f36a7ee0
Implement pylint's too-many-branches rule (PLR0912) ( #2550 )
2023-02-04 16:38:03 -05:00
Charlie Marsh
4190031618
Run cargo fmt
2023-02-04 08:36:57 -05:00
Matteo Vitali
5a9258327b
Fix python module invocation ( #2563 )
2023-02-04 08:23:13 -05:00
Charlie Marsh
dd0145624b
Ignore direct root-children in implicit-namespace-package ( #2565 )
2023-02-04 08:21:24 -05:00
Charlie Marsh
7d4f0a8320
Bump Ruff version to 0.0.241
2023-02-03 19:25:12 -05:00
Charlie Marsh
4149bc7be8
Ignore direct source-children in implicit-namespace-package ( #2560 )
2023-02-03 19:20:27 -05:00
Pierre Sassoulas
e6316b185e
[pylint] Rename 'too-many-args' to 'too-many-arguments'
...
The actual name
2023-02-03 18:58:32 -05:00
Pierre Sassoulas
a2183be96e
[pylint] Rename constant-comparison to comparison-of-constant
...
The actual name
2023-02-03 18:58:32 -05:00
Pierre Sassoulas
df39a95925
[pylint] Rename use-sys-exit to consider-using-sys-exit
...
The actual name
2023-02-03 18:58:32 -05:00
Charlie Marsh
ff859ead85
Remove unused misplaced_comparison_constant.rs file
2023-02-03 17:10:48 -05:00
Charlie Marsh
b2be30cb07
Mark fixable issues in printer output ( #2500 )
2023-02-03 16:26:06 -05:00
Charlie Marsh
b9c1a3c5c1
Move benchmarking instructions to CONTRIBUTING.md ( #2554 )
2023-02-03 14:53:53 -05:00
Charlie Marsh
9751951d10
Allow F811 noqa declarations on containing import lines ( #2553 )
2023-02-03 14:51:06 -05:00
Charlie Marsh
64c79bde83
Mark sometimes-fixable rules as Availability::Sometimes ( #2552 )
2023-02-03 14:42:10 -05:00
Charlie Marsh
da0374f360
Update RustPython to pull in lexer optimizations ( #2551 )
2023-02-03 14:31:53 -05:00
Charlie Marsh
c26b58ba28
Hide globset logging even with --verbose
2023-02-03 13:31:04 -05:00
Charlie Marsh
56f935640a
Avoid hang when detecting trailing comments ( #2549 )
2023-02-03 13:05:55 -05:00
Charlie Marsh
85ca6cde49
Fix a few nursery rule violations ( #2548 )
2023-02-03 11:59:29 -05:00
Aarni Koskela
38addbe50d
Soft-deprecate update_check ( #2530 )
2023-02-03 11:33:38 -05:00
Charlie Marsh
924e35b1c3
Add print_stdout and print_stderr to Clippy enforcement ( #2542 )
2023-02-03 11:13:44 -05:00
Charlie Marsh
d05ea4dbac
Exit upon showing files with --show-files ( #2543 )
2023-02-03 09:41:09 -05:00
Charlie Marsh
b5ac93d2ee
Move Clippy configuration to config.toml ( #2541 )
2023-02-03 09:26:36 -05:00
Aarni Koskela
924e264156
Move flake8-{errmsg,print} violations ( #2536 )
2023-02-03 09:03:49 -05:00
Aarni Koskela
14c5000ad5
Move McCabe violations ( #2534 )
2023-02-03 08:41:11 -05:00
Aarni Koskela
d985473f4f
Move pygrep-hooks violations ( #2539 )
2023-02-03 08:41:05 -05:00
Aarni Koskela
47e0b2521a
Move flake8-2020 violations ( #2537 )
2023-02-03 08:40:56 -05:00
Aarni Koskela
a319980a7c
Move pep8-naming violations ( #2538 )
2023-02-03 08:40:48 -05:00
Aarni Koskela
3336dd63f4
Move flake8-implicit-str-concat violations ( #2535 )
2023-02-03 08:24:06 -05:00
Aarni Koskela
ae20a721a1
Don't walk past project root when figuring out exclusion ( #2471 )
2023-02-03 08:23:51 -05:00
Aarni Koskela
a26b1f43e9
Move flake8-unused-arguments violations ( #2533 )
2023-02-03 08:19:18 -05:00
Chris Chan
139a6d8331
Minor fixes to PLR0915 logic ( #2518 )
2023-02-03 08:10:59 -05:00
Jacob Coffee
04ef674195
Add Jetbrains Webinar Event (Temporary) ( #2516 )
2023-02-03 08:08:27 -05:00
Aarni Koskela
db852a0b11
Move ruff violations ( #2526 )
2023-02-03 07:43:39 -05:00
Aarni Koskela
87c3b0e4e2
Move pydocstyle violations ( #2524 )
2023-02-03 07:42:52 -05:00
Aarni Koskela
82784a7607
Move flake8-debugger violation ( #2522 )
2023-02-03 07:40:53 -05:00
Aarni Koskela
f2da855048
Move flake8-datetimez violations ( #2528 )
2023-02-03 07:40:00 -05:00
Aarni Koskela
81b60cf9fe
Move flake8-bandit violations ( #2525 )
2023-02-03 07:39:49 -05:00
Maksudul Haque
c96ba6dec4
[flake8-self] Fix False Negative Issue on Rule SLF001 ( #2527 )
2023-02-03 07:39:24 -05:00
Martin Fischer
0f8f250bea
refactor: Simplify UpstreamCategory
...
There's no need to hardcode the prefix string since
it can be derived from the RuleCodePrefix.
2023-02-02 23:46:32 -05:00
Martin Fischer
a3ffaa5d9b
refactor: Rename LinterCategory to UpstreamCategory
...
LinterCategory was somewhat misnamed since it's not actually
a category for linters but rather a category for upstream lints.
Since we want to introduce our own categories, naming the type
UpstreamCategory is more clear.
2023-02-02 23:46:32 -05:00
Martin Fischer
187ed874e9
refactor: Make Rule::from_code return Rule instead of &'static Rule
2023-02-02 23:46:32 -05:00
Charlie Marsh
a30c77e752
Mark --add-noqa as incompatible with --fix ( #2513 )
2023-02-02 23:43:05 -05:00
Florian Best
7e9b9cc7b3
feat: add autofix for PLR0402 ( #2504 )
2023-02-02 23:25:16 -05:00
Charlie Marsh
d4cef9305a
Track overridden bindings within each scope ( #2511 )
2023-02-02 22:31:46 -05:00
Charlie Marsh
a074625121
Avoid renaming unused loop variables with deferred usages ( #2509 )
2023-02-02 20:59:47 -05:00
Charlie Marsh
9c55ab35df
Change LogLevel comments to docs
2023-02-02 20:23:10 -05:00
Charlie Marsh
a95474f2b1
Use a copy-on-write to avoid extra contents clone ( #2508 )
2023-02-02 20:19:16 -05:00
Víctor
3e6fe46bc4
Add number of files processed in debug info (-v) ( #2506 )
2023-02-02 20:19:00 -05:00
Charlie Marsh
bc81cea4f4
Notify user if autofix introduces syntax error ( #2507 )
2023-02-02 20:02:09 -05:00
Charlie Marsh
cb0f226962
Always report parse errors back to the user ( #2505 )
2023-02-02 19:12:17 -05:00
Charlie Marsh
fa56fabed9
Remove a result wrapper from linter.rs ( #2503 )
2023-02-02 18:47:45 -05:00
Jonathan Plasse
bdcab87d2f
Add markdownlint and dev Ruff to pre-commit ( #2303 )
2023-02-02 16:29:07 -05:00
Jonathan Plasse
ec8b827d26
Add known-standard-library for each Python version ( #2491 )
2023-02-02 16:22:47 -05:00
Jonathan Plasse
b232c43824
Fix an error in scripts/add_rule.py ( #2497 )
2023-02-02 15:58:11 -05:00
Charlie Marsh
ee01e666c5
Allow list() and tuple() calls in __all__ assignments ( #2499 )
2023-02-02 15:45:14 -05:00
Jonathan Plasse
2b0de8ccd9
Fix clippy error ( #2498 )
2023-02-02 15:38:18 -05:00
Aarni Koskela
739c57b31b
Move flake8-annotations violations to rules file ( #2496 )
2023-02-02 15:17:54 -05:00
Aarni Koskela
c3e0137f22
Move flake8-return violations to rules module ( #2492 )
2023-02-02 15:13:49 -05:00
Aarni Koskela
77716108af
Move flake8-simplify violations to rule modules ( #2495 )
2023-02-02 15:13:16 -05:00
Jonathan Plasse
335395adec
Mirror CI clippy command for pre-commit hook ( #2494 )
2023-02-02 14:59:19 -05:00
Aarni Koskela
65f8f1a6f7
Move pylint violations to rule modules ( #2489 )
2023-02-02 14:47:58 -05:00
Aarni Koskela
858af8debb
Move pyupgrade violations to rule modules ( #2490 )
2023-02-02 14:47:43 -05:00
Aarni Koskela
5f1bbf0b6b
Move pycodestyle violations to rule modules ( #2483 )
2023-02-02 14:29:23 -05:00
Aarni Koskela
40cb905ae5
Move pyflakes violations to rule modules ( #2488 )
2023-02-02 14:00:59 -05:00
Jonathan Plasse
e89b4a5de5
Fix hardcoded url in transform_readme.py ( #2487 )
2023-02-02 13:59:22 -05:00