You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#!/usr/bin/env bashset -euxo pipefail
mypy --version
rm -rf .mypy_cache
: should pass, no special setting
echo -e 'def f(x) -> str:\n return ""\n'> t.py
echo -e '[mypy]\n'> mypy.ini
mypy t.py
: should fail, does not
echo -e '[mypy]\ndisallow_incomplete_defs = true'> mypy.ini
mypy t.py
: now it properly fails
rm -rf .mypy_cache
mypy t.py
reproduction output
+ mypy --version
mypy 0.620
+ rm -rf .mypy_cache
+ : should pass, no special setting
+ echo -e 'def f(x) -> str:\n return ""\n'
+ echo -e '[mypy]\n'
+ mypy t.py
+ : should fail, does not
+ echo -e '[mypy]\ndisallow_incomplete_defs = true'
+ mypy t.py
+ : now it properly fails
+ rm -rf .mypy_cache
+ mypy t.py
t.py:1: error: Function is missing a type annotation for one or more arguments
more obvious file contents
before
[mypy]
deff(x) ->str:
return""
after
[mypy]disallow_incomplete_defs = true
deff(x) ->str:
return""
The text was updated successfully, but these errors were encountered:
Confirmed. Manual repro instructions: with the t.py file above, and starting with an empty .mypy_cache:
run mypy t.py --disallow-untyped-defs (gives an error)
run mypy t.py (no error)
run mypy t.py --disallow-untyped-defs (no error!)
It seems that when the flag value changes the cache is not ignored. A possible fix would be to add "disallow_incomplete_defs" to the list of per-module options (PER_MODULE_OPTIONS) in mypy/options.py (thus also causing it to be added to OPTIONS_AFFECTING_CACHE), though I'm not sure why this option is currently not per-module.
version info
reproduction script
reproduction output
more obvious file contents
before
[mypy]
after
The text was updated successfully, but these errors were encountered: