PyCQA/pyflakes

F821 with Annotated import alias

alanhdu opened this issue · 1 comments

We have a use-case where we sometimes import Annotated under a different name (since there is a naming collision with an existing object callled Annotations and Annotated[Annotations, ...] can be hard to read. Unfortunately, it looks like if we try to do this, then we fail with a false positive:

from typing_extensions import Annotated as WithSchema


def f(x: WithSchema[int, "hello"]) -> None:
    return

fails pyflakes with F821 undefined name 'hello.

Everything works fine if we do not use the Annotated as WithSchema import alias though. Would it be possible to extend the logic to also handle such a case?

cc @nishkakar @ezrilow

Confirm the "as" syntax triggers this. Thanks for raising the issue.

If you want to find the problem, very likely it is somewhere in _is_typing_helper

It may not be taking into account alias.asname c.f. https://docs.python.org/3/library/ast.html#ast.alias