Changelog¶
Changes¶
All of these changes are highlights, there’s always smaller bugfixes included.
0.7.2 (2026-05-03)¶
Implement sentinels
Fixes an annoying regression around abstractmethods
0.7.1 (2026-04-25)¶
Basic support for template strings (Python 3.14
t"..."syntax)Upgrade typeshed
Completions in comments (LSP)
Implement
disjoint_base(PEP 800)Implement conditional fields for NamedTuple and TypedDict
Implement shell expansion for
mypy_pathin configFix finding typeshed for Debian based systems if installed as root
0.7.0 (2026-04-06)¶
Breaking: The default mode is now “default” even if there is Mypy specific config (e.g. mypy.ini). Previously the “mypy” mode would be chosen in such cases. Mypy config is still read, though. This does not matter if you run
zmypyorzuban mypy. However if you want to use the language server you may want to add amode = "mypy"to the[tool.zuban]section inpyproject.toml. The reason for this change is that the previous logic was too complicated for users to understand. Now it’s pretty simple: The mode is always “default” except if it’s explicitly chosen otherwise.Django
*_idattributes and completions now workError codes for overrides do now match Mypy’s error codes closer
Better hover for type aliases, type variables (LSP)
References are now sorted in a more useful way (LSP)
Removed the undocumented
zubanlsexecutable which was documented only in very early releases (before 0.0.20)Improved support for
typing_extensionsusagesImproved speed a lot for some TypedDict matching
Fixed a lot of crashes
0.6.2 (2026-03-16)¶
Union matching for large literal unions (> 100 items) is now not exponential anymore and therefor exponentially faster :-)
sys.path improvements (mostly for uv users):
The
src/subfolder in a project is now added to the pathNested folders with their own local imports are now also possible. The parent folder of the most outer
__init__.pyis assumed to be the package nameAdded
--explicit-package-bases, which Mypy also uses to disable these heuristics$VIRTUAL_ENVnow has lower priority than searching local folders for virtual envs. The problem is that this variable is quite unreliable in some cases, especially when zuban is run from a virtualenv itself
Better keyword argument completions (LSP)
Zuban is in general about 30% faster for large projects:
Imports are now a lot faster in large projects
The parser is now faster by a few percent
The parser had stalls due to exponential reparsing, which is now fixed
0.6.1 (2026-02-25)¶
Using zmypy is now possible from a subdir. It respects relative paths and will typecheck the whole project if no explicit paths are given
Fixed a problematic bug when working with nested workspaces. This was often problematic when using uv
Added a few more cases where inlay hints are useful when generics are present (LSP)
0.6.0 (2026-02-19)¶
Add pytest fixture inference, completions and goto
Added the code action to add
# type: ignore[<error-code>]at the end of the line when errors are presentCode actions are now more gracious and give you actions for the full line even if the cursor is not directly on it
0.5.1 (2026-02-09)¶
Implemented Mypy’s
ignore_errors = truecorrectly. This makes it possible to avoid showing diagnostics in a LSP process.Fixed the sys path when site-packages are used in a default environment
0.5.0 (2026-02-07)¶
By default enable –untyped-strict-optional in the default mode. This reduces a lot of false positives in untyped code.
Fixed many issues around untyped code
Muted errors for example around incomplete list generics, which are common in untyped code.
Does not infer generics for params anymore by default, this is too noisy for now.
try: ... except AttributeErrornow mutes errors in the case where an attribute exists on some parts of the union, but not on others.In addition to specifying
type: ignoreyou can now usezuban: ignoreChanged
--mypy-compatibleto--mode mypyand--no-mypy-compatibleto--mode defaultIt is now possible to specify
mode = "mypy"ormode = "default"inpyproject.toml
0.4.2 (2026-01-16)¶
Bugfixes
0.4.1 (2025-12-27)¶
Bugfixes
0.4.0 (2025-12-20)¶
Get a lot closer to passing conformance tests
0.3.0 (2025-12-02)¶
Add inlay hints (LSP)
Django model support, implements type checking and completions (LSP)
Added autocompletion resolve, which means documentation for completion items is now available (LSP)
Added support for Conda (that
CONDA_PREFIXis now recognized)Many fixes for crashes
0.2.3 (2025-11-17)¶
Added autoimport actions (LSP)
Better documentation Markdown formatting (LSP)
0.2.2 (2025-11-03)¶
Bug fixes
0.2.1 (2025-10-30)¶
Implemented semantic colors and selection ranges (LSP)
Fixed a problem that caused Zuban to not terminate
0.2.0 (2025-10-23)¶
Added Notebook support in LSP (completions, goto, rename, etc.)
0.1.2 (2025-10-22)¶
Added musllinux builds to the PyPI release:
armv7-unknown-linux-musleabihfaarch64-unknown-linux-muslx86_64-unknown-linux-musli686-unknown-linux-musl
0.1.1 (2025-10-15)¶
Added call signatures to LSP
0.1.0 (2025-10-10)¶
This is the Zuban Beta release, because it feels very stable now
Fix more crashes
0.0.25 (2025-10-07)¶
Full support for pattern matching (
matchandcasenarrowing)The
PYTHONPATHandMYPYPATHenvironment variables are now used for thesys.pathFixes for many crashes and bugs
0.0.24 (2025-09-23)¶
Full support for TypedDict
extra_items/closed(PEP 728)Support for reporting deprecated usages of classes/functions, by using
--enable-error-code deprecatedSupport for LiteralString and Literal operations,
"a" + "b"would result in the typeLiteral["ab"].Support for the
TypeVar(..., infer_variance=True)argumentNow all conformance tests are at least partially supported
0.0.23 (2025-09-12)¶
Better virtualenv support: In case where no
$VIRTUAL_ENVis found.pthfile support, this enables for example uv workspacesAdded colors to the command line
Support for
--prettyand thepretty = trueto have more infos about the error location when running on the command lineAdded support for
typing.LiteralStringand literal operations (e.g."a" + "b"would result in the literal"ab"Added support for
__call__in metaclasses
0.0.22 (2025-09-04)¶
pyproject.tomlnow supports[tool.zuban]for configurationVarious bug fixes
0.0.21 (2025-09-03)¶
Open Sourced with an AGPL license
0.0.20 (2025-08-28)¶
Performance optimizations (some multi-threading, generally about 20% faster)
zubanis now the main executable,zubanlsandzmypysimply callzuban. To type check code, usezuban checkorzuban mypy(to ensure Mypy-like behavior). To start the language server, you can simply usezuban server.Fixing a lot of crashes
0.0.19 (2025-08-11)¶
Fix a lot of details around diagnostics to satisfy most conformance tests
0.0.18 (2025-07-31)¶
Add language server (LSP) capabilities for
Completions
Goto (definitions, declarations, implementations, type-definitions)
Hover
References / Document Highlights
Rename
Add type inference for untyped returns, when running
zuban check.def foo(x): return [x]would be inferred as Callable[[T], list[T]]
0.0.1 - 0.0.17¶
Initial releases of zuban with basic type checking