Skip to main content

Generating type annotations from sampled production types

Project description

MonkeyType

MonkeyType collects runtime types of function arguments and return values, and can automatically generate stub files or even add draft type annotations directly to your Python code based on the types collected at runtime.

Examples

Run a script under call-trace logging of functions and methods in all imported modules:

$ monkeytype run myscript.py

Or enable call-trace logging for a block of code:

import monkeytype

with monkeytype.trace():
    ...

By default this will dump call traces into a sqlite database in the file monkeytype.sqlite3 in the current working directory. You can then use the monkeytype command to generate a stub file for a module, or apply the type annotations directly to your code:

$ monkeytype stub some.module
$ monkeytype apply some.module

Requirements

MonkeyType requires Python 3.6+ and the retype library (for applying type stubs to code files). It generates only Python 3 type annotations (no type comments).

Installing

Install MonkeyType with pip:

pip install MonkeyType

How MonkeyType works

MonkeyType uses the sys.setprofile hook provided by Python to interpose on function calls, function returns, and generator yields, and record the types of arguments / return values / yield values.

It generates stub files based on that data, and can use retype to apply those stub files directly to your code.

See the full documentation for details.

Troubleshooting

Check if your issue is mentioned in the frequently asked questions list.

LICENSE

MonkeyType is BSD licensed.

Changelog

17.12.3

  • Rewrite imports from _io module to io. (#1, merge of #32). Thanks Radhans Jadhao.

  • Add Config.cli_context() as a hook for custom CLI initialization and cleanup logic (#28; merge of #29). Thanks Rodney Folz.

17.12.2

  • Exclude “frozen importlib” functions in default code filter.

  • Fix passing args to script run with monkeytype run (#18; merge of #21). Thanks Rodney Folz.

  • Fix generated annotations for NewType types (#22; merge of #23). Thanks Rodney Folz.

17.12.1

  • Fix using MonkeyType outside a virtualenv (#16). Thanks Guido van Rossum for the report.

17.12.0

  • Initial public version.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

MonkeyType-17.12.3.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

MonkeyType-17.12.3-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

Details for the file MonkeyType-17.12.3.tar.gz.

File metadata

File hashes

Hashes for MonkeyType-17.12.3.tar.gz
Algorithm Hash digest
SHA256 19d2061267c694ff6722ee28842f7b66c0dd1c0109b297167b750dc9e846a649
MD5 df881e950bb8e05ca028f46b593bd9a8
BLAKE2b-256 8a3469e43d5e6c93e9b24d2819b747a8da60896f9d8cea95c3a34b0bd7545d0d

See more details on using hashes here.

File details

Details for the file MonkeyType-17.12.3-py3-none-any.whl.

File metadata

File hashes

Hashes for MonkeyType-17.12.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b0e13947eb10cb0c228439a5a0553a0726ce22e330d8b4e1ccd992a62291ea2c
MD5 4dc56dd36c96310250f5f5fddc7babf4
BLAKE2b-256 e1675cae22d2ef2f23fdab687ad99a6925c157c81f4fc2974227a8bb9f23f0ab

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page