mirror of https://github.com/astral-sh/ruff
Exclude docstrings from PYI053 (#5405)
## Summary The `Y053` rule of `flake8-pyi` ignores docstrings, it only triggers on other string literals. The separate `Y021/PYI021` rule exists to disallow docstrings. ## Test Plan Added some `# OK` test cases to `PYI053.py(i)` files.
This commit is contained in:
parent
56f73de0cb
commit
2c99b268c6
|
|
@ -36,3 +36,11 @@ bar: str = "51 character stringgggggggggggggggggggggggggggggggg"
|
|||
baz: bytes = b"50 character byte stringgggggggggggggggggggggggggg"
|
||||
|
||||
qux: bytes = b"51 character byte stringggggggggggggggggggggggggggg\xff"
|
||||
|
||||
|
||||
class Demo:
|
||||
"""Docstrings are excluded from this rule. Some padding."""
|
||||
|
||||
|
||||
def func() -> None:
|
||||
"""Docstrings are excluded from this rule. Some padding."""
|
||||
|
|
|
|||
|
|
@ -28,3 +28,9 @@ bar: str = "51 character stringgggggggggggggggggggggggggggggggg" # Error: PYI05
|
|||
baz: bytes = b"50 character byte stringgggggggggggggggggggggggggg" # OK
|
||||
|
||||
qux: bytes = b"51 character byte stringggggggggggggggggggggggggggg\xff" # Error: PYI053
|
||||
|
||||
class Demo:
|
||||
"""Docstrings are excluded from this rule. Some padding.""" # OK
|
||||
|
||||
def func() -> None:
|
||||
"""Docstrings are excluded from this rule. Some padding.""" # OK
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ use rustpython_parser::ast::{self, Constant, Expr, Ranged};
|
|||
|
||||
use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix};
|
||||
use ruff_macros::{derive_message_formats, violation};
|
||||
use ruff_python_ast::helpers::is_docstring_stmt;
|
||||
|
||||
use crate::checkers::ast::Checker;
|
||||
use crate::registry::AsRule;
|
||||
|
|
@ -41,6 +42,11 @@ impl AlwaysAutofixableViolation for StringOrBytesTooLong {
|
|||
|
||||
/// PYI053
|
||||
pub(crate) fn string_or_bytes_too_long(checker: &mut Checker, expr: &Expr) {
|
||||
// Ignore docstrings.
|
||||
if is_docstring_stmt(checker.semantic().stmt()) {
|
||||
return;
|
||||
}
|
||||
|
||||
let length = match expr {
|
||||
Expr::Constant(ast::ExprConstant {
|
||||
value: Constant::Str(s),
|
||||
|
|
|
|||
|
|
@ -89,6 +89,8 @@ PYI053.pyi:30:14: PYI053 [*] String and bytes literals longer than 50 characters
|
|||
29 |
|
||||
30 | qux: bytes = b"51 character byte stringggggggggggggggggggggggggggg\xff" # Error: PYI053
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI053
|
||||
31 |
|
||||
32 | class Demo:
|
||||
|
|
||||
= help: Replace with `...`
|
||||
|
||||
|
|
@ -98,5 +100,8 @@ PYI053.pyi:30:14: PYI053 [*] String and bytes literals longer than 50 characters
|
|||
29 29 |
|
||||
30 |-qux: bytes = b"51 character byte stringggggggggggggggggggggggggggg\xff" # Error: PYI053
|
||||
30 |+qux: bytes = ... # Error: PYI053
|
||||
31 31 |
|
||||
32 32 | class Demo:
|
||||
33 33 | """Docstrings are excluded from this rule. Some padding.""" # OK
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue