mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-28 12:55:05 +00:00
ruff server
respects per-file-ignores
configuration (#11224)
## Summary Fixes #11185 Fixes #11214 Document path and package information is now forwarded to the Ruff linter, which allows `per-file-ignores` to correctly match against the file name. This also fixes an issue where the import sorting rule didn't distinguish between third-party and first-party packages since we didn't pass in the package root. ## Test Plan `per-file-ignores` should ignore files as expected. One quick way to check is by adding this to your `pyproject.toml`: ```toml [tool.ruff.lint.per-file-ignores] "__init__.py" = ["ALL"] ``` Then, confirm that no diagnostics appear when you add code to an `__init__.py` file (besides syntax errors). The import sorting fix can be verified by failing to reproduce the original issue - an `I001` diagnostic should not appear in `other_module.py`.
This commit is contained in:
parent
653c8d83e9
commit
4aac1d1db9
5 changed files with 40 additions and 11 deletions
|
@ -1,11 +1,12 @@
|
|||
use ruff_linter::{
|
||||
linter::{FixerResult, LinterResult},
|
||||
packaging::detect_package_root,
|
||||
settings::{flags, types::UnsafeFixes, LinterSettings},
|
||||
source_kind::SourceKind,
|
||||
};
|
||||
use ruff_python_ast::PySourceType;
|
||||
use ruff_source_file::LineIndex;
|
||||
use std::{borrow::Cow, path::Path};
|
||||
use std::borrow::Cow;
|
||||
|
||||
use crate::{
|
||||
edit::{Replacement, ToRangeExt},
|
||||
|
@ -14,11 +15,23 @@ use crate::{
|
|||
|
||||
pub(crate) fn fix_all(
|
||||
document: &crate::edit::Document,
|
||||
document_url: &lsp_types::Url,
|
||||
linter_settings: &LinterSettings,
|
||||
encoding: PositionEncoding,
|
||||
) -> crate::Result<Vec<lsp_types::TextEdit>> {
|
||||
let source = document.contents();
|
||||
|
||||
let document_path = document_url
|
||||
.to_file_path()
|
||||
.expect("document URL should be a valid file path");
|
||||
|
||||
let package = detect_package_root(
|
||||
document_path
|
||||
.parent()
|
||||
.expect("a path to a document should have a parent path"),
|
||||
&linter_settings.namespace_packages,
|
||||
);
|
||||
|
||||
let source_type = PySourceType::default();
|
||||
|
||||
// TODO(jane): Support Jupyter Notebooks
|
||||
|
@ -35,8 +48,8 @@ pub(crate) fn fix_all(
|
|||
result: LinterResult { error, .. },
|
||||
..
|
||||
} = ruff_linter::linter::lint_fix(
|
||||
Path::new("<filename>"),
|
||||
None,
|
||||
&document_path,
|
||||
package,
|
||||
flags::Noqa::Enabled,
|
||||
UnsafeFixes::Disabled,
|
||||
linter_settings,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue