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"
|
baz: bytes = b"50 character byte stringgggggggggggggggggggggggggg"
|
||||||
|
|
||||||
qux: bytes = b"51 character byte stringggggggggggggggggggggggggggg\xff"
|
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
|
baz: bytes = b"50 character byte stringgggggggggggggggggggggggggg" # OK
|
||||||
|
|
||||||
qux: bytes = b"51 character byte stringggggggggggggggggggggggggggg\xff" # Error: PYI053
|
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_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
|
use ruff_python_ast::helpers::is_docstring_stmt;
|
||||||
|
|
||||||
use crate::checkers::ast::Checker;
|
use crate::checkers::ast::Checker;
|
||||||
use crate::registry::AsRule;
|
use crate::registry::AsRule;
|
||||||
|
|
@ -41,6 +42,11 @@ impl AlwaysAutofixableViolation for StringOrBytesTooLong {
|
||||||
|
|
||||||
/// PYI053
|
/// PYI053
|
||||||
pub(crate) fn string_or_bytes_too_long(checker: &mut Checker, expr: &Expr) {
|
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 {
|
let length = match expr {
|
||||||
Expr::Constant(ast::ExprConstant {
|
Expr::Constant(ast::ExprConstant {
|
||||||
value: Constant::Str(s),
|
value: Constant::Str(s),
|
||||||
|
|
|
||||||
|
|
@ -89,6 +89,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 = b"51 character byte stringggggggggggggggggggggggggggg\xff" # Error: PYI053
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI053
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI053
|
||||||
|
31 |
|
||||||
|
32 | class Demo:
|
||||||
|
|
|
|
||||||
= help: Replace with `...`
|
= help: Replace with `...`
|
||||||
|
|
||||||
|
|
@ -98,5 +100,8 @@ PYI053.pyi:30:14: PYI053 [*] String and bytes literals longer than 50 characters
|
||||||
29 29 |
|
29 29 |
|
||||||
30 |-qux: bytes = b"51 character byte stringggggggggggggggggggggggggggg\xff" # Error: PYI053
|
30 |-qux: bytes = b"51 character byte stringggggggggggggggggggggggggggg\xff" # Error: PYI053
|
||||||
30 |+qux: bytes = ... # 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