mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-03 15:14:42 +00:00
Avoids unnecessary overhead for TC004
, when TC001-003
are disabled (#14657)
Some checks are pending
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 / 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 / ecosystem (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
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 / benchmarks (push) Blocked by required conditions
Some checks are pending
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 / 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 / ecosystem (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
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 / benchmarks (push) Blocked by required conditions
This commit is contained in:
parent
3f6c65e78c
commit
d9cbf2fe44
1 changed files with 18 additions and 28 deletions
|
@ -52,16 +52,13 @@ pub(crate) fn deferred_scopes(checker: &mut Checker) {
|
||||||
// Identify any valid runtime imports. If a module is imported at runtime, and
|
// Identify any valid runtime imports. If a module is imported at runtime, and
|
||||||
// used at runtime, then by default, we avoid flagging any other
|
// used at runtime, then by default, we avoid flagging any other
|
||||||
// imports from that model as typing-only.
|
// imports from that model as typing-only.
|
||||||
// FIXME: This does not seem quite right, if only TC004 is enabled
|
let enforce_typing_only_imports = !checker.source_type.is_stub()
|
||||||
// then we don't need to collect the runtime imports
|
|
||||||
let enforce_typing_imports = !checker.source_type.is_stub()
|
|
||||||
&& checker.any_enabled(&[
|
&& checker.any_enabled(&[
|
||||||
Rule::RuntimeImportInTypeCheckingBlock,
|
|
||||||
Rule::TypingOnlyFirstPartyImport,
|
Rule::TypingOnlyFirstPartyImport,
|
||||||
Rule::TypingOnlyStandardLibraryImport,
|
Rule::TypingOnlyStandardLibraryImport,
|
||||||
Rule::TypingOnlyThirdPartyImport,
|
Rule::TypingOnlyThirdPartyImport,
|
||||||
]);
|
]);
|
||||||
let runtime_imports: Vec<Vec<&Binding>> = if enforce_typing_imports {
|
let runtime_imports: Vec<Vec<&Binding>> = if enforce_typing_only_imports {
|
||||||
checker
|
checker
|
||||||
.semantic
|
.semantic
|
||||||
.scopes
|
.scopes
|
||||||
|
@ -377,9 +374,16 @@ pub(crate) fn deferred_scopes(checker: &mut Checker) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if matches!(scope.kind, ScopeKind::Function(_) | ScopeKind::Module) {
|
if matches!(scope.kind, ScopeKind::Function(_) | ScopeKind::Module) {
|
||||||
// FIXME: This does not seem quite right, if only TC004 is enabled
|
if !checker.source_type.is_stub()
|
||||||
// then we don't need to collect the runtime imports
|
&& checker.enabled(Rule::RuntimeImportInTypeCheckingBlock)
|
||||||
if enforce_typing_imports {
|
{
|
||||||
|
flake8_type_checking::rules::runtime_import_in_type_checking_block(
|
||||||
|
checker,
|
||||||
|
scope,
|
||||||
|
&mut diagnostics,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if enforce_typing_only_imports {
|
||||||
let runtime_imports: Vec<&Binding> = checker
|
let runtime_imports: Vec<&Binding> = checker
|
||||||
.semantic
|
.semantic
|
||||||
.scopes
|
.scopes
|
||||||
|
@ -388,19 +392,6 @@ pub(crate) fn deferred_scopes(checker: &mut Checker) {
|
||||||
.copied()
|
.copied()
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
if checker.enabled(Rule::RuntimeImportInTypeCheckingBlock) {
|
|
||||||
flake8_type_checking::rules::runtime_import_in_type_checking_block(
|
|
||||||
checker,
|
|
||||||
scope,
|
|
||||||
&mut diagnostics,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if checker.any_enabled(&[
|
|
||||||
Rule::TypingOnlyFirstPartyImport,
|
|
||||||
Rule::TypingOnlyStandardLibraryImport,
|
|
||||||
Rule::TypingOnlyThirdPartyImport,
|
|
||||||
]) {
|
|
||||||
flake8_type_checking::rules::typing_only_runtime_import(
|
flake8_type_checking::rules::typing_only_runtime_import(
|
||||||
checker,
|
checker,
|
||||||
scope,
|
scope,
|
||||||
|
@ -408,7 +399,6 @@ pub(crate) fn deferred_scopes(checker: &mut Checker) {
|
||||||
&mut diagnostics,
|
&mut diagnostics,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if checker.enabled(Rule::UnusedImport) {
|
if checker.enabled(Rule::UnusedImport) {
|
||||||
pyflakes::rules::unused_import(checker, scope, &mut diagnostics);
|
pyflakes::rules::unused_import(checker, scope, &mut diagnostics);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue