mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-29 21:35:58 +00:00
Always prefer double quotes for docstrings and triple-quoted srings (#7680)
## Summary At present, `quote-style` is used universally. However, [PEP 8](https://peps.python.org/pep-0008/) and [PEP 257](https://peps.python.org/pep-0257/) suggest that while either single or double quotes are acceptable in general (as long as they're consistent), docstrings and triple-quoted strings should always use double quotes. In our research, the vast majority of Ruff users that enable the `flake8-quotes` rules only enable them for inline strings (i.e., non-triple-quoted strings). Additionally, many Black forks (like Blue and Pyink) use double quotes for docstrings and triple-quoted strings. Our decision for now is to always prefer double quotes for triple-quoted strings (which should include docstrings). Based on feedback, we may consider adding additional options (e.g., a `"preserve"` mode, to avoid changing quotes; or a `"multiline-quote-style"` to override this). Closes https://github.com/astral-sh/ruff/issues/7615. ## Test Plan `cargo test`
This commit is contained in:
parent
f62b4c801f
commit
695dbbc539
5 changed files with 84 additions and 68 deletions
|
@ -2461,7 +2461,7 @@ pub struct FormatOptions {
|
|||
default = "false",
|
||||
value_type = "bool",
|
||||
example = r#"
|
||||
# Enable preview style formatting
|
||||
# Enable preview style formatting.
|
||||
preview = true
|
||||
"#
|
||||
)]
|
||||
|
@ -2469,34 +2469,40 @@ pub struct FormatOptions {
|
|||
|
||||
/// Whether to use 4 spaces or hard tabs for indenting code.
|
||||
///
|
||||
/// Defaults to 4 spaces. We care about accessibility; if you do not need tabs for accessibility, we do not recommend you use them.
|
||||
/// Defaults to 4 spaces. We care about accessibility; if you do not need tabs for
|
||||
/// accessibility, we do not recommend you use them.
|
||||
#[option(
|
||||
default = "space",
|
||||
value_type = r#""space" | "tab""#,
|
||||
example = r#"
|
||||
# Use tabs instead of 4 space indentation
|
||||
# Use tabs instead of 4 space indentation.
|
||||
indent-style = "tab"
|
||||
"#
|
||||
)]
|
||||
pub indent_style: Option<IndentStyle>,
|
||||
|
||||
/// Whether to prefer single `'` or double `"` quotes for strings and docstrings.
|
||||
/// Whether to prefer single `'` or double `"` quotes for strings. Defaults to double quotes.
|
||||
///
|
||||
/// Ruff may deviate from this option if using the configured quotes would require more escaped quotes:
|
||||
/// In compliance with [PEP 8](https://peps.python.org/pep-0008/) and [PEP 257](https://peps.python.org/pep-0257/),
|
||||
/// Ruff prefers double quotes for multiline strings and docstrings, regardless of the
|
||||
/// configured quote style.
|
||||
///
|
||||
/// Ruff may also deviate from this option if using the configured quotes would require
|
||||
/// escaping quote characters within the string. For example, given:
|
||||
///
|
||||
/// ```python
|
||||
/// a = "It's monday morning"
|
||||
/// b = "a string without any quotes"
|
||||
/// a = "a string without any quotes"
|
||||
/// b = "It's monday morning"
|
||||
/// ```
|
||||
///
|
||||
/// Ruff leaves `a` unchanged when using `quote-style = "single"` because it is otherwise
|
||||
/// necessary to escape the `'` which leads to less readable code: `'It\'s monday morning'`.
|
||||
/// Ruff changes the quotes of `b` to use single quotes.
|
||||
/// Ruff will change `a` to use single quotes when using `quote-style = "single"`. However,
|
||||
/// `a` will be unchanged, as converting to single quotes would require the inner `'` to be
|
||||
/// escaped, which leads to less readable code: `'It\'s monday morning'`.
|
||||
#[option(
|
||||
default = r#"double"#,
|
||||
value_type = r#""double" | "single""#,
|
||||
example = r#"
|
||||
# Prefer single quotes over double quotes
|
||||
# Prefer single quotes over double quotes.
|
||||
quote-style = "single"
|
||||
"#
|
||||
)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue