diff --git a/crates/ruff_cli/src/commands/check.rs b/crates/ruff_cli/src/commands/check.rs index 001cb0ae8449de..7d63e299f4fa16 100644 --- a/crates/ruff_cli/src/commands/check.rs +++ b/crates/ruff_cli/src/commands/check.rs @@ -82,7 +82,7 @@ pub(crate) fn check( let settings = resolver.resolve(path, pyproject_config); - if !resolved_file.is_root() + if (settings.file_resolver.force_exclude || !resolved_file.is_root()) && match_exclusion( resolved_file.path(), resolved_file.file_name(), diff --git a/crates/ruff_cli/src/commands/check_stdin.rs b/crates/ruff_cli/src/commands/check_stdin.rs index 67f01cd0e8d3a1..260da5a50135d6 100644 --- a/crates/ruff_cli/src/commands/check_stdin.rs +++ b/crates/ruff_cli/src/commands/check_stdin.rs @@ -18,17 +18,19 @@ pub(crate) fn check_stdin( noqa: flags::Noqa, fix_mode: flags::FixMode, ) -> Result { - if let Some(filename) = filename { - if !python_file_at_path(filename, pyproject_config, overrides)? { - return Ok(Diagnostics::default()); - } + if pyproject_config.settings.file_resolver.force_exclude { + if let Some(filename) = filename { + if !python_file_at_path(filename, pyproject_config, overrides)? { + return Ok(Diagnostics::default()); + } - let lint_settings = &pyproject_config.settings.linter; - if filename - .file_name() - .is_some_and(|name| match_exclusion(filename, name, &lint_settings.exclude)) - { - return Ok(Diagnostics::default()); + let lint_settings = &pyproject_config.settings.linter; + if filename + .file_name() + .is_some_and(|name| match_exclusion(filename, name, &lint_settings.exclude)) + { + return Ok(Diagnostics::default()); + } } } let package_root = filename.and_then(Path::parent).and_then(|path| { diff --git a/crates/ruff_cli/src/commands/format.rs b/crates/ruff_cli/src/commands/format.rs index 2d09472923552b..2db1338d4d9b01 100644 --- a/crates/ruff_cli/src/commands/format.rs +++ b/crates/ruff_cli/src/commands/format.rs @@ -117,14 +117,14 @@ pub(crate) fn format( return None; }; - let resolved_settings = resolver.resolve(path, &pyproject_config); + let settings = resolver.resolve(path, &pyproject_config); // Ignore files that are excluded from formatting - if !resolved_file.is_root() + if (settings.file_resolver.force_exclude || !resolved_file.is_root()) && match_exclusion( path, resolved_file.file_name(), - &resolved_settings.formatter.exclude, + &settings.formatter.exclude, ) { return None; @@ -139,13 +139,7 @@ pub(crate) fn format( Some( match catch_unwind(|| { - format_path( - path, - &resolved_settings.formatter, - source_type, - mode, - cache, - ) + format_path(path, &settings.formatter, source_type, mode, cache) }) { Ok(inner) => inner.map(|result| FormatPathResult { path: resolved_file.path().to_path_buf(), diff --git a/crates/ruff_cli/src/commands/format_stdin.rs b/crates/ruff_cli/src/commands/format_stdin.rs index 082dfedfb00daa..032ece074ad71f 100644 --- a/crates/ruff_cli/src/commands/format_stdin.rs +++ b/crates/ruff_cli/src/commands/format_stdin.rs @@ -31,17 +31,19 @@ pub(crate) fn format_stdin(cli: &FormatArguments, overrides: &CliOverrides) -> R let mode = FormatMode::from_cli(cli); - if let Some(filename) = cli.stdin_filename.as_deref() { - if !python_file_at_path(filename, &pyproject_config, overrides)? { - return Ok(ExitStatus::Success); - } + if pyproject_config.settings.file_resolver.force_exclude { + if let Some(filename) = cli.stdin_filename.as_deref() { + if !python_file_at_path(filename, &pyproject_config, overrides)? { + return Ok(ExitStatus::Success); + } - let format_settings = &pyproject_config.settings.formatter; - if filename - .file_name() - .is_some_and(|name| match_exclusion(filename, name, &format_settings.exclude)) - { - return Ok(ExitStatus::Success); + let format_settings = &pyproject_config.settings.formatter; + if filename + .file_name() + .is_some_and(|name| match_exclusion(filename, name, &format_settings.exclude)) + { + return Ok(ExitStatus::Success); + } } } diff --git a/crates/ruff_workspace/src/resolver.rs b/crates/ruff_workspace/src/resolver.rs index 1f57a1504eba3e..fc12feaad3ace0 100644 --- a/crates/ruff_workspace/src/resolver.rs +++ b/crates/ruff_workspace/src/resolver.rs @@ -483,10 +483,6 @@ pub fn python_file_at_path( pyproject_config: &PyprojectConfig, transformer: &dyn ConfigurationTransformer, ) -> Result { - if !pyproject_config.settings.file_resolver.force_exclude { - return Ok(true); - } - // Normalize the path (e.g., convert from relative to absolute). let path = fs::normalize_path(path);