pyflakes icon indicating copy to clipboard operation
pyflakes copied to clipboard

F822 (flake8): Type-only definitions in stubs and __all__

Open srittau opened this issue 5 years ago • 3 comments

I am not sure if this is something that should be fixed in pyflakes as it only concerns stub files and is a genuine error in Python files. Please consider:

__all__ = ["foo"]

foo: int

This reports undefined name 'foo' in __all__. This is true at runtime, although this example is still useful for stubs. (flake8 3.7.9, pyflakes 2.1.1)

srittau avatar Apr 23 '20 15:04 srittau

is this the same as #486? (it also works if doing foo: int = ...)

asottile avatar Apr 23 '20 15:04 asottile

It might be due to the same root cause (foo: int not introducing a name). But I think the behavior should be a bit different. #486 is problematic since it rejects valid implementations, especially when from __future__ import annotations becomes the default. This problem only affects stubs and the warning should most likely remain for implementations.

srittau avatar Apr 23 '20 16:04 srittau

could you answer my question in #486 then?

asottile avatar Apr 23 '20 16:04 asottile