tree 6c83f621b27d39a318c96b46bfe42c8110abf099
parent c8bae06919674b9846e3ff864b0a44592db888eb
author Jukka Lehtosalo <jukka.lehtosalo@iki.fi> 1614964966 +0000
committer Jukka Lehtosalo <jukka.lehtosalo@iki.fi> 1614966529 +0000

Enable local partial types by default

Local partial types prevent inferring the variable type from two
separate scopes. For example, this is no longer accepted:

```
class A:
    x = []  # Need type annotation here

    def f(self) -> None:
        self.x.append(1)
```

Also, initialization with just `None` is usually not allowed and
requires a type annotation:

```
x = None  # Error
y: None = None  # OK
z: Optional[str] = None  # OK
```

The mypy daemon only supports local partial types. This makes the
daemon and non-daemon modes behave consistently.

Add the `--no-local-partial-types` flag to revert to the old behavior.

Also make local partial types behavior closer to the old behavior
in a few cases:

- allow `x = f(...)` even if the return type of `f(...)` is `None` when
  `f` is generic
- allow `x = None` in an enum class body
- allor for loop index variable to have an inferred `None` type
