Open
Description
Bug description
Below code leads to used-before-assignment error for func2:
from module import get_module_name
module_name = get_module_name()
if module_name == "module1":
from module1 import func1
elif module_name == "module2":
from module2 import func1, func2
elif module_name == "module3":
from module3 import func1
else:
assert False
if __name__ == "__main__":
func1()
func2()
Adding func2 import from module3:
from module import get_module_name
module_name = get_module_name()
if module_name == "module1":
from module1 import func1
elif module_name == "module2":
from module2 import func1, func2
elif module_name == "module3":
from module3 import func1, func2
else:
assert False
if __name__ == "__main__":
func1()
func2()
For some reason error changed to possibly-used-before-assignment.
Configuration
Without pylintrc.
Command used
pylint -sn --disable=E0401,C0114 test.py
Pylint output
$ pylint -sn --disable=E0401,C0114 test.py
************* Module test
test.py:15:4: E0601: Using variable 'func2' before assignment (used-before-assignment)
$ pylint -sn --disable=E0401,C0114 test.py
************* Module test
test.py:15:4: E0606: Possibly using variable 'func2' before assignment (possibly-used-before-assignment)
Expected behavior
E0601 error for both cases.
Pylint version
pylint 3.2.6
astroid 3.2.4
Python 3.8.10 (default, Jul 29 2024, 17:02:10)
[GCC 9.4.0]
OS / Environment
Ubuntu 20.04
Additional dependencies
No response