init
This commit is contained in:
commit
38355d2442
9083 changed files with 1225834 additions and 0 deletions
133
.venv/lib/python3.8/site-packages/mypyc/README.md
Normal file
133
.venv/lib/python3.8/site-packages/mypyc/README.md
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
mypyc: Mypy to Python C Extension Compiler
|
||||
==========================================
|
||||
|
||||
**NOTE: We are in the process of moving the mypyc README to the**
|
||||
**[mypyc repository](https://github.com/mypyc/mypyc)**
|
||||
|
||||
**This may be out of date!**
|
||||
|
||||
Mypyc is a compiler that compiles mypy-annotated, statically typed
|
||||
Python modules into CPython C extensions. Currently our primary focus
|
||||
is on making mypy faster through compilation -- the default mypy wheels
|
||||
are compiled with mypyc. Compiled mypy is about 4x faster than
|
||||
without compilation.
|
||||
|
||||
Mypyc compiles what is essentially a Python language variant using "strict"
|
||||
semantics. This means (among some other things):
|
||||
|
||||
* Most type annotations are enforced at runtime (raising ``TypeError`` on mismatch)
|
||||
|
||||
* Classes are compiled into extension classes without ``__dict__``
|
||||
(much, but not quite, like if they used ``__slots__``)
|
||||
|
||||
* Monkey patching doesn't work
|
||||
|
||||
* Instance attributes won't fall back to class attributes if undefined
|
||||
|
||||
* Also there are still a bunch of bad bugs and unsupported features :)
|
||||
|
||||
Compiled modules can import arbitrary Python modules, and compiled modules
|
||||
can be used from other Python modules. Typically mypyc is used to only
|
||||
compile modules that contain performance bottlenecks.
|
||||
|
||||
You can run compiled modules also as normal, interpreted Python
|
||||
modules, since mypyc targets valid Python code. This means that
|
||||
all Python developer tools and debuggers can be used.
|
||||
|
||||
macOS Requirements
|
||||
------------------
|
||||
|
||||
* macOS Sierra or later
|
||||
|
||||
* Xcode command line tools
|
||||
|
||||
* Python 3.5+ from python.org (other versions are untested)
|
||||
|
||||
Linux Requirements
|
||||
------------------
|
||||
|
||||
* A recent enough C/C++ build environment
|
||||
|
||||
* Python 3.5+
|
||||
|
||||
Windows Requirements
|
||||
--------------------
|
||||
|
||||
* Windows has been tested with Windows 10 and MSVC 2017.
|
||||
|
||||
* Python 3.5+
|
||||
|
||||
Quick Start for Contributors
|
||||
----------------------------
|
||||
|
||||
First clone the mypy git repository:
|
||||
|
||||
$ git clone https://github.com/python/mypy.git
|
||||
$ cd mypy
|
||||
|
||||
Optionally create a virtualenv (recommended):
|
||||
|
||||
$ virtualenv -p python3 <directory>
|
||||
$ source <directory>/bin/activate
|
||||
|
||||
Then install the dependencies:
|
||||
|
||||
$ python3 -m pip install -r test-requirements.txt
|
||||
|
||||
Now you can run the tests:
|
||||
|
||||
$ pytest -q mypyc
|
||||
|
||||
Look at the [issue tracker](https://github.com/mypyc/mypyc/issues)
|
||||
for things to work on. Please express your interest in working on an
|
||||
issue by adding a comment before doing any significant work, since
|
||||
there is a risk of duplicate work.
|
||||
|
||||
Note that the issue tracker is hosted on the mypyc GitHub project, not
|
||||
with mypy itself.
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
We have some [developer documentation](doc/dev-intro.md).
|
||||
|
||||
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. [PARTIALLY DONE] Generate useful errors for code that uses unsupported Python
|
||||
features instead of crashing or generating bad code.
|
||||
|
||||
6. [DONE] Release a version of mypy that includes a compiled mypy.
|
||||
|
||||
7.
|
||||
1. More feature/compatibility work. (100% compatibility with Python is distinctly
|
||||
an anti-goal, but more than we have now is a good idea.)
|
||||
2. [DONE] Support compiling Black, which is a prominent tool that could benefit
|
||||
and has maintainer buy-in.
|
||||
(Let us know if you maintain another Python tool or library and are
|
||||
interested in working with us on this!)
|
||||
3. More optimization! Code size reductions in particular are likely to
|
||||
be valuable and will speed up mypyc compilation.
|
||||
|
||||
8. We'll see! Adventure is out there!
|
||||
|
||||
Future
|
||||
------
|
||||
|
||||
We have some ideas for
|
||||
[future improvements and optimizations](doc/future.md).
|
||||
Loading…
Add table
Add a link
Reference in a new issue