Skip to content

Fix for F811 (Redefinition of unused) removes import needed at runtime #10384

@Hnasar

Description

@Hnasar

If you have a module and a symbol of the same name, https://docs.astral.sh/ruff/rules/redefined-while-unused/ may result in broken code.
Using version: 0.3.2

Repro

import datetime
from datetime import datetime
datetime(1, 2, 3)
$ ruff foo.py  --fix

Expected

The first import (shadowed) should be removed.

Observed

--- foo.py
+++ foo.py
@@ -2,6 +2,4 @@
 
 import datetime
 
-from datetime import datetime
-
 print(datetime(1, 2, 3))
$ python3 foo.py 
Traceback (most recent call last):
  File "foo.py", line 5, in <module>
    datetime(1, 2, 3)
TypeError: 'module' object is not callable. Did you mean: 'datetime.datetime(...)'?

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingruleImplementing or modifying a lint rule

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions