mypy gives 'not defined' error for use after global declaration
Open
Nobody has claimed this yet.
bug
false-positive
priority-1-normal
topic-runtime-semantics
topic-variable-scope
- Dominant language
- Python
- Stars
- 20.6k
- Forks
- 3.3k
- PR merge metrics
- PR metrics pending
Description
In version 0.630 and master (with Python 3.7.0), I get this error :
def foo() -> None:
global myglobal
myglobal = 2 # error: Name 'myglobal' is not defined
I thought that I should not get an error. Is this behavior correct?
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
The report provides a minimal Python reproducer but names no source file or test location. Run the example first, then trace mypy's handling of global declarations and add or update coverage for this case; done means the diagnostic matches the intended Python behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100