Charlie Marsh
64c4e4c6c7
Treat constant tuples as constants for yoda-conditions ( #2265 )
2023-01-27 11:25:57 -05:00
Charlie Marsh
84e4b7c96f
Treat builtins as synthetically used ( #2251 )
2023-01-27 11:25:45 -05:00
Franck Nijhof
ca26f664ec
Fix SIM300 to take Python constants into account ( #2255 )
...
SIM300 currently doesn't take Python constants into account when looking for Yoda conditions, this PR fixes that behavior.
```python
# Errors
YODA == age # SIM300
YODA > age # SIM300
YODA >= age # SIM300
# OK
age == YODA
age < YODA
age <= YODA
```
Ref: <https://github.com/home-assistant/core/pull/86793 >
2023-01-27 11:20:21 -05:00
Aarni Koskela
779b232db9
Fix typo: RelatveImportsOrder ( #2264 )
2023-01-27 11:15:43 -05:00
Charlie Marsh
a316b26b49
Rewrite some string-format violation messages ( #2242 )
2023-01-26 19:42:16 -05:00
Charlie Marsh
093f9156e1
Wrap return-bool-condition-directly fixes in bool() ( #2240 )
2023-01-26 18:22:34 -05:00
Charlie Marsh
76a0c45773
Track type-checking blocks during tree traversal ( #2238 )
2023-01-26 18:09:28 -05:00
Charlie Marsh
3ec46f0936
Allow pytest in shebang ( #2237 )
2023-01-26 17:32:23 -05:00
Charlie Marsh
a6ec2eb044
Avoid removing trailing comments on pass statements ( #2235 )
...
This isn't super consistent with some other rules, but... if you have a lone body, with a `pass`, followed by a comment, it's probably surprising if it gets removed. Let's retain the comment.
Closes #2231 .
2023-01-26 17:29:13 -05:00
Simon Brugman
9d3a5530af
refactor: move violations to linters ( #2234 )
2023-01-26 17:28:14 -05:00
Charlie Marsh
b08367b5a8
Avoid flagging blind exceptions with valid logging ( #2232 )
2023-01-26 17:05:01 -05:00
Charlie Marsh
98a8330124
Add stylist settings to all LibCST invocations ( #2225 )
2023-01-26 16:59:33 -05:00
Charlie Marsh
4d52ea87ef
Implement exempt-modules setting from flake8-type-checking ( #2230 )
2023-01-26 16:55:32 -05:00
Charlie Marsh
291239b9f1
Fix range for try-consider-else ( #2228 )
2023-01-26 16:36:18 -05:00
Charlie Marsh
224334b6d1
Avoid erroneous class autofixes in indented blocks ( #2226 )
2023-01-26 16:24:21 -05:00
Charlie Marsh
0cab3f8437
Preserve indentation when fixing via LibCST ( #2223 )
2023-01-26 16:09:35 -05:00
Charlie Marsh
5f8810e987
Add strictness setting for flake8-typing-imports ( #2221 )
2023-01-26 16:04:21 -05:00
Charlie Marsh
f15c562a1c
Remove unused overridden property ( #2217 )
2023-01-26 14:46:46 -05:00
Martin Fischer
b359f3a9ff
refactor: Get rid of ruff::resolver::FileDiscovery
2023-01-26 13:06:29 -05:00
Martin Fischer
73d0461d55
refactor: Check required_version in Settings::from_configuration
...
The idiomatic way in Rust is to make invalid types unrepresentable
instead of paranoidly calling a validate method everywhere.
2023-01-26 13:06:29 -05:00
Charlie Marsh
f7be192f8b
Alphabetize Flake8 plugins in the README ( #2209 )
2023-01-26 13:05:30 -05:00
Edgar R. M
e88275280b
Implement some rules from flake8-logging-format ( #2150 )
2023-01-26 12:58:10 -05:00
Samuel Cormier-Iijima
7370a27c09
Don't flag B009/B010 if identifiers would be mangled ( #2204 )
2023-01-26 12:56:18 -05:00
jvstme
0ad6b8224d
Fix typo in src option docs ( #2201 )
2023-01-26 12:23:09 -05:00
Charlie Marsh
adb5c5b150
Fix respect_gitignore reference ( #2196 )
2023-01-26 09:53:17 -05:00
Eric Roberts
708295f4c9
Move violations for pycodestyle rules to rules files ( #2138 )
2023-01-25 20:11:36 -05:00
Charlie Marsh
4190f1045e
Remove manual newline from autofix helpers ( #2184 )
2023-01-25 19:53:26 -05:00
Florian Stasse
353857e2a5
Implement TRY400 ( #2115 )
2023-01-25 19:42:19 -05:00
Denis Gavrilyuk
55b43c8ea7
feat: implement TRY002 and TRY003 ( #2135 )
2023-01-25 19:22:43 -05:00
Anders Kaseorg
6036d1bbe2
flake8_executable: Only match shebang at beginning of line ( #2183 )
...
The Python implementation uses `re.match` for this, which only matches
at the beginning of a line.
https://github.com/xuhdev/flake8-executable/blob/v2.1.3/flake8_executable/__init__.py#L124
We could use `Regex::captures_read_at`, but that’s a more complicated
API; it’s easier to anchor the regex with `^`.
Signed-off-by: Anders Kaseorg <andersk@mit.edu >
Signed-off-by: Anders Kaseorg <andersk@mit.edu >
2023-01-25 18:57:09 -05:00
Charlie Marsh
fdccb6ec1c
Fix conflicting error message warning ( #2182 )
2023-01-25 18:26:43 -05:00
Simon Brugman
52201422ae
fix: platform-independent newlines
2023-01-25 18:00:39 -05:00
Simon Brugman
d7fe1eeba0
fix: platform-independent paths
2023-01-25 18:00:39 -05:00
Simon Brugman
c859ac4933
refactor: test ground truth update for new macro
2023-01-25 18:00:39 -05:00
Simon Brugman
e9c1089ddc
refactor: tests use new marco
2023-01-25 18:00:39 -05:00
Simon Brugman
413acdf83c
feat: introduce macro for testing snap files across platforms
2023-01-25 18:00:39 -05:00
Charlie Marsh
23525a8ea0
Actually, rename TYP rules to TCH ( #2176 )
2023-01-25 16:52:49 -05:00
Charlie Marsh
35cf9e242e
Rename TYP rules to TYC ( #2175 )
2023-01-25 16:26:22 -05:00
Charlie Marsh
d5dff11d4b
Avoid reraise-no-cause for explicit reraises ( #2174 )
2023-01-25 15:51:24 -05:00
Charlie Marsh
8e1fac620e
Add flake8-builtins options to README ( #2173 )
2023-01-25 15:43:26 -05:00
Florian Best
43a8ce6c89
fix: avoid flagging unused loop variable (B007) with globals(), vars() or eval() ( #2166 )
2023-01-25 15:18:58 -05:00
Florian Best
dc1aa8dd1d
Suggest input format in error case ( #2167 )
2023-01-25 14:55:04 -05:00
Charlie Marsh
662e29b1ce
Avoid re-resolving settings for repeated paths ( #2165 )
...
After this change:
```shell
> time cargo run -- -n $(find ../django -type f -name '*.py')`
8.85s user 0.20s system 498% cpu 1.814 total
> time cargo run -- -n ../django
8.95s user 0.23s system 507% cpu 1.811 total
```
I also verified that we only hit the creation path once via some manual logging.
Closes #2154 .
2023-01-25 13:38:33 -05:00
Charlie Marsh
0e6f513607
Avoid prefer-type-error (TRY004) with intermediary control flow ( #2162 )
2023-01-25 13:00:59 -05:00
Charlie Marsh
02421d02f5
Avoid flagging unused loop variable (B007) with locals() ( #2161 )
2023-01-25 12:53:35 -05:00
Charlie Marsh
38de46ae3c
Treat Python 3.7 as minimum supported version ( #2159 )
2023-01-25 12:36:50 -05:00
Martin Fischer
f6fd702d41
Add #![warn(clippy::pedantic)] to lib.rs and main.rs files
...
We already enforced pedantic clippy lints via the
following command in .github/workflows/ci.yaml:
cargo clippy --workspace --all-targets --all-features -- -D warnings -W clippy::pedantic
Additionally adding #![warn(clippy::pedantic)] to all main.rs and lib.rs
has the benefit that violations of pedantic clippy lints are also
reported when just running `cargo clippy` without any arguments and
are thereby also picked up by LSP[1] servers such as rust-analyzer[2].
However for rust-analyzer to run clippy you'll have to configure:
"rust-analyzer.check.command": "clippy",
in your editor.[3]
[1]: https://microsoft.github.io/language-server-protocol/
[2]: https://rust-analyzer.github.io/
[3]: https://rust-analyzer.github.io/manual.html#configuration
2023-01-25 00:40:29 -05:00
Martin Fischer
2125d0bb54
refactor: Move #![forbid(unsafe_code)] attributes up
...
What's forbidden is more important than which clippy lints are
ignored and more important directives should come first.
2023-01-25 00:40:29 -05:00
Charlie Marsh
63b4f60ba4
Implement typing-only import detection (TYP001, TYP002, TYP003) ( #2147 )
2023-01-24 23:48:11 -05:00
Charlie Marsh
0758049e49
Implement runtime-import-in-type-checking-block (TYP004) ( #2146 )
2023-01-24 23:33:26 -05:00