22
33## Next Release
44
5- ### Enabling ` --local-partial-types ` by Default
5+ ## Mypy 2.0
6+
7+ We’ve just uploaded mypy 2.0.0 to the Python Package Index ([ PyPI] ( https://pypi.org/project/mypy/ ) ).
8+ Mypy is a static type checker for Python. This release includes new features, performance
9+ improvements and bug fixes. There are also changes to options and defaults.
10+ You can install it as follows:
11+
12+ python3 -m pip install -U mypy
13+
14+ You can read the full documentation for this release on [ Read the Docs] ( http://mypy.readthedocs.io ) .
15+
16+ ### Enable ` --local-partial-types ` by Default
617
718This flag affects the inference of types based on assignments in other scopes.
819For now, explicitly disabling this continues to be supported, but this support will be removed
@@ -11,7 +22,7 @@ in mypy, like the daemon or the new implementation of flexible redefinitions.
1122
1223Contributed by Ivan Levkivskyi, Jukka Lehtosalo, Shantanu in [ PR 21163] ( https://github.com/python/mypy/pull/21163 ) .
1324
14- ### Enabling ` --strict-bytes ` by Default
25+ ### Enable ` --strict-bytes ` by Default
1526
1627Per [ PEP 688] ( https://peps.python.org/pep-0688 ) , mypy no longer treats ` bytearray ` and ` memoryview `
1728values as assignable to the ` bytes ` type.
@@ -72,6 +83,25 @@ in future mypy releases.
7283Contributed by Ivan Levkivskyi, with additional contributions from Emma Smith and Jukka
7384Lehtosalo.
7485
86+ Recent related changes since the last release:
87+
88+ - Freeze garbage collection in parallel workers for 4-5% speedup (Ivan Levkivskyi, PR [ 21302] ( https://github.com/python/mypy/pull/21302 ) )
89+ - Expose ` --num-workers ` and ` --native-parser ` (Ivan Levkivskyi, PR [ 21387] ( https://github.com/python/mypy/pull/21387 ) )
90+ - Split type checking into interface and implementation in parallel workers (Ivan Levkivskyi, PR [ 21119] ( https://github.com/python/mypy/pull/21119 ) )
91+ - Batch module groups for parallel processing (Ivan Levkivskyi, PR [ 21287] ( https://github.com/python/mypy/pull/21287 ) )
92+ - Optimize parallel worker startup (Ivan Levkivskyi, PR [ 21203] ( https://github.com/python/mypy/pull/21203 ) )
93+ - Parse files in parallel when possible (Ivan Levkivskyi, PR [ 21175] ( https://github.com/python/mypy/pull/21175 ) )
94+ - Use parallel parsing at all stages (Ivan Levkivskyi, PR [ 21266] ( https://github.com/python/mypy/pull/21266 ) )
95+ - Fix sequential bottleneck in parallel parsing (Jukka Lehtosalo, PR [ 21291] ( https://github.com/python/mypy/pull/21291 ) )
96+ - Fail fast when a user tries to generate reports with parallel workers (Ivan Levkivskyi, PR [ 21341] ( https://github.com/python/mypy/pull/21341 ) )
97+ - Partially support old NumPy plugin in parallel type checking (Ivan Levkivskyi, PR [ 21324] ( https://github.com/python/mypy/pull/21324 ) )
98+ - Handle reachability consistently in parallel type checking (Ivan Levkivskyi, PR [ 21322] ( https://github.com/python/mypy/pull/21322 ) )
99+ - Always respect ` @no_type_check ` in parallel type checking (Ivan Levkivskyi, PR [ 21320] ( https://github.com/python/mypy/pull/21320 ) )
100+ - Minor fixes in parallel checking (Ivan Levkivskyi, PR [ 21319] ( https://github.com/python/mypy/pull/21319 ) )
101+ - Fix plugin logic in parallel type checking (Ivan Levkivskyi, PR [ 21252] ( https://github.com/python/mypy/pull/21252 ) )
102+ - Fix Windows IPC race condition when using parallel checking (Jukka Lehtosalo, PR [ 21228] ( https://github.com/python/mypy/pull/21228 ) )
103+ - Report parallel worker exit status on receive failure (Jukka Lehtosalo, PR [ 21224] ( https://github.com/python/mypy/pull/21224 ) )
104+
75105### Drop Support for Targeting Python 3.9
76106
77107Mypy no longer supports type checking code with ` --python-version 3.9 ` .
@@ -111,6 +141,114 @@ the details.
111141
112142Contributed by Jukka Lehtosalo.
113143
144+ ### Mypyc Improvements
145+
146+ - Document ` librt.time ` (Jukka Lehtosalo, PR [ 21372] ( https://github.com/python/mypy/pull/21372 ) )
147+ - Mark ` librt.time.time() ` non-experimental (Ivan Levkivskyi, PR [ 21310] ( https://github.com/python/mypy/pull/21310 ) )
148+ - Fix ` librt.time ` primitive now that it is no longer experimental (Ivan Levkivskyi, PR [ 21318] ( https://github.com/python/mypy/pull/21318 ) )
149+ - Fix ` librt ` API/ABI version checks (Jukka Lehtosalo, PR [ 21311] ( https://github.com/python/mypy/pull/21311 ) )
150+ - Generate more type methods for classes with attribute dictionaries (Piotr Sawicki, PR [ 21290] ( https://github.com/python/mypy/pull/21290 ) )
151+ - Fix reference counting for tuple items during deallocation (Shantanu, PR [ 21245] ( https://github.com/python/mypy/pull/21245 ) )
152+ - Release new instances when ` __init__ ` raises (Shantanu, PR [ 21248] ( https://github.com/python/mypy/pull/21248 ) )
153+ - Fix ` @property ` getter memory leak (Vaggelis Danias, PR [ 21230] ( https://github.com/python/mypy/pull/21230 ) )
154+ - Fix semantics for walrus expression in tuple (Shantanu, PR [ 21249] ( https://github.com/python/mypy/pull/21249 ) )
155+ - Fix crash on import errors during cleanup (Shantanu, PR [ 21247] ( https://github.com/python/mypy/pull/21247 ) )
156+ - Fix reference leak in str index (Shantanu, PR [ 21251] ( https://github.com/python/mypy/pull/21251 ) )
157+ - Fix memory leak in integer true division (Shantanu, PR [ 21246] ( https://github.com/python/mypy/pull/21246 ) )
158+ - Fix reference leaks in ` list.clear() ` /` dict.clear() ` (Shantanu, PR [ 21244] ( https://github.com/python/mypy/pull/21244 ) )
159+ - Resolve type aliases in function specialization (esarp, PR [ 21233] ( https://github.com/python/mypy/pull/21233 ) )
160+ - Report an error if an acyclic class inherits from non-acyclic (Piotr Sawicki, PR [ 21227] ( https://github.com/python/mypy/pull/21227 ) )
161+ - Fix ` b64decode ` to match new CPython behavior (Piotr Sawicki, PR [ 21200] ( https://github.com/python/mypy/pull/21200 ) )
162+
163+ ### Fixes to Crashes
164+
165+ - Fix crash when a file does not exist during semantic analysis (Ivan Levkivskyi, PR [ 21379] ( https://github.com/python/mypy/pull/21379 ) )
166+ - Fix parallel worker crash on syntax error (Ivan Levkivskyi, PR [ 21202] ( https://github.com/python/mypy/pull/21202 ) )
167+
168+ ### Changes to Messages
169+
170+ - Improve error messages for unexpected keyword arguments in overloaded functions (Kevin Kannammalil, PR [ 20592] ( https://github.com/python/mypy/pull/20592 ) )
171+ - Don't suggest ` Foo[...] ` when ` Foo(arg=...) ` is used in annotation (Yosof Badr, PR [ 21238] ( https://github.com/python/mypy/pull/21238 ) )
172+ - Mention what codes are actually ignored in "not covered by type: ignore comment" note (wyattscarpenter, PR [ 19904] ( https://github.com/python/mypy/pull/19904 ) )
173+ - Improve error messages when positional argument is missing (Kevin Kannammalil, PR [ 20591] ( https://github.com/python/mypy/pull/20591 ) )
174+ - Improve "name is not defined" errors with fuzzy matching (Kevin Kannammalil, PR [ 20693] ( https://github.com/python/mypy/pull/20693 ) )
175+ - Add suggestions for misspelled module imports (Kevin Kannammalil, PR [ 20695] ( https://github.com/python/mypy/pull/20695 ) )
176+
177+ ### Performance Improvements
178+
179+ - Replace ` NamedTuple ` with faster regular classes in hot paths (Shantanu, PR [ 21326] ( https://github.com/python/mypy/pull/21326 ) )
180+ - Avoid calling best-match suggestions unless the message is shown (Ivan Levkivskyi, PR [ 21307] ( https://github.com/python/mypy/pull/21307 ) )
181+ - Order cases in native parser based on AST node frequency (Jukka Lehtosalo, PR [ 21219] ( https://github.com/python/mypy/pull/21219 ) )
182+
183+ ### Stubtest Improvements
184+
185+ - Basic support for unpack kwargs (Shantanu, PR [ 21024] ( https://github.com/python/mypy/pull/21024 ) )
186+ - Fix false positive for properties with a deleter (Pranav Manglik, PR [ 21259] ( https://github.com/python/mypy/pull/21259 ) )
187+
188+ ### Documentation Updates
189+
190+ - Rename "value restriction" to "value-constrained type variable" (Leo Ji, PR [ 21112] ( https://github.com/python/mypy/pull/21112 ) )
191+ - Clarify that invariant-by-default applies to legacy ` TypeVar ` syntax (Leo Ji, PR [ 21108] ( https://github.com/python/mypy/pull/21108 ) )
192+
193+ ### Improvements to the Native Parser
194+
195+ The new native parser is still experimental.
196+
197+ - Make new parser consistent with the old one (Ivan Levkivskyi, PR [ 21377] ( https://github.com/python/mypy/pull/21377 ) )
198+ - Support ` --package-root ` with the native parser (Ivan Levkivskyi, PR [ 21321] ( https://github.com/python/mypy/pull/21321 ) )
199+ - Improve call expressions in type annotations with the native parser (Jukka Lehtosalo, PR [ 21300] ( https://github.com/python/mypy/pull/21300 ) )
200+ - Depend on ` ast-serialize ` by default (Jukka Lehtosalo, PR [ 21297] ( https://github.com/python/mypy/pull/21297 ) )
201+
202+ ### Other Notable Fixes and Improvements
203+
204+ - Fix narrowing for ` AbstractSet ` and ` Mapping ` (Shantanu, PR [ 21352] ( https://github.com/python/mypy/pull/21352 ) )
205+ - Preserve gradual guarantee when narrowing ` Any ` union via equality (Shantanu, PR [ 21368] ( https://github.com/python/mypy/pull/21368 ) )
206+ - Make type variable upper bound narrowing symmetric (Ivan Levkivskyi, PR [ 21350] ( https://github.com/python/mypy/pull/21350 ) )
207+ - Behave consistently when type-checking a stub package directly (Ivan Levkivskyi, PR [ 21330] ( https://github.com/python/mypy/pull/21330 ) )
208+ - Add support for ` Final[...] ` in dataclasses (Ivan Levkivskyi, PR [ 21334] ( https://github.com/python/mypy/pull/21334 ) )
209+ - Narrow more sequence parents (Shantanu, PR [ 21327] ( https://github.com/python/mypy/pull/21327 ) )
210+ - Better narrowing for enums and other types with known equality (Shantanu, PR [ 21281] ( https://github.com/python/mypy/pull/21281 ) )
211+ - Fix pathspec error (Ivan Levkivskyi, PR [ 21296] ( https://github.com/python/mypy/pull/21296 ) )
212+ - Use sharding for the SQLite cache (Jukka Lehtosalo, PR [ 21292] ( https://github.com/python/mypy/pull/21292 ) )
213+ - Limit type inference context fallback to the walrus operator only (Ivan Levkivskyi, PR [ 21294] ( https://github.com/python/mypy/pull/21294 ) )
214+ - Support ` .git/info/exclude ` for ` --exclude-gitignore ` (RogerJinIS, PR [ 21286] ( https://github.com/python/mypy/pull/21286 ) )
215+ - Let ` --allow-redefinition ` widen a global in a function with ` None ` initialization (Jukka Lehtosalo, PR [ 21285] ( https://github.com/python/mypy/pull/21285 ) )
216+ - Delete Python 2 extra (Shantanu, PR [ 18374] ( https://github.com/python/mypy/pull/18374 ) )
217+ - No longer narrow final globals in functions (Ivan Levkivskyi, PR [ 21241] ( https://github.com/python/mypy/pull/21241 ) )
218+ - Narrow unions containing ` Any ` in conditional branches (Shantanu, PR [ 21231] ( https://github.com/python/mypy/pull/21231 ) )
219+ - Propagate narrowing within chained comparisons (Shantanu, PR [ 21160] ( https://github.com/python/mypy/pull/21160 ) )
220+ - Add proper lazy deserialization (Ivan Levkivskyi, PR [ 21198] ( https://github.com/python/mypy/pull/21198 ) )
221+ - Add ` install_types ` to options affecting cache (Brian Schubert, PR [ 21070] ( https://github.com/python/mypy/pull/21070 ) )
222+ - Narrow ` Any ` in conditional type checks (Shantanu, PR [ 21167] ( https://github.com/python/mypy/pull/21167 ) )
223+ - Fix exception handler target location in new parser (Ivan Levkivskyi, PR [ 21185] ( https://github.com/python/mypy/pull/21185 ) )
224+ - Improve traceback display (Shantanu, PR [ 21155] ( https://github.com/python/mypy/pull/21155 ) )
225+ - Include two more files in the sdist: ` CREDITS ` and the typeshed ` README ` (Michael R. Crusoe, PR [ 21131] ( https://github.com/python/mypy/pull/21131 ) )
226+
227+ ### Typeshed Updates
228+
229+ Please see [ git log] ( https://github.com/python/typeshed/commits/main?after=c5e47faeda2cf9d233f91bc1dc95814b0cc7ccba+0&branch=main&path=stdlib ) for full list of standard library typeshed stub changes.
230+
231+ ### Acknowledgements
232+
233+ Thanks to all mypy contributors who contributed to this release:
234+ - Brian Schubert
235+ - Ethan Sarp
236+ - Ivan Levkivskyi
237+ - Jukka Lehtosalo
238+ - Kevin Kannammalil
239+ - Leo Ji
240+ - Marc Mueller
241+ - Michael R. Crusoe
242+ - Piotr Sawicki
243+ - Pranav Manglik
244+ - RogerJinIS
245+ - Shantanu
246+ - Vaggelis Danias
247+ - wyattscarpenter
248+ - Yosof Badr
249+
250+ I’d also like to thank my employer, Dropbox, for supporting mypy development.
251+
114252## Mypy 1.20
115253
116254We’ve just uploaded mypy 1.20.0 to the Python Package Index ([ PyPI] ( https://pypi.org/project/mypy/ ) ).
0 commit comments