mirror of
https://github.com/astral-sh/ruff.git
synced 2025-12-04 09:02:06 +00:00
Avoid falsely marking non-submodules as submodule aliases (#6182)
## Summary
We have some code to ensure that if an aliased import is used, any
submodules should be marked as used too. This comment says it best:
```rust
// If the name of a submodule import is the same as an alias of another import, and the
// alias is used, then the submodule import should be marked as used too.
//
// For example, mark `pyarrow.csv` as used in:
//
// ```python
// import pyarrow as pa
// import pyarrow.csv
// print(pa.csv.read_csv("test.csv"))
// ```
```
However, it looks like when we go to look up `pyarrow` (of `import
pyarrow as pa`), we aren't checking to ensure the resolved binding is
_actually_ an import. This was causing us to attribute `print(rm.ANY)`
to `def requests_mock` here:
```python
import requests_mock as rm
def requests_mock(requests_mock: rm.Mocker):
print(rm.ANY)
```
Closes https://github.com/astral-sh/ruff/issues/6180.
This commit is contained in:
parent
76741cac77
commit
de898c52eb
2 changed files with 13 additions and 1 deletions
|
|
@ -594,7 +594,12 @@ impl<'a> SemanticModel<'a> {
|
|||
return None;
|
||||
}
|
||||
|
||||
self.scopes[scope_id].get(qualified_name)
|
||||
let binding_id = self.scopes[scope_id].get(qualified_name)?;
|
||||
if !self.bindings[binding_id].kind.is_submodule_import() {
|
||||
return None;
|
||||
}
|
||||
|
||||
Some(binding_id)
|
||||
}
|
||||
|
||||
/// Resolves the [`Expr`] to a fully-qualified symbol-name, if `value` resolves to an imported
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue