Skip to content

Commit f0a8c69

Browse files
committed
Update CHANGELOG for mypy 1.11 (#17540)
Added additional sections for major features and did various other updates.
1 parent 371f780 commit f0a8c69

File tree

1 file changed

+131
-57
lines changed

1 file changed

+131
-57
lines changed

CHANGELOG.md

+131-57
Original file line numberDiff line numberDiff line change
@@ -11,125 +11,199 @@ We’ve just uploaded mypy 1.11 to the Python Package Index ([PyPI](https://pypi
1111

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

14-
#### Additional support for PEP 695
14+
#### Support Python 3.12 Syntax for Generics (PEP 695)
1515

16-
Mypy now has experimental support for the new type parameter syntax introduced in Python 3.12 ([PEP 695](https://peps.python.org/pep-0695/)).
17-
This feature is still experimental and must be enabled with the `--enable-incomplete-feature=NewGenericSyntax` flag.
16+
Mypy now supports the new type parameter syntax introduced in Python 3.12 ([PEP 695](https://peps.python.org/pep-0695/)).
17+
This feature is still experimental and must be enabled with the `--enable-incomplete-feature=NewGenericSyntax` flag, or with `enable_incomplete_feature = NewGenericSyntax` in the mypy configuration file.
18+
We plan to enable this by default in the next mypy feature release.
1819

1920
This example demonstrates the new syntax:
20-
```python
2121

22+
```python
23+
# Generic function
2224
def f[T](x: T) -> T: ...
2325

2426
reveal_type(f(1)) # Revealed type is 'int'
27+
28+
# Generic class
29+
class C[T]:
30+
def __init__(self, x: T) -> None:
31+
self.x = x
32+
33+
c = C('a')
34+
reveal_type(c.x) # Revealed type is 'str'
35+
36+
# Type alias
37+
type A[T] = C[list[T]]
2538
```
2639

27-
This feature was contributed by Jukka Lehtosalo (PR [17233](https://github.com/python/mypy/pull/17233)).
40+
This feature was contributed by Jukka Lehtosalo.
2841

2942

3043
#### Support for `functools.partial`
3144

32-
Mypy now typechecks uses of `functools.partial`, which previous mypy would always accept.
33-
This example would previously pass:
45+
Mypy now type checks uses of `functools.partial`. Previously mypy would accept arbitrary arguments.
46+
47+
This example will now produce an error:
3448

3549
```python
3650
from functools import partial
3751

3852
def f(a: int, b: str) -> None: ...
3953

4054
g = partial(f, 1)
41-
g(1) # error: Argument 1 to "f" has incompatible type "int"; expected "str" [arg-type]
55+
56+
# Argument has incompatible type "int"; expected "str"
57+
g(11)
4258
```
4359

4460
This feature was contributed by Shantanu (PR [16939](https://github.com/python/mypy/pull/16939)).
4561

4662

47-
#### Changes to stubtest
48-
* Stubtest: ignore `_ios_support` (Alex Waygood, PR [17270](https://github.com/python/mypy/pull/17270))
49-
* stubtest: changes for py313 (Shantanu, PR [17261](https://github.com/python/mypy/pull/17261))
63+
#### Stricter Checks for Untyped Overrides
64+
65+
Past mypy versions didn't check if untyped methods were compatible with overridden methods. This would result in false negatives. Now mypy performs these checks when using `--check-untyped-defs`.
66+
67+
For example, this now generates an error if using `--check-untyped-defs`:
68+
69+
```python
70+
class Base:
71+
def f(self, x: int = 0) -> None: ...
72+
73+
class Derived(Base):
74+
# Signature incompatible with "Base"
75+
def f(self): ...
76+
```
77+
78+
This feature was contributed by Steven Troxler (PR [17276](https://github.com/python/mypy/pull/17276)).
79+
80+
81+
#### Type Inference Improvements
82+
83+
The new polymorphic inference algorithm introduced in mypy 1.5 is now used in more situations. This improves type inference involving generic higher-order functions, in particular.
84+
85+
This feature was contributed by Ivan Levkivskyi (PR [17348](https://github.com/python/mypy/pull/17348)).
86+
87+
Mypy now uses unions of tuple item types in certain contexts to enable more precise inferred types. Example:
88+
89+
```python
90+
for x in (1, 'x'):
91+
# Previously inferred as 'object'
92+
reveal_type(x) # Revealed type is 'int | str'
93+
```
94+
95+
This was also contributed by Ivan Levkivskyi (PR [17408](https://github.com/python/mypy/pull/17408)).
96+
5097

98+
#### Improvements to Detection of Overlapping Overloads
5199

52-
#### Changes to stubgen
53-
* stubgen: Gracefully handle invalid `Optional` and recognize aliases to PEP 604 unions (Ali Hamdan, PR [17386](https://github.com/python/mypy/pull/17386))
54-
* Fix stubgen for Python 3.13 (Jelle Zijlstra, PR [17290](https://github.com/python/mypy/pull/17290))
55-
* stubgen: preserve enum value initialisers (Shantanu, PR [17125](https://github.com/python/mypy/pull/17125))
100+
The details of how mypy checks if two `@overload` signatures are unsafely overlapping were overhauled. This both fixes some false positives, and allows mypy to detect additional unsafe signatures.
56101

102+
This feature was contributed by Ivan Levkivskyi (PR [17392](https://github.com/python/mypy/pull/17392)).
57103

58-
#### Changes to mypyc
59-
* [mypyc] Sync pythoncapi_compat.h (Jukka Lehtosalo, PR [17390](https://github.com/python/mypy/pull/17390))
60-
* [mypyc] Support Python 3.12 type alias syntax (PEP 695) (Jukka Lehtosalo, PR [17384](https://github.com/python/mypy/pull/17384))
61-
* [mypyc] Support new syntax for generic functions and classes (PEP 695) (Jukka Lehtosalo, PR [17357](https://github.com/python/mypy/pull/17357))
62-
* [mypyc] Fix ParamSpec (Shantanu, PR [17309](https://github.com/python/mypy/pull/17309))
63-
* [mypyc] Inline fast paths of integer unboxing operations (Jukka Lehtosalo, PR [17266](https://github.com/python/mypy/pull/17266))
64-
* [mypyc] Inline tagged integer arithmetic and bitwise operations (Jukka Lehtosalo, PR [17265](https://github.com/python/mypy/pull/17265))
65-
* [mypyc] Allow specifying primitives as pure (Jukka Lehtosalo, PR [17263](https://github.com/python/mypy/pull/17263))
66104

105+
#### Better Support for Type Hints in Expressions
67106

68-
#### Changes to error reporting
107+
Mypy now allows more expressions that evaluate to valid type annotations in all expression contexts. The inferred types of these expressions are also sometimes more precise. Previously they were often `object`.
108+
109+
This example uses a union type that includes a callable type as an expression, and it no longer generates an error:
110+
111+
```python
112+
from typing import Callable
113+
114+
print(Callable[[], int] | None) # No error
115+
```
116+
117+
This feature was contributed by Jukka Lehtosalo (PR [17404](https://github.com/python/mypy/pull/17404)).
118+
119+
120+
#### Mypyc Improvements
121+
122+
Mypyc now supports the new syntax for generics introduced in Python 3.12 (see above). Another notable improvement is signficantly faster basic operations on `int` values.
123+
124+
* Support Python 3.12 syntax for generic functions and classes (Jukka Lehtosalo, PR [17357](https://github.com/python/mypy/pull/17357))
125+
* Support Python 3.12 type alias syntax (Jukka Lehtosalo, PR [17384](https://github.com/python/mypy/pull/17384))
126+
* Fix ParamSpec (Shantanu, PR [17309](https://github.com/python/mypy/pull/17309))
127+
* Inline fast paths of integer unboxing operations (Jukka Lehtosalo, PR [17266](https://github.com/python/mypy/pull/17266))
128+
* Inline tagged integer arithmetic and bitwise operations (Jukka Lehtosalo, PR [17265](https://github.com/python/mypy/pull/17265))
129+
* Allow specifying primitives as pure (Jukka Lehtosalo, PR [17263](https://github.com/python/mypy/pull/17263))
130+
131+
132+
#### Changes to Stubtest
133+
* Ignore `_ios_support` (Alex Waygood, PR [17270](https://github.com/python/mypy/pull/17270))
134+
* Improve support for Python 3.13 (Shantanu, PR [17261](https://github.com/python/mypy/pull/17261))
135+
136+
137+
#### Changes to Stubgen
138+
* Gracefully handle invalid `Optional` and recognize aliases to PEP 604 unions (Ali Hamdan, PR [17386](https://github.com/python/mypy/pull/17386))
139+
* Fix for Python 3.13 (Jelle Zijlstra, PR [17290](https://github.com/python/mypy/pull/17290))
140+
* Preserve enum value initialisers (Shantanu, PR [17125](https://github.com/python/mypy/pull/17125))
141+
142+
143+
#### Miscellaneous New Features
144+
* Add error format support and JSON output option via `--output json` (Tushar Sadhwani, PR [11396](https://github.com/python/mypy/pull/11396))
145+
* Support `enum.member` in Python 3.11+ (Nikita Sobolev, PR [17382](https://github.com/python/mypy/pull/17382))
146+
* Support `enum.nonmember` in Python 3.11+ (Nikita Sobolev, PR [17376](https://github.com/python/mypy/pull/17376))
147+
* Support `namedtuple.__replace__` in Python 3.13 (Shantanu, PR [17259](https://github.com/python/mypy/pull/17259))
148+
* Support `rename=True` in collections.namedtuple (Jelle Zijlstra, PR [17247](https://github.com/python/mypy/pull/17247))
149+
* Add support for `__spec__` (Shantanu, PR [14739](https://github.com/python/mypy/pull/14739))
150+
151+
152+
#### Changes to Error Reporting
153+
* Mention `--enable-incomplete-feature=NewGenericSyntax` in messages (Shantanu, PR [17462](https://github.com/python/mypy/pull/17462))
69154
* Do not report plugin-generated methods with `explicit-override` (sobolevn, PR [17433](https://github.com/python/mypy/pull/17433))
70-
* Fix explicit type for partial (Ivan Levkivskyi, PR [17424](https://github.com/python/mypy/pull/17424))
71-
* Re-work overload overlap logic (Ivan Levkivskyi, PR [17392](https://github.com/python/mypy/pull/17392))
72-
* Use namespaces for function type variables (Ivan Levkivskyi, PR [17311](https://github.com/python/mypy/pull/17311))
155+
* Use and display namespaces for function type variables (Ivan Levkivskyi, PR [17311](https://github.com/python/mypy/pull/17311))
73156
* Fix false positive for Final local scope variable in Protocol (GiorgosPapoutsakis, PR [17308](https://github.com/python/mypy/pull/17308))
74157
* Use Never in more messages, use ambiguous in join (Shantanu, PR [17304](https://github.com/python/mypy/pull/17304))
75158
* Log full path to config file in verbose output (dexterkennedy, PR [17180](https://github.com/python/mypy/pull/17180))
76-
* Added [prop-decorator] code for unsupported property decorators (#14461) (Christopher Barber, PR [16571](https://github.com/python/mypy/pull/16571))
159+
* Added `[prop-decorator]` code for unsupported property decorators (#14461) (Christopher Barber, PR [16571](https://github.com/python/mypy/pull/16571))
77160
* Suppress second error message with `:=` and `[truthy-bool]` (Nikita Sobolev, PR [15941](https://github.com/python/mypy/pull/15941))
78-
* Error for assignment of functional Enum to variable of different name (Shantanu, PR [16805](https://github.com/python/mypy/pull/16805))
79-
* Add Error format support, and JSON output option (Tushar Sadhwani, PR [11396](https://github.com/python/mypy/pull/11396))
161+
* Generate error for assignment of functional Enum to variable of different name (Shantanu, PR [16805](https://github.com/python/mypy/pull/16805))
162+
* Fix error reporting on cached run after uninstallation of third party library (Shantanu, PR [17420](https://github.com/python/mypy/pull/17420))
80163

81164

82-
#### Fixes for crashes
165+
#### Fixes for Crashes
83166
* Fix daemon crash on invalid type in TypedDict (Ivan Levkivskyi, PR [17495](https://github.com/python/mypy/pull/17495))
84-
* Some cleanup in partial plugin (Ivan Levkivskyi, PR [17423](https://github.com/python/mypy/pull/17423))
167+
* Fix crash and bugs related to `partial()` (Ivan Levkivskyi, PR [17423](https://github.com/python/mypy/pull/17423))
85168
* Fix crash when overriding with unpacked TypedDict (Ivan Levkivskyi, PR [17359](https://github.com/python/mypy/pull/17359))
86169
* Fix crash on TypedDict unpacking for ParamSpec (Ivan Levkivskyi, PR [17358](https://github.com/python/mypy/pull/17358))
87170
* Fix crash involving recursive union of tuples (Ivan Levkivskyi, PR [17353](https://github.com/python/mypy/pull/17353))
88171
* Fix crash on invalid callable property override (Ivan Levkivskyi, PR [17352](https://github.com/python/mypy/pull/17352))
89172
* Fix crash on unpacking self in NamedTuple (Ivan Levkivskyi, PR [17351](https://github.com/python/mypy/pull/17351))
90173
* Fix crash on recursive alias with an optional type (Ivan Levkivskyi, PR [17350](https://github.com/python/mypy/pull/17350))
91-
* Fix type comments crash inside generic definitions (Bénédikt Tran, PR [16849](https://github.com/python/mypy/pull/16849))
174+
* Fix crash on type comment inside generic definitions (Bénédikt Tran, PR [16849](https://github.com/python/mypy/pull/16849))
92175

93176

94-
#### Changes to documentation
95-
* Mention --enable-incomplete-feature=NewGenericSyntax (Shantanu, PR [17462](https://github.com/python/mypy/pull/17462))
96-
* Use inline config in the optional error codes docs (Shantanu, PR [17374](https://github.com/python/mypy/pull/17374))
97-
* docs: Use lower-case generics (Seo Sanghyeon, PR [17176](https://github.com/python/mypy/pull/17176))
177+
#### Changes to Documentation
178+
* Use inline config in documentation for optional error codes (Shantanu, PR [17374](https://github.com/python/mypy/pull/17374))
179+
* Use lower-case generics in documentation (Seo Sanghyeon, PR [17176](https://github.com/python/mypy/pull/17176))
98180
* Add documentation for show-error-code-links (GiorgosPapoutsakis, PR [17144](https://github.com/python/mypy/pull/17144))
99181
* Update CONTRIBUTING.md to include commands for Windows (GiorgosPapoutsakis, PR [17142](https://github.com/python/mypy/pull/17142))
100182

101183

102-
#### Other notable contributions
184+
#### Other Notable Improvements and Fixes
103185
* Fix ParamSpec inference against TypeVarTuple (Ivan Levkivskyi, PR [17431](https://github.com/python/mypy/pull/17431))
186+
* Fix explicit type for `partial` (Ivan Levkivskyi, PR [17424](https://github.com/python/mypy/pull/17424))
104187
* Always allow lambda calls (Ivan Levkivskyi, PR [17430](https://github.com/python/mypy/pull/17430))
105-
* Fix error reporting on cached run after uninstallation of third party library (Shantanu, PR [17420](https://github.com/python/mypy/pull/17420))
106188
* Fix isinstance checks with PEP 604 unions containing None (Shantanu, PR [17415](https://github.com/python/mypy/pull/17415))
107-
* Use (simplified) unions instead of joins for tuple fallbacks (Ivan Levkivskyi, PR [17408](https://github.com/python/mypy/pull/17408))
108189
* Fix self-referential upper bound in new-style type variables (Ivan Levkivskyi, PR [17407](https://github.com/python/mypy/pull/17407))
109190
* Consider overlap between instances and callables (Ivan Levkivskyi, PR [17389](https://github.com/python/mypy/pull/17389))
110-
* Support `enum.member` for python3.11+ (Nikita Sobolev, PR [17382](https://github.com/python/mypy/pull/17382))
111191
* Allow new-style self-types in classmethods (Ivan Levkivskyi, PR [17381](https://github.com/python/mypy/pull/17381))
112-
* Support `enum.nonmember` for python3.11+ (Nikita Sobolev, PR [17376](https://github.com/python/mypy/pull/17376))
113192
* Fix isinstance with type aliases to PEP 604 unions (Shantanu, PR [17371](https://github.com/python/mypy/pull/17371))
114193
* Properly handle unpacks in overlap checks (Ivan Levkivskyi, PR [17356](https://github.com/python/mypy/pull/17356))
115194
* Fix type application for classes with generic constructors (Ivan Levkivskyi, PR [17354](https://github.com/python/mypy/pull/17354))
116-
* Use polymorphic inference in unification (Ivan Levkivskyi, PR [17348](https://github.com/python/mypy/pull/17348))
117-
* Update 'typing_extensions' to >=4.6.0 to fix python 3.12 error (Ben Brown, PR [17312](https://github.com/python/mypy/pull/17312))
118-
* Avoid does not return error in lambda (Shantanu, PR [17294](https://github.com/python/mypy/pull/17294))
119-
* Fix for bug with descriptors in non-strict-optional (Max Murin, PR [17293](https://github.com/python/mypy/pull/17293))
195+
* Update `typing_extensions` to >=4.6.0 to fix Python 3.12 error (Ben Brown, PR [17312](https://github.com/python/mypy/pull/17312))
196+
* Avoid "does not return" error in lambda (Shantanu, PR [17294](https://github.com/python/mypy/pull/17294))
197+
* Fix bug with descriptors in non-strict-optional mode (Max Murin, PR [17293](https://github.com/python/mypy/pull/17293))
120198
* Don’t leak unreachability from lambda body to surrounding scope (Anders Kaseorg, PR [17287](https://github.com/python/mypy/pull/17287))
121-
* Validate more about overrides on untyped methods (Steven Troxler, PR [17276](https://github.com/python/mypy/pull/17276))
122-
* Fix case involving non-ASCII chars on Windows (Alexander Leopold Shon, PR [17275](https://github.com/python/mypy/pull/17275))
123-
* Support namedtuple.__replace__ in Python 3.13 (Shantanu, PR [17259](https://github.com/python/mypy/pull/17259))
199+
* Fix issues with non-ASCII characters on Windows (Alexander Leopold Shon, PR [17275](https://github.com/python/mypy/pull/17275))
124200
* Fix for type narrowing of negative integer literals (gilesgc, PR [17256](https://github.com/python/mypy/pull/17256))
125-
* Support rename=True in collections.namedtuple (Jelle Zijlstra, PR [17247](https://github.com/python/mypy/pull/17247))
126-
* [dmypy] sort list of files for update by extension (Valentin Stanciu, PR [17245](https://github.com/python/mypy/pull/17245))
127-
* fix #16935 fix type of tuple[X,Y] expression (urnest, PR [17235](https://github.com/python/mypy/pull/17235))
128-
* Do not forget that a `TypedDict` was wrapped in `Unpack` after a `name-defined` error occurred. (Christoph Tyralla, PR [17226](https://github.com/python/mypy/pull/17226))
129-
* fix: annotated argument's `var` node type is explicit, not inferred (bzoracler, PR [17217](https://github.com/python/mypy/pull/17217))
130-
* Enum private attributes are not enum members (Ali Hamdan, PR [17182](https://github.com/python/mypy/pull/17182))
201+
* Fix confusion between .py and .pyi files in mypy daemon (Valentin Stanciu, PR [17245](https://github.com/python/mypy/pull/17245))
202+
* Fix type of `tuple[X, Y]` expression (urnest, PR [17235](https://github.com/python/mypy/pull/17235))
203+
* Don't forget that a `TypedDict` was wrapped in `Unpack` after a `name-defined` error occurred (Christoph Tyralla, PR [17226](https://github.com/python/mypy/pull/17226))
204+
* Mark annotated argument as having an explicit, not inferred type (bzoracler, PR [17217](https://github.com/python/mypy/pull/17217))
205+
* Don't consider Enum private attributes as enum members (Ali Hamdan, PR [17182](https://github.com/python/mypy/pull/17182))
131206
* Fix Literal strings containing pipe characters (Jelle Zijlstra, PR [17148](https://github.com/python/mypy/pull/17148))
132-
* Add support for __spec__ (Shantanu, PR [14739](https://github.com/python/mypy/pull/14739))
133207

134208

135209
#### Typeshed Updates
@@ -331,7 +405,7 @@ This feature was contributed by Shantanu (PR [16756](https://github.com/python/m
331405

332406
#### Typeshed Updates
333407

334-
Please see [git log](https://github.com/python/typeshed/commits/main?after=7c8e82fe483a40ec4cb0a2505cfdb0f3e7cc81d9+0&branch=main&path=stdlib) for full list of standard library typeshed stub changes.
408+
Please see [git log](https://github.com/python/typeshed/commits/main?after=6dda799d8ad1d89e0f8aad7ac41d2d34bd838ace+0&branch=main&path=stdlib) for full list of standard library typeshed stub changes.
335409

336410
#### Mypy 1.10.1
337411

0 commit comments

Comments
 (0)