mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-27 02:16:54 +00:00
Some checks are pending
CI / cargo test (linux, release) (push) Blocked by required conditions
CI / cargo test (windows) (push) Blocked by required conditions
CI / cargo test (wasm) (push) Blocked by required conditions
CI / cargo build (release) (push) Waiting to run
CI / cargo build (msrv) (push) Blocked by required conditions
CI / cargo fuzz build (push) Blocked by required conditions
CI / fuzz parser (push) Blocked by required conditions
CI / test scripts (push) Blocked by required conditions
CI / Determine changes (push) Waiting to run
CI / cargo fmt (push) Waiting to run
CI / cargo clippy (push) Blocked by required conditions
CI / cargo test (linux) (push) Blocked by required conditions
CI / mkdocs (push) Waiting to run
CI / formatter instabilities and black similarity (push) Blocked by required conditions
CI / test ruff-lsp (push) Blocked by required conditions
CI / check playground (push) Blocked by required conditions
CI / benchmarks (push) Blocked by required conditions
CI / ecosystem (push) Blocked by required conditions
CI / Fuzz for new ty panics (push) Blocked by required conditions
CI / cargo shear (push) Blocked by required conditions
CI / python package (push) Waiting to run
CI / pre-commit (push) Waiting to run
[ty Playground] Release / publish (push) Waiting to run
## Summary Add support for ty's `ty:` pragma comments to ruff's formatter and E501 Fixes https://github.com/astral-sh/ruff/issues/18529 ## Test Plan Added test
30 lines
1.4 KiB
Rust
30 lines
1.4 KiB
Rust
/// Returns `true` if a comment appears to be a pragma comment.
|
|
///
|
|
/// ```
|
|
/// assert!(ruff_python_trivia::is_pragma_comment("# type: ignore"));
|
|
/// assert!(ruff_python_trivia::is_pragma_comment("# noqa: F401"));
|
|
/// assert!(ruff_python_trivia::is_pragma_comment("# noqa"));
|
|
/// assert!(ruff_python_trivia::is_pragma_comment("# NoQA"));
|
|
/// assert!(ruff_python_trivia::is_pragma_comment("# nosec"));
|
|
/// assert!(ruff_python_trivia::is_pragma_comment("# nosec B602, B607"));
|
|
/// assert!(ruff_python_trivia::is_pragma_comment("# isort: off"));
|
|
/// assert!(ruff_python_trivia::is_pragma_comment("# isort: skip"));
|
|
/// ```
|
|
pub fn is_pragma_comment(comment: &str) -> bool {
|
|
let Some(content) = comment.strip_prefix('#') else {
|
|
return false;
|
|
};
|
|
let trimmed = content.trim_start();
|
|
|
|
// Case-insensitive match against `noqa` (which doesn't require a trailing colon).
|
|
matches!(
|
|
trimmed.as_bytes(),
|
|
[b'n' | b'N', b'o' | b'O', b'q' | b'Q', b'a' | b'A', ..]
|
|
) ||
|
|
// Case-insensitive match against pragmas that don't require a trailing colon.
|
|
trimmed.starts_with("nosec") ||
|
|
// Case-sensitive match against a variety of pragmas that _do_ require a trailing colon.
|
|
trimmed
|
|
.split_once(':')
|
|
.is_some_and(|(maybe_pragma, _)| matches!(maybe_pragma, "isort" | "type" | "pyright" | "pylint" | "flake8" | "ruff" | "ty"))
|
|
}
|