This project is a reference implementation of OpenPulse.
Specifically, the parser passes the body of cal
and defcal
written in OpenPulse
.
It reuses the classical types and statements from openqasm3
.
To install dependencies, change to source/openpulse
directory and run:
python -m pip install -r requirements.txt -r requirements-dev.txt
To reuse classic statements/types, OpenPulse grammar imports OpenQASM grammar. When we update the
OpenPulse grammar, we also need to copy the latest OpenQASM grammar from
https://github.com/openqasm/openqasm/tree/main/source/grammar into the source/grammar
directory.
Now build the openpulse
grammar. Change to the source/grammar
directory and run:
antlr4 -o ../openpulse/openpulse/_antlr/_<major>_<minor> -Dlanguage=Python3 -visitor openpulseLexer.g4 openpulseParser.g4
Finally, you can change to the source/openpulse
directory and run:
pytest .
The deployment is primarily managed by a GitHub Actions pipeline, triggered by a tag of the form v<version>
.
For example, for package version 0.4.0
, the tag should be v0.4.0
.
To deploy:
- create a PR that sets the version number of the package in
__init__.py
to what it should be. - once the PR has merged, tag the merge commit (for example,
git fetch origin; git tag -m "Python AST 0.4.0" v0.4.0 origin/main
). - push the tag to this repository (for example,
git push origin v0.4.0
).
At this point, the deployment pipeline will take over and deploy the package to PyPI. You should be able to see the progress in the Actions tab of this repository.