From ae6e77c3c695253f3b8d38a3ab1f1610fde86e39 Mon Sep 17 00:00:00 2001 From: Wesley Collin Wright Date: Sat, 1 Feb 2025 22:07:00 +0000 Subject: [PATCH 1/6] Prepare changelog for 1.15 release --- CHANGELOG.md | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3acec84fec5d..e0bdc6b523b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ ## Next release +... + +## Mypy 1.15 (unreleased) + +We’ve just uploaded mypy 1.15 to the Python Package Index ([PyPI](https://pypi.org/project/mypy/)). +Mypy is a static type checker for Python. This release includes new features and bug fixes. +You can install it as follows: + + python3 -m pip install -U mypy + +You can read the full documentation for this release on [Read the Docs](http://mypy.readthedocs.io). + ### Performance improvements Mypy may be 5-30% faster. This improvement comes largely from tuning the performance of the @@ -68,6 +80,111 @@ Support for this will be dropped in the first half of 2025! Contributed by Marc Mueller (PR [17492](https://github.com/python/mypy/pull/17492)). +### Mypyc Improvements + + * Fix `__init__` for classes with `@attr.s(slots=True)` (Advait Dixit, PR [18447](https://github.com/python/mypy/pull/18447)) + * Report error for nested class instead of crashing (Valentin Stanciu, PR [18460](https://github.com/python/mypy/pull/18460)) + * Fix `InitVar` for dataclasses (Advait Dixit, PR [18319](https://github.com/python/mypy/pull/18319)) + * Remove unnecessary mypyc files from wheels (Marc Mueller, PR [18416](https://github.com/python/mypy/pull/18416)) + * Get capsule pointer from module instead of `PyCapsule_Import` (Advait Dixit, PR [18286](https://github.com/python/mypy/pull/18286)) + * Add lowered primitive for unsafe list get item op (Jukka Lehtosalo, PR [18136](https://github.com/python/mypy/pull/18136)) + * Fix iteration over `NamedTuple` objects (Advait Dixit, PR [18254](https://github.com/python/mypy/pull/18254)) + * Mark mypyc package with `py.typed` (bzoracler, PR [18253](https://github.com/python/mypy/pull/18253)) + * Update docstrings of IR builder classes (Jukka Lehtosalo, PR [18246](https://github.com/python/mypy/pull/18246)) + * Fix list index while checking for `Enum` class. (Advait Dixit, PR [18426](https://github.com/python/mypy/pull/18426)) + * Update `pythoncapi_compat.h` (Marc Mueller, PR [18340](https://github.com/python/mypy/pull/18340)) + +### Stubgen Improvements + + * Improve dataclass init signatures (Marc Mueller, PR [18430](https://github.com/python/mypy/pull/18430)) + * Preserve `dataclass_transform` decorator (Marc Mueller, PR [18418](https://github.com/python/mypy/pull/18418)) + * Fix `UnpackType` for 3.11+ (Marc Mueller, PR [18421](https://github.com/python/mypy/pull/18421)) + * Improve `self` annotations (Marc Mueller, PR [18420](https://github.com/python/mypy/pull/18420)) + * Print `InspectError` traceback in stubgen `walk_packages` when verbose is specified (Gareth, PR [18224](https://github.com/python/mypy/pull/18224)) + +### Stubtest Improvements + + * Fix crash with numpy array default values (Ali Hamdan, PR [18353](https://github.com/python/mypy/pull/18353)) + * Distinguish metaclass attributes from class attributes (Stephen Morton, PR [18314](https://github.com/python/mypy/pull/18314)) + +### Fixes to Crashes + + * Prevent crash with `Unpack` of a fixed tuple in PEP695 type alias (Stanislav Terliakov, PR [18451](https://github.com/python/mypy/pull/18451)) + * Fix crash with `--cache-fine-grained --cache-dir=/dev/null` (Shantanu, PR [18457](https://github.com/python/mypy/pull/18457)) + * Prevent crashing when `match` arms use name of existing callable (Stanislav Terliakov, PR [18449](https://github.com/python/mypy/pull/18449)) + * Gracefully handle encoding errors when writing to stdout (Brian Schubert, PR [18292](https://github.com/python/mypy/pull/18292)) + +### Documentation Updates + + * Add `sphinx_inline_tabs` to docs (Marc Mueller, PR [18262](https://github.com/python/mypy/pull/18262)) + * Document any `TYPE_CHECKING` name works (Shantanu, PR [18443](https://github.com/python/mypy/pull/18443)) + * Update docs not to mention 3.8 where possible (sobolevn, PR [18455](https://github.com/python/mypy/pull/18455)) + * Mention `ignore_errors` in exclude docs (Shantanu, PR [18412](https://github.com/python/mypy/pull/18412)) + * Add `Self` misuse to common issues (Shantanu, PR [18261](https://github.com/python/mypy/pull/18261)) + +### Other Notable Fixes and Improvements + + * Fix literal context for ternary expressions (Ivan Levkivskyi, PR [18545](https://github.com/python/mypy/pull/18545)) + * Ignore `dataclass.__replace__` LSP violations (Marc Mueller, PR [18464](https://github.com/python/mypy/pull/18464)) + * Bind `self` to the class being defined when checking multiple inheritance (Stanislav Terliakov, PR [18465](https://github.com/python/mypy/pull/18465)) + * Fix attribute type resolution with multiple inheritance (Stanislav Terliakov, PR [18415](https://github.com/python/mypy/pull/18415)) + * Improve security of our GitHub Actions (sobolevn, PR [18413](https://github.com/python/mypy/pull/18413)) + * Unwrap `type[Union[...]]` when solving typevar constraints (Stanislav Terliakov, PR [18266](https://github.com/python/mypy/pull/18266)) + * Allow `Any` to match sequence patterns in match/case (Stanislav Terliakov, PR [18448](https://github.com/python/mypy/pull/18448)) + * Avoid false `unreachable` and `redundant-expr` warnings in loops. (Christoph Tyralla, PR [18433](https://github.com/python/mypy/pull/18433)) + * Fix parent generics mapping when overriding generic attribute with property (Stanislav Terliakov, PR [18441](https://github.com/python/mypy/pull/18441)) + * Dedicated error code for explicit `Any` (Shantanu, PR [18398](https://github.com/python/mypy/pull/18398)) + * Reject invalid `ParamSpec` locations (Stanislav Terliakov, PR [18278](https://github.com/python/mypy/pull/18278)) + * Remove stubs no longer in typeshed (Shantanu, PR [18373](https://github.com/python/mypy/pull/18373)) + * Allow inverting `--local-partial-types` (Shantanu, PR [18377](https://github.com/python/mypy/pull/18377)) + * Allow to use `Final` and `ClassVar` after Python 3.13 (정승원, PR [18358](https://github.com/python/mypy/pull/18358)) + * Update to include latest stubs in typeshed (Shantanu, PR [18366](https://github.com/python/mypy/pull/18366)) + * Fix `--install-types` masking failure details (wyattscarpenter, PR [17485](https://github.com/python/mypy/pull/17485)) + * Reject promotions when checking against protocols. (Christoph Tyralla, PR [18360](https://github.com/python/mypy/pull/18360)) + * Don't erase type object args in diagnostics (Shantanu, PR [18352](https://github.com/python/mypy/pull/18352)) + * Clarify status in `dmypy status` output (Kcornw, PR [18331](https://github.com/python/mypy/pull/18331)) + * Disallow no-args generic aliases when using PEP 613 explicit aliases (Brian Schubert, PR [18173](https://github.com/python/mypy/pull/18173)) + * Suppress errors for unreachable branches in conditional expressions (Brian Schubert, PR [18295](https://github.com/python/mypy/pull/18295)) + * Do not allow `ClassVar` and `Final` in `TypedDict` and `NamedTuple` (sobolevn, PR [18281](https://github.com/python/mypy/pull/18281)) + * Fail typecheck if not enough or too many types provided to `TypeAliasType` (bzoracler, PR [18308](https://github.com/python/mypy/pull/18308)) + * Use more precise context for `TypedDict` plugin errors (Brian Schubert, PR [18293](https://github.com/python/mypy/pull/18293)) + * Use more precise context for invalid type argument errors (Brian Schubert, PR [18290](https://github.com/python/mypy/pull/18290)) + * Do not allow `type[]` to contain `Literal` types (sobolevn, PR [18276](https://github.com/python/mypy/pull/18276)) + * Allow bytearray/bytes comparisons with --disable-bytearray-promotion (Jukka Lehtosalo, PR [18255](https://github.com/python/mypy/pull/18255)) + * More LSP compatibility on arg names (Shantanu, PR [18363](https://github.com/python/mypy/pull/18363)) + * Speed up `State.finish_passes` (Jukka Lehtosalo, PR [18302](https://github.com/python/mypy/pull/18302)) + * Optimize type indirection visitor (Jukka Lehtosalo, PR [18298](https://github.com/python/mypy/pull/18298)) + * Speed up SCC dependency inference (Jukka Lehtosalo, PR [18299](https://github.com/python/mypy/pull/18299)) + +### Acknowledgements + +Thanks to all mypy contributors who contributed to this release: + +​Thanks to all mypy contributors who contributed to this release: + +- Advait Dixit +- Ali Hamdan +- Brian Schubert +- bzoracler +- Cameron Matsui +- Christoph Tyralla +- Gareth +- Ivan Levkivskyi +- Jukka Lehtosalo +- Kcornw +- Marc Mueller +- Mikhail f. Shiryaev +- Shantanu +- sobolevn +- Stanislav Terliakov +- Stephen Morton +- Valentin Stanciu +- Viktor Szépe +- wyattscarpenter +- 정승원 + +I’d also like to thank my employer, Dropbox, for supporting mypy development. + ## Mypy 1.14 We’ve just uploaded mypy 1.14 to the Python Package Index ([PyPI](https://pypi.org/project/mypy/)). From a9142985567d05a5b8771abf6a6db3494a7dbc09 Mon Sep 17 00:00:00 2001 From: Wesley Collin Wright Date: Mon, 3 Feb 2025 16:24:32 +0000 Subject: [PATCH 2/6] title case for headings --- CHANGELOG.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9d37fd63e28..af8b63ba9d31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,10 @@ # Mypy Release Notes -## Next release +## Next Release ... -## Mypy 1.15 (unreleased) +## Mypy 1.15 (Unreleased) We’ve just uploaded mypy 1.15 to the Python Package Index ([PyPI](https://pypi.org/project/mypy/)). Mypy is a static type checker for Python. This release includes new features and bug fixes. @@ -14,14 +14,14 @@ You can install it as follows: You can read the full documentation for this release on [Read the Docs](http://mypy.readthedocs.io). -### Performance improvements +### Performance Improvements Mypy may be 5-30% faster. This improvement comes largely from tuning the performance of the garbage collector. Contributed by Jukka Lehtosalo (PR [18306](https://github.com/python/mypy/pull/18306)). -### Mypyc accelerated mypy wheels for aarch64 +### Mypyc Accelerated Mypy Wheels for `aarch64` Mypy can compile itself to C extension modules using mypyc. This makes mypy 3-5x faster than if mypy is interpreted with pure Python. We now build and upload mypyc accelerated @@ -41,7 +41,7 @@ Use this flag to disable this behavior. `--strict-bytes` will be enabled by defa Contributed by Ali Hamdan (PR [18263](https://github.com/python/mypy/pull/18263)) and Shantanu Jain (PR [13952](https://github.com/python/mypy/pull/13952)). -### Improvements to reachability analysis and partial type handling in loops +### Improvements to Reachability Analysis and Partial Type Handling in Loops This change results in mypy better modelling control flow within loops and hence detecting several issues it previously did not detect. In some cases, this change may require use of an additional @@ -53,7 +53,7 @@ PR [18433](https://github.com/python/mypy/pull/18433)). (Speaking of partial types, another reminder that mypy plans on enabling `--local-partial-types` by default in **mypy 2.0**). -### Better discovery of configuration files +### Better Discovery of Configuration Files Mypy will now walk up the filesystem (up until a repository or file system root) to discover configuration files. See the @@ -63,7 +63,7 @@ for more details. Contributed by Mikhail Shiryaev and Shantanu Jain (PR [16965](https://github.com/python/mypy/pull/16965), PR [18482](https://github.com/python/mypy/pull/18482)) -### Better line numbers for decorators and slice expressions +### Better Line Numbers for Decorators and Slice Expressions Mypy now uses more correct line numbers for decorators and slice expressions. In some cases, this may necessitate changing the location of a `# type: ignore` comment. From 3aba2f6ff45713ce20d49f95a9823f3012894aa7 Mon Sep 17 00:00:00 2001 From: Wesley Collin Wright Date: Mon, 3 Feb 2025 16:31:08 +0000 Subject: [PATCH 3/6] remove trailing periods --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index af8b63ba9d31..83905ba82bee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -91,7 +91,7 @@ Contributed by Marc Mueller (PR [17492](https://github.com/python/mypy/pull/1749 * Fix iteration over `NamedTuple` objects (Advait Dixit, PR [18254](https://github.com/python/mypy/pull/18254)) * Mark mypyc package with `py.typed` (bzoracler, PR [18253](https://github.com/python/mypy/pull/18253)) * Update docstrings of IR builder classes (Jukka Lehtosalo, PR [18246](https://github.com/python/mypy/pull/18246)) - * Fix list index while checking for `Enum` class. (Advait Dixit, PR [18426](https://github.com/python/mypy/pull/18426)) + * Fix list index while checking for `Enum` class (Advait Dixit, PR [18426](https://github.com/python/mypy/pull/18426)) * Update `pythoncapi_compat.h` (Marc Mueller, PR [18340](https://github.com/python/mypy/pull/18340)) ### Stubgen Improvements @@ -131,7 +131,7 @@ Contributed by Marc Mueller (PR [17492](https://github.com/python/mypy/pull/1749 * Improve security of our GitHub Actions (sobolevn, PR [18413](https://github.com/python/mypy/pull/18413)) * Unwrap `type[Union[...]]` when solving typevar constraints (Stanislav Terliakov, PR [18266](https://github.com/python/mypy/pull/18266)) * Allow `Any` to match sequence patterns in match/case (Stanislav Terliakov, PR [18448](https://github.com/python/mypy/pull/18448)) - * Avoid false `unreachable` and `redundant-expr` warnings in loops. (Christoph Tyralla, PR [18433](https://github.com/python/mypy/pull/18433)) + * Avoid false `unreachable` and `redundant-expr` warnings in loops (Christoph Tyralla, PR [18433](https://github.com/python/mypy/pull/18433)) * Fix parent generics mapping when overriding generic attribute with property (Stanislav Terliakov, PR [18441](https://github.com/python/mypy/pull/18441)) * Dedicated error code for explicit `Any` (Shantanu, PR [18398](https://github.com/python/mypy/pull/18398)) * Reject invalid `ParamSpec` locations (Stanislav Terliakov, PR [18278](https://github.com/python/mypy/pull/18278)) @@ -140,7 +140,7 @@ Contributed by Marc Mueller (PR [17492](https://github.com/python/mypy/pull/1749 * Allow to use `Final` and `ClassVar` after Python 3.13 (정승원, PR [18358](https://github.com/python/mypy/pull/18358)) * Update to include latest stubs in typeshed (Shantanu, PR [18366](https://github.com/python/mypy/pull/18366)) * Fix `--install-types` masking failure details (wyattscarpenter, PR [17485](https://github.com/python/mypy/pull/17485)) - * Reject promotions when checking against protocols. (Christoph Tyralla, PR [18360](https://github.com/python/mypy/pull/18360)) + * Reject promotions when checking against protocols (Christoph Tyralla, PR [18360](https://github.com/python/mypy/pull/18360)) * Don't erase type object args in diagnostics (Shantanu, PR [18352](https://github.com/python/mypy/pull/18352)) * Clarify status in `dmypy status` output (Kcornw, PR [18331](https://github.com/python/mypy/pull/18331)) * Disallow no-args generic aliases when using PEP 613 explicit aliases (Brian Schubert, PR [18173](https://github.com/python/mypy/pull/18173)) From ccc56a030a8c4f66600c9432160923eaffa4a9c7 Mon Sep 17 00:00:00 2001 From: Wesley Collin Wright Date: Mon, 3 Feb 2025 16:31:47 +0000 Subject: [PATCH 4/6] remove duplicate sentence --- CHANGELOG.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 83905ba82bee..c2fc4e7611a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -160,8 +160,6 @@ Contributed by Marc Mueller (PR [17492](https://github.com/python/mypy/pull/1749 Thanks to all mypy contributors who contributed to this release: -​Thanks to all mypy contributors who contributed to this release: - - Advait Dixit - Ali Hamdan - Brian Schubert From 057569dbb19d64b898b974fcec8c17dd6c82fb01 Mon Sep 17 00:00:00 2001 From: Wesley Collin Wright Date: Mon, 3 Feb 2025 16:32:00 +0000 Subject: [PATCH 5/6] remove dupe of 18433 --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c2fc4e7611a6..203c9e39efab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -131,7 +131,6 @@ Contributed by Marc Mueller (PR [17492](https://github.com/python/mypy/pull/1749 * Improve security of our GitHub Actions (sobolevn, PR [18413](https://github.com/python/mypy/pull/18413)) * Unwrap `type[Union[...]]` when solving typevar constraints (Stanislav Terliakov, PR [18266](https://github.com/python/mypy/pull/18266)) * Allow `Any` to match sequence patterns in match/case (Stanislav Terliakov, PR [18448](https://github.com/python/mypy/pull/18448)) - * Avoid false `unreachable` and `redundant-expr` warnings in loops (Christoph Tyralla, PR [18433](https://github.com/python/mypy/pull/18433)) * Fix parent generics mapping when overriding generic attribute with property (Stanislav Terliakov, PR [18441](https://github.com/python/mypy/pull/18441)) * Dedicated error code for explicit `Any` (Shantanu, PR [18398](https://github.com/python/mypy/pull/18398)) * Reject invalid `ParamSpec` locations (Stanislav Terliakov, PR [18278](https://github.com/python/mypy/pull/18278)) From 739b57bbbead0e309badf95a61a127a8a421288e Mon Sep 17 00:00:00 2001 From: Wesley Collin Wright Date: Mon, 3 Feb 2025 16:35:29 +0000 Subject: [PATCH 6/6] take a pass at adding micro-optimizations to performance improvements highlight --- CHANGELOG.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 203c9e39efab..dbc6cf576709 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,9 +17,12 @@ You can read the full documentation for this release on [Read the Docs](http://m ### Performance Improvements Mypy may be 5-30% faster. This improvement comes largely from tuning the performance of the -garbage collector. +garbage collector. Additionally, the release includes several micro-optimizations that may be +impactful for very large projects. -Contributed by Jukka Lehtosalo (PR [18306](https://github.com/python/mypy/pull/18306)). +Contributed by Jukka Lehtosalo (PR [18306](https://github.com/python/mypy/pull/18306), +PR [18302](https://github.com/python/mypy/pull/18302, PR [18298](https://github.com/python/mypy/pull/18298, +PR [18299](https://github.com/python/mypy/pull/18299). ### Mypyc Accelerated Mypy Wheels for `aarch64` @@ -151,9 +154,6 @@ Contributed by Marc Mueller (PR [17492](https://github.com/python/mypy/pull/1749 * Do not allow `type[]` to contain `Literal` types (sobolevn, PR [18276](https://github.com/python/mypy/pull/18276)) * Allow bytearray/bytes comparisons with --disable-bytearray-promotion (Jukka Lehtosalo, PR [18255](https://github.com/python/mypy/pull/18255)) * More LSP compatibility on arg names (Shantanu, PR [18363](https://github.com/python/mypy/pull/18363)) - * Speed up `State.finish_passes` (Jukka Lehtosalo, PR [18302](https://github.com/python/mypy/pull/18302)) - * Optimize type indirection visitor (Jukka Lehtosalo, PR [18298](https://github.com/python/mypy/pull/18298)) - * Speed up SCC dependency inference (Jukka Lehtosalo, PR [18299](https://github.com/python/mypy/pull/18299)) ### Acknowledgements