TCH003
false positive on __all__
combined with from __future__ import annotations
#6207
Closed
Description
TCH003
seems to incorrectly trigger when re-exporting a module in __all__
if using from __future__ import annotations
.
Minimal reproducible code:
# foo.py
from __future__ import annotations
from logging import getLogger
__all__ = ("getLogger",)
def foo() -> None:
pass
$ pipx run ruff==0.0.281 foo.py
foo.py:3:21: TCH003 [*] Move standard library import `logging.getLogger` into a type-checking block
Found 1 error.
[*] 1 potentially fixable with the --fix option.
In the example above, we import getLogger
from logging
to re-export it in __all__
, and TCH003
will get triggered, although it should not.
Note that this does not trigger when removing from __future__ import annotations
. It also doesn't trigger in version 0.0.280, so this seems to be related to a change in 0.0.281.
What's even weirder is that the violation will also not trigger in the example if we remove the return type (-> None
) from the function.
Command used:
pipx run ruff==0.0.281 foo.py
Minimal Ruff settings to reproduce:
[tool.ruff]
select = [
# flake8-type-checking
"TCH",
]
Ruff version:
ruff 0.0.281