mirror of
https://github.com/astral-sh/ruff.git
synced 2025-11-01 04:18:05 +00:00
Add documentation to rules that check docstring quotes (D3XX) (#5351)
## Summary Add documentation to the `D3XX` rules that check for issues with docstring quotes. Related to #2646. ## Test Plan `python scripts/check_docs_formatted.py`
This commit is contained in:
parent
1fe4073b56
commit
fd0c3faa70
4 changed files with 63 additions and 1 deletions
|
|
@ -7,6 +7,42 @@ use ruff_macros::{derive_message_formats, violation};
|
|||
use crate::checkers::ast::Checker;
|
||||
use crate::docstrings::Docstring;
|
||||
|
||||
/// ## What it does
|
||||
/// Checks for docstrings that include backslashes, but are not defined as
|
||||
/// raw string literals.
|
||||
///
|
||||
/// ## Why is this bad?
|
||||
/// In Python, backslashes are typically used to escape characters in strings.
|
||||
/// In raw strings (those prefixed with an `r`), however, backslashes are
|
||||
/// treated as literal characters.
|
||||
///
|
||||
/// [PEP 257](https://peps.python.org/pep-0257/#what-is-a-docstring) recommends
|
||||
/// the use of raw strings (i.e., `r"""raw triple double quotes"""`) for
|
||||
/// docstrings that include backslashes. The use of a raw string ensures that
|
||||
/// any backslashes are treated as literal characters, and not as escape
|
||||
/// sequences, which avoids confusion.
|
||||
///
|
||||
/// ## Example
|
||||
/// ```python
|
||||
/// def foobar():
|
||||
/// """Docstring for foo\bar."""
|
||||
///
|
||||
///
|
||||
/// foobar.__doc__ # "Docstring for foar."
|
||||
/// ```
|
||||
///
|
||||
/// Use instead:
|
||||
/// ```python
|
||||
/// def foobar():
|
||||
/// r"""Docstring for foo\bar."""
|
||||
///
|
||||
///
|
||||
/// foobar.__doc__ # "Docstring for foo\bar."
|
||||
/// ```
|
||||
///
|
||||
/// ## References
|
||||
/// - [PEP 257 – Docstring Conventions](https://peps.python.org/pep-0257/)
|
||||
/// - [Python documentation: String and Bytes literals](https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals)
|
||||
#[violation]
|
||||
pub struct EscapeSequenceInDocstring;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,31 @@ use ruff_macros::{derive_message_formats, violation};
|
|||
use crate::checkers::ast::Checker;
|
||||
use crate::docstrings::Docstring;
|
||||
|
||||
/// ## What it does
|
||||
/// Checks for docstrings that use `'''triple single quotes'''` instead of
|
||||
/// `"""triple double quotes"""`.
|
||||
///
|
||||
/// ## Why is this bad?
|
||||
/// [PEP 257](https://peps.python.org/pep-0257/#what-is-a-docstring) recommends
|
||||
/// the use of `"""triple double quotes"""` for docstrings, to ensure
|
||||
/// consistency.
|
||||
///
|
||||
/// ## Example
|
||||
/// ```python
|
||||
/// def kos_root():
|
||||
/// '''Return the pathname of the KOS root directory.'''
|
||||
/// ```
|
||||
///
|
||||
/// Use instead:
|
||||
/// ```python
|
||||
/// def kos_root():
|
||||
/// """Return the pathname of the KOS root directory."""
|
||||
/// ```
|
||||
///
|
||||
/// ## References
|
||||
/// - [PEP 257 – Docstring Conventions](https://peps.python.org/pep-0257/)
|
||||
/// - [NumPy Style Guide](https://numpydoc.readthedocs.io/en/latest/format.html)
|
||||
/// - [Google Python Style Guide - Docstrings](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings)
|
||||
#[violation]
|
||||
pub struct TripleSingleQuotes;
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ use crate::registry::AsRule;
|
|||
///
|
||||
/// ## References
|
||||
/// - [PEP 448 – Additional Unpacking Generalizations](https://peps.python.org/pep-0448/)
|
||||
/// - [Python docs: Sequence Types — `list`, `tuple`, `range`](https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range)
|
||||
/// - [Python documentation: Sequence Types — `list`, `tuple`, `range`](https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range)
|
||||
#[violation]
|
||||
pub struct CollectionLiteralConcatenation {
|
||||
expr: String,
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ KNOWN_FORMATTING_VIOLATIONS = [
|
|||
"shebang-leading-whitespace",
|
||||
"too-few-spaces-before-inline-comment",
|
||||
"trailing-comma-on-bare-tuple",
|
||||
"triple-single-quotes",
|
||||
"unexpected-indentation-comment",
|
||||
"unicode-kind-prefix",
|
||||
"unnecessary-class-parentheses",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue