A framework for creating domain specific language libraries in Python.
The goal here is to share as much optimization and representation logic as possible, so that the world users exist in can be extended more easily without having to cause them to change their code.
For example, if someone comes up with a new way of executing linear algebra or wants to try out a new way of optimizing expressions, they should be able to write those things in a pluggable manner, so that users can try them out with minimal effort.
This means we have to explicitly expose the protocols of the different levels to foster distributed collaboration and reuse.
Either use repo2docker:
repo2docker -E .
Or get started with Conda/flit:
conda create -n metadsl jupyterlab conda activate metadsl pip install flit flit install --symlink
This runs mypy and tests, and reports coverage.
pytest --cov # open coverage file open htmlcov/index.html
You can also test that the documentation notebooks run correctly, but this must be run separately from the code coverage:
pytest docs/*.ipynb --nbval
sphinx-autobuild docs docs/_build/html/