{"id":13536053,"url":"https://github.com/rigetti/pyquil","last_synced_at":"2025-12-12T01:04:27.096Z","repository":{"id":38455567,"uuid":"78470807","full_name":"rigetti/pyquil","owner":"rigetti","description":"A Python library for quantum programming using Quil.","archived":false,"fork":false,"pushed_at":"2025-03-24T15:09:35.000Z","size":82771,"stargazers_count":1446,"open_issues_count":232,"forks_count":352,"subscribers_count":83,"default_branch":"master","last_synced_at":"2025-04-23T20:56:57.933Z","etag":null,"topics":["forest","quantum-computing","quantum-programming","quil"],"latest_commit_sha":null,"homepage":"http://docs.rigetti.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rigetti.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-09T21:30:22.000Z","updated_at":"2025-04-18T23:53:59.000Z","dependencies_parsed_at":"2023-09-27T09:01:17.275Z","dependency_job_id":"6d4f3325-2e6e-423e-93a0-445a19e24848","html_url":"https://github.com/rigetti/pyquil","commit_stats":{"total_commits":1283,"total_committers":131,"mean_commits":9.793893129770993,"dds":0.8815276695245519,"last_synced_commit":"8eb4b970c25d47c047c14d3a03e07ca20658e73d"},"previous_names":["rigetticomputing/pyquil"],"tags_count":295,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rigetti%2Fpyquil","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rigetti%2Fpyquil/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rigetti%2Fpyquil/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rigetti%2Fpyquil/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rigetti","download_url":"https://codeload.github.com/rigetti/pyquil/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250514767,"owners_count":21443208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["forest","quantum-computing","quantum-programming","quil"],"created_at":"2024-08-01T09:00:34.175Z","updated_at":"2025-12-12T01:04:22.071Z","avatar_url":"https://github.com/rigetti.png","language":"Python","readme":"PyQuil: Quantum programming in Python\n=====================================\n\n[![binder](https://mybinder.org/badge_logo.svg)][binder]\n[![docs][docs-badge]][docs-repo]\n[![docker][docker-badge]][docker-repo]\n[![pepy][pepy-badge]][pepy-repo]\n[![pypi][pypi-badge]][pypi-repo]\n[![slack][slack-badge]][slack-invite]\n\nPyQuil is a Python library for quantum programming using [Quil](https://arxiv.org/abs/1608.03355),\nthe quantum instruction language developed at [Rigetti Computing](https://www.rigetti.com/).\nPyQuil serves three main functions:\n\n- Easily generating Quil programs from quantum gates and classical operations\n- Compiling and simulating Quil programs using the [Quil Compiler](https://github.com/rigetti/quilc)\n  (quilc) and the [Quantum Virtual Machine](https://github.com/rigetti/qvm) (QVM)\n- Executing Quil programs on real quantum processors (QPUs) using\n  [Quantum Cloud Services][qcs-paper] (QCS)\n\nPyQuil has a ton of other features, which you can learn more about in the\n[docs](http://pyquil.readthedocs.io/en/latest/). However, you can also keep reading\nbelow to get started with running your first quantum program!\n\nQuickstart with interactive tutorial notebooks\n----------------------------------------------\n\nWithout installing anything, you can quickly get started with quantum programming by exploring\nour interactive [Jupyter][jupyter] notebook tutorials and examples. To run them in a preconfigured\nexecution environment on [Binder][mybinder], click the \"launch binder\" badge at the top of the\nREADME or the link [here][binder]! To learn more about the tutorials and how you can add your own,\nvisit the [rigetti/forest-tutorials][forest-tutorials] repository. If you'd rather set everything\nup locally, or are interested in contributing to pyQuil, continue onto the next section for\ninstructions on installing pyQuil and the Forest SDK.\n\nInstalling pyQuil and the Forest SDK\n------------------------------------\n\n[![pypi][pypi-badge]][pypi-repo]\n[![conda-forge][conda-forge-badge]][conda-forge-badge]\n[![conda-rigetti][conda-rigetti-badge]][conda-rigetti-repo]\n\nPyQuil can be installed using `conda`, `pip`, or from source. To install it from PyPI (via `pip`),\ndo the following:\n\n```bash\npip install pyquil\n```\n\nTo instead install pyQuil from source, do the following from within the repository after cloning it:\n\n```bash\npip install -e .\n```\n\nIf you choose to use `pip`, we highly recommend installing pyQuil within a virtual environment.\n\nPyQuil, along with quilc, the QVM, and other libraries, make up what is called the Forest\nSDK. To make full use of pyQuil, you will need to additionally have installed\n[quilc](https://github.com/quil-lang/quilc) and the [QVM](https://github.com/quil-lang/qvm).\nFor more information, check out the docs!\n\nRunning your first quantum program\n----------------------------------\n\nIn just a few lines, we can use pyQuil with the Forest SDK to simulate a Bell state!\n\n```python\nfrom pyquil import get_qc, Program\nfrom pyquil.gates import CNOT, H, MEASURE\n \nqvm = get_qc('2q-qvm')\n \np = Program()\np += H(0)\np += CNOT(0, 1)\nro = p.declare('ro', 'BIT', 2)\np += MEASURE(0, ro[0])\np += MEASURE(1, ro[1])\np.wrap_in_numshots_loop(10)\n\nqvm.run(p).get_register_map()['ro'].tolist()\n```\n\nThe output of the above program should look something like the following,\nthe statistics of which are consistent with a two-qubit entangled state.\n\n```\n[[0, 0],\n [1, 1],\n [1, 1],\n [1, 1],\n [1, 1],\n [0, 0],\n [0, 0],\n [1, 1],\n [0, 0],\n [0, 0]]\n```\n\nUsing the Forest SDK, you can simulate the operation of a real quantum processor (QPU). If you\nwould like to run on the real QPUs in our lab in Berkeley, you can sign up for an account\non [Quantum Cloud Services][qcs-request-access] (QCS)!\n\nJoining the Forest community\n----------------------------\n\nIf you'd like to get involved with pyQuil and Forest, joining the\n[Rigetti Forest Slack Workspace][slack-invite] is a great place to start! You can do so by\nclicking the invite link in the previous sentence, or in the badge at the top of this README.\nThe Slack Workspace is a great place to ask general questions, join high-level design discussions,\nand hear about updates to pyQuil and the Forest SDK.\n\nTo go a step further and start contributing to the development of pyQuil, good first steps are\n[reporting a bug][bug], [requesting a feature][feature], or picking up one of the issues with the\n[good first issue][first] or [help wanted][help] labels. Once you find an issue to work\non, make sure to [fork this repository][fork] and then [open a pull request][pr] once your changes\nare ready. For more information on all the ways you can contribute to pyQuil (along with\nsome helpful tips for developers and maintainers) check out our\n[Contributing Guide](CONTRIBUTING.md)!\n\nTo see what people have contributed in the past, check out the [Changelog](CHANGELOG.md) for\na detailed list of all announcements, improvements, changes, and bugfixes. The\n[Releases](https://github.com/rigetti/pyquil/releases) page for pyQuil contains similar\ninformation, but with links to the pull request for each change and its corresponding author.\nThanks for contributing to pyQuil! 🙂\n\nCiting pyQuil, Forest, and Quantum Cloud Services\n-------------------------------------------------\n\n[![zenodo][zenodo-badge]][zenodo-doi]\n\nIf you use pyQuil, Grove, or other parts of the Forest SDK in your research, please cite\nthe [Quil specification][quil-paper] using the following BibTeX snippet:\n\n```bibtex\n@misc{smith2016practical,\n    title={A Practical Quantum Instruction Set Architecture},\n    author={Robert S. Smith and Michael J. Curtis and William J. Zeng},\n    year={2016},\n    eprint={1608.03355},\n    archivePrefix={arXiv},\n    primaryClass={quant-ph}\n}\n```\n\nAdditionally, if your research involves taking data on Rigetti quantum processors (QPUs) via\nthe Quantum Cloud Services (QCS) platform, please reference the [QCS paper][qcs-paper] using the\nfollowing BibTeX snippet:\n\n```bibtex\n@article{Karalekas_2020,\n    title = {A quantum-classical cloud platform optimized for variational hybrid algorithms},\n    author = {Peter J Karalekas and Nikolas A Tezak and Eric C Peterson\n              and Colm A Ryan and Marcus P da Silva and Robert S Smith},\n    year = 2020,\n    month = {apr},\n    publisher = {{IOP} Publishing},\n    journal = {Quantum Science and Technology},\n    volume = {5},\n    number = {2},\n    pages = {024003},\n    doi = {10.1088/2058-9565/ab7559},\n    url = {https://doi.org/10.1088%2F2058-9565%2Fab7559},\n}\n```\n\nThe preprint of the QCS paper is available on [arXiv][qcs-arxiv], and the supplementary\ninteractive notebooks and datasets for the paper can be found in the [rigetti/qcs-paper][qcs-repo]\nrepository.\n\nLicense\n-------\n\nPyQuil is licensed under the\n[Apache License 2.0](https://github.com/rigetti/pyQuil/blob/master/LICENSE).\n\n[binder]: https://mybinder.org/v2/gh/rigetti/forest-tutorials/master?urlpath=lab/tree/Welcome.ipynb\n[conda-forge-badge]: https://img.shields.io/conda/vn/conda-forge/pyquil.svg\n[conda-forge-repo]: https://anaconda.org/conda-forge/pyquil\n[conda-rigetti-badge]: https://img.shields.io/conda/vn/rigetti/pyquil?label=conda-rigetti\n[conda-rigetti-repo]: https://anaconda.org/rigetti/pyquil\n[docker-badge]: https://img.shields.io/docker/pulls/rigetti/forest\n[docker-repo]: https://hub.docker.com/r/rigetti/forest\n[docs-badge]: https://readthedocs.org/projects/pyquil/badge/?version=latest\n[docs-repo]: http://pyquil.readthedocs.io/en/latest/?badge=latest\n[forest-tutorials]: https://github.com/rigetti/forest-tutorials\n[jupyter]: https://jupyter.org/\n[mybinder]: https://mybinder.org\n[pepy-badge]: https://pepy.tech/badge/pyquil\n[pepy-repo]: https://pepy.tech/project/pyquil\n[pypi-badge]: https://img.shields.io/pypi/v/pyquil.svg\n[pypi-repo]: https://pypi.org/project/pyquil/\n[qcs-request-access]: https://qcs.rigetti.com/request-access\n[slack-badge]: https://img.shields.io/badge/slack-rigetti--forest-812f82.svg?\n[zenodo-badge]: https://zenodo.org/badge/DOI/10.5281/zenodo.3553165.svg\n[zenodo-doi]: https://doi.org/10.5281/zenodo.3553165\n\n[qcs-arxiv]: https://arxiv.org/abs/2001.04449\n[qcs-paper]: https://dx.doi.org/10.1088/2058-9565/ab7559\n[qcs-repo]: https://github.com/rigetti/qcs-paper\n[quil-paper]: https://arxiv.org/abs/1608.03355\n\n[bug]: https://github.com/rigetti/pyquil/issues/new?assignees=\u0026labels=bug+%3Abug%3A\u0026template=BUG_REPORT.md\u0026title=\n[feature]: https://github.com/rigetti/pyquil/issues/new?assignees=\u0026labels=enhancement+%3Asparkles%3A\u0026template=FEATURE_REQUEST.md\u0026title=\n[first]: https://github.com/rigetti/pyquil/labels/good%20first%20issue%20%3Ababy%3A\n[help]: https://github.com/rigetti/pyquil/labels/help%20wanted%20%3Awave%3A\n[fork]: https://github.com/rigetti/pyquil/fork\n[pr]: https://github.com/rigetti/pyquil/compare\n[slack-invite]: https://join.slack.com/t/rigetti-forest/shared_invite/enQtNTUyNTE1ODg3MzE2LWQwNzBlMjZlMmNlN2M5MzQyZDlmOGViODQ5ODI0NWMwNmYzODY4YTc2ZjdjOTNmNzhiYTk2YjVhNTE2NTRkODY\n","funding_links":[],"categories":["Quantum SDKs","Python","Programming language","Tools"],"sub_categories":["Python","Mesh networks"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frigetti%2Fpyquil","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frigetti%2Fpyquil","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frigetti%2Fpyquil/lists"}