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
{{ message }}
Repository navigation
cache bug switching to disallow_incomplete_defs = true #5413
#!/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
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.
Activity
gvanrossum commentedon Aug 1, 2018
Confirmed. Manual repro instructions: with the t.py file above, and starting with an empty .mypy_cache:
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.
Make disallow_incomplete_defs a per-module flag (#5414)