[FURB156] Do not consider docstring(s) (#16391)

Co-authored-by: Micha Reiser <micha@reiser.io>
This commit is contained in:
Vasco Schiavo 2025-02-26 17:30:13 +01:00 committed by GitHub
parent 8c0eac21ab
commit b89d61bd05
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 50 additions and 1 deletions

View file

@ -27,8 +27,26 @@ _ = (
# with comment
).capitalize()
# example with augmented assignment
_ += "0123456789"
# OK
_ = "1234567890"
_ = "1234"
_ = "12" in "12345670"
# No errors as the string is considered as a docstring
class C:
"01234567"
class C:
def method(self):
"01234567"
def function():
"""01234567"""

View file

@ -46,6 +46,11 @@ impl AlwaysFixableViolation for HardcodedStringCharset {
/// FURB156
pub(crate) fn hardcoded_string_charset_literal(checker: &Checker, expr: &ExprStringLiteral) {
// if the string literal is a docstring, the rule is not applied
if checker.semantic().in_pep_257_docstring() {
return;
}
if let Some(charset) = check_charset_exact(expr.value.to_str().as_bytes()) {
push_diagnostic(checker, expr.range, charset);
}

View file

@ -331,4 +331,30 @@ FURB156.py:26:5: FURB156 [*] Use of hardcoded string charset
27 |+ string.digits
27 28 | # with comment
28 29 | ).capitalize()
29 30 |
29 30 |
FURB156.py:31:6: FURB156 [*] Use of hardcoded string charset
|
30 | # example with augmented assignment
31 | _ += "0123456789"
| ^^^^^^^^^^^^ FURB156
32 |
33 | # OK
|
= help: Replace hardcoded charset with `string.digits`
Safe fix
1 1 | # Errors
2 |+import string
2 3 |
3 4 | _ = "0123456789"
4 5 | _ = "01234567"
--------------------------------------------------------------------------------
28 29 | ).capitalize()
29 30 |
30 31 | # example with augmented assignment
31 |-_ += "0123456789"
32 |+_ += string.digits
32 33 |
33 34 | # OK
34 35 |