- Optionally Check That Match Is Exhaustive
Mypy can now optionally generate an error if a match
statement does not match exhaustively, without having to use
assert_never(...). Enable this by using --enable-error-code
exhaustive-match.
- Further Improvements to Attribute Resolution
This release includes additional improvements to how
attribute types and kinds are resolved. These fix many bugs
and overall improve consistency.
- Fixes to Nondeterministic Type Checking
Previous mypy versions could infer different types for
certain expressions across different runs (typically
depending on which order certain types were processed, and
this order was nondeterministic). This release includes fixes
to several such issues.
- Remove Support for Targeting Python 3.8
Mypy now requires --python-version 3.9 or greater. Support
for targeting Python 3.8 is fully removed now. Since 3.8
is an unsupported version, mypy will default to the oldest
supported version (currently 3.9) if you still try to target
3.8.
- Initial Support for Python 3.14
Mypy is now tested on 3.14 and mypyc works with 3.14.0b3 and
later. Binary wheels compiled with mypyc for mypy itself will
be available for 3.14 some time after 3.14.0rc1 has been
released.
- Deprecated Flag: --force-uppercase-builtins
Mypy only supports Python 3.9+. The
--force-uppercase-builtins flag is now deprecated as
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-mypy?expand=0&rev=39
- Update to 1.16.0:
Different Property Getter and Setter Types
Mypy now supports using different types for a property getter and setter:
class A:
_value: int
@property
def foo(self) -> int:
return self._value
@foo.setter
def foo(self, x: str | int) -> None:
try:
self._value = int(x)
except ValueError:
raise Exception(f"'{x}' is not a valid value for 'foo'")
This was contributed by Ivan Levkivskyi (PR 18510).
Flexible Variable Redefinitions (Experimental)
Mypy now allows unannotated variables to be freely redefined
with different types when using the experimental
--allow-redefinition-new flag. You will also need to enable
--local-partial-types. Mypy will now infer a union type when
different types are assigned to a variable:
# mypy: allow-redefinition-new, local-partial-types
def f(n: int, b: bool) -> int | str:
if b:
x = n
else:
x = str(n)
# Type of 'x' is int | str here.
return x
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-mypy?expand=0&rev=33
- Update to 1.14.1
* Mypyc Improvements
- Document optimized bytes operations and additional str operations (Jukka Lehtosalo, PR 18242)
- Add primitives and specialization for ord() (Jukka Lehtosalo, PR 18240)
- Optimize str.encode with specializations for common used encodings (Valentin Stanciu, PR 18232)
- Fix fall back to generic operation for staticmethod and classmethod (Advait Dixit, PR 18228)
- Support unicode surrogates in string literals (Jukka Lehtosalo, PR 18209)
- Fix index variable in for loop with builtins.enumerate (Advait Dixit, PR 18202)
- Fix check for enum classes (Advait Dixit, PR 18178)
- Fix loading type from imported modules (Advait Dixit, PR 18158)
- Fix initializers of final attributes in class body (Jared Hance, PR 18031)
- Fix name generation for modules with similar full names (aatle, PR 18001)
- Fix relative imports in __init__.py (Shantanu, PR 17979)
- Optimize dunder methods (jairov4, PR 17934)
- Replace deprecated _PyDict_GetItemStringWithError (Marc Mueller, PR 17930)
- Fix wheel build for cp313-win (Marc Mueller, PR 17941)
- Use public PyGen_GetCode instead of vendored implementation (Marc Mueller, PR 17931)
- Optimize calls to final classes (jairov4, PR 17886)
- Support ellipsis (...) expressions in class bodies (Newbyte, PR 17923)
- Sync pythoncapi_compat.h (Marc Mueller, PR 17929)
- Add runtests.py mypyc-fast for running fast mypyc tests (Jukka Lehtosalo, PR 17906)
* Stubgen Improvements
- Do not include mypy generated symbols (Ali Hamdan, PR 18137)
- Fix FunctionContext.fullname for nested classes (Chad Dombrova, PR 17963)
- Add flagfile support (Ruslan Sayfutdinov, PR 18061)
- Add support for PEP 695 and PEP 696 syntax (Ali Hamdan, PR 18054)
* Stubtest Improvements
- Allow the use of --show-traceback and --pdb with stubtest (Stephen Morton, PR 18037)
- Verify __all__ exists in stub (Sebastian Rittau, PR 18005)
- Stop telling people to use double underscores (Jelle Zijlstra, PR 17897)
* Documentation Updates
- Update config file documentation (sobolevn, PR 18103)
- Improve contributor documentation for Windows (ag-tafe, PR 18097)
- Correct note about --disallow-any-generics flag in documentation (Abel Sen, PR 18055)
- Further caution against --follow-imports=skip (Shantanu, PR 18048)
- Fix the edit page buttton link in documentation (Kanishk Pachauri, PR 17933)
* Other Notables Fixes and Improvements
- Show Protocol __call__ for arguments with incompatible types (MechanicalConstruct, PR 18214)
- Make join and meet symmetric with strict_optional (MechanicalConstruct, PR 18227)
- Preserve block unreachablility when checking function definitions with constrained TypeVars (Brian Schubert, PR 18217)
- Do not include non-init fields in the synthesized __replace__ method for dataclasses (Victorien, PR 18221)
- Disallow TypeVar constraints parameterized by type variables (Brian Schubert, PR 18186)
- Always complain about invalid varargs and varkwargs (Shantanu, PR 18207)
- Set default strict_optional state to True (Shantanu, PR 18198)
- Preserve type variable default None in type alias (Sukhorosov Aleksey, PR 18197)
- Add checks for invalid usage of continue/break/return in except* block (coldwolverine, PR 18132)
- Do not consider bare TypeVar not overlapping with None for reachability analysis (Stanislav Terliakov, PR 18138)
- Special case types.DynamicClassAttribute as property-like (Stephen Morton, PR 18150)
- Disallow bare ParamSpec in type aliases (Brian Schubert, PR 18174)
- Move long_description metadata to pyproject.toml (Marc Mueller, PR 18172)
- Support ==-based narrowing of Optional (Christoph Tyralla, PR 18163)
- Allow TypedDict assignment of Required item to NotRequired ReadOnly item (Brian Schubert, PR 18164)
- Allow nesting of Annotated with TypedDict special forms inside TypedDicts (Brian Schubert, PR 18165)
- Infer generic type arguments for slice expressions (Brian Schubert, PR 18160)
- Fix checking of match sequence pattern against bounded type variables (Brian Schubert, PR 18091)
- Fix incorrect truthyness for Enum types and literals (David Salvisberg, PR 17337)
- Move static project metadata to pyproject.toml (Marc Mueller, PR 18146)
- Fallback to stdlib json if integer exceeds 64-bit range (q0w, PR 18148)
- Fix 'or' pattern structural matching exhaustiveness (yihong, PR 18119)
- Fix type inference of positional parameter in class pattern involving builtin subtype (Brian Schubert, PR 18141)
- Fix [override] error with no line number when argument node has no line number (Brian Schubert, PR 18122)
- Fix some dmypy crashes (Ivan Levkivskyi, PR 18098)
- Fix subtyping between instance type and overloaded (Shantanu, PR 18102)
- Clean up new_semantic_analyzer config (Shantanu, PR 18071)
- Issue warning for enum with no members in stub (Shantanu, PR 18068)
- Fix enum attributes are not members (Terence Honles, PR 17207)
- Fix crash when checking slice expression with step 0 in tuple index (Brian Schubert, PR 18063)
- Allow union-with-callable attributes to be overridden by methods (Brian Schubert, PR 18018)
- Emit [mutable-override] for covariant override of attribute with method (Brian Schubert, PR 18058)
- Support ParamSpec mapping with functools.partial (Stanislav Terliakov, PR 17355)
- Fix approved stub ignore, remove normpath (Shantanu, PR 18045)
- Make disallow-any-unimported flag invertible (Séamus Ó Ceanainn, PR 18030)
- Filter to possible package paths before trying to resolve a module (falsedrow, PR 18038)
- Fix overlap check for ParamSpec types (Jukka Lehtosalo, PR 18040)
- Do not prioritize ParamSpec signatures during overload resolution (Stanislav Terliakov, PR 18033)
- Fix ternary union for literals (Ivan Levkivskyi, PR 18023)
- Fix compatibility checks for conditional function definitions using decorators (Brian Schubert, PR 18020)
- TypeGuard should be bool not Any when matching TypeVar (Evgeniy Slobodkin, PR 17145)
- Fix convert-cache tool (Shantanu, PR 17974)
- Fix generator comprehension with mypyc (Shantanu, PR 17969)
- Fix crash issue when using shadowfile with pretty (Max Chang, PR 17894)
- Fix multiple nested classes with new generics syntax (Max Chang, PR 17820)
- Better error for mypy -p package without py.typed (Joe Gordon, PR 17908)
- Emit error for raise NotImplemented (Brian Schubert, PR 17890)
- Add is_lvalue attribute to AttributeContext (Brian Schubert, PR 17881)
- Changes from 1.13
- Significantly speed up file handling error paths (Shantanu, PR 17920)
- Use fast path in modulefinder more often (Shantanu, PR 17950)
- Let mypyc optimise os.path.join (Shantanu, PR 17949)
- Make is_sub_path faster (Shantanu, PR 17962)
- Speed up stubs suggestions (Shantanu, PR 17965)
- Use sha1 for hashing (Shantanu, PR 17953)
- Use orjson instead of json, when available (Shantanu, PR 17955)
- Add faster-cache extra, test in CI (Shantanu, PR 17978)
OBS-URL: https://build.opensuse.org/request/show/1240190
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-mypy?expand=0&rev=28
- Support Python 3.12 Syntax for Generics (PEP 695)
- Related improvements are included:
- Document Python 3.12 type parameter syntax (Jukka
Lehtosalo, PR 17816)
- Further documentation updates (Jukka Lehtosalo, PR 17826)
- Allow Self return types with contravariance (Jukka
Lehtosalo, PR 17786)
- Enable new type parameter syntax by default (Jukka
Lehtosalo, PR 17798)
- Generate error if new-style type alias used as base class
(Jukka Lehtosalo, PR 17789)
- Inherit variance if base class has explicit variance (Jukka
Lehtosalo, PR 17787)
- Fix crash on invalid type var reference (Jukka Lehtosalo,
PR 17788)
- Fix covariance of frozen dataclasses (Jukka Lehtosalo, PR
17783)
- Allow covariance with attribute that has "_" name prefix
(Jukka Lehtosalo, PR 17782)
- Support Annotated[...] in new-style type aliases (Jukka
Lehtosalo, PR 17777)
- Fix nested generic classes (Jukka Lehtosalo, PR 17776)
- Add detection and error reporting for the use of incorrect
expressions within the scope of a type parameter and a type
alias (Kirill Podoprigora, PR 17560)
- Basic Support for Python 3.13 This release adds partial
support for Python 3.13 features and compiled binaries for
Python 3.13. Mypyc now also supports Python 3.13.
- Various new stdlib features and changes (through typeshed
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-mypy?expand=0&rev=24
with 3.13.0 compatibility are fixed.
- Update to version 1.11.2+git.1728499967.eca206d:
* Fix union callees with functools.partial (#17903)
* [mypyc] Add "runtests.py mypyc-fast" for running fast mypyc tests (#17906)
* Emit error for "raise NotImplemented" (#17890)
* Document ReadOnly (PEP 705) (#17905)
* Make ReadOnly TypedDict items covariant (#17904)
* documentation for TypeIs (#17821)
* Improvements to functools.partial of types (#17898)
* Use 3.13.0 for ci tests (#17900)
* stubtest: Stop telling people to use double underscores (#17897)
* Add changelog for mypy 1.12 (#17889)
- Remove upstreamed latest-pythons.patch
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-mypy?expand=0&rev=22
- Update to 1.11.2
* Support Python 3.12 Syntax for Generics (PEP 695)
* Support for `functools.partial`
* Stricter Checks for Untyped Overrides
* Type Inference Improvements
* Improvements to Detection of Overlapping Overloads
* Better Support for Type Hints in Expressions
* Mypyc Improvements
+ Support Python 3.12 syntax for generic functions and classes
+ Support Python 3.12 type alias syntax
+ Fix ParamSpec
+ Inline fast paths of integer unboxing operations
+ Inline tagged integer arithmetic and bitwise operations
+ Allow specifying primitives as pure
* Changes to Stubtest
+ Ignore `_ios_support`
+ Improve support for Python 3.13
* Changes to Stubgen
+ Gracefully handle invalid `Optional` and recognize aliases to PEP 604 unions
+ Fix for Python 3.13
+ Preserve enum value initialisers
* Miscellaneous New Features
+ Add error format support and JSON output option via `--output json`
+ Support `enum.member` in Python 3.11+
+ Support `enum.nonmember` in Python 3.11+
+ Support `namedtuple.__replace__` in Python 3.13
+ Support `rename=True` in collections.namedtuple
+ Add support for `__spec__`
* Changes to Error Reporting
+ Mention `--enable-incomplete-feature=NewGenericSyntax` in messages
OBS-URL: https://build.opensuse.org/request/show/1199903
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-mypy?expand=0&rev=18
* Support TypeIs (PEP 742)
* Support TypeVar Defaults (PEP 696)
* Support TypeAliasType (PEP 695)
* Detect Additional Unsafe Uses of super()
* Fix incorrect inferred type when accessing descriptor on union type
* Fix crash when expanding invalid Unpack in a Callable alias
* Fix false positive when string formatting with string enum
* Narrow individual items when matching a tuple to a sequence pattern
* Fix false positive from type variable within TypeGuard or TypeIs
* Improve yield from inference for unions of generators
* Fix emulating hash method logic in attrs classes
* Add reverted typeshed commit that uses ParamSpec for functools.wraps
* Fix type narrowing for types.EllipsisType
* Fix single item enum match type exhaustion
* Improve type inference with empty collections
* Fix override checking for decorated property
* Fix narrowing on match with function subject
- Drop including types-ast, no longer required.
- Drop patch workaround-parenthesized-context-managers.patch, now
included upstream.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-mypy?expand=0&rev=16
* https://mypy-lang.blogspot.com/2023/12/mypy-18-released.html
* https://mypy-lang.blogspot.com/2023/11/mypy-17-released.html
* https://mypy-lang.blogspot.com/2023/10/mypy-16-released.html
- fix dependencies
- Support better __post_init__ method signature for dataclasses (Nikita Sobolev, PR 15503)
- Don't explicitly assign NULL values in setup functions (Logan Hunt, PR 15379)
- Fix crash on non-str docstring (Ali Hamdan, PR 15623)
- Remove confusing instance variable example in cheat sheet (Adel Atallah, PR 15441)
- Check for abstract class objects in tuples (Nikita Sobolev, PR 15366)
- Fix frozen behavior for base classes with direct metaclasses (Wesley Collin Wright, PR 14878)
- Fixes to float to int conversion (Jukka Lehtosalo, PR 14936)
- Faster classmethod calls via cls (Jukka Lehtosalo, PR 14789)
- Fix crash on ParamSpec in incremental mode (Ivan Levkivskyi, PR 14885)
- Improve documentation of top level mypy: disable-error-code comment (Nikita Sobolev, PR 14810)
- Add suggestions for pandas-stubs and lxml-stubs (Shantanu, PR 14737)
- Honor NoReturn as __setitem__ return type to mark unreachable code (sterliakov, PR 12572)
- Sadly, six is still required for tests, re-add to BuildRequires.
The full release notes can be found here:
- Fix types of inherited attributes in generic dataclasses (Jukka Lehtosalo, PR 12656)
- add missing g++ compiler for tests
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-mypy?expand=0&rev=6