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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for MonkeyType-17.12.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0e13947eb10cb0c228439a5a0553a0726ce22e330d8b4e1ccd992a62291ea2c |
|
MD5 | 4dc56dd36c96310250f5f5fddc7babf4 |
|
BLAKE2b-256 | e1675cae22d2ef2f23fdab687ad99a6925c157c81f4fc2974227a8bb9f23f0ab |