Skip to content

cache bug switching to disallow_incomplete_defs = true #5413

Closed

Description

@asottile

version info

$ mypy --version
mypy 0.620

reproduction script

#!/usr/bin/env bash
set -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]
def f(x) -> str:
    return ""

after

[mypy]
disallow_incomplete_defs = true
def f(x) -> str:
    return ""

Activity

  1. gvanrossum commented on Aug 1, 2018

    @gvanrossum
    Member

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugmypy got something wrong

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions