7
7
## Mypy 1.15 (Unreleased)
8
8
9
9
We’ve just uploaded mypy 1.15 to the Python Package Index ([ PyPI] ( https://pypi.org/project/mypy/ ) ).
10
- Mypy is a static type checker for Python. This release includes new features and bug fixes.
11
- You can install it as follows:
10
+ Mypy is a static type checker for Python. This release includes new features, performance
11
+ improvements and bug fixes. You can install it as follows:
12
12
13
13
python3 -m pip install -U mypy
14
14
15
15
You can read the full documentation for this release on [ Read the Docs] ( http://mypy.readthedocs.io ) .
16
16
17
17
### Performance Improvements
18
18
19
- Mypy may be 5-30 % faster. This improvement comes largely from tuning the performance of the
20
- garbage collector. Additionally, the release includes several micro-optimizations that may be
21
- impactful for very large projects.
19
+ Mypy is up to 40 % faster in some use cases . This improvement comes largely from tuning the performance
20
+ of the garbage collector. Additionally, the release includes several micro-optimizations that may
21
+ be impactful for large projects.
22
22
23
23
Contributed by Jukka Lehtosalo (PR [ 18306] ( https://github.com/python/mypy/pull/18306 ) ,
24
24
PR [ 18302] (https://github.com/python/mypy/pull/18302 , PR [ 18298] (https://github.com/python/mypy/pull/18298 ,
25
25
PR [ 18299] ( https://github.com/python/mypy/pull/18299 ) .
26
26
27
- ### Mypyc Accelerated Mypy Wheels for ` aarch64 `
27
+ ### Mypyc Accelerated Mypy Wheels for ARM Linux
28
28
29
- Mypy can compile itself to C extension modules using mypyc. This makes mypy 3-5x faster
30
- than if mypy is interpreted with pure Python. We now build and upload mypyc accelerated
31
- mypy wheels for ` manylinux_aarch64 ` to PyPI, making it easy for users on such platforms
32
- to realise this speedup.
29
+ For best performance, mypy can be compiled to C extension modules using mypyc. This makes
30
+ mypy 3-5x faster than when interpreted with pure Python. We now build and upload mypyc
31
+ accelerated mypy wheels for ` manylinux_aarch64 ` to PyPI, making it easy for Linux users on
32
+ ARM platforms to realise this speedup -- just ` pip install ` the latest mypy .
33
33
34
34
Contributed by Christian Bundy and Marc Mueller
35
35
(PR [ mypy_mypyc-wheels#76] ( https://github.com/mypyc/mypy_mypyc-wheels/pull/76 ) ,
36
36
PR [ mypy_mypyc-wheels#89] ( https://github.com/mypyc/mypy_mypyc-wheels/pull/89 ) ).
37
37
38
38
### ` --strict-bytes `
39
39
40
- By default, mypy treats an annotation of `` bytes `` as permitting `` bytearray `` and `` memoryview `` .
41
- [ PEP 688] ( https://peps.python.org/pep-0688 ) specified the removal of this special case.
42
- Use this flag to disable this behavior. ` --strict-bytes ` will be enabled by default in ** mypy 2.0** .
40
+ By default, mypy treats ` bytearray ` and ` memoryview ` values as assignable to the ` bytes `
41
+ type, for historical reasons. Use the ` --strict-bytes ` flag to disable this
42
+ behavior. [ PEP 688] ( https://peps.python.org/pep-0688 ) specified the removal of this
43
+ special case. The flag will be enabled by default in ** mypy 2.0** .
43
44
44
45
Contributed by Ali Hamdan (PR [ 18263] ( https://github.com/python/mypy/pull/18263 ) ) and
45
46
Shantanu Jain (PR [ 13952] ( https://github.com/python/mypy/pull/13952 ) ).
46
47
47
48
### Improvements to Reachability Analysis and Partial Type Handling in Loops
48
49
49
- This change results in mypy better modelling control flow within loops and hence detecting several
50
- issues it previously did not detect . In some cases, this change may require use of an additional
51
- explicit annotation of a variable.
50
+ This change results in mypy better modelling control flow within loops and hence detecting
51
+ several previously ignored issues . In some cases, this change may require additional
52
+ explicit variable annotations .
52
53
53
54
Contributed by Christoph Tyralla (PR [ 18180] ( https://github.com/python/mypy/pull/18180 ) ,
54
55
PR [ 18433] ( https://github.com/python/mypy/pull/18433 ) ).
55
56
56
- (Speaking of partial types, another reminder that mypy plans on enabling ` --local-partial-types `
57
- by default in ** mypy 2.0** ).
57
+ (Speaking of partial types, remember that we plan to enable ` --local-partial-types `
58
+ by default in ** mypy 2.0** .)
58
59
59
60
### Better Discovery of Configuration Files
60
61
@@ -68,8 +69,8 @@ Contributed by Mikhail Shiryaev and Shantanu Jain
68
69
69
70
### Better Line Numbers for Decorators and Slice Expressions
70
71
71
- Mypy now uses more correct line numbers for decorators and slice expressions. In some cases, this
72
- may necessitate changing the location of a ` # type: ignore ` comment.
72
+ Mypy now uses more correct line numbers for decorators and slice expressions. In some cases,
73
+ you may have to change the location of a ` # type: ignore ` comment.
73
74
74
75
Contributed by Shantanu Jain (PR [ 18392] ( https://github.com/python/mypy/pull/18392 ) ,
75
76
PR [ 18397] ( https://github.com/python/mypy/pull/18397 ) ).
@@ -89,13 +90,11 @@ Contributed by Marc Mueller (PR [17492](https://github.com/python/mypy/pull/1749
89
90
* Report error for nested class instead of crashing (Valentin Stanciu, PR [ 18460] ( https://github.com/python/mypy/pull/18460 ) )
90
91
* Fix ` InitVar ` for dataclasses (Advait Dixit, PR [ 18319] ( https://github.com/python/mypy/pull/18319 ) )
91
92
* Remove unnecessary mypyc files from wheels (Marc Mueller, PR [ 18416] ( https://github.com/python/mypy/pull/18416 ) )
92
- * Get capsule pointer from module instead of ` PyCapsule_Import ` (Advait Dixit, PR [ 18286] ( https://github.com/python/mypy/pull/18286 ) )
93
- * Add lowered primitive for unsafe list get item op (Jukka Lehtosalo, PR [ 18136] ( https://github.com/python/mypy/pull/18136 ) )
93
+ * Fix issues with relative imports (Advait Dixit, PR [ 18286] ( https://github.com/python/mypy/pull/18286 ) )
94
+ * Add faster primitive for some list get item operations (Jukka Lehtosalo, PR [ 18136] ( https://github.com/python/mypy/pull/18136 ) )
94
95
* Fix iteration over ` NamedTuple ` objects (Advait Dixit, PR [ 18254] ( https://github.com/python/mypy/pull/18254 ) )
95
96
* Mark mypyc package with ` py.typed ` (bzoracler, PR [ 18253] ( https://github.com/python/mypy/pull/18253 ) )
96
- * Update docstrings of IR builder classes (Jukka Lehtosalo, PR [ 18246] ( https://github.com/python/mypy/pull/18246 ) )
97
97
* Fix list index while checking for ` Enum ` class (Advait Dixit, PR [ 18426] ( https://github.com/python/mypy/pull/18426 ) )
98
- * Update ` pythoncapi_compat.h ` (Marc Mueller, PR [ 18340] ( https://github.com/python/mypy/pull/18340 ) )
99
98
100
99
### Stubgen Improvements
101
100
@@ -116,13 +115,14 @@ Contributed by Marc Mueller (PR [17492](https://github.com/python/mypy/pull/1749
116
115
* Fix crash with ` --cache-fine-grained --cache-dir=/dev/null ` (Shantanu, PR [ 18457] ( https://github.com/python/mypy/pull/18457 ) )
117
116
* Prevent crashing when ` match ` arms use name of existing callable (Stanislav Terliakov, PR [ 18449] ( https://github.com/python/mypy/pull/18449 ) )
118
117
* Gracefully handle encoding errors when writing to stdout (Brian Schubert, PR [ 18292] ( https://github.com/python/mypy/pull/18292 ) )
118
+ * Prevent crash on generic NamedTuple with unresolved typevar bound (Stanislav Terliakov, PR [ 18585] ( https://github.com/python/mypy/pull/18585 ) )
119
119
120
120
### Documentation Updates
121
121
122
- * Add ` sphinx_inline_tabs ` to docs (Marc Mueller, PR [ 18262] ( https://github.com/python/mypy/pull/18262 ) )
122
+ * Add inline tabs to documentation (Marc Mueller, PR [ 18262] ( https://github.com/python/mypy/pull/18262 ) )
123
123
* Document any ` TYPE_CHECKING ` name works (Shantanu, PR [ 18443] ( https://github.com/python/mypy/pull/18443 ) )
124
- * Update docs not to mention 3.8 where possible (sobolevn, PR [ 18455] ( https://github.com/python/mypy/pull/18455 ) )
125
- * Mention ` ignore_errors ` in exclude docs (Shantanu, PR [ 18412] ( https://github.com/python/mypy/pull/18412 ) )
124
+ * Update documentation to not mention 3.8 where possible (sobolevn, PR [ 18455] ( https://github.com/python/mypy/pull/18455 ) )
125
+ * Mention ` ignore_errors ` in exclude documentation (Shantanu, PR [ 18412] ( https://github.com/python/mypy/pull/18412 ) )
126
126
* Add ` Self ` misuse to common issues (Shantanu, PR [ 18261] ( https://github.com/python/mypy/pull/18261 ) )
127
127
128
128
### Other Notable Fixes and Improvements
@@ -132,28 +132,27 @@ Contributed by Marc Mueller (PR [17492](https://github.com/python/mypy/pull/1749
132
132
* Bind ` self ` to the class being defined when checking multiple inheritance (Stanislav Terliakov, PR [ 18465] ( https://github.com/python/mypy/pull/18465 ) )
133
133
* Fix attribute type resolution with multiple inheritance (Stanislav Terliakov, PR [ 18415] ( https://github.com/python/mypy/pull/18415 ) )
134
134
* Improve security of our GitHub Actions (sobolevn, PR [ 18413] ( https://github.com/python/mypy/pull/18413 ) )
135
- * Unwrap ` type[Union[...]] ` when solving typevar constraints (Stanislav Terliakov, PR [ 18266] ( https://github.com/python/mypy/pull/18266 ) )
135
+ * Unwrap ` type[Union[...]] ` when solving type variable constraints (Stanislav Terliakov, PR [ 18266] ( https://github.com/python/mypy/pull/18266 ) )
136
136
* Allow ` Any ` to match sequence patterns in match/case (Stanislav Terliakov, PR [ 18448] ( https://github.com/python/mypy/pull/18448 ) )
137
137
* Fix parent generics mapping when overriding generic attribute with property (Stanislav Terliakov, PR [ 18441] ( https://github.com/python/mypy/pull/18441 ) )
138
- * Dedicated error code for explicit ` Any ` (Shantanu, PR [ 18398] ( https://github.com/python/mypy/pull/18398 ) )
138
+ * Add dedicated error code for explicit ` Any ` (Shantanu, PR [ 18398] ( https://github.com/python/mypy/pull/18398 ) )
139
139
* Reject invalid ` ParamSpec ` locations (Stanislav Terliakov, PR [ 18278] ( https://github.com/python/mypy/pull/18278 ) )
140
- * Remove stubs no longer in typeshed (Shantanu, PR [ 18373] ( https://github.com/python/mypy/pull/18373 ) )
140
+ * Stop suggesting stubs that have been removed from typeshed (Shantanu, PR [ 18373] ( https://github.com/python/mypy/pull/18373 ) )
141
141
* Allow inverting ` --local-partial-types ` (Shantanu, PR [ 18377] ( https://github.com/python/mypy/pull/18377 ) )
142
142
* Allow to use ` Final ` and ` ClassVar ` after Python 3.13 (정승원, PR [ 18358] ( https://github.com/python/mypy/pull/18358 ) )
143
- * Update to include latest stubs in typeshed (Shantanu, PR [ 18366] ( https://github.com/python/mypy/pull/18366 ) )
143
+ * Update suggestions to include latest stubs in typeshed (Shantanu, PR [ 18366] ( https://github.com/python/mypy/pull/18366 ) )
144
144
* Fix ` --install-types ` masking failure details (wyattscarpenter, PR [ 17485] ( https://github.com/python/mypy/pull/17485 ) )
145
145
* Reject promotions when checking against protocols (Christoph Tyralla, PR [ 18360] ( https://github.com/python/mypy/pull/18360 ) )
146
- * Don't erase type object args in diagnostics (Shantanu, PR [ 18352] ( https://github.com/python/mypy/pull/18352 ) )
146
+ * Don't erase type object arguments in diagnostics (Shantanu, PR [ 18352] ( https://github.com/python/mypy/pull/18352 ) )
147
147
* Clarify status in ` dmypy status ` output (Kcornw, PR [ 18331] ( https://github.com/python/mypy/pull/18331 ) )
148
- * Disallow no-args generic aliases when using PEP 613 explicit aliases (Brian Schubert, PR [ 18173] ( https://github.com/python/mypy/pull/18173 ) )
148
+ * Disallow no-argument generic aliases when using PEP 613 explicit aliases (Brian Schubert, PR [ 18173] ( https://github.com/python/mypy/pull/18173 ) )
149
149
* Suppress errors for unreachable branches in conditional expressions (Brian Schubert, PR [ 18295] ( https://github.com/python/mypy/pull/18295 ) )
150
150
* Do not allow ` ClassVar ` and ` Final ` in ` TypedDict ` and ` NamedTuple ` (sobolevn, PR [ 18281] ( https://github.com/python/mypy/pull/18281 ) )
151
- * Fail typecheck if not enough or too many types provided to ` TypeAliasType ` (bzoracler, PR [ 18308] ( https://github.com/python/mypy/pull/18308 ) )
151
+ * Report error if not enough or too many types provided to ` TypeAliasType ` (bzoracler, PR [ 18308] ( https://github.com/python/mypy/pull/18308 ) )
152
152
* Use more precise context for ` TypedDict ` plugin errors (Brian Schubert, PR [ 18293] ( https://github.com/python/mypy/pull/18293 ) )
153
153
* Use more precise context for invalid type argument errors (Brian Schubert, PR [ 18290] ( https://github.com/python/mypy/pull/18290 ) )
154
154
* Do not allow ` type[] ` to contain ` Literal ` types (sobolevn, PR [ 18276] ( https://github.com/python/mypy/pull/18276 ) )
155
- * Allow bytearray/bytes comparisons with --disable-bytearray-promotion (Jukka Lehtosalo, PR [ 18255] ( https://github.com/python/mypy/pull/18255 ) )
156
- * More LSP compatibility on arg names (Shantanu, PR [ 18363] ( https://github.com/python/mypy/pull/18363 ) )
155
+ * Allow bytearray/bytes comparisons with ` --strict-bytes ` (Jukka Lehtosalo, PR [ 18255] ( https://github.com/python/mypy/pull/18255 ) )
157
156
158
157
### Acknowledgements
159
158
0 commit comments