Mypy 0.960
Minimal Support for LiteralString
Per-file Timing Stats
Performance Improvements
Experimental Fast Module Lookup
Documentation Updates
Improvements to Plugin System
ParamSpec Improvements
Fixes to Crashes
0.942:
Fixes to Regressions
Let overload item have a more general return type than the implementation
Fix inheritance false positives with dataclasses/attrs
Support overriding dunder attributes in Enum subclass
Fix small conditional overload regression
Other Fixes
Fix issues related to the order of processing in the builtins import cycle
Fix crash in match statement if class name is undefined
Allow non-final __match_args__ and overriding
0.940:
Miscellaneous New Features
Add support for conditionally defined overloads
Give "as" variables in with statements separate scopes when it is safe to do so
Add an optional error code ignore-without-code to require ignore comments to have error codes
Add support for typing.Never and typing_extensions.Never as alternative spellings of NoReturn
Add support for typing.reveal_type
Support universal2 macOS wheels
Add match_args support to attr.s()
Enum Improvements
Check Enum definition for invalid base classes
Understand the self-destructing nature of Enum._ignore_
Add StrEnum support for Python 3.11
Make enum values final
Improve final detection for Enum
Fix Enum final properties and writable special members
Enum now accepts String literals and final values as 2nd argument
Fix false positive about member name reuse in enum
Fix enum inheritance regression
Mypyc Fixes and Improvements
Use Py_TYPE and Py_IsNone
Implement additional internal consistency checks
Raise AttributeError also for non-refcounted types
Fix invalid unlikely() in certain rare branches
Skip no-op super calls to object.__init__()
Use latest pythoncapi_compat
Add helpful message to assert
Documentation Updates
Add documentations about Enum types
Update Enum documentation
Improve documentation of allow_redefinition
Fix intelligent indexing example
Explain generic Protocol[T1, T2, ...] shorthand
Clarify that stub-only packages need to be installed
Small documentation improvements for conditional overloads
Improved Error Messages
Improve the "Argument must be a mapping" error message
Coalesce Literals when printing unions
Suggest typing.Callable when using callable as type
Suggest typing.Any when using any as type
Add note about wrong error code in type: ignore
Add no-overload-impl error code
Display ellipsis when formatting variadic tuple[T, ...]
Deduplicate error codes for ignore-without-code
Tweak ignore-without-code error message
Mention common resolutions for build errors
Stubtest Improvements
Ignore more dunder positional-only errors
Fix wrong assumption about relative path
Catch more getattr errors
Error if module level dunder is missing, housekeeping
Ignore __main__ module
Error if a dunder method is missing from a stub
Error if a function is async at runtime but not in the stub
Do not error if a stub is async, but runtime is not
Error if a class should be decorated with @final
Use VERSIONS for submodules
Treat dicts as a subtype of typeddict
Ignore more exceptions in stubtest
Other Notable Fixes and Improvements
Fix non-default keyword-only argument positioning in stubgen
Remove orjson stubs from default list
Use __truediv__ for Python 2 with __future__ import
Fix Python 2 compatibility issue
Use type variable bound to infer constraints
Handle raise Exception(), None on Python 2.7
Fix inference of protocol against overloaded function
Fix an issubclass failure for protocols with overloaded methods
Fix crashes in class scoped imports
Fix use of TypeAlias from aliased imports
Delete open plugin
Read pyproject.toml with correct encoding on Windows
Fix issue with implicit type aliases in import cycles
Forbid extra ParamSpec arguments
Fix crash involving explicit any flag and Required
Fix join of Any against a union type
Simplify unions when erasing last known values
Fix crash with yield in comprehension
Fix handling of NoReturn in union return types
Fix __init__ in dataclasses inheriting from Any
Narrow NamedTuple to bool correctly when __bool__ is defined
Improve type of __attrs_attrs__ in attrs classes
Install dependencies needed for reports via pip install mypy[reports]
Consider import * to be an explicit re-export
Fix --no-implicit-reexport inconsistency
Fix crash if "_" is in builtins
Fixes crash on subclassing Annotated without args
0.931
Fixes to Regressions
Fix mypyc binary wheel
Revert to treating multi-line strings as a single value for exclude in TOML files
Revert to treating exclude in .ini as a single value
Fix __slots__ regression
Fix regression with __module__ and similar non-final Enum attributes
Fix regression when a contextmanager yields a generic function
Fix __reduce__ regression
Fix NoReturn type aliases
Fix regression in None handling with --no-strict-optional
Fix crash related to generics
Restore removed builtin_type() plugin API method
Other Fixes
Always allow the use of type[T] in stubs
Fix PEP 585 type aliases in stubs
Fix bug with literal types in stubtest
This flag should be set for packages that import pkg_resources
and thus need setuptools after the build step.
Set this flag for packages that need it and bump PKGREVISION.
Mypy 0.930
New Feature: Explicit Type Aliases (PEP 613)
New Feature: NotRequired in TypedDicts
New Feature: ParamSpec (Experimental)
Optimizations
This release includes some optimizations that make mypy a bit faster (in addition to mypyc performance improvements discussed below):
Enable --fast-exit by default to speed up mypy
Only read the stdlib versions dictionary once per run
Optimize commonly used function
Minor optimization/cleanup
Reduce the number of executed local imports
Mypyc Fixes and Improvements
Add missing type coercions
Support --allow-redefinition
Constant fold integer operations and string concatenation
Use optimized implementation for builtins.sum
Move mypyc to console_scripts to fix running on Windows 10
Make min(x, y) faster
Make max(x, y) faster
Speed up reference counting operations by inlining them in commonly executed blocks
Add support for attrs classes
Port mypyc to Python 3.11
Reduce the amount of debug information included in compiled extension modules
Mypy 0.910 released
22 Jun 2021: Mypy 0.910 was released. This release includes the --non-interactive command-line option to install stubs without user interaction, plus other fixes and improvements. Python 3.5 is now deprecated. Read the blog post for the details.
Mypy 0.901 released
8 Jun 2021: Mypy 0.901 was released. This release moves third-party library stubs to stub packages, allowing newer stubs to be easily used without updating mypy. Mypy now supports pyproject.toml and type guards, and ships wheels for Apple Silicon. Plus, there are many other features and bug fixes. Read the blog post for the details.
0.790:
Bug Fixes
Fix disable_error_code config file option
Fix partial type crash during protocol checking
Store the type for assignment expression
Always type check arguments when using --disallow-untyped-calls
Make None compatible with Hashable
Don't infinite loop on self dependencies in --follow-imports=normal
Don't simplify away Any when joining union types
Check for deleted vars in raise from
Fix corner case for comparing nested overloads
Fix issues with async for and with statements
Fix internal error on list/dict comprehension with walrus operator in global scope
Fix propagation of module-specific options to the parser
Fix crash when super is called outside a method
Fix untyped decorator overload error on class decorator with __call__ overloads
Clean up terminal width handling
Add keyword arguments for functional Enum API
Validate follow_imports values in mypy.ini
Fix *expr in an assigned expression
Don't consider comparing True and False as a dangerous comparison
Make reveal_type work with call expressions returning None
Error Reporting Improvements
Improve missing module error for subdirectories
Clarify bytes formatting error messages
Fix misleading follow_imports error message in dmypy
Use [arg-type] error code for additional argument type error messages
Report some additional serious errors in junit.xml
Report note about binary operation on the same location as error message
Documentation Updates
Document disable_error_code config file option
Add cross references to config file values
Add cross references to additional config values, and missing plugins config value, and document --help option for stubgen
Remove note that Final is experimental and suggest importing it from typing
Discuss unreachable code as a common issue
Stubgen Improvements
Improve property type detection in extension modules
Fix type stubgen crash caused by invalid type annotation
Import Iterable and Iterator from typing in generated stubs
Other Improvements
Speed up type checking of unions containing many literal string types
Add scripts to misc/
Mypy 0.750 was released. This release has better support for self-types, improved stub generator, experimental static inference of annotations, and other improvements and bug fixes. Read the blog post for more details.
Mypy 0.720 was released. This release uses the new semantic analyzer by
default, adds a flag to warn about unreachable code, and has other improvements
and bug fixes.
0.711:
The following two issues in mypy 0.710 were fixed:
Revert typeshed (“Define functools.partial as overloaded function instead of its own class”). This caused too many false positive errors in real-world code.
Fix MYPYC_BLACKLIST on Windows. This broke running dmypy on Windows.
Mypy 0.670:
New Feature: Variable Redefinition
Stubgen Improvements
Other Improvements
- Expand getting started docs to discuss type hints in more detail
- Always infer in operator as returning bool
- Allow star args in ctypes.Array constructor
- Fix plugin invocation for __call__ methods
- Implement the XDG directory spec for config files: $XDG_CONFIG_HOME/mypy/config is now included in the search path for config files
- When using the --junit-xml flag, the Python version and platform in the junit.xml file are now formatted as mypy-py3_6-windows — previously this was mypy-py3.6-windows but the dot was misinterpreted by some tools
- Update the typed_ast dependency to version 1.3.1; this means we now officially support Python 3.7
- Temporarily delete pyproject.toml from the repo in order to work around a pip bu g
- Include mypy_bootstrap.ini in PyPI packages
0.660:
- Literal Types
- Quick Mode Removed
- Plugin Improvements
* Add documentation for plugin system
* Make name lookup available to all plugin hooks
* Add more information to FunctionContext and MethodContext
- Other Improvements and Notable Bugs Fixed
* Introduce an optional sqlite backed incremental cache, enabled with --sqlite-cache
* Fix a daemon crash when there is a decode error
* Allow setting python_executable from config file
* Short-circuit if expression for always true/always false variables and MYPY/TYPE_CHECKING
* Don't map actual kwargs to formal *args
* Disable cache when producing reports
* Fix issues with pointer arrays in the ctypes plugin
* Support kw_only=True in the attrs plugin
* Fix some daemon crash bugs
* Better error messages when __eq__ has unexpected signature
* Collect additional timing stats and allow reporting them from the daemon
* Fix dmypy run when bad options passed to mypy
* Improve error messages from multiple inheritance compatibility checks
* Fix an incremental mode crash that can occur in situations with import cycles and star imports
Add type annotations to your Python programs, and use mypy to type check them.
Mypy is essentially a Python linter on steroids, and it can catch many
programming errors by analyzing your program, without actually having to run
it. Mypy has a powerful type system with features such as type inference,
gradual typing, generics and union types.