Skip to content

Commit 62ea5b0

Browse files
JukkaLsvalentin
authored andcommitted
Various updates to changelog for 1.10 (#17158)
1 parent 2f0864c commit 62ea5b0

File tree

1 file changed

+108
-51
lines changed

1 file changed

+108
-51
lines changed

CHANGELOG.md

+108-51
Original file line numberDiff line numberDiff line change
@@ -12,64 +12,121 @@ We’ve just uploaded mypy 1.10 to the Python Package Index ([PyPI](https://pypi
1212

1313
You can read the full documentation for this release on [Read the Docs](http://mypy.readthedocs.io).
1414

15-
**TODO**
16-
- Implement TypeIs (PEP 742) (Jelle Zijlstra, PR [16898](https://github.com/python/mypy/pull/16898))
17-
- Error handling for recursive TypeVar defaults (PEP 696) (Marc Mueller, PR [16925](https://github.com/python/mypy/pull/16925))
18-
- Add basic support for recursive TypeVar defaults (PEP 696) (Marc Mueller, PR [16878](https://github.com/python/mypy/pull/16878))
15+
#### Support TypeIs (PEP 742)
1916

20-
#### Other Notable Changes and Fixes
21-
- fix: incorrect returned type of access descriptors on unions of types (Matthieu Devlin, PR [16604](https://github.com/python/mypy/pull/16604))
22-
- Fix crash when expanding invalid Unpack in a `Callable` alias (Ali Hamdan, PR [17028](https://github.com/python/mypy/pull/17028))
23-
- Fix string formatting for string enums (roberfi, PR [16555](https://github.com/python/mypy/pull/16555))
24-
- Narrow individual items when matching a tuple to a sequence pattern (Loïc Simon, PR [16905](https://github.com/python/mypy/pull/16905))
25-
- Add TypeGuard and TypeIs traversing in TypeTraverserVisitor (Evgeniy Slobodkin, PR [17071](https://github.com/python/mypy/pull/17071))
26-
- Improve error message for bound typevar in TypeAliasType (Ali Hamdan, PR [17053](https://github.com/python/mypy/pull/17053))
27-
- Fix TypedDict init from Type with optional keys (Marc Mueller, PR [17068](https://github.com/python/mypy/pull/17068))
28-
- Improve yield from inference for unions of generators (Shantanu, PR [16717](https://github.com/python/mypy/pull/16717))
29-
- Support `TypeAliasType` in a class scope (Ali Hamdan, PR [17038](https://github.com/python/mypy/pull/17038))
30-
- attrs: Fix emulating hash method logic (Hashem, PR [17016](https://github.com/python/mypy/pull/17016))
31-
- Use lower-case generics more consistently in error messages (Jukka Lehtosalo, PR [17035](https://github.com/python/mypy/pull/17035))
32-
- Revert "Revert use of `ParamSpec` for `functools.wraps`" (Tamir Duberstein, PR [16942](https://github.com/python/mypy/pull/16942))
33-
- Support `TypeAliasType` (Ali Hamdan, PR [16926](https://github.com/python/mypy/pull/16926))
34-
- Fix type narrowing for types.EllipsisType (Shantanu, PR [17003](https://github.com/python/mypy/pull/17003))
35-
- Disallow all super calls to methods with trivial bodies (Shantanu, PR [16756](https://github.com/python/mypy/pull/16756))
36-
- Fix single item enum match type exhaustion (Oskari Lehto, PR [16966](https://github.com/python/mypy/pull/16966))
37-
- Fix inference with UninhabitedType (Marc Mueller, PR [16994](https://github.com/python/mypy/pull/16994))
38-
- Allow TypedDict initialization from Type (Marc Mueller, PR [16963](https://github.com/python/mypy/pull/16963))
39-
- Fix override checking for decorated property (Shantanu, PR [16856](https://github.com/python/mypy/pull/16856))
40-
- Fix duplicate word in protocols.rst (hesam, PR [16950](https://github.com/python/mypy/pull/16950))
41-
- Workaround parenthesised context manager issue (Shantanu, PR [16949](https://github.com/python/mypy/pull/16949))
42-
- Fix narrowing on match with function subject (Edward Paget, PR [16503](https://github.com/python/mypy/pull/16503))
43-
- Allow inferring +int to be a Literal (Spencer Brown, PR [16910](https://github.com/python/mypy/pull/16910))
17+
Mypy now supports `TypeIs` ([PEP 742](https://peps.python.org/pep-0742/)), which allows
18+
functions to narrow the type of a value, similar to `isinstance()`. Unlike `TypeGuard`,
19+
`TypeIs` can narrow in both the `if` and `else` branches of an if statement:
4420

45-
#### Stubgen Improvements
46-
- stubgen: Preserve empty tuple annotation (Ali Hamdan, PR [16907](https://github.com/python/mypy/pull/16907))
47-
- stubgen: Add support for PEP 570 positional-only parameters (Ali Hamdan, PR [16904](https://github.com/python/mypy/pull/16904))
48-
- stubgen: Replace obsolete typing aliases with builtin containers (Ali Hamdan, PR [16780](https://github.com/python/mypy/pull/16780))
49-
- stubgen: Fix generated dataclass `__init__` signature (Ali Hamdan, PR [16906](https://github.com/python/mypy/pull/16906))
21+
```python
22+
from typing_extensions import TypeIs
5023

51-
#### Stubtest Improvements
52-
- stubtest: correct type annotations in _Arguments (Sam Xifaras, PR [16897](https://github.com/python/mypy/pull/16897))
24+
def is_str(s: object) -> TypeIs[str]:
25+
return isinstance(s, str)
26+
27+
def f(o: str | int) -> None:
28+
if is_str(o):
29+
# Type of o is 'str'
30+
...
31+
else:
32+
# Type of o is 'int'
33+
...
34+
```
35+
36+
`TypeIs` will be added to the `typing` module in Python 3.13, but it
37+
can be used on earlier Python versions by importing it from
38+
`typing_extensions`.
39+
40+
This feature was contributed by Jelle Zijlstra (PR [16898](https://github.com/python/mypy/pull/16898)).
41+
42+
#### Support TypeVar Defaults (PEP 696)
43+
44+
[PEP 696](https://peps.python.org/pep-0696/) adds support for type parameter defaults.
45+
Example:
46+
47+
```python
48+
from typing import Generic
49+
from typing_extensions import TypeVar
50+
51+
T = TypeVar("T", default=int)
52+
53+
class C(Generic[T]):
54+
...
55+
56+
x: C = ...
57+
y: C[str] = ...
58+
reveal_type(x) # C[int], because of the default
59+
reveal_type(y) # C[str]
60+
```
61+
62+
TypeVar defaults will be added to the `typing` module in Python 3.13, but they
63+
can be used with earlier Python releases by importing `TypeVar` from
64+
`typing_extensions`.
65+
66+
This feature was contributed by Marc Mueller (PR [16878](https://github.com/python/mypy/pull/16878)
67+
and PR [16925](https://github.com/python/mypy/pull/16925)).
68+
69+
#### Detect Additional Unsafe Uses of super()
70+
71+
Mypy will reject unsafe uses of `super()` more consistently, when the target has a
72+
trivial (empty) body. Example:
73+
74+
```python
75+
class Proto(Protocol):
76+
def method(self) -> int: ...
77+
78+
class Sub(Proto):
79+
def method(self) -> int:
80+
return super().meth() # Error (unsafe)
81+
```
82+
83+
This feature was contributed by Shantanu (PR [16756](https://github.com/python/mypy/pull/16756)).
84+
85+
#### Stubgen Improvements
86+
- Preserve empty tuple annotation (Ali Hamdan, PR [16907](https://github.com/python/mypy/pull/16907))
87+
- Add support for PEP 570 positional-only parameters (Ali Hamdan, PR [16904](https://github.com/python/mypy/pull/16904))
88+
- Replace obsolete typing aliases with builtin containers (Ali Hamdan, PR [16780](https://github.com/python/mypy/pull/16780))
89+
- Fix generated dataclass `__init__` signature (Ali Hamdan, PR [16906](https://github.com/python/mypy/pull/16906))
5390

5491
#### Mypyc Improvements
55-
- [mypyc] Refactor: add two list primitive ops (Jukka Lehtosalo, PR [17058](https://github.com/python/mypy/pull/17058))
56-
- [mypyc] Refactor: use primitive op for initializing list item (Jukka Lehtosalo, PR [17056](https://github.com/python/mypy/pull/17056))
57-
- [mypyc] Refactor: move tagged int related code to mypyc.lower.int_ops (Jukka Lehtosalo, PR [17052](https://github.com/python/mypy/pull/17052))
58-
- [mypyc] Implement lowering for remaining tagged integer comparisons (Jukka Lehtosalo, PR [17040](https://github.com/python/mypy/pull/17040))
59-
- [mypyc] Implement lowering pass and add primitives for int (in)equality (Jukka Lehtosalo, PR [17027](https://github.com/python/mypy/pull/17027))
60-
- [mypyc] Optimize away some bool/bit registers (Jukka Lehtosalo, PR [17022](https://github.com/python/mypy/pull/17022))
61-
- [mypyc] Provide an easier way to define IR-to-IR transforms (Jukka Lehtosalo, PR [16998](https://github.com/python/mypy/pull/16998))
62-
- [mypyc] Remangle redefined names produced by async with (Richard Si, PR [16408](https://github.com/python/mypy/pull/16408))
63-
- [mypyc] Optimize TYPE_CHECKING to False at Runtime (Srinivas Lade, PR [16263](https://github.com/python/mypy/pull/16263))
64-
- [mypyc] Fix compilation of unreachable comprehensions (Richard Si, PR [15721](https://github.com/python/mypy/pull/15721))
65-
- [mypyc] Don't crash on non-inlinable final local reads (Richard Si, PR [15719](https://github.com/python/mypy/pull/15719))
92+
93+
- Provide an easier way to define IR-to-IR transforms (Jukka Lehtosalo, PR [16998](https://github.com/python/mypy/pull/16998))
94+
- Implement lowering pass and add primitives for int (in)equality (Jukka Lehtosalo, PR [17027](https://github.com/python/mypy/pull/17027))
95+
- Implement lowering for remaining tagged integer comparisons (Jukka Lehtosalo, PR [17040](https://github.com/python/mypy/pull/17040))
96+
- Optimize away some bool/bit registers (Jukka Lehtosalo, PR [17022](https://github.com/python/mypy/pull/17022))
97+
- Remangle redefined names produced by async with (Richard Si, PR [16408](https://github.com/python/mypy/pull/16408))
98+
- Optimize TYPE_CHECKING to False at Runtime (Srinivas Lade, PR [16263](https://github.com/python/mypy/pull/16263))
99+
- Fix compilation of unreachable comprehensions (Richard Si, PR [15721](https://github.com/python/mypy/pull/15721))
100+
- Don't crash on non-inlinable final local reads (Richard Si, PR [15719](https://github.com/python/mypy/pull/15719))
101+
- Support `TypeAliasType` (Ali Hamdan, PR [16926](https://github.com/python/mypy/pull/16926))
66102

67103
#### Documentation Improvements
68-
- Update running_mypy.rst add closing bracket (Roman Solomatin, PR [17046](https://github.com/python/mypy/pull/17046))
69-
- Docs: docstrings in checker.py, ast_helpers.py (Ihor, PR [16908](https://github.com/python/mypy/pull/16908))
70-
- docs: Add missing ClassVar import (youkaichao, PR [16962](https://github.com/python/mypy/pull/16962))
71-
- Docs: Update `TypedDict` import statements (Riccardo Di Maio, PR [16958](https://github.com/python/mypy/pull/16958))
72-
- Docs: adding missing `mutable-override` to section title (James Braza, PR [16886](https://github.com/python/mypy/pull/16886))
104+
- Import `TypedDict` from `typing` instead of `typing_extensions` (Riccardo Di Maio, PR [16958](https://github.com/python/mypy/pull/16958))
105+
- Add missing `mutable-override` to section title (James Braza, PR [16886](https://github.com/python/mypy/pull/16886))
106+
107+
#### Error Reporting Improvements
108+
109+
- Improve error message for bound TypeVar in TypeAliasType (Ali Hamdan, PR [17053](https://github.com/python/mypy/pull/17053))
110+
- Use lower-case generics more consistently in error messages (Jukka Lehtosalo, PR [17035](https://github.com/python/mypy/pull/17035))
111+
112+
#### Other Notable Changes and Fixes
113+
- Fix incorrect inferred type when accessing descriptor on union type (Matthieu Devlin, PR [16604](https://github.com/python/mypy/pull/16604))
114+
- Fix crash when expanding invalid `Unpack` in a `Callable` alias (Ali Hamdan, PR [17028](https://github.com/python/mypy/pull/17028))
115+
- Fix false positive when string formatting with string enum (roberfi, PR [16555](https://github.com/python/mypy/pull/16555))
116+
- Narrow individual items when matching a tuple to a sequence pattern (Loïc Simon, PR [16905](https://github.com/python/mypy/pull/16905))
117+
- Fix false positive from type variable within TypeGuard or TypeIs (Evgeniy Slobodkin, PR [17071](https://github.com/python/mypy/pull/17071))
118+
- Improve `yield from` inference for unions of generators (Shantanu, PR [16717](https://github.com/python/mypy/pull/16717))
119+
- Support `TypeAliasType` in a class scope (Ali Hamdan, PR [17038](https://github.com/python/mypy/pull/17038))
120+
- Fix emulating hash method logic in `attrs` classes (Hashem, PR [17016](https://github.com/python/mypy/pull/17016))
121+
- Add reverted typeshed commit that uses `ParamSpec` for `functools.wraps` (Tamir Duberstein, PR [16942](https://github.com/python/mypy/pull/16942))
122+
- Fix type narrowing for `types.EllipsisType` (Shantanu, PR [17003](https://github.com/python/mypy/pull/17003))
123+
- Fix single item enum match type exhaustion (Oskari Lehto, PR [16966](https://github.com/python/mypy/pull/16966))
124+
- Improve type inference with empty collections (Marc Mueller, PR [16994](https://github.com/python/mypy/pull/16994))
125+
- Fix override checking for decorated property (Shantanu, PR [16856](https://github.com/python/mypy/pull/16856))
126+
- Fix narrowing on match with function subject (Edward Paget, PR [16503](https://github.com/python/mypy/pull/16503))
127+
- Allow `+N` within `Literal[...]` (Spencer Brown, PR [16910](https://github.com/python/mypy/pull/16910))
128+
- Experimental: Support TypedDict within `type[...]` (Marc Mueller, PR [16963](https://github.com/python/mypy/pull/16963))
129+
- Experimtental: Fix issue with TypedDict with optional keys in `type[...]` (Marc Mueller, PR [17068](https://github.com/python/mypy/pull/17068))
73130

74131
#### Acknowledgements
75132
Thanks to all mypy contributors who contributed to this release:

0 commit comments

Comments
 (0)