Typeguard

Latest version: v4.4.2

Safety actively analyzes 723177 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 4 of 12

4.0.0rc2

- The ``.pyc`` files now use a version-based optimization suffix in the file names so as
not to cause the interpreter to load potentially faulty/incompatible cached bytecode
generated by older versions
- Fixed typed variable positional and keyword arguments causing compilation errors on
Python 3.7 and 3.8
- Fixed compilation error when a type annotation contains a type guarded by
``if TYPE_CHECKING:``

4.0.0rc1

- **BACKWARD INCOMPATIBLE** ``check_type()`` no longer uses the global configuration.
It now uses the default configuration values, unless overridden with an explicit
``config`` argument.
- **BACKWARD INCOMPATIBLE** Removed ``CallMemo`` from the API
- **BACKWARD INCOMPATIBLE** Required checkers to use the configuration from
``memo.config``, rather than the global configuration
- Added keyword arguments to ``typechecked``, allowing users to override settings on a
per-function basis
- Added support for using ``suppress_type_checks()`` as a decorator
- Added support for type checking against nonlocal classes defined within the same
parent function as the instrumented function
- Changed instrumentation to statically copy the function annotations to avoid having to
look up the function object at run time
- Improved support for avoiding type checks against imports declared in
``if TYPE_CHECKING:`` blocks
- Fixed ``check_type`` not returning the passed value when checking against ``Any``, or
when type checking is being suppressed
- Fixed ``suppress_type_checks()`` not ending the suppression if the context block
raises an exception
- Fixed checking non-dictionary objects against a ``TypedDict`` annotation
(PR by Tolker-KU)

3.0.2

- Improved warnings by ensuring that they target user code and not Typeguard internal
code
- Fixed ``warn_on_error()`` not showing where the type violation actually occurred
- Fixed local assignment to ``*args`` or ``**kwargs`` being type checked incorrectly
- Fixed ``TypeError`` on ``check_type(..., None)``
- Fixed unpacking assignment not working with a starred variable (``x, *y = ...``) in
the target tuple
- Fixed variable multi-assignment (``a = b = c = ...``) being type checked incorrectly

3.0.1

- Improved the documentation
- Fixed assignment unpacking (``a, b = ...``) being checked incorrectly
- Fixed ``typechecked`` attempting to instrument wrapper decorators such as
``contextmanager`` when applied to a class
- Fixed ``py.typed`` missing from the wheel when not building from a git checkout

3.0.0

- **BACKWARD INCOMPATIBLE** Dropped the ``argname``, ``memo``, ``globals`` and
``locals`` arguments from ``check_type()``
- **BACKWARD INCOMPATIBLE** Removed the ``check_argument_types()`` and
``check_return_type()`` functions (use ``typechecked`` instead)
- **BACKWARD INCOMPATIBLE** Moved ``install_import_hook`` to be directly importable
from the ``typeguard`` module
- **BACKWARD INCOMPATIBLE** Changed the checking of collections (list, set, dict,
sequence, mapping) to only check the first item by default. To get the old behavior,
set ``typeguard.config.collection_check_strategy`` to
``CollectionCheckStrategy.ALL_ITEMS``
- **BACKWARD INCOMPATIBLE** Type checking failures now raise
``typeguard.TypeCheckError`` instead of ``TypeError``
- Dropped Python 3.5 and 3.6 support
- Dropped the deprecated profiler hook (``TypeChecker``)
- Added a configuration system
- Added support for custom type checking functions
- Added support for PEP 604 union types (``X | Y``) on all Python versions
- Added support for generic built-in collection types (``list[int]`` et al) on all
Python versions
- Added support for checking arbitrary ``Mapping`` types
- Added support for the ``Self`` type
- Added support for ``typing.Never`` (and ``typing_extensions.Never``)
- Added support for ``Never`` and ``NoReturn`` in argument annotations
- Added support for ``LiteralString``
- Added support for ``TypeGuard``
- Added support for the subclassable ``Any`` on Python 3.11 and ``typing_extensions``
- Added the possibility to have the import hook instrument all packages
- Added the ``suppress_type_checks()`` context manager function for temporarily
disabling type checks
- Much improved error messages showing where the type check failed
- Made it possible to apply ``typechecked`` on top of ``classmethod`` /
``staticmethod`` (PR by jacobpbrugh)
- Changed ``check_type()`` to return the passed value, so it can be used (to an extent)
in place of ``typing.cast()``, but with run-time type checking
- Replaced custom implementation of ``is_typeddict()`` with the implementation from
``typing_extensions`` v4.1.0
- Emit ``InstrumentationWarning`` instead of raising ``RuntimeError`` from the pytest
plugin if modules in the target package have already been imported
- Fixed ``TypeError`` when checking against ``TypedDict`` when the value has mixed types
among the extra keys (PR by biolds)
- Fixed incompatibility with ``typing_extensions`` v4.1+ on Python 3.10 (PR by David C.)
- Fixed checking of ``Tuple[()]`` on Python 3.11 and ``tuple[()]`` on Python 3.9+
- Fixed integers 0 and 1 passing for ``Literal[False]`` and ``Literal[True]``,
respectively
- Fixed type checking of annotated variable positional and keyword arguments (``*args``
and ``**kwargs``)
- Fixed checks against ``unittest.Mock`` and derivatives being done in the wrong place

2.13.3

- Fixed ``TypeError`` when using typeguard within ``exec()`` (where ``__module__`` is ``None``)
(PR by Andy Jones)
- Fixed ``TypedDict`` causing ``TypeError: TypedDict does not support instance and class checks``
on Python 3.8 with standard library (not ``typing_extensions``) typed dicts

Page 4 of 12

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.