diff --git a/crates/ruff/tests/lint.rs b/crates/ruff/tests/lint.rs index cb701bf140..6e53c12478 100644 --- a/crates/ruff/tests/lint.rs +++ b/crates/ruff/tests/lint.rs @@ -5654,3 +5654,34 @@ fn semantic_syntax_errors() -> Result<()> { Ok(()) } + +/// Regression test for . +/// +/// `lint.typing-extensions = false` with Python 3.9 should disable the PYI019 lint because it would +/// try to import `Self` from `typing_extensions` +#[test] +fn combine_typing_extensions_config() { + let contents = " +from typing import TypeVar +T = TypeVar('T') +class Foo: + def f(self: T) -> T: ... +"; + assert_cmd_snapshot!( + Command::new(get_cargo_bin(BIN_NAME)) + .args(STDIN_BASE_OPTIONS) + .args(["--config", "lint.typing-extensions = false"]) + .arg("--select=PYI019") + .arg("--target-version=py39") + .arg("-") + .pass_stdin(contents), + @r" + success: true + exit_code: 0 + ----- stdout ----- + All checks passed! + + ----- stderr ----- + " + ); +} diff --git a/crates/ruff_workspace/src/configuration.rs b/crates/ruff_workspace/src/configuration.rs index 38551a6bee..072ecbcee5 100644 --- a/crates/ruff_workspace/src/configuration.rs +++ b/crates/ruff_workspace/src/configuration.rs @@ -1172,7 +1172,7 @@ impl LintConfiguration { pylint: self.pylint.combine(config.pylint), pyupgrade: self.pyupgrade.combine(config.pyupgrade), ruff: self.ruff.combine(config.ruff), - typing_extensions: self.typing_extensions, + typing_extensions: self.typing_extensions.or(config.typing_extensions), } } }