From bb8fe3fe7d914b9b2e80b4ea68f8bc1e81866a68 Mon Sep 17 00:00:00 2001 From: Ryan Hill Date: Mon, 27 Nov 2023 16:55:27 -0600 Subject: [PATCH 1/6] setup repo --- .github/CODEOWNERS | 6 + .github/ISSUE_TEMPLATE/bug_report.yml | 37 +++ .github/ISSUE_TEMPLATE/feature_request.yml | 21 ++ .github/PULL_REQUEST_TEMPLATE.md | 18 + .github/dependabot.yml | 11 + .github/workflows/docs.yml | 25 ++ .github/workflows/format.yml | 27 ++ .github/workflows/main.yml | 34 ++ .github/workflows/pre-release.yml | 42 +++ .github/workflows/publish.yml | 31 ++ .github/workflows/test-publish.yml | 30 ++ MANIFEST.in | 5 + README.md | 31 +- docs/Makefile | 21 ++ docs/_static/css/custom.css | 269 +++++++++++++++ docs/_static/css/s4defs-roles.css | 329 +++++++++++++++++++ docs/_static/favicon.ico | Bin 0 -> 15406 bytes docs/_static/logo.png | Bin 0 -> 154811 bytes docs/_static/pkg-logos/cirq.png | Bin 0 -> 53519 bytes docs/_static/pkg-logos/qir.png | Bin 0 -> 4322 bytes docs/api/qbraid_qir.cirq.rst | 7 + docs/api/qbraid_qir.rst | 4 + docs/conf.py | 113 +++++++ docs/index.rst | 88 +++++ docs/make.bat | 36 ++ docs/requirements.txt | 4 + docs/stubs/qbraid_qir.QirConversionError.rst | 6 + docs/stubs/qbraid_qir.cirq.cirq_to_qir.rst | 6 + docs/userguide/cirq_qir.rst | 59 ++++ docs/userguide/overview.rst | 34 ++ pyproject.toml | 3 + qbraid_qir/__init__.py | 26 ++ qbraid_qir/_version.py | 17 + qbraid_qir/cirq/__init__.py | 25 ++ qbraid_qir/cirq/conversions.py | 39 +++ qbraid_qir/exceptions.py | 19 ++ requirements-dev.txt | 8 + requirements.txt | 3 + setup.cfg | 30 ++ setup.py | 67 ++++ tests/__init__.py | 0 tests/cirq_qir/test_conversions.py | 32 ++ tools/create_dev_build.sh | 87 +++++ tools/stamp_dev_version.sh | 50 +++ tools/verify_headers.py | 138 ++++++++ 45 files changed, 1837 insertions(+), 1 deletion(-) create mode 100644 .github/CODEOWNERS create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/docs.yml create mode 100644 .github/workflows/format.yml create mode 100644 .github/workflows/main.yml create mode 100644 .github/workflows/pre-release.yml create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/test-publish.yml create mode 100644 MANIFEST.in create mode 100644 docs/Makefile create mode 100644 docs/_static/css/custom.css create mode 100644 docs/_static/css/s4defs-roles.css create mode 100644 docs/_static/favicon.ico create mode 100644 docs/_static/logo.png create mode 100644 docs/_static/pkg-logos/cirq.png create mode 100644 docs/_static/pkg-logos/qir.png create mode 100644 docs/api/qbraid_qir.cirq.rst create mode 100644 docs/api/qbraid_qir.rst create mode 100644 docs/conf.py create mode 100644 docs/index.rst create mode 100644 docs/make.bat create mode 100644 docs/requirements.txt create mode 100644 docs/stubs/qbraid_qir.QirConversionError.rst create mode 100644 docs/stubs/qbraid_qir.cirq.cirq_to_qir.rst create mode 100644 docs/userguide/cirq_qir.rst create mode 100644 docs/userguide/overview.rst create mode 100644 pyproject.toml create mode 100644 qbraid_qir/__init__.py create mode 100644 qbraid_qir/_version.py create mode 100644 qbraid_qir/cirq/__init__.py create mode 100644 qbraid_qir/cirq/conversions.py create mode 100644 qbraid_qir/exceptions.py create mode 100644 requirements-dev.txt create mode 100644 requirements.txt create mode 100644 setup.cfg create mode 100644 setup.py create mode 100644 tests/__init__.py create mode 100644 tests/cirq_qir/test_conversions.py create mode 100755 tools/create_dev_build.sh create mode 100755 tools/stamp_dev_version.sh create mode 100755 tools/verify_headers.py diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..3a90019 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,6 @@ +# This file is being listed as code owner means the user +# will be empowered to approve and merge pull request for +# that directory of code. +# +# qBraid maintainers +* @ryanhill1 \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..e1ce61b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,37 @@ +name: Bug Report +description: Report a Bug 🪳 +labels: ["type: bug"] + +body: + - type: markdown + attributes: + value: Before submitting, please ensure that this issue has not already been reported by checking existing issues. + + - type: textarea + attributes: + label: Environment + description: Please provide details about your environment to help us understand the context of the bug. + value: | + - **Python version**: + - **Operating system**: + validations: + required: true + + - type: textarea + attributes: + label: What Happened? + description: Provide a brief description of the issue and steps to reproduce it. + validations: + required: true + + - type: textarea + attributes: + label: Expected Outcome + description: Describe what you expected to happen instead of the bug. + validations: + required: true + + - type: textarea + attributes: + label: Suggestions for Resolution + description: If you have any suggestions for resolving the issue, please share them here. Your input is valuable, but not required. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..f77687d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,21 @@ +name: Feature Request +description: Suggest a New Feature! 💡 +labels: ["type: feature request"] + +body: + - type: markdown + attributes: + value: Before submitting your feature request, please ensure it hasn't already been suggested by checking existing issues. + + - type: textarea + attributes: + label: Feature Description + description: Clearly describe the feature you would like to see added. Explain why this feature would be beneficial. + validations: + required: true + + - type: textarea + attributes: + label: Proposed Implementation + description: | + Do you have a specific implementation in mind for this feature? Please share your ideas or any relevant details here. Your suggestions are greatly appreciated, but not mandatory. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..e409529 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,18 @@ +*issue tag, if exist* + +## Changes: + +## Details or comments: + +## Checklist before merge +Add an `x` between the boxes braket that apply, meaning to complete the check before any merge happen, feel free to ask help if you are unsure about anything. + +### General +- [ ] I have read `CONTRIBUTING.md`. + +- [ ] All new code includes corresponding unit tests and satisfies codecov. + +- [ ] API Reference docstrings and/or User Guide have been updated to account for new features. + +- [ ] All integration tests, including remote tests, are passing. + diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..91abb11 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "pip" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..c8c642f --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,25 @@ +name: Docs + +on: + pull_request: + branches: ['main'] + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + cache: pip + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install -r docs/requirements.txt + - name: Build docs + run: | + sphinx-build -W -b html docs/ docs/build/html diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml new file mode 100644 index 0000000..e13106e --- /dev/null +++ b/.github/workflows/format.yml @@ -0,0 +1,27 @@ +name: Formatting check + +on: + pull_request: + branches: ['main'] + workflow_dispatch: + +jobs: + formatting-check: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install pylint black isort + - name: Check isort, pylint, black, headers + run: | + pylint qbraid_qir tests tools + black --check qbraid_qir tests tools + isort --check-only qbraid_qir tests tools + python tools/verify_headers.py qbraid_qir tests \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..1e33d91 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,34 @@ +name: Build & test + +on: + pull_request: + branches: ['main'] + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.9', '3.10', '3.11'] + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: pip + - name: Upgrade pip and Install build tools + run: | + python -m pip install --upgrade pip + pip install setuptools wheel build + - name: Build the package + run: | + python -m build + - name: Install package + run: | + pip install dist/*.whl + - name: Run tests + run: | + pytest tests diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml new file mode 100644 index 0000000..9e7589d --- /dev/null +++ b/.github/workflows/pre-release.yml @@ -0,0 +1,42 @@ +name: Pre-release qbraid to PyPi + +on: + # push: + # branches: + # - main + workflow_dispatch: + +jobs: + pypi-publish: + name: Build dist & upload to PyPI + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Install dependencies + run: | + python3 -m pip install --upgrade pip + python3 -m pip install build + + - name: Build binary wheel + source tarball + id: build-dev + run: | + export QBRAID_PRE_RELEASE_VERSION=$(tools/stamp_dev_version.sh) + [[ "$QBRAID_PRE_RELEASE_VERSION" =~ .*dev.* ]] && echo "Deploying dev version '$QBRAID_PRE_RELEASE_VERSION'" || (echo "not dev version"; exit 0) + out_dir="${PWD}/dist" + tools/create_dev_build.sh $QBRAID_PRE_RELEASE_VERSION "${out_dir}" + echo "dir=$out_dir" >> $GITHUB_OUTPUT + + - name: Publish package to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} + packages-dir: ${{ steps.build-dev.outputs.dir }} \ No newline at end of file diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..81a7c40 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,31 @@ +name: Publish to PyPI + +on: + release: + types: [published] + workflow_dispatch: + +jobs: + pypi-publish: + name: Build dist & upload to PyPI + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Build binary wheel + source tarball + run: | + python3 -m pip install --upgrade pip build + python3 -m build + + - name: Publish package to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/.github/workflows/test-publish.yml b/.github/workflows/test-publish.yml new file mode 100644 index 0000000..b6607d2 --- /dev/null +++ b/.github/workflows/test-publish.yml @@ -0,0 +1,30 @@ +name: Publish to TestPyPI + +on: + workflow_dispatch: + +jobs: + pypi-publish: + name: Build dist & upload to TestPyPI + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Build binary wheel + source tarball + run: | + python3 -m pip install --upgrade pip build + python3 -m build + + - name: Publish package to TestPyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.TEST_PYPI_API_TOKEN }} + repository-url: https://test.pypi.org/legacy/ \ No newline at end of file diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..f43532a --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,5 @@ +include *.txt *.md +recursive-include docs *.rst *.py *.png *.ico +recursive-include qbraid_qir *.py +recursive-include tools *.py +prune docs/build/ \ No newline at end of file diff --git a/README.md b/README.md index 985533a..643bc49 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,31 @@ # qbraid-qir -qBraid-SDK QIR transpiler integration + +qBraid-SDK extension providing support for QIR conversions + +## Local install + +```bash +git clone https://github.com/qBraid/qbraid-qir.git +cd qbraid-qir +pip install -e . +``` + +## Run tests + +```bash +pip install -r requirements-dev.txt +pytest tests +``` + +with coverage report + +```bash +pytest --cov=qbraid_qir --cov-report=term tests/ +``` + +## Build docs + +```bash +pip install -r docs/requirements.txt +make docs/html +``` diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..003fca6 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,21 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = build +STUBSDIR = stubs + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/_static/css/custom.css b/docs/_static/css/custom.css new file mode 100644 index 0000000..7dc415e --- /dev/null +++ b/docs/_static/css/custom.css @@ -0,0 +1,269 @@ +/* fonts import */ +@import url("https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@300;400;700&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;600&display=swap"); + +/* custom themeing */ +.wy-body-for-nav { + --bg-color0: #fff; + --bg-color1: #fbfafc; + --layout-color0: #e7e7e7; + --layout-color1: #9840d2; + --shadow-0: rgb(0 33 121 / 8%); + --shadow-1: rgb(0 0 0 / 7%); + --font-color0: #000; + --font-color1: #3d3d3d; + --font-color2: #8e8e8e; + --font-color3: #cacaca; + --font-color4: #ffffff; + --brand-color0: #46096f; + --brand-color1: #df0982; + --active-gradient0: linear-gradient( + 45deg, + var(--brand-color1), + var(--brand-color0) + ); + --active-gradient1: linear-gradient( + rgb(135, 0, 202) -41.11%, + rgba(216, 164, 250, 0.92) 197.13% + ); +} + +.wy-body-for-nav { + font-family: "Source Sans Pro", sans-serif; + font-weight: 400; +} + +/* Left Navbar */ +.wy-nav-side { + background-color: var(--bg-color0); + box-shadow: var(--shadow-1) 0px 10px 55px; +} + +.wy-side-nav-search { + background-color: var(--bg-color0); + color: var(--font-color0); +} + +.wy-side-nav-search > a { + color: var(--font-color0); + display: flex; + align-items: center; + justify-content: center; +} + +.wy-side-nav-search > a::before { + content: ""; + background-image: url(../logo.png); + background-size: contain; + background-repeat: no-repeat; + width: 28px; + height: 28px; +} + +.wy-side-nav-search>div.version { + color: var(--font-color2) !important; +} + +.wy-menu-vertical li.current > a, +.wy-menu-vertical li.on a { + background-image: var(--active-gradient0); + background-size: 150%; + background-position: left; + color: var(--font-color4); + transition: background-position 150ms ease; +} + +.wy-menu-vertical li.current > a:hover, +.wy-menu-vertical li.on a:hover { + background-image: var(--active-gradient0); + background-size: 150%; + background-position: right; +} + +.wy-menu-vertical li.current > a:hover button.toctree-expand, +.wy-menu-vertical li.on a:hover button.toctree-expand { + color: var(--font-color3); +} + +/* left nav bar list item */ +.wy-menu-vertical a { + color: var(--font-color1); +} + +.wy-menu-vertical a:hover { + background-image: var(--active-gradient1); + color: var(--font-color4); +} + +.wy-nav-content { + background-color: var(--bg-color1); + max-width: 100dvw; + max-width: 100vw; + min-height: 100dvh; + min-height: 100vh; +} + +/* headers */ +.rst-content .toctree-wrapper > p.caption, +h1, +h2, +h3, +h4, +h5, +h6, +legend { + font-family: "Nunito Sans", sans-serif; + font-weight: 700; + color: var(--brand-color0); +} + +.wy-menu-vertical header, +.wy-menu-vertical p.caption { + color: var(--brand-color0); +} + +.wy-menu-vertical li.current > a button.toctree-expand, +.wy-menu-vertical li.on a button.toctree-expand { + color: var(--font-color4); +} + +/* Style the counter cards */ +.card { + box-shadow: 0 6px 20px 0 var(--shadow-0); + padding: 16px; + text-align: center; + border-radius: 8px; + background-color: var(--bg-color0); + transition: transform 150ms ease; +} + +.card > h3 { + color: var(--font-color0); +} + +.card:hover { + transform: scale(1.05); +} + +/* buttons */ +.btn { + display: inline-flex; + gap: 4px; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + outline: 0px; + border: 0px; + margin: 0px; + cursor: pointer; + user-select: none; + vertical-align: middle; + appearance: none; + text-decoration: none; + font-family: "Source Sans Pro", sans-serif; + font-weight: 600; + font-size: 0.875rem; + line-height: 1.75; + letter-spacing: 0.02857em; + min-width: 64px; + padding: 6px 8px; + border-radius: 4px; + text-transform: capitalize; + color: var(--font-color4); + background-color: var(--layout-color1); +} + +.btn:active { + padding: 6px 8px; +} + +.btn-neutral { + color: var(--font-color4) !important; + background-color: var(--layout-color1) !important; + transition: background-image 150ms linear; +} + +.btn-neutral:hover { + color: var(--font-color4) !important; + background-image: var(--active-gradient1) !important; +} + +.btn-neutral:visited { + color: var(--font-color4) !important; +} + +/* Search box */ +.wy-side-nav-search input[type="text"] { + webkit-transition: 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); + -o-transition: 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); + transition: 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); + -webkit-appearance: none; + outline: transparent; + height: 45px; + padding: 0 30px; + border-radius: 45px; + width: 100%; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; + border: 1px solid var(--layout-color0); + background-color: var(--bg-color0); + font-size: 14px; + line-height: 1.42857143; + color: var(--font-color1); + display: inline; + overflow: visible; + margin: 0; + font-family: "Source Sans Pro", sans-serif; +} + +/* Foot note */ +.rst-content .seealso .admonition-title { + background: var(--active-gradient0); +} + +.rst-content .seealso { + background: var(--layout-color0); + border-radius: 8px; + overflow: hidden; +} + +/* common elements */ +.rst-content p a { + -webkit-text-fill-color: transparent; + text-fill-color: transparent; + background: var(--active-gradient0); + -webkit-background-clip: text; + background-clip: text; +} + +.wy-breadcrumbs > li.wy-breadcrumbs-aside > a { + -webkit-text-fill-color: transparent; + text-fill-color: transparent; + background: var(--active-gradient0); + -webkit-background-clip: text; + background-clip: text; +} + +/* img */ +.rst-content img { + border-radius: 8px; +} + +/* highlighted texts */ +.rst-content .highlighted { + -webkit-text-fill-color: var(--font-color4); + text-fill-color: var(--font-color4); +} + +.rst-content code.xref, +.rst-content tt.xref, +a .rst-content code, +a .rst-content tt { + -webkit-text-fill-color: var(--brand-color0); + text-fill-color: var(--brand-color0); +} diff --git a/docs/_static/css/s4defs-roles.css b/docs/_static/css/s4defs-roles.css new file mode 100644 index 0000000..3f516d1 --- /dev/null +++ b/docs/_static/css/s4defs-roles.css @@ -0,0 +1,329 @@ +@import url('custom.css'); +/* + * CSS hacks and small modification for my Sphinx website + * :copyright: Copyright 2013-2016 Lilian Besson + * :license: GPLv3, see LICENSE for details. + */ + +/* Colors and text decoration. + For example, :black:`text in black` or :blink:`text blinking` in rST. */ +.black { + color: black; +} + +.gray { + color: gray; +} + +.grey { + color: gray; +} + +.silver { + color: silver; +} + +.white { + color: white; +} + +.maroon { + color: maroon; +} + +.red { + color: red; +} + +.magenta { + color: magenta; +} + +.fuchsia { + color: fuchsia; +} + +.pink { + color: pink; +} + +.orange { + color: orange; +} + +.yellow { + color: yellow; +} + +.lime { + color: lime; +} + +.green { + color: green; +} + +.olive { + color: olive; +} + +.teal { + color: teal; +} + +.cyan { + color: cyan; +} + +.aqua { + color: aqua; +} + +.blue { + color: blue; +} + +.navy { + color: navy; +} + +.purple { + color: purple; +} + +.under { + text-decoration: underline; +} + +.over { + text-decoration: overline; +} + +.blink { + text-decoration: blink; +} + +.line { + text-decoration: line-through; +} + +.strike { + text-decoration: line-through; +} + +.it { + font-style: italic; +} + +.ob { + font-style: oblique; +} + +.huge { + font-size: x-large; +} + +.big { + font-size: large; +} + +.small { + font-size: small; +} + +.tiny { + font-size: x-small; +} + +.smallpar { + font-size: small; +} + +/* Style pour les badges en bas de la page. */ + +div.supportBadges { + margin: 1em; + text-align: right; +} + +div.supportBadges ul { + padding: 0; + display: inline; +} + +div.supportBadges li { + display: inline; +} + +div.supportBadges a { + margin-right: 1px; + opacity: 0.6; +} + +div.supportBadges a:hover { + opacity: 1; +} + +/* Details elements in the sidebar */ + +a.reference { + border-bottom: none; + text-decoration: none; +} + +ul.details { + font-size: 80%; +} + +ul.details li p { + font-size: 85%; +} + +ul.externallinks { + font-size: 85%; +} + +/* Pour le drapeau de langue */ + +img.languageswitch { + width: 50px; + height: 32px; + margin-left: 5px; + vertical-align: bottom; +} + +div.sphinxsidebar { + overflow: hidden !important; + font-size: 120%; + word-wrap: break-word; + width: 300px; + max-width: 300px; +} + +div.sphinxsidebar h3 { + font-size: 125%; +} + +div.sphinxsidebar h4 { + font-size: 110%; +} + +div.sphinxsidebar a { + font-size: 85%; +} + +/* Image style for scrollUp jQuery plugin */ + +#scrollUpLeft { + bottom: 50px; + left: 260px; + height: 38px; + width: 38px; + background: url("//perso.crans.org/besson/_images/.top.svg"); + background: url("../_images/.top.svg"); +} + +@media screen and (max-width: 875px) { + #scrollUpLeft { + right: 50px; + left: auto; + } +} + +/* responsive for font-size. */ + +@media (max-width: 875px) { + body { + font-size: 105%; + /* Increase font size for responsive theme */ + } +} + +@media (max-width: 1480px) and (min-width: 876px) { + body { + font-size: 110%; + /* Increase font size for not-so-big screens */ + } +} + +@media (min-width: 1481px) { + body { + font-size: 115%; + /* Increase even more font size for big screens */ + } +} + +/* Social Icons in the sidebar (available: twitter, facebook, linkedin, google+, bitbucket, github) */ + +.social-icons { + display: inline-block; + margin: 0; + text-align: center; +} + +.social-icons a { + background: none no-repeat scroll center top #444444; + border: 1px solid #f6f6f6; + border-radius: 50% 50% 50% 50%; + display: inline-block; + height: 35px; + width: 35px; + margin: 0; + text-indent: -9000px; + transition: all 0.2s ease 0s; + text-align: center; + border-bottom: none; +} + +.social-icons li { + display: inline-block; + list-style-type: none; + border-bottom: none; +} +.social-icons li a { + border-bottom: none; +} + +.social-icons a:hover { + background-color: #666666; + transition: all 0.2s ease 0s; + text-decoration: none; +} + +.social-icons a.facebook { + background-image: url("../_images/.facebook.png"); + background-image: url("//perso.crans.org/besson/_images/.facebook.png"); + display: block; + margin-left: auto; + margin-right: auto; + background-size: 35px 35px; +} + +.social-icons a.bitbucket { + background-image: url("../_images/.bitbucket.png"); + background-image: url("//perso.crans.org/besson/_images/.bitbucket.png"); + display: block; + margin-left: auto; + margin-right: auto; + background-size: 35px 35px; +} + +.social-icons li a.github { + background-image: url("../_images/.github.png"); + background-image: url("//perso.crans.org/besson/_images/.github.png"); + display: block; + margin-left: auto; + margin-right: auto; + background-size: 35px 35px; +} + +.social-icons li a.wikipedia { + background-image: url("../_images/.wikipedia.png"); + background-image: url("//perso.crans.org/besson/_images/.wikipedia.png"); + display: block; + margin-left: auto; + margin-right: auto; + background-size: 35px 35px; +} + + diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1c330b571648dd9f7f824eecb73a0ac7834e7b78 GIT binary patch literal 15406 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 Gz<&aDB#A@- literal 0 HcmV?d00001 diff --git a/docs/_static/logo.png b/docs/_static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..eaa9312e37fa17f1f3b9145f0855000be170cb10 GIT binary patch literal 154811 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 z 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≷3 z{0jb)C~NrI<*CL!+I;+l_0jo3YI`fK0Q(&2zSE^tLYGxuDo1=*+meXtuq_Y47ePsk z4dCrlku<{9jXm!2w!XJ;=|*=9Kw*c_k(I?ix6l!GPoL<-;0Z`!iagPjFL(H+yG2s^_#UM`2c_b|HI zULlD;V`H(yA#y(~ukrV(sn9F)#yhtzEgTK)Hy18ipC^q+^qNk*GPtl?%A4R3lb`3H z@2D2=yf1DwaxCJ&!Ev+@zd3^VG~v#uuVWQ##RtUhnb3uy-DjlVV*Tqcc9Nn+1%JA+ zJUN}2k8=;T%Yo~J}AGioYJ ztmsGDK=V53SKQyhdlOr<_O$E+ml3&`+`r24?fK%0Hf#-XVm!223DmA!(Ti8&syt^U z@T}W�{9siHx3;mW9!$Gf6p+9P#+(8)HQnvimF6x~x7GEU^rDIV$$SNq(N8)Yjm& z6+(p-OJik+fUbG6W&=i|{i#8%w{hJwbg|-sBF&$Uj!KehUH+qK|LHTSn+fq>v9=Vt z1$b|w3x@W=m6=v4IEVEaRqY1z#%8Q0cj6pTh=he901@THv9)8TLWBk_>tx_Zoh96; z3oq8t45YF=PKZAFc>zG3n3G=4K>U6!)E|cSbbuixO#%synr9KP;S0b%LZ{S_8BhE$ zld#a#1M)i%)~=^gj+rlZcJMo#_6`te!a6^Eb*}fyX9erLdEY8`n0@)fZZ+ndgh#}x zye*!?`NuT@>;u8TrXQW<g8c?)EDg*6AEI5`LTAUI5aQBe{ zOSe3l{d!NH?NB?W&5;TVUEaYbMjOifD8o|9=Mie-LYa*s!Lz((B5SiwyxJ<9@2|I< z-o%7ZyLKF%}+@RWXZL85~O3x*D+(W7fwM6s~D8UsDzSaqS&C@G?)ob{X=ngw>iY;s4gS z(VOiR$0e%sozRb*#g~3%8Q5UEgf6mt-IC#yjO=OrHFzsIU{w<{*7qy;jc)SgxRo3i zIo*XPUJiShOo$*+P{xL?9I*A_fV4F&%h9`+BA}7GZ&jfXIu|1S*X#nzy~g*>xZW$u zO3ZaJSqh_GgTbSR(gcQQF+|s@>pMad2F_c>%rOEPFleHJ3>|x-s=EpOYeXpWAy?NC zt#mK)?#vm4`1lJIv^5+nT!k*mLgv_+2CA{n{hTs(VEJ4no2PWCk{}Nra|pTB_-~}* zw2~tS>|&9PQLeWsjKqx!*@A{j5FIGEyCZ zD}EVG!ak$TqUK&bnYg+=5OP2K*e(eb_`NM4n7O~2ln{&6)Vprwd0`;#4~t)3di?7R z#+!5Ob#wJ9ni2RFDkJ)1eu7_nHt&=BvH#9RQhU1}80*g(jwWt3p#}RF1A|H<;%@46qY`NGN`$_9e0*e_f^vQ4dU*+J+Jet>mgo+eAAwhc=mb6>8#`;W3YwGBNG z=wtMR!0ZCNV5teq7ndKA{N`%%;#Djn$exXUCF%Ic^d?j3|9u-WO!!A+g*ji@fp4a( z$$QS@EUP@%!gujfDzu{?j-Uc2=I+zhY{9}wW8O5XR3#j zsE^h}e~fExE$5BvN&ZLjQ#mr-qL_~jfvuJLHTMhBfWoP@uUMA3w)U{s<3V$uhJiwz z-LiN8@u=RDfUHA9%n}vSUnn?X^Wl$(=j9l287MTJctO*)wq7$W<-xTbdkyFU^Mc~c zSj{6Dtt4JYThq?MgMZAAw2pgU5$uJbWB{&ZSByb%2(qX<0cedqe053hT2_A+3hm^7TjS+~Wb* zduf3CbFhh&T=&qXUib`+O&fg;b378s`|Mc1;QUrSCZgb^@wPH5!tFoQV99T49po*@T9Dg z{3)YbN5#=+ZfefZ>#SCB*KgJCt(W|L4|5u1P&I%IOHU1ti~o*4uXB#4oSGkX2X%{? z&=}3gv>{}_9=3++Kz7d17{MCBk|*vP3mPTl8mf9-HH$9Gt+Aq7o|J&eJpMTmKUg`QHQi2feU2!q)*yzA0ruSv9HCtnG=hK@V5ruiDoJ zRv_VT7PxQ_mkz#O=vgw?usX?lskH6Qla!5oJw3`z+z2aWy3t-krY1EejGDXZp+>mn=O~q~1r0|MoT}7^n8#EUEZ14h zX7k~rAehXIEVTOj8}ILT1udGAIoHDHloCxVKI-_83v*HarIWyY+1IyjzZGtS(@n`9 zkfy_d5Bea>jfvEv$7+D-__#Uti%iJ3Yi68J8&i*rQ)bm>>EVH(>hd9?nZaa!?f4ne z$`|wFsNv+n!JO3qv#F#+RSaJN_xEAK5!Z`tSHD=W9d&Krm6xy)#=-Og6*h8Ae?Qk2 zX^y-a9aALIy95HJFLtp!OYe|=Fghd42NJxC)Sbv`2&S39jyH}XC`8lKiDYr}bpNWU zrS)|e;oaD_0B^-(Pbt3H;{JeW4JW_u)#LPcrr(T^HoXwuZ9<{VEpPaG)0Q@rbKi)G zAa-U`%OuS`NM*dQ&w4y@HTSXfCJ#YURac+#SAB6ot8fuYBR_8LyPcfbcNL>c^xlOX zYAtS7gbcWX4+}?Db!e7Wp94uu#E`t1aFu!EuWw}{44VmniUwHwugq`3$gGqUtz^vI z;fR~06{OsJm?LIX!?m5NUkuYLxxUkPPjrq~j4ZOd53H$64&jnKtF|*Y^G(P6eP(#< zO&+~nGM31)(w$-WKC9?CGEw~|Pu}&20dl<9=k&^z?ki>9$fJ3XN~<4hAq%HcVG}I0 z)JVBpQ{mH+?599cbFkkb?EIxL)rVw3BomNu(;PYRBY}wr+T4+cIRt$uYc?Zg)n%7C zImkegGCr!yB(4|dJXOx`Z)nR&kzT4*&52oh4W8hCocC?~fuT@XNPtmI)6oToRP|uo z3zstDyEB*0g1;L>Zqz=I#{P*6$F_+tlzMB_xUYt*wqh~PGo#X7KX`cbnw}0F` zr%ayd)Woe2`v)9FH2zi%tsi~`z9J^%73>jw)u)R+38C)m-5`N62b3=D5462|_bx`~ zzX@47=al9dWQyOp3nYPg3rt7&?@O8}z3UI6fC=5n;=f&+SV_o2dfhCD7u zw|IOwXItDgjCkc<*0bCu*m)CswI$-zWP|% z&p&6X%Sm4TUKRM4S#gdlKifTyGg7S@6kK|i?NBZIaUZaR5TkaE*}slS{VNQ3#m;(B zMocS`(9V4>+W4QBvCm01Xy&kDzw!ikPbZ@wHnNm$RE3n1MYc20FTP4GZ;gWDm`*09 zT^^>g13`*&2C<7;qUK&I6ieZtyjCpoi$nfU_9uq}@irpG^5Y2aZRS!tdTOuB$YJWk z-!5@l9pO!LQvRj9CcFG&e|`x0%!!FX+QS?c?shJ8YxDBJg{XVE8lIi} z_Z5eoM6{E+lvH>gGvNZzSmse{ac_Pn`&EOGq^(=0H2hP zEr%|~cj?&vsjW52HF&^)$P#BPgE>rfp|` z{J1Iy{eRaz71<3LH?JDSEIzC3jd2S{XmTI`9gHlAvL`Mn4_4$ z9{SS1v!RJYa97^}p(Fh&S)WHdxWCUn$*8KswdU0#fN+`Z%^t>Y9izB!!Pe2xeHGoS zOpbY046;3yY{1lH&01ZotwY99TVo_qU@NQ@TSO=iqSe^$8jM9h1}_M}J$ zyFpZtQNxv!aOth{f_%a+g)jIFfb@QO(rrO%yK1 z4pQFEAw&P{A~M|;TkQBGzBO@B>(Z{ zZ-fVoykF=VGvEQ0bmd(AvQ6@^{L)s_Fy(#E=n?v^8kaRyca0G9Wd8-$wV9Ik)UkT~ zJze|ftUOz77NXUX1E1vkVRm3n)2xMl#MSB5t24rY-_O=24S9JeS*UwvS#erx{wkK8 z{AqrOR*}gI3BhcdGG^>Gh#^^22_-9cb^@-iQU7xw5&ia^bE^0%Wla4}u_hYM|M3EB z0DML1a&IS!IXSH`jpix!ql2BEVDI@_0Y8%K&Wa_Zo=z^RK7lH}Phf1z-(IkY-@Jdb z?Sqd@F!UTS^Xte>%aXmSG{t@byX|baKdUD6LMhk^5~NPP4vrb;`kAe)8$RJCk(%7qb3ugxUMsw z&|Mkz;N!HizH;uctI|jHUU9siY;I!xJeloFL)mtwcDsQ0upp{4B&Dsf+*g466n5R_ z*6VL^#bEJ8_m`DW`Yo)%%p{1H^R@wC<#&pSX^iOGME?5zkd#Q9fsrW4O8&}#GEo_l z_x5aTB{S8?vCECA?wIV%eIcn_0hD|!sPCE}r2DtV5>2i9cfjhK=~(TO#-l6uacsSI zx9>apKvp2dgnXB}M?YJ?Bbj^x_uhKim_q&xjR{XwP_>Z{k7)3HJX;z}CR=3VzJn`z z%C;iU+`rH)jWWdX2bE6Sx*_#wI?^@}DV8oMdgc0=ffvr`V%cu(BV#C?y^=V2 zI=Rn-s7sHNLMA`b?>eZ-Ji6suj*!VRUL04fP|r$J1)!?Je(FqD7v5%EjjdE%Dir)T z23)X86+j3|IeBwTtN2ok=bZiD?J9|kvN=*&;z;co3 z{kf8Xobu=va}k67#czCTPH482x@2eSPhN*^{57?Y4j-u`@mA9n>;jv=he!K>HyC9^ z76ehPvSbbwtz<{%$v0o`VRo9hYzf(fVt)S`LI4-2rjH%TvI*XJ(isJLCX2ris}h8Z z5*HEh))4blwLQvP1dG||){O|?HQ^CY_;}Q!(f2tB zn-F~BQQXCROls$Ao^++iw6M%Mv|)lpnr5uU$788cOGM#qvAOQio(L&qUf~ zu)?tLcei@CXfVvm$g^7=rAlm9v!G=9$eE1g|HNEW7^NsWy;Ch zm=bJ7qeFRgOvgYBi&Xm$uIVuqR{X3s4l29Xz&W?Pz>p#3T64;i9j$bqz;Epyw)Z4) z=e|Rz;>+rynD;0ubx7$8kX?NasWQLHW+R%ndwB$i`J|Ms);m8AGU>qE6f z+7p1bei(-x_`S->--B3CSfZL5@k=dv({sDdxH!iyXS@9w$l*W1h1X=8yhg{D(U4@3 zdm^ybrC6lz)3+{QLPzG{VDcF)=??xte~4AiU}uYfLj%?l`YdC}+O01z3hcm+-igTB4fc zMt?t9-8pZcBCKWHju;CMvFX{UR_-@`YJJJ+WsQy({koYTfYO>PWjsHWy%#tAxP|KT zY0izr^>~74cYZ%r`C?{sbk|dKLO)7{|7ou@uQb|f)zOYKf@A1t&IC;Zs>JaVB(=M& zN^D5i&Y$pziL96X9PilA=_pQL4|E@@1MVR?>&JXh*G_RM}tqw#;m2 zCgY$a6Ky((L2wc=EVOxAb(GucFEIWd;e3h++7TYS9B5{D1Kr)*Vmn(IvddnI*Q3Yp z(4(s?r{=)$ivk*UOBr1E#>87t)&!!X^aT6quq@lXW(iRwKl~-0wxMZH*g;~K!Z{@7 zd~IpedYe4c$(8*H?}B5lx7GFejHmkfQTC-GDRDFDa!w*+`3esI(ZJWnqi|!PDt4Eq z_uN`~UtBGtYkHHB;VWDG=l zM*C6waNe7Sd5d+5_U(%CRL)Q?QTYoCCmFE8zgVvIU)Qq{F^iC=TcW|2u*oS+4;!kq zfiZq|oil7mBh6EQ=Q0)*_A?ts93U7M3PFAC?e<{)zNeJ3f5%D2F%5HUmX`&23<19l zFQp!QzMKNzpZX$>VMsl{lrId@y+?P`*eM!*atHl;F7u#Y&+Vel-50paCo!rD2{tOf zH=kMYJT1SxNI=8GrhYgEt6y1rZ&#rzmX1f>&c0Gyq~GovCoIBJq^gBc5w@O4pt0K= zMGTouTP)O+nRVZm%%L#iseUqFg@rx(>Dbxgy@_W3wpEjl-hJC4lU|uXpRO_|OiGVi zKw-;0q>fI?MP1dR>;~7ZFiC^GJ8bb!mG5pKI8|KHyvHMA#_JK(*-P?C7 z-E)FijqFR-0GPa$1z!6!5u*ohUNPpjR=jxFRM~+sgq=gV0`=}J)i25jsM2w#er~kf ztI`B)L9L6m)j_kC`(hj$C<`^DZWDo5oA6ynI7Ajvr z4*kp?s{SAsYL&GveEYT46gPzEygA~71qJ$YP-Qibzs!P1jXe=5+Sl}4{4k6y|LYgD z&Vp@E&DC0QvztrWaV!vz(qSvK%7i40<|Ha-``vZaaFsR@Sr~(c>Y;N~W50u(m!Mp9*&_Kr1Km8H~4jRdZP zD9tZ4+w;MKavQ_2ZTGxckK5y>(5?HU2C@JGAuo^>@9lkIUB&(_^ka-Q1af8jTkl$= zx$Pk_yV#^{Z>KSfu!J|YoM-(t!N&4T7A`Y`)bf3Yzd`ga{{tD8Jwv23zXu7{&sNE< zjeZPeS(#L{Y>h;odn%INv+tdG-}D%p~#jE~9LXni}dUUaU&VWdq%P`YPN zn5%}TYLQbW+}Hkkfei${xd5wBKZ%jGa-ack&wrBveAfXFC(IU4hY%#mp8Bw46U-jM zqZ_*A*o}j}Dh#~qHcAr}vuoBkZ`{yU;_1}fyV$)Z^LfgkBy!YGdC*FL5Yo`V+!QEh zYd{lgI`3@PRzoTmL+_jM{dPm7Z=@~GhM6B6T5BR`*rKw>If2=;NZx)WY_T?p$GvkW z4y(S~yTboj{~y<_?ew`P*?2!I`mX>i;_&LlN;tD-ug}_fmW#Lo^4?r-f(uZu_W;0`0dA=d!!!l^UiL7oa>xy z7J)eAH5eE*^nB-X*yy;_O1Z3aep~>D!|`p%ssY)jGq#o`_hmEi{RckCa+R*s z@H07MK=jT$QHiw#p}-D|1k-W3{rJN+VSa{>E2JH30gtEUqBob_?LM3aX5E@EF8-Tx zjVXAR=7KicUFcX*vkX2s9dx*cP-_1cANnZNBrCWixzQkHxgcZ*=gwB+LT-HhUa#1| zZhG`Z`si_f>G3f1tJ3u3;zL3$bB$cN-e2A#q)eJ2tu!M8H39LWT)*X--0cb!j<>qCRaD#6G~dR48w2XCk=Yz7vDch^ReZ z{DfUoJsD`Eljik@Bg@5vS=Z4!l8Td=e9Dz+L*M^?@nwi(KJdZFol4P3;oXwPe-}osSE~}PLsfAkC=A9-F*wOa-s;#Sg zW7svu)0NRQQOK224a=i!8!(-ue_&%6^z;73 zk%H`9dGt!KqEzZH@3v`m3Es`r(9)CbdEZ{HfZ+n4zTXYQ?pC|mxFh}oTf2ac@MEke z&%}nNJC)Uog`&f{tW~ZxRtjM39o`%&q7RR&uCo4HM~(FDze3wm@=*8i3ms2H{i>Fl zYUa-LHL6Ix}*dFQ7F)no5-Q;`6hEhaM0AFxC23ju39&)PovrhQz4{+Qri1H>{&mu3HQ zWnkr29TRjecl(9zgm5zZ+xoQQzd;0Qe2Z0s`1^odCYOQY@J}zeweB{isxLH559eRn zmRqO9yr5;3HSb>3km4WdiOwP%_k9TU#msm8xMtO%h_mB5iAlqhhvM}4To{v{QpLel zkL7FW6}h08tpgFlOh|0S+xs$7=t>6uzpQ51J+CD>r6*coi#ZU?Psj9KN=}_q z7BPLg6>?nmStI@SQyy7Y&u=RNcowNDv|bIENh{Sw^(;Hn(qXP#sN{B}>&uUk+@N$~ z=nMsa3Uu3$pWS~Pb_{a98gPX8Zw|mIzUMIlx?#3p`~5AhXzRUp+}v?Hzt84K)Fd6;KXfPfwZ`k}0TomR9+bR0J`T~Ex7(aE7YA_SpWDgE7bKLr;T*6Zeo^qQCoblz<3?}G~Lx^XE_ z`y)FWZ>HazALshNMg-V2t0 zR)7n!tJy{sIOqX8yNI>^=#75lw7zUd4a8}&C=?jo>oIAJ^y{JF!@Je~xQEqW<&=%r zsBbHQ)Hc|?^6VnX@fiGcWn&9&^&)6Xt@AE<;(Cjyy|w%l7wmhar~J0CiIg^XQND=g)i^5$fLd<8hPqr zQDDZm4+Btho-8aA76xw`6mOZQ$u?Dezg}T|NFWZ(4S%-Fp4or;6~JZ#O(Gn=A2T46 z$pg*7rBd~;&E(9zWPwhD`Zq@I@&nz+>A8$gfcUW*%yjUZ&~v5XausvK@a?afIqd3VbE3_hu6ob5DlKakM`4V|v&dxThE)JDjh6!=+|iRo9?MTlCW? zD}B@f6mn_V2`}VRYbdDob7Yd7MN97G>N4OrvAA1L7x}h*l-Y4=Xo4l(>^=fFk2QNN z>_(!Njo7<%=&p}R*15?`EN&E6B*lKPy592#;5I7q#T~ZJO^QK zMBq@9W>9fd`t<`-F;jjFy%0r)+VvW+==*`P_ujR@qI;G$i~R5!nw415Dbk1SzrIQz z-t1_^2zDinpFQ4%7mKi^>z(h?&#XQ#B-~T`9SuBMI|u?Q)^*Sr9K0c-G7Gw|Ct9~t zkc0R=9^d)jUJ*%Fntd|Uy-@n@JgwFoJ9qBg_Dgogq@WJnH(7H{V4`%l*H*`M=+=6R zSNM$bK@>z{WK&+LAe1JrriRd~SW zLabVEuNfeV_ftD#lg2Pe2z^Za(ZbhCdUGNFh^JFGSJWObcVA8jd6fMqtlSbBg2tWI zIOmJenDtL(3=0IcB24%vJb;j~b<4f>O|&}#W~VFHu5$>Vmt48P;~KM|4w zspC;sehtB)J*dtmZ*UJqze{eM&V2jDJh|pc<;U;ybF}~v8AII!BPU ^tO>S3-P$ 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%0DS!9|>t-%>Xm72xnH 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 literal 0 HcmV?d00001 diff --git a/docs/_static/pkg-logos/cirq.png b/docs/_static/pkg-logos/cirq.png new file mode 100644 index 0000000000000000000000000000000000000000..363eb4dc0b4f18225bab45c15e2daea78be9be40 GIT binary patch literal 53519 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 literal 0 HcmV?d00001 diff --git a/docs/_static/pkg-logos/qir.png b/docs/_static/pkg-logos/qir.png new file mode 100644 index 0000000000000000000000000000000000000000..1de8bbeb5bd67af7c8d8856e935c3a4553344c2b GIT binary patch literal 4322 zcmV<85FPJ{P)U_9V?FPd}wSu4JkyL5E?Kf(F6i*!PKLb zx~gR8rqD`S6q>I5Ojkn}9(5z=#^Y5fU071Hw_GS#gyIo|grqH&l0ZvZw~|8QByugw zmaLDAbjz8ZH+>q-*PD6wV`lz8cqF!^d3WA>|98$k=iYOqQcBoBN|_Ww(2*8G#Dx$k z9>)2Q!&wnREDIqX2q6~v|Cg0gc`IKGfRGpyp_DSsf=jdD`V5?QNeGem52e%t1Lp)F z6k0_nr5qJP_=gG6)q_MiO$P)CTp@B1vYY7%AtoFVUNvqAA#yIbt%=N7%`wQHV^8;< z8{CZYoU6lLx|!dTQcm!_?L-!NT4Qud(-YMPNhwn-zVWC&Q!^uUNGWMfnN>6+5STKxdBd{Rn!fN!^v0D}w&A+AX&^E___ zAjlv;*Vly*>r%=&_68!OB@s#~v;3B5NAZ=xRxM*_5pu+HkHAGE82&Nl(UaE?a zBR$xOaFjXZ5kZ6W@ml4Y)Ut%rT@(ck1BIls?K50pnL!R}R;8i{*_R!`-K)w)EO7%N zxXc?HDpJi7A`)01Tq6*Ms@Cv`2-$QF;PTdG5YbW)g7IqB@Q?^O;NUrUWf%C^a9}J! zFgFBYsQA2;TSD7A;A!vHq!40A2ysd&CHYA65vM=Xzwysp;?23X7{J^RgkZcyz<;(u)KxIAj1ZWFVcn4ECi2sKXW+( zQ?B&{qNR~Q1-P_(V{CBz0%WE|IavPE4!WZat#gY25@1?qO&2cElQ!s{VqVxr@KlD3 z09nQhY=KR3NNYtA@|(ew)gS>b>OKjd!<0Biu#~MmQA*9R7-tNAfkV$_tkPd<nf`1lB~jK+#Oow~6N%O9oDb-4$&PKc6Nn;y}=I@laKsh$(S2c&u&{X67kU)f>Axy;(y3rB>;1m!c0G5FW0k8~2XqiN2%u0g4e?EsLc8&lM z+Q-%ccT|US1c=ZgiOkq^a3OCkRAE2rfsXXg=g^Da0U$z4umHy!J-ga`tYe_#5Tbn` zLc=67WAU&8Bn}>Kt!o-7glHLv&>)G-SdtgDhY}#Me{W+`<48$}`TqGFwqjWTA~ZxI zGd9Z0pcje$-!XQ*}Z@GUyhpKUg>2Yc_9SFIf906^){rLXc`gYIrXHICm zN>qjYR{wnNDiy|B9rm#G%K)&18e!|V9EAXh!txhehK5dEtrlSw%>YZN0iOF!M_p7| z?e3j9c<@NX;?J1)8Ut(GO9a5MdM0!++w9 zvqb^2_{^fz$=$_I?)QG@mD4u9f6q5giPOLMk$Cne--j3@03r;*vA(Cp$#buX<1hCM z`Q#H;$D(%jP8U}0e%>?i{5Nfl!53rv%?o1l`a)5Rg)i^h8cy2+5jMc_mtQDaz9;&h zb7@#h>OhTfX@65)mMao_s#iSwv!ZKz|= z=-oGey~4S?ylo-+ocQi5#iQ`mdeJ(PAVF1%X&*#KYe252qXJB?P0bc>;OemF_vSaz z*s@{BRgM2_)TJSXMt7?_zh@^z*j}u#01uVob5)2PfRXA05Mld3bH7x%0DS^NG|`{G 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 Q9smFU07*qoM6N<$g3omC6951J literal 0 HcmV?d00001 diff --git a/docs/api/qbraid_qir.cirq.rst b/docs/api/qbraid_qir.cirq.rst new file mode 100644 index 0000000..414191d --- /dev/null +++ b/docs/api/qbraid_qir.cirq.rst @@ -0,0 +1,7 @@ +qbraid_qir.cirq +================= + +.. automodule:: qbraid_qir.cirq + :members: + :undoc-members: + :show-inheritance: \ No newline at end of file diff --git a/docs/api/qbraid_qir.rst b/docs/api/qbraid_qir.rst new file mode 100644 index 0000000..8e33dcb --- /dev/null +++ b/docs/api/qbraid_qir.rst @@ -0,0 +1,4 @@ +qbraid_qir +=========== + +.. automodule:: qbraid_qir \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000..467c359 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,113 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys + +import qbraid_qir + +sys.path.insert(0, os.path.abspath("..")) +sys.path.insert(0, os.path.abspath("../../qbraid_qir")) + +# -- Project information ----------------------------------------------------- + +project = "qbraid-qir" +copyright = "2023, qBraid Development Team" +author = "qBraid Development Team" + +# The full version, including alpha/beta/rc tags +release = qbraid_qir.__version__ + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "sphinx.ext.napoleon", + "sphinx.ext.autodoc", + "sphinx_autodoc_typehints", + "sphinx.ext.autosummary", + "sphinx.ext.todo", + "sphinx.ext.mathjax", + "sphinx.ext.coverage", + "sphinx.ext.viewcode", # Hide source code link + "sphinx.ext.intersphinx", +] + +# set_type_checking_flag = True +autodoc_member_order = "bysource" +autoclass_content = "both" +autodoc_mock_imports = ["cirq"] +napoleon_numpy_docstring = False +todo_include_todos = True +mathjax_path = ( + "https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_HTMLorMML" +) + +# The master toctree document. +master_doc = "index" + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [ + "_build", + "*.pytest_cache", + "*.ipynb_checkpoints", + "*tests", +] + +# A boolean that decides whether module names are prepended to all object names +# (for object types where a “module” of some kind is defined), e.g. for +# py:function directives. +add_module_names = False + +# A list of prefixes that are ignored for sorting the Python module index +# (e.g., if this is set to ['foo.'], then foo.bar is shown under B, not F). +# This can be handy if you document a project that consists of a single +# package. Works only for the HTML builder currently. +modindex_common_prefix = ["qbraid_qir."] + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = "sphinx_rtd_theme" + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# html_theme_options = { +# "collapse_navigation": False +# } + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ["_static"] + +html_favicon = "_static/favicon.ico" +html_show_sphinx = False + +html_css_files = ["css/s4defs-roles.css"] + +# -- More customizations ---------------------------------------------------- + + +# def skip_member(app, what, name, obj, skip, options): +# print(app, what, name, obj, skip, options) +# return True +# +# +# def setup(app): +# app.connect('autodoc-skip-member', skip_member) diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000..ce1a2f1 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,88 @@ +Documentation +============== + +.. raw:: html + + + + + + + +

+ qbraid logo + qBraid + | QIR +

+

+ qBraid-SDK extension providing support for QIR conversions. +

+ + + +| + +:Release: |release| + +.. toctree:: + :maxdepth: 1 + :caption: User Guide + :hidden: + + userguide/overview + userguide/cirq_qir + +.. toctree:: + :maxdepth: 1 + :caption: API Reference + :hidden: + + api/qbraid_qir + api/qbraid_qir.cirq + + +Indices and Tables +------------------ + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..5f17de7 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,36 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=build +set STUBSDIR=stubs + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000..231c53a --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,4 @@ +sphinx~=7.2.6 +sphinx-autodoc-typehints>=1.24,<1.26 +sphinx-rtd-theme~=1.3.0 +docutils<0.21 \ No newline at end of file diff --git a/docs/stubs/qbraid_qir.QirConversionError.rst b/docs/stubs/qbraid_qir.QirConversionError.rst new file mode 100644 index 0000000..ccb271c --- /dev/null +++ b/docs/stubs/qbraid_qir.QirConversionError.rst @@ -0,0 +1,6 @@ +qbraid\_qir.QirConversionError +============================== + +.. currentmodule:: qbraid_qir + +.. autoexception:: QirConversionError \ No newline at end of file diff --git a/docs/stubs/qbraid_qir.cirq.cirq_to_qir.rst b/docs/stubs/qbraid_qir.cirq.cirq_to_qir.rst new file mode 100644 index 0000000..3d8c2e7 --- /dev/null +++ b/docs/stubs/qbraid_qir.cirq.cirq_to_qir.rst @@ -0,0 +1,6 @@ +qbraid\_qir.cirq.cirq\_to\_qir +============================== + +.. currentmodule:: qbraid_qir.cirq + +.. autofunction:: cirq_to_qir \ No newline at end of file diff --git a/docs/userguide/cirq_qir.rst b/docs/userguide/cirq_qir.rst new file mode 100644 index 0000000..73236b1 --- /dev/null +++ b/docs/userguide/cirq_qir.rst @@ -0,0 +1,59 @@ +.. _sdk_qir_cirq: + +Cirq conversions +================== + +Example Usage +-------------- + +Convert a ``Cirq`` circuit to ``QIR`` code: + +.. code-block:: python + + import cirq + from qbraid.cirq_qir import cirq_to_qir + + # Create two qubits + q0, q1 = cirq.LineQubit.range(2) + + # Create bell circuit + circuit = cirq.Circuit( + cirq.H(q0), + cirq.CNOT(q0, q1), + cirq.measure(q0, key='result0'), + cirq.measure(q1, key='result1') + ) + + qir_code = cirq_to_qir(circuit) + + print(qir_code) + +.. code-block:: none + + ; ModuleID = 'Bell' + source_filename = "Bell" + + %Qubit = type opaque + %Result = type opaque + + define void @main() #0 { + entry: + call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 0 to %Qubit*)) # Corrected %Qubit* null to inttoptr (i64 0 to %Qubit*) + call void @__quantum__qis__cnot__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Qubit* inttoptr (i64 1 to %Qubit*)) # Corrected %Qubit* null and added correct inttoptr conversion + call void @__quantum__qis__mz__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Result* inttoptr (i64 0 to %Result*)) # Corrected %Qubit* and %Result* null to correct inttoptr conversion + call void @__quantum__qis__mz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Result* inttoptr (i64 1 to %Result*)) # Added correct inttoptr conversion + ret void + } + + declare void @__quantum__qis__h__body(%Qubit*) + declare void @__quantum__qis__cnot__body(%Qubit*, %Qubit*) + declare void @__quantum__qis__mz__body(%Qubit*, %Result* writeonly) #1 + + attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="custom" "required_num_qubits"="2" "required_num_results"="2" } + attributes #1 = { "irreversible" } + + !llvm.module.flags = !{!0, !1, !2, !3} + !0 = !{i32 1, !"qir_major_version", i32 1} + !1 = !{i32 7, !"qir_minor_version", i32 0} + !2 = !{i32 1, !"dynamic_qubit_management", i1 false} + !3 = !{i32 1, !"dynamic_result_management", i1 false} diff --git a/docs/userguide/overview.rst b/docs/userguide/overview.rst new file mode 100644 index 0000000..0e82255 --- /dev/null +++ b/docs/userguide/overview.rst @@ -0,0 +1,34 @@ +.. _sdk_qir_overview: + +Overview +---------- + +Installation +^^^^^^^^^^^^^ + +.. code-block:: bash + + pip install qbraid-qir + + +Supported Frontends +^^^^^^^^^^^^^^^^^^^^ + ++-------------+-------------+ +| QIR_ | Cirq_ | ++=============+=============+ +| |qir| | |cirq| | ++-------------+-------------+ + +.. |qir| image:: ../_static/pkg-logos/qir.png + :align: middle + :width: 100px + :target: QIR + +.. |cirq| image:: ../_static/pkg-logos/cirq.png + :align: middle + :width: 100px + :target: Cirq_ + +.. _QIR: https://www.qir-alliance.org/pyqir/ +.. _Cirq: https://quantumai.google/cirq diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..6a0bd46 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["setuptools>=61", "wheel"] +build-backend = "setuptools.build_meta" \ No newline at end of file diff --git a/qbraid_qir/__init__.py b/qbraid_qir/__init__.py new file mode 100644 index 0000000..9893ce3 --- /dev/null +++ b/qbraid_qir/__init__.py @@ -0,0 +1,26 @@ +# Copyright (C) 2023 qBraid +# +# This file is part of the qBraid-SDK +# +# The qBraid-SDK is free software released under the GNU General Public License v3 +# or later. You can redistribute and/or modify it under the terms of the GPL v3. +# See the LICENSE file in the project root or . +# +# THERE IS NO WARRANTY for the qBraid-SDK, as per Section 15 of the GPL v3. + +""" +This top level module contains the main qBraid QIR functionality. + +.. currentmodule:: qbraid_qir + +Exceptions +----------- + +.. autosummary:: + :toctree: ../stubs/ + + QirConversionError + +""" +from ._version import __version__ +from .exceptions import QirConversionError diff --git a/qbraid_qir/_version.py b/qbraid_qir/_version.py new file mode 100644 index 0000000..3c14a15 --- /dev/null +++ b/qbraid_qir/_version.py @@ -0,0 +1,17 @@ +# Copyright (C) 2023 qBraid +# +# This file is part of the qBraid-SDK +# +# The qBraid-SDK is free software released under the GNU General Public License v3 +# or later. You can redistribute and/or modify it under the terms of the GPL v3. +# See the LICENSE file in the project root or . +# +# THERE IS NO WARRANTY for the qBraid-SDK, as per Section 15 of the GPL v3. + +""" +Module containing version information + +Version number (major.minor.patch[-label]) + +""" +__version__ = "0.0.1.dev" diff --git a/qbraid_qir/cirq/__init__.py b/qbraid_qir/cirq/__init__.py new file mode 100644 index 0000000..9cb880c --- /dev/null +++ b/qbraid_qir/cirq/__init__.py @@ -0,0 +1,25 @@ +# Copyright (C) 2023 qBraid +# +# This file is part of the qBraid-SDK +# +# The qBraid-SDK is free software released under the GNU General Public License v3 +# or later. You can redistribute and/or modify it under the terms of the GPL v3. +# See the LICENSE file in the project root or . +# +# THERE IS NO WARRANTY for the qBraid-SDK, as per Section 15 of the GPL v3. + +""" +Module containing Cirq QIR functionality. + +.. currentmodule:: qbraid_qir.cirq + +Functions +----------- + +.. autosummary:: + :toctree: ../stubs/ + + cirq_to_qir + +""" +from .conversions import cirq_to_qir diff --git a/qbraid_qir/cirq/conversions.py b/qbraid_qir/cirq/conversions.py new file mode 100644 index 0000000..515a792 --- /dev/null +++ b/qbraid_qir/cirq/conversions.py @@ -0,0 +1,39 @@ +# Copyright (C) 2023 qBraid +# +# This file is part of the qBraid-SDK +# +# The qBraid-SDK is free software released under the GNU General Public License v3 +# or later. You can redistribute and/or modify it under the terms of the GPL v3. +# See the LICENSE file in the project root or . +# +# THERE IS NO WARRANTY for the qBraid-SDK, as per Section 15 of the GPL v3. + +""" +Module containing Cirq to qBraid QIR conversion functions + +""" +import cirq + +from qbraid_qir.exceptions import QirConversionError + + +def cirq_to_qir(circuit: cirq.Circuit) -> str: + """Converts a Cirq circuit to QIR code. + + Args: + circuit (cirq.Circuit): The Cirq circuit to convert. + + Returns: + str: The QIR code. + + Raises: + TypeError: If the input is not a Cirq circuit. + QirConversionError: If the conversion fails. + """ + if not isinstance(circuit, cirq.Circuit): + raise TypeError("Input quantum program must be of type cirq.Circuit.") + + try: + raise NotImplementedError + except Exception as e: + raise QirConversionError("Failed to convert Cirq circuit to QIR code.") from e diff --git a/qbraid_qir/exceptions.py b/qbraid_qir/exceptions.py new file mode 100644 index 0000000..aacf3ba --- /dev/null +++ b/qbraid_qir/exceptions.py @@ -0,0 +1,19 @@ +# Copyright (C) 2023 qBraid +# +# This file is part of the qBraid-SDK +# +# The qBraid-SDK is free software released under the GNU General Public License v3 +# or later. You can redistribute and/or modify it under the terms of the GPL v3. +# See the LICENSE file in the project root or . +# +# THERE IS NO WARRANTY for the qBraid-SDK, as per Section 15 of the GPL v3. + +""" +Module defining exceptions for errors raised by qBraid. + +""" +from qbraid.exceptions import QbraidError + + +class QirConversionError(QbraidError): + """Base class for errors raised by qBraid QIR package.""" diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 0000000..0a39d56 --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,8 @@ +# unit tests +pytest +pytest-cov + +# formatting +black +isort +pylint \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..bd9ea8b --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +pyqir~=0.10.0 +qbraid==0.5.0.dev20231115163402 +cirq-core \ No newline at end of file diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..f08fa24 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,30 @@ +[metadata] +name = qbraid-qir +license = GPL v3.0 +author = qBraid Development Team +author_email = contact@qbraid.com +description = qBraid-SDK extension providing support for QIR conversions +long_description = file: README.md +long_description_content_type = text/markdown +keywords = qbraid, quantum +url = https://www.qbraid.com/ +project_urls = + Documentation = https://docs.qbraid.com/en/latest/ + Bug Tracker = https://github.com/qBraid/qbraid-qir/issues + Source Code = https://github.com/qBraid/qbraid-qir + Discord = https://discord.gg/TPBU2sa8Et + Launch on Lab = https://account.qbraid.com/?gitHubUrl=https://github.com/qBraid/qbraid-qir.git +classifiers = + Intended Audience :: Developers + Intended Audience :: Science/Research + Natural Language :: English + Programming Language :: Python + Programming Language :: Python :: 3.9 + Programming Language :: Python :: 3.10 + Programming Language :: Python :: 3.11 + Topic :: Scientific/Engineering + Topic :: Scientific/Engineering :: Physics + +[options] +packages = find: +python_requires = >=3.9 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..7c1d816 --- /dev/null +++ b/setup.py @@ -0,0 +1,67 @@ +# Copyright (C) 2023 qBraid +# +# This file is part of the qBraid-SDK +# +# The qBraid-SDK is free software released under the GNU General Public License v3 +# or later. You can redistribute and/or modify it under the terms of the GPL v3. +# See the LICENSE file in the project root or . +# +# THERE IS NO WARRANTY for the qBraid-SDK, as per Section 15 of the GPL v3. + +""" +qBraid QIR setup file + +""" +import os + +from setuptools import setup + + +def read_requirements(file_path): + """ + Reads a requirements file and returns the packages listed in it. + + Args: + file_path (str): Path to the requirements file. + + Returns: + list: List of package requirements. + """ + with open(file_path, "r", encoding="utf-8") as file: + return [line.strip() for line in file if line.strip()] + + +def read_version(file_path): + """ + Extracts the version from a Python file containing a version variable. + + Args: + file_path (str): Path to the Python file with the version variable. + + Returns: + str: Version string, if found; otherwise, None. + """ + with open(file_path, "r", encoding="utf-8") as file: + return next( + ( + line.split("=")[-1].strip().strip("\"'") + for line in file + if line.startswith("__version__") + ), + None, + ) + + +# Determine the directory where setup.py is located +here = os.path.abspath(os.path.dirname(__file__)) + +# Reading the package's version and requirements +version = read_version(os.path.join(here, "qbraid_qir/_version.py")) +install_requires = read_requirements(os.path.join(here, "requirements.txt")) +dev_requires = read_requirements(os.path.join(here, "requirements-dev.txt")) + +setup( + version=version, + install_requires=install_requires, + extras_require={"dev": dev_requires}, +) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/cirq_qir/test_conversions.py b/tests/cirq_qir/test_conversions.py new file mode 100644 index 0000000..916efc4 --- /dev/null +++ b/tests/cirq_qir/test_conversions.py @@ -0,0 +1,32 @@ +# Copyright (C) 2023 qBraid +# +# This file is part of the qBraid-SDK +# +# The qBraid-SDK is free software released under the GNU General Public License v3 +# or later. You can redistribute and/or modify it under the terms of the GPL v3. +# See the LICENSE file in the project root or . +# +# THERE IS NO WARRANTY for the qBraid-SDK, as per Section 15 of the GPL v3. + +""" +Module containing unit tests for Cirq to QIR conversion functions. + +""" +import cirq +import pytest + +from qbraid_qir.cirq.conversions import cirq_to_qir +from qbraid_qir.exceptions import QirConversionError + + +def test_cirq_to_qir_type_error(): + """Test raising exception for bad input type.""" + with pytest.raises(TypeError): + cirq_to_qir(None) + + +def test_cirq_to_qir_conversion_error(): + """Test raising exception for conversion error.""" + circuit = cirq.Circuit() + with pytest.raises(QirConversionError): + cirq_to_qir(circuit) diff --git a/tools/create_dev_build.sh b/tools/create_dev_build.sh new file mode 100755 index 0000000..1918fc5 --- /dev/null +++ b/tools/create_dev_build.sh @@ -0,0 +1,87 @@ +#!/bin/bash + +# Copyright (C) 2023 qBraid +# +# This file is part of the qBraid-SDK +# +# The qBraid-SDK is free software released under the GNU General Public License v3 +# or later. You can redistribute and/or modify it under the terms of the GPL v3. +# See the LICENSE file in the project root or . +# +# THERE IS NO WARRANTY for the qBraid-SDK, as per Section 15 of the GPL v3. + +################################################################################ +# Description: +# Script for creating development package builds. It temporarily checks out +# a new branch, modifies the `_version.py` file to reflect the provided +# development version, and then triggers the build process. +# +# Usage: +# ./create_dev_build.sh +# +# Arguments: +# DEV_VERSION: The development version string to use for the build. +# OUT_DIR: The directory where the built packages will be stored. +# +# Example: +# ./create_dev_build.sh "1.0.0dev" "/path/to/output_directory" +################################################################################ + +set -e + +# Check for required arguments +if [[ $# -ne 2 ]]; then + echo "Usage: $0 " + exit 1 +fi + +DEV_VERSION="${1}" +OUT_DIR="${2}" + +# Constants +REPO_DIR=$(git rev-parse --show-toplevel) +VERSION_FILE="${REPO_DIR}/qbraid/_version.py" +TMP_BRANCH="tmp_build_branch_$(date "+%Y%m%d%H%M%S")" + +# Cleanup function +cleanup() { + echo "Cleaning up..." + + # If the TMP_BRANCH exists, checkout the original branch and delete TMP_BRANCH + if git rev-parse --verify "${TMP_BRANCH}" >/dev/null 2>&1; then + git checkout HEAD -- "${VERSION_FILE}" 2>/dev/null + git checkout - 2>/dev/null + git branch -D "${TMP_BRANCH}" 2>/dev/null + else + git checkout HEAD -- "${VERSION_FILE}" 2>/dev/null + fi +} + +# Use trap to ensure cleanup runs on exit +trap cleanup EXIT + +# Check if temporary branch name already exists +if git rev-parse --verify "${TMP_BRANCH}" >/dev/null 2>&1; then + echo "Temporary branch name already exists. Exiting for safety." + exit 1 +fi + +# Create and checkout temporary branch +echo "Creating and checking out temporary branch: ${TMP_BRANCH}" +git checkout -b "${TMP_BRANCH}" + +# Update the version in the version file +echo "Setting version to ${DEV_VERSION}" +echo '__version__ = "'"${DEV_VERSION}"'"' > "${VERSION_FILE}" + +# Check if `build` module is installed +if ! python -c "import build" 2>/dev/null; then + echo "'build' module is not installed. Please install it with 'pip install build'." + exit 1 +fi + +# Build the project +echo "Building the project..." +python -m build --outdir "${OUT_DIR}" + +echo "Done." diff --git a/tools/stamp_dev_version.sh b/tools/stamp_dev_version.sh new file mode 100755 index 0000000..bee6432 --- /dev/null +++ b/tools/stamp_dev_version.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +# Copyright (C) 2023 qBraid +# +# This file is part of the qBraid-SDK +# +# The qBraid-SDK is free software released under the GNU General Public License v3 +# or later. You can redistribute and/or modify it under the terms of the GPL v3. +# See the LICENSE file in the project root or . +# +# THERE IS NO WARRANTY for the qBraid-SDK, as per Section 15 of the GPL v3. + +################################################################################ +# Description: +# Script to append a timestamp to the version number +# in the `_version.py` file if the version ends in "dev". +# +# This assists in distinguishing between different development builds +# based on the time of their creation. +# +# Example Usage: +# ./stamp_dev_version.sh +# +# Given `_version.py` content: +# version = "1.0.0dev" +# +# Output: +# 1.0.0dev20230809120000 +################################################################################ + +set -e + +# Constants +PROJECT_NAME="qbraid/qir" +VERSION_FILE_PATH="_version.py" +TIMESTAMP_FORMAT="+%Y%m%d%H%M%S" + +# Ensure we're at the root of the Git repository +repo_dir=$(git rev-parse --show-toplevel) + +# Extract the actual version from the last line of the _version.py file +ACTUAL_VERSION=$(tail -n 1 "${repo_dir}/${PROJECT_NAME}/${VERSION_FILE_PATH}" | cut -d'"' -f 2) + +# Append a timestamp if the version ends with "dev" +if [[ "${ACTUAL_VERSION}" == *"dev" ]]; then + echo "${ACTUAL_VERSION}$(date "${TIMESTAMP_FORMAT}")" +else + echo "Version doesn't end in dev: ${ACTUAL_VERSION}" >&2 + exit 1 +fi diff --git a/tools/verify_headers.py b/tools/verify_headers.py new file mode 100755 index 0000000..e723b37 --- /dev/null +++ b/tools/verify_headers.py @@ -0,0 +1,138 @@ +# Copyright (C) 2023 qBraid +# +# This file is part of the qBraid-SDK +# +# The qBraid-SDK is free software released under the GNU General Public License v3 +# or later. You can redistribute and/or modify it under the terms of the GPL v3. +# See the LICENSE file in the project root or . +# +# THERE IS NO WARRANTY for the qBraid-SDK, as per Section 15 of the GPL v3. + +# pylint: skip-file + +""" +Script to verify qBraid copyright file headers + +""" +import os +import sys + +# ANSI escape codes +BLUE = "\033[94m" +BOLD = "\033[1m" +RESET = "\033[0m" + +header = """# Copyright (C) 2023 qBraid +# +# This file is part of the qBraid-SDK +# +# The qBraid-SDK is free software released under the GNU General Public License v3 +# or later. You can redistribute and/or modify it under the terms of the GPL v3. +# See the LICENSE file in the project root or . +# +# THERE IS NO WARRANTY for the qBraid-SDK, as per Section 15 of the GPL v3. +""" + +skip_files = [] + +failed_headers = [] +fixed_headers = [] + + +def should_skip(file_path, content): + if file_path in skip_files: + return True + + if os.path.basename(file_path) == "__init__.py": + return not content.strip() + + return False + + +def replace_or_add_header(file_path, fix=False): + with open(file_path, "r", encoding="ISO-8859-1") as f: + content = f.read() + + if content.startswith(header) or should_skip(file_path, content): + return + + if not fix: + failed_headers.append(file_path) + return + + lines = content.splitlines() + + comment_lines = [] + first_skipped_line = None + for index, line in enumerate(lines): + if line.startswith("#"): + comment_lines.append(line) + else: + first_skipped_line = index + break + + new_content_lines = [header.rstrip("\r\n")] + lines[first_skipped_line:] + new_content = "\n".join(new_content_lines) + "\n" + + with open(file_path, "w", encoding="ISO-8859-1") as f: + f.write(new_content) + + fixed_headers.append(file_path) + + +def process_files_in_directory(directory, fix=False): + count = 0 + for root, _, files in os.walk(directory): + for file in files: + if file.endswith(".py"): + file_path = os.path.join(root, file) + replace_or_add_header(file_path, fix) + count += 1 + return count + + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Please provide at least one directory as a command-line argument.") + sys.exit(1) + + script_directory = os.path.dirname(os.path.abspath(__file__)) + project_directory = os.path.abspath(os.path.join(script_directory, "..")) + skip_files = [ + os.path.join(project_directory, file_path) for file_path in skip_files + ] + + fix = "--fix" in sys.argv + directories = [arg for arg in sys.argv[1:] if arg != "--fix"] + + checked = 0 + for directory in directories: + full_directory_path = os.path.join(project_directory, directory) + if os.path.isdir(full_directory_path): + checked += process_files_in_directory(full_directory_path, fix) + else: + failed_headers.append(full_directory_path) + print(f"Directory not found: {full_directory_path}") + + if not fix: + if failed_headers: + for file in failed_headers: + print(f"failed {os.path.relpath(file)}") + num_failed = len(failed_headers) + s1, s2 = ("", "s") if num_failed == 1 else ("s", "") + sys.stderr.write(f"\n{num_failed} file header{s1} need{s2} updating.\n") + sys.exit(1) + else: + print("All file header checks passed!") + + else: + for file in fixed_headers: + print(f"fixed {os.path.relpath(file)}") + num_fixed = len(fixed_headers) + num_ok = checked - num_fixed + s_fixed = "" if num_fixed == 1 else "s" + s_ok = "" if num_ok == 1 else "s" + print("\nAll done! ✨ 🚀 ✨") + print( + f"{num_fixed} header{s_fixed} fixed, {num_ok} header{s_ok} left unchanged." + ) From f834a9b47b8c8efce0d7e664f0d12305093e19a8 Mon Sep 17 00:00:00 2001 From: Ryan Hill Date: Mon, 27 Nov 2023 17:00:14 -0600 Subject: [PATCH 2/6] readthedocs config --- .readthedocs.yaml | 24 ++++++++++++++++++++++++ setup.py | 3 ++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 .readthedocs.yaml diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000..c1fb963 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,24 @@ +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set the version of Python and other tools you might need +build: + os: ubuntu-20.04 + tools: + python: "3.10" + +# Build documentation in the docs/ directory with Sphinx +sphinx: + configuration: docs/conf.py + +# Optionally declare the Python requirements required to build your docs +python: + install: + - requirements: requirements.txt + - method: pip + path: . + extra_requirements: + - docs \ No newline at end of file diff --git a/setup.py b/setup.py index 7c1d816..05ff043 100644 --- a/setup.py +++ b/setup.py @@ -59,9 +59,10 @@ def read_version(file_path): version = read_version(os.path.join(here, "qbraid_qir/_version.py")) install_requires = read_requirements(os.path.join(here, "requirements.txt")) dev_requires = read_requirements(os.path.join(here, "requirements-dev.txt")) +docs_requires = read_requirements(os.path.join(here, "docs", "requirements.txt")) setup( version=version, install_requires=install_requires, - extras_require={"dev": dev_requires}, + extras_require={"dev": dev_requires, "docs": docs_requires}, ) From c6c69695b0b7438413f628559c7387e66afd94f9 Mon Sep 17 00:00:00 2001 From: Ryan Hill Date: Mon, 27 Nov 2023 17:12:44 -0600 Subject: [PATCH 3/6] fix workflow tests --- .github/workflows/docs.yml | 5 +++-- .github/workflows/format.yml | 5 +++-- MANIFEST.in | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index c8c642f..d046ee5 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -18,8 +18,9 @@ jobs: cache: pip - name: Install dependencies run: | - python -m pip install --upgrade pip - python -m pip install -r docs/requirements.txt + python3 -m pip install --upgrade pip + python3 -m pip install -r docs/requirements.txt + python3 -m pip install -e . - name: Build docs run: | sphinx-build -W -b html docs/ docs/build/html diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index e13106e..d10acd8 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -17,8 +17,9 @@ jobs: python-version: '3.10' - name: Install dependencies run: | - python -m pip install --upgrade pip - python -m pip install pylint black isort + python3 -m pip install --upgrade pip + python3 -m pip install -r requirements.txt + ppython3 -m pip install -r requirements-dev.txt - name: Check isort, pylint, black, headers run: | pylint qbraid_qir tests tools diff --git a/MANIFEST.in b/MANIFEST.in index f43532a..2b5e09b 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,5 +1,5 @@ include *.txt *.md -recursive-include docs *.rst *.py *.png *.ico +recursive-include docs *.rst *.py *.png *.ico *.txt recursive-include qbraid_qir *.py recursive-include tools *.py prune docs/build/ \ No newline at end of file From 7323512d25e6c4468c4bb5a08ca12c036c42cf53 Mon Sep 17 00:00:00 2001 From: Ryan Hill Date: Mon, 27 Nov 2023 17:17:03 -0600 Subject: [PATCH 4/6] format workflow fixes, pyversion --- .github/workflows/format.yml | 2 +- .github/workflows/main.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index d10acd8..76024a6 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -19,7 +19,7 @@ jobs: run: | python3 -m pip install --upgrade pip python3 -m pip install -r requirements.txt - ppython3 -m pip install -r requirements-dev.txt + python3 -m pip install -r requirements-dev.txt - name: Check isort, pylint, black, headers run: | pylint qbraid_qir tests tools diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1e33d91..ba4f0c0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,4 +1,4 @@ -name: Build & test +name: CI on: pull_request: @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.9', '3.10', '3.11'] + python-version: ['3.10', '3.11'] steps: - uses: actions/checkout@v3 From 6eac726de035d1c4b31f3ac9bf9b7953c6408039 Mon Sep 17 00:00:00 2001 From: Ryan Hill Date: Mon, 27 Nov 2023 17:23:17 -0600 Subject: [PATCH 5/6] split main workflow into steps --- .github/workflows/format.yml | 5 ++- .github/workflows/main.yml | 66 +++++++++++++++++++++++++----------- 2 files changed, 49 insertions(+), 22 deletions(-) diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 76024a6..dadb722 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -6,7 +6,7 @@ on: workflow_dispatch: jobs: - formatting-check: + main: runs-on: ubuntu-latest steps: @@ -18,8 +18,7 @@ jobs: - name: Install dependencies run: | python3 -m pip install --upgrade pip - python3 -m pip install -r requirements.txt - python3 -m pip install -r requirements-dev.txt + python3 -m pip install -r requirements.txt requirements-dev.txt - name: Check isort, pylint, black, headers run: | pylint qbraid_qir tests tools diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ba4f0c0..e0ddc5d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,22 +13,50 @@ jobs: python-version: ['3.10', '3.11'] steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - cache: pip - - name: Upgrade pip and Install build tools - run: | - python -m pip install --upgrade pip - pip install setuptools wheel build - - name: Build the package - run: | - python -m build - - name: Install package - run: | - pip install dist/*.whl - - name: Run tests - run: | - pytest tests + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: pip + - name: Upgrade pip and install build tools + run: | + python -m pip install --upgrade pip + pip install setuptools wheel build + - name: Build the package + run: | + python -m build + - name: Upload built package + uses: actions/upload-artifact@v3 + with: + name: built-package + path: dist/*.whl + + test: + needs: build + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.10', '3.11'] + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: pip + - name: Download built package + uses: actions/download-artifact@v3 + with: + name: built-package + path: dist + - name: Install package + run: | + pip install dist/*.whl + - name: Install pytest + run: | + pip install pytest + - name: Run tests + run: | + pytest tests From 8784b68648d8175f17b39b42a49b7e1cbd3cff38 Mon Sep 17 00:00:00 2001 From: Ryan Hill Date: Mon, 27 Nov 2023 17:26:11 -0600 Subject: [PATCH 6/6] py version main workflow --- .github/workflows/format.yml | 3 ++- .github/workflows/main.yml | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index dadb722..74fa40e 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -18,7 +18,8 @@ jobs: - name: Install dependencies run: | python3 -m pip install --upgrade pip - python3 -m pip install -r requirements.txt requirements-dev.txt + python3 -m pip install -r requirements.txt + python3 -m pip install -r requirements-dev.txt - name: Check isort, pylint, black, headers run: | pylint qbraid_qir tests tools diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e0ddc5d..c34a14b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.10', '3.11'] + python-version: ['3.11'] steps: - uses: actions/checkout@v3 @@ -37,7 +37,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.10', '3.11'] + python-version: ['3.11'] steps: - uses: actions/checkout@v3