Need help with typeguard?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

agronholm
756 Stars 67 Forks Other 257 Commits 34 Opened issues

Description

Run-time type checker for Python

Services available

!
?

Need anything else?

Contributors list

.. image:: https://travis-ci.com/agronholm/typeguard.svg?branch=master :target: https://travis-ci.com/agronholm/typeguard :alt: Build Status .. image:: https://coveralls.io/repos/agronholm/typeguard/badge.svg?branch=master&service=github :target: https://coveralls.io/github/agronholm/typeguard?branch=master :alt: Code Coverage .. image:: https://readthedocs.org/projects/typeguard/badge/?version=latest :target: https://typeguard.readthedocs.io/en/latest/?badge=latest

This library provides run-time type checking for functions defined with

PEP 484 
_ argument (and return) type annotations.

Four principal ways to do type checking are provided, each with its pros and cons:

. the
check_argument_types()
and
check_return_type()
functions:

  • debugger friendly (except when running with the pydev debugger with the C extension installed)
  • does not work reliably with dynamically defined type hints (e.g. in nested functions)

    . the
    @typechecked
    decorator:

  • automatically type checks yields and sends of returned generators (regular and async)

  • adds an extra frame to the call stack for every call to a decorated function

    . the stack profiler hook (
    with TypeChecker('packagename'):
    ) (deprecated):

  • emits warnings instead of raising

    TypeError
  • requires very few modifications to the code

  • multiple TypeCheckers can be stacked/nested

  • does not work reliably with dynamically defined type hints (e.g. in nested functions)

  • may cause problems with badly behaving debuggers or profilers

  • cannot distinguish between an exception being raised and a

    None
    being returned

    . the import hook (
    typeguard.importhook.install_import_hook()
    ):

  • automatically annotates classes and functions with

    @typechecked
    on import
  • no code changes required in target modules

  • requires imports of modules you need to check to be deferred until after the import hook has been installed

  • may clash with other import hooks

See the documentation_ for further instructions.

.. _documentation: https://typeguard.readthedocs.io/en/latest/

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.