Skip to content
forked from python/mypy

Optional static typing for Python 3 and 2 (PEP 484)

License

Notifications You must be signed in to change notification settings

johnjohndoe/mypy

Repository files navigation

mypyc: Mypy to Python C Extension Compiler

Mypyc is not yet useful for general Python development.

Mypyc is a compiler that compiles mypy-annotated, statically typed Python modules into Python C extensions. Currently our focus is on making mypy faster through compilation.

MacOS Requirements

  • macOS Sierra or later

  • Xcode command line tools

  • Python 3.6 (64-bit) from python.org (other versions likely won't work right now)

Linux Requirements

  • A recent enough C/C++ build environment

  • Python 3.5+ (64-bit)

Windows Requirements

  • Windows has been tested with Windows 10 and MSVC 2017.

  • Python 3.5+ (64-bit)

Quick Start for Contributors

First clone the mypyc git repository and git submodules:

$ git clone --recurse-submodules https://github.com/mypyc/mypyc.git
$ cd mypyc

Optionally create a virtualenv (recommended):

$ virtualenv -p python3 <directory>
$ source <directory>/bin/activate

Then install the dependencies:

$ python3 -m pip install -r external/mypy/test-requirements.txt

You need to have the mypy subdirectory in your PYTHONPATH:

$ export PYTHONPATH=`pwd`/external/mypy

Now you can run the tests:

$ pytest mypyc

Look at the issue tracker for things to work on. Please express your interest in working on an issue by adding a comment before doing any significant work, since development is currently very active and there is real risk of duplicate work.

Documentation

We have some developer documentation.

Development Status and Roadmap

These are the current planned major milestones:

  1. [DONE] Support a smallish but useful Python subset. Focus on compiling single modules, while the rest of the program is interpreted and does not need to be type checked.

  2. [DONE] Support compiling multiple modules as a single compilation unit (or dynamic linking of compiled modules). Without this inter-module calls will use slower Python-level objects, wrapper functions and Python namespaces.

  3. [DONE] Mypyc can compile mypy.

  4. [DONE] Optimize some important performance bottlenecks.

  5. Generate useful errors for code that uses unsupported Python features instead of crashing or generating bad code.

  6. Release a version of mypy that includes a compiled mypy.

Future

We have some ideas for future improvements and optimizations.

About

Optional static typing for Python 3 and 2 (PEP 484)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 95.3%
  • C 3.5%
  • PLSQL 0.5%
  • C++ 0.4%
  • XSLT 0.2%
  • Shell 0.1%