Skip to content

Commit 81059d0

Browse files
authored
[pep8-naming] Consider any number of leading underscore for N801 (#15988)
## Summary The PR addresses the issue #15939 Let me know if you think there are other test cases I should add ;-)
1 parent 24bab7e commit 81059d0

File tree

3 files changed

+35
-9
lines changed

3 files changed

+35
-9
lines changed

crates/ruff_linter/resources/test/fixtures/pep8_naming/N801.py

+9
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,19 @@ class _bad:
66
pass
77

88

9+
class __bad:
10+
pass
11+
12+
913
class bad_class:
1014
pass
1115

1216

1317
class Bad_Class:
1418
pass
1519

20+
class Bad__Class:
21+
pass
1622

1723
class BAD_CLASS:
1824
pass
@@ -32,3 +38,6 @@ class GoodClass:
3238

3339
class GOOD:
3440
pass
41+
42+
class __GoodClass:
43+
pass

crates/ruff_linter/src/rules/pep8_naming/rules/invalid_class_name.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ pub(crate) fn invalid_class_name(
5454
name: &str,
5555
ignore_names: &IgnoreNames,
5656
) -> Option<Diagnostic> {
57-
let stripped = name.strip_prefix('_').unwrap_or(name);
57+
let stripped = name.trim_start_matches('_');
5858
if !stripped.chars().next().is_some_and(char::is_uppercase) || stripped.contains('_') {
5959
// Ignore any explicitly-allowed names.
6060
if ignore_names.matches(name) {
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
---
22
source: crates/ruff_linter/src/rules/pep8_naming/mod.rs
3-
snapshot_kind: text
43
---
54
N801.py:1:7: N801 Class name `bad` should use CapWords convention
65
|
@@ -16,23 +15,41 @@ N801.py:5:7: N801 Class name `_bad` should use CapWords convention
1615
6 | pass
1716
|
1817

19-
N801.py:9:7: N801 Class name `bad_class` should use CapWords convention
18+
N801.py:9:7: N801 Class name `__bad` should use CapWords convention
2019
|
21-
9 | class bad_class:
22-
| ^^^^^^^^^ N801
20+
9 | class __bad:
21+
| ^^^^^ N801
2322
10 | pass
2423
|
2524

26-
N801.py:13:7: N801 Class name `Bad_Class` should use CapWords convention
25+
N801.py:13:7: N801 Class name `bad_class` should use CapWords convention
2726
|
28-
13 | class Bad_Class:
27+
13 | class bad_class:
2928
| ^^^^^^^^^ N801
3029
14 | pass
3130
|
3231

33-
N801.py:17:7: N801 Class name `BAD_CLASS` should use CapWords convention
32+
N801.py:17:7: N801 Class name `Bad_Class` should use CapWords convention
3433
|
35-
17 | class BAD_CLASS:
34+
17 | class Bad_Class:
3635
| ^^^^^^^^^ N801
3736
18 | pass
3837
|
38+
39+
N801.py:20:7: N801 Class name `Bad__Class` should use CapWords convention
40+
|
41+
18 | pass
42+
19 |
43+
20 | class Bad__Class:
44+
| ^^^^^^^^^^ N801
45+
21 | pass
46+
|
47+
48+
N801.py:23:7: N801 Class name `BAD_CLASS` should use CapWords convention
49+
|
50+
21 | pass
51+
22 |
52+
23 | class BAD_CLASS:
53+
| ^^^^^^^^^ N801
54+
24 | pass
55+
|

0 commit comments

Comments
 (0)