mirror of
https://github.com/astral-sh/ruff.git
synced 2025-07-28 23:43:53 +00:00
Add TOML files to SourceType
(#6929)
## Summary
This PR adds a higher-level enum (`SourceType`) around `PySourceType` to
allow us to use the same detection path to handle TOML files. Right now,
we have ad hoc `is_pyproject_toml` checks littered around, and some
codepaths are omitting that logic altogether (like `add_noqa`). Instead,
we should always be required to check the source type and handle TOML
files as appropriate.
This PR will also help with our pre-commit capabilities. If we add
`toml` to pre-commit (to support `pyproject.toml`), pre-commit will
start to pass _other_ files to Ruff (along with `poetry.lock` and
`Pipfile` -- see
[identify](b59996304f/identify/extensions.py (L355)
)).
By detecting those files and handling those cases, we avoid attempting
to parse them as Python files, which would lead to pre-commit errors.
(We tried to add `toml` to pre-commit here
(https://github.com/astral-sh/ruff-pre-commit/pull/44), but had to
revert here (https://github.com/astral-sh/ruff-pre-commit/pull/45) as it
led to the pre-commit hook attempting to parse `poetry.lock` files as
Python files.)
This commit is contained in:
parent
2893a9f6b5
commit
58f5f27dc3
7 changed files with 135 additions and 136 deletions
|
@ -1,13 +1,7 @@
|
|||
use std::path::Path;
|
||||
|
||||
/// Return `true` if the [`Path`] appears to be that of a Python file.
|
||||
pub fn is_python_file(path: &Path) -> bool {
|
||||
path.extension()
|
||||
.is_some_and(|ext| ext == "py" || ext == "pyi")
|
||||
}
|
||||
|
||||
/// Return `true` if the [`Path`] is named `pyproject.toml`.
|
||||
pub fn is_project_toml(path: &Path) -> bool {
|
||||
pub fn is_pyproject_toml(path: &Path) -> bool {
|
||||
path.file_name()
|
||||
.is_some_and(|name| name == "pyproject.toml")
|
||||
}
|
||||
|
@ -26,22 +20,7 @@ pub fn is_jupyter_notebook(path: &Path) -> bool {
|
|||
mod tests {
|
||||
use std::path::Path;
|
||||
|
||||
use crate::path::{is_jupyter_notebook, is_python_file};
|
||||
|
||||
#[test]
|
||||
fn inclusions() {
|
||||
let path = Path::new("foo/bar/baz.py");
|
||||
assert!(is_python_file(path));
|
||||
|
||||
let path = Path::new("foo/bar/baz.pyi");
|
||||
assert!(is_python_file(path));
|
||||
|
||||
let path = Path::new("foo/bar/baz.js");
|
||||
assert!(!is_python_file(path));
|
||||
|
||||
let path = Path::new("foo/bar/baz");
|
||||
assert!(!is_python_file(path));
|
||||
}
|
||||
use crate::path::is_jupyter_notebook;
|
||||
|
||||
#[test]
|
||||
fn test_is_jupyter_notebook() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue