Referencing name not defined yet allowed by mypy, yet error at runtime.
Open
Nobody has claimed this yet.
bug
- Dominant language
- Python
- Stars
- 20.6k
- Forks
- 3.3k
- PR merge metrics
- PR metrics pending
Description
To Reproduce
from collections.abc import Callable
class A:
@staticmethod
def b(c: Callable[[], None]) -> Callable[[], None]:
return c
@A.b
@staticmethod
def c() -> None:
pass
Expected Behavior
Invoking mypy catches error.
Actual Behavior
Success: no issues found in 1 source file
However, at runtime:
NameError: name 'A' is not defined
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Python reproducer in the issue and run it through mypy with strict settings, then compare its accepted result with Python's runtime NameError. Trace the handling of decorator expressions and class-name resolution, and add a regression test showing that this reference is rejected.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- compilers, devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100