PyCQA / pyflakes

A simple program which checks Python source files for errors
https://pypi.org/project/pyflakes
MIT License
1.36k stars 179 forks source link

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

Open srittau opened 4 years ago

srittau commented 4 years ago

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)

asottile commented 4 years ago

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

srittau commented 4 years ago

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.

asottile commented 4 years ago

could you answer my question in #486 then?