mirror of https://github.com/astral-sh/ruff
Allow SPDX license headers to exceed the line length (#10481)
Closes https://github.com/astral-sh/ruff/issues/10465.
This commit is contained in:
parent
42d4216fd7
commit
f7740a8a20
|
|
@ -82,3 +82,8 @@ class Bar:
|
|||
"""
|
||||
This is a long sentence that ends with a shortened URL and, therefore, could easily be broken across multiple lines ([source](https://ruff.rs))
|
||||
"""
|
||||
|
||||
|
||||
# OK
|
||||
# SPDX-FileCopyrightText: Copyright 2012-2015 Charlie Marsh <very-long-email-address@fake.com>
|
||||
# SPDX-License-Identifier: a very long license identifier that exceeds the line length limit
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ impl Overlong {
|
|||
};
|
||||
|
||||
let mut chunks = line.split_whitespace();
|
||||
let (Some(_), Some(second_chunk)) = (chunks.next(), chunks.next()) else {
|
||||
let (Some(first_chunk), Some(second_chunk)) = (chunks.next(), chunks.next()) else {
|
||||
// Single word / no printable chars - no way to make the line shorter.
|
||||
return None;
|
||||
};
|
||||
|
|
@ -67,6 +67,15 @@ impl Overlong {
|
|||
}
|
||||
}
|
||||
|
||||
// Do not enforce the line length limit for SPDX license headers, which are machine-readable
|
||||
// and explicitly _not_ recommended to wrap over multiple lines.
|
||||
if matches!(
|
||||
(first_chunk, second_chunk),
|
||||
("#", "SPDX-License-Identifier:" | "SPDX-FileCopyrightText:")
|
||||
) {
|
||||
return None;
|
||||
}
|
||||
|
||||
// Obtain the start offset of the part of the line that exceeds the limit.
|
||||
let mut start_offset = line.start();
|
||||
let mut start_width = LineWidthBuilder::new(tab_size);
|
||||
|
|
|
|||
|
|
@ -27,6 +27,9 @@ use crate::settings::LinterSettings;
|
|||
/// line-length threshold. That is, a line will not be flagged as
|
||||
/// overlong if a pragma comment _causes_ it to exceed the line length.
|
||||
/// (This behavior aligns with that of the Ruff formatter.)
|
||||
/// 4. Ignores SPDX license identifiers and copyright notices
|
||||
/// (e.g., `# SPDX-License-Identifier: MIT`), which are machine-readable
|
||||
/// and should _not_ wrap over multiple lines.
|
||||
///
|
||||
/// If [`lint.pycodestyle.ignore-overlong-task-comments`] is `true`, this rule will
|
||||
/// also ignore comments that start with any of the specified [`lint.task-tags`]
|
||||
|
|
|
|||
Loading…
Reference in New Issue