|
3 | 3 | ## Next release
|
4 | 4 |
|
5 | 5 |
|
| 6 | +## Mypy 1.11 |
| 7 | + |
| 8 | +We’ve just uploaded mypy 1.11 to the Python Package Index ([PyPI](https://pypi.org/project/mypy/)). Mypy is a static type checker for Python. This release includes new features, performance improvements and bug fixes. You can install it as follows: |
| 9 | + |
| 10 | + python3 -m pip install -U mypy |
| 11 | + |
| 12 | +You can read the full documentation for this release on [Read the Docs](http://mypy.readthedocs.io). |
| 13 | + |
| 14 | +#### Additional support for PEP 695 |
| 15 | + |
| 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. |
| 18 | + |
| 19 | +This example demonstrates the new syntax: |
| 20 | +```python |
| 21 | + |
| 22 | +def f[T](x: T) -> T: ... |
| 23 | + |
| 24 | +reveal_type(f(1)) # Revealed type is 'int' |
| 25 | +``` |
| 26 | + |
| 27 | +This feature was contributed by Jukka Lehtosalo (PR [17233](https://github.com/python/mypy/pull/17233)). |
| 28 | + |
| 29 | + |
| 30 | +#### Support for `functools.partial` |
| 31 | + |
| 32 | +Mypy now typechecks uses of `functools.partial`, which previous mypy would always accept. |
| 33 | +This example would previously pass: |
| 34 | + |
| 35 | +```python |
| 36 | +from functools import partial |
| 37 | + |
| 38 | +def f(a: int, b: str) -> None: ... |
| 39 | + |
| 40 | +g = partial(f, 1) |
| 41 | +g(1) # error: Argument 1 to "f" has incompatible type "int"; expected "str" [arg-type] |
| 42 | +``` |
| 43 | + |
| 44 | +This feature was contributed by Shantanu (PR [16939](https://github.com/python/mypy/pull/16939)). |
| 45 | + |
| 46 | + |
| 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)) |
| 50 | + |
| 51 | + |
| 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)) |
| 56 | + |
| 57 | + |
| 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)) |
| 66 | + |
| 67 | + |
| 68 | +#### Changes to error reporting |
| 69 | + * 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)) |
| 73 | + * Fix false positive for Final local scope variable in Protocol (GiorgosPapoutsakis, PR [17308](https://github.com/python/mypy/pull/17308)) |
| 74 | + * Use Never in more messages, use ambiguous in join (Shantanu, PR [17304](https://github.com/python/mypy/pull/17304)) |
| 75 | + * 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)) |
| 77 | + * 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)) |
| 80 | + |
| 81 | + |
| 82 | +#### Fixes for crashes |
| 83 | + * 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)) |
| 85 | + * Fix crash when overriding with unpacked TypedDict (Ivan Levkivskyi, PR [17359](https://github.com/python/mypy/pull/17359)) |
| 86 | + * Fix crash on TypedDict unpacking for ParamSpec (Ivan Levkivskyi, PR [17358](https://github.com/python/mypy/pull/17358)) |
| 87 | + * Fix crash involving recursive union of tuples (Ivan Levkivskyi, PR [17353](https://github.com/python/mypy/pull/17353)) |
| 88 | + * Fix crash on invalid callable property override (Ivan Levkivskyi, PR [17352](https://github.com/python/mypy/pull/17352)) |
| 89 | + * Fix crash on unpacking self in NamedTuple (Ivan Levkivskyi, PR [17351](https://github.com/python/mypy/pull/17351)) |
| 90 | + * 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)) |
| 92 | + |
| 93 | + |
| 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)) |
| 98 | + * Add documentation for show-error-code-links (GiorgosPapoutsakis, PR [17144](https://github.com/python/mypy/pull/17144)) |
| 99 | + * Update CONTRIBUTING.md to include commands for Windows (GiorgosPapoutsakis, PR [17142](https://github.com/python/mypy/pull/17142)) |
| 100 | + |
| 101 | + |
| 102 | +#### Other notable contributions |
| 103 | + * Fix ParamSpec inference against TypeVarTuple (Ivan Levkivskyi, PR [17431](https://github.com/python/mypy/pull/17431)) |
| 104 | + * 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)) |
| 106 | + * 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)) |
| 108 | + * Fix self-referential upper bound in new-style type variables (Ivan Levkivskyi, PR [17407](https://github.com/python/mypy/pull/17407)) |
| 109 | + * 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)) |
| 111 | + * 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)) |
| 113 | + * Fix isinstance with type aliases to PEP 604 unions (Shantanu, PR [17371](https://github.com/python/mypy/pull/17371)) |
| 114 | + * Properly handle unpacks in overlap checks (Ivan Levkivskyi, PR [17356](https://github.com/python/mypy/pull/17356)) |
| 115 | + * 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)) |
| 120 | + * 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)) |
| 124 | + * 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)) |
| 131 | + * 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)) |
| 133 | + |
| 134 | + |
| 135 | +#### Typeshed Updates |
| 136 | + |
| 137 | +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. |
| 138 | + |
| 139 | + |
| 140 | +#### Acknowledgements |
| 141 | +Thanks to all mypy contributors who contributed to this release: |
| 142 | + |
| 143 | +- Alex Waygood |
| 144 | +- Alexander Leopold Shon |
| 145 | +- Ali Hamdan |
| 146 | +- Anders Kaseorg |
| 147 | +- Ben Brown |
| 148 | +- Bénédikt Tran |
| 149 | +- bzoracler |
| 150 | +- Christoph Tyralla |
| 151 | +- Christopher Barber |
| 152 | +- dexterkennedy |
| 153 | +- gilesgc |
| 154 | +- GiorgosPapoutsakis |
| 155 | +- Ivan Levkivskyi |
| 156 | +- Jelle Zijlstra |
| 157 | +- Jukka Lehtosalo |
| 158 | +- Marc Mueller |
| 159 | +- Matthieu Devlin |
| 160 | +- Michael R. Crusoe |
| 161 | +- Nikita Sobolev |
| 162 | +- Seo Sanghyeon |
| 163 | +- Shantanu |
| 164 | +- sobolevn |
| 165 | +- Steven Troxler |
| 166 | +- Tadeu Manoel |
| 167 | +- Tamir Duberstein |
| 168 | +- Tushar Sadhwani |
| 169 | +- urnest |
| 170 | +- Valentin Stanciu |
| 171 | + |
| 172 | +I’d also like to thank my employer, Dropbox, for supporting mypy development. |
| 173 | + |
6 | 174 |
|
7 | 175 | ## Mypy 1.10
|
8 | 176 |
|
|
0 commit comments