Thursday, 21 December 2023

Mypy 1.8 Released

We’ve just uploaded mypy 1.8 to the Python Package Index (PyPI). Mypy is a static type checker for Python. This release includes new features, performance improvements 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.

Type-checking Improvements

  • Do not intersect types in isinstance checks if at least one is final (Christoph Tyralla, PR 16330)
  • Detect that @final class without __bool__ cannot have falsey instances (Ilya Priven, PR 16566)
  • Do not allow TypedDict classes with extra keywords (Nikita Sobolev, PR 16438)
  • Do not allow class-level keywords for NamedTuple (Nikita Sobolev, PR 16526)
  • Make imprecise constraints handling more robust (Ivan Levkivskyi, PR 16502)
  • Fix strict-optional in extending generic TypedDict (Ivan Levkivskyi, PR 16398)
  • Allow type ignores of PEP 695 constructs (Shantanu, PR 16608)
  • Enable type_check_only support for TypedDict and NamedTuple (Nikita Sobolev, PR 16469)

Performance Improvements

  • Add fast path to analyzing special form assignments (Jukka Lehtosalo, PR 16561)

Improvements to Error Reporting

  • Don't show documentation links for plugin error codes (Ivan Levkivskyi, PR 16383)
  • Improve error messages for super checks and add more tests (Nikita Sobolev, PR 16393)
  • Add error code for mutable covariant override (Ivan Levkivskyi, PR 16399)

Stubgen Improvements

  • Preserve simple defaults in function signatures (Ali Hamdan, PR 15355)
  • Include __all__ in output (Jelle Zijlstra, PR 16356)
  • Fix stubgen regressions with pybind11 and mypy 1.7 (Chad Dombrova, PR 16504)

Stubtest Improvements

  • Improve handling of unrepresentable defaults (Jelle Zijlstra, PR 16433)
  • Print more helpful errors if a function is missing from stub (Alex Waygood, PR 16517)
  • Support @type_check_only decorator (Nikita Sobolev, PR 16422)
  • Warn about missing __del__ (Shantanu, PR 16456)
  • Fix crashes with some uses of final and deprecated (Shantanu, PR 16457)

Fixes to Crashes

  • Fix crash with type alias to Callable[[Unpack[Tuple[Any, ...]]], Any] (Alex Waygood, PR 16541)
  • Fix crash on TypeGuard in __call__ (Ivan Levkivskyi, PR 16516)
  • Fix crash on invalid enum in method (Ivan Levkivskyi, PR 16511)
  • Fix crash on unimported Any in TypedDict (Ivan Levkivskyi, PR 16510)

Documentation Updates

  • Update soft-error-limit default value to -1 (Sveinung Gundersen, PR 16542)
  • Support Sphinx 7.x (Michael R. Crusoe, PR 16460)

Other Notable Changes and Fixes

  • Allow mypy to output a junit file with per-file results (Matthew Wright, PR 16388)

Typeshed Updates

Please see git log for full list of standard library typeshed stub changes.

Acknowledgements

​Thanks to all mypy contributors who contributed to this release:

  • Alex Waygood
  • Ali Hamdan
  • Chad Dombrova
  • Christoph Tyralla
  • Ilya Priven
  • Ivan Levkivskyi
  • Jelle Zijlstra
  • Jukka Lehtosalo
  • Marcel Telka
  • Matthew Wright
  • Michael R. Crusoe
  • Nikita Sobolev
  • Ole Peder Brandtzæg
  • robjhornby
  • Shantanu
  • Sveinung Gundersen
  • Valentin Stanciu

I’d also like to thank my employer, Dropbox, for supporting mypy development.

Posted by Wesley Collin Wright