https://github.com/openqasm/openpulse-python
Reference Python package to work with OpenPulse
https://github.com/openqasm/openpulse-python
Last synced: 6 months ago
JSON representation
Reference Python package to work with OpenPulse
- Host: GitHub
- URL: https://github.com/openqasm/openpulse-python
- Owner: openqasm
- License: apache-2.0
- Created: 2022-08-19T16:03:36.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2025-04-02T16:08:41.000Z (about 1 year ago)
- Last Synced: 2025-04-30T03:19:51.195Z (about 1 year ago)
- Language: Python
- Size: 106 KB
- Stars: 5
- Watchers: 9
- Forks: 9
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# OpenPulse Python Parser Reference Implementation
This project is a reference implementation of [OpenPulse](https://openqasm.com/language/openpulse.html).
Specifically, the parser passes the body of `cal` and `defcal` written in `OpenPulse`.
It reuses the classical types and statements from `openqasm3`.
## Developing openpulse
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/__ -Dlanguage=Python3 -visitor openpulseLexer.g4 openpulseParser.g4
```
Finally, you can change to the `source/openpulse` directory and run:
```
pytest .
```
## Deployment procedure
The deployment is primarily managed by a GitHub Actions pipeline, triggered by a tag of the form `v`.
For example, for package version `0.4.0`, the tag should be `v0.4.0`.
To deploy:
1. create a PR that sets the version number of the package in `__init__.py` to what it should be.
2. 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`).
3. 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](https://github.com/openqasm/openpulse/actions/workflows/deploy-ast.yml).