Create a way to encode general functions #15969
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Continuous Integration | |
on: | |
schedule: | |
# Checks out main by default. | |
- cron: '0 0 * * *' | |
pull_request: | |
branches: | |
- main | |
concurrency: | |
group: ${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
quick_test: | |
name: Misc check | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: 'x64' | |
- name: Misc | |
run: check/misc | |
packaging_test: | |
name: Packaging test | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: 'x64' | |
- name: Install dependencies | |
run: pip install -r dev_tools/requirements/deps/packaging.txt | |
- name: Run packaging test | |
run: ./dev_tools/packaging/packaging_test.sh | |
format: | |
name: Format check | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: 'x64' | |
- name: Install dependencies | |
run: pip install -r dev_tools/requirements/deps/format.txt | |
- name: Format | |
run: check/format-incremental | |
mypy: | |
name: Type check | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: 'x64' | |
- name: Install mypy | |
run: pip install -r dev_tools/requirements/mypy.env.txt | |
- name: Type check | |
run: check/mypy | |
changed_files: | |
name: Changed files test | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: 'x64' | |
- name: Install changed files test dependencies | |
run: dev_tools/conf/pip-install-minimal-for-pytest-changed-files.sh | |
- name: Changed files test | |
run: check/pytest-changed-files -n auto | |
lint: | |
name: Lint check | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: 'x64' | |
- name: Install pylint | |
run: pip install -r dev_tools/requirements/pylint.env.txt | |
- name: Display version | |
run: check/pylint --version | |
- name: Lint | |
run: check/pylint -v | |
doc_test: | |
name: Doc test | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: 'x64' | |
- name: Install requirements | |
run: pip install -r dev_tools/requirements/dev.env.txt | |
- name: RST check | |
run: find . -type f -name "*.rst" | xargs rstcheck | |
- name: Doc check | |
run: check/doctest -q | |
nbformat: | |
name: Notebook formatting | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: 'x64' | |
- name: Install requirements | |
run: pip install -r dev_tools/requirements/deps/tensorflow-docs.txt | |
- name: Doc check | |
run: check/nbformat | |
shellcheck: | |
name: Shell check | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Run shellcheck | |
run: check/shellcheck | |
isolated-modules: | |
name: Isolated pytest Ubuntu | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: 'x64' | |
- name: Install dependencies | |
run: pip install -r dev_tools/requirements/isolated-base.env.txt | |
- name: Test each module in isolation | |
run: pytest -n auto --enable-slow-tests dev_tools/packaging/isolated_packages_test.py | |
pytest: | |
name: Pytest Ubuntu | |
strategy: | |
matrix: | |
python-version: ['3.10', '3.11', '3.12'] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: 'x64' | |
- name: Set up caching of dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: ${{ env.pythonLocation }}-${{ hashFiles('**/requirements.txt', 'dev_tools/requirements/**/*.txt') }} | |
- name: Install requirements | |
run: | | |
pip install wheel | |
pip install --upgrade --upgrade-strategy eager -r dev_tools/requirements/dev.env.txt | |
- name: Run Quil dependencies | |
run: docker compose -f cirq-rigetti/docker-compose.test.yaml up -d | |
- name: Pytest check | |
run: check/pytest -n auto --durations=20 --ignore=cirq-core/cirq/contrib --rigetti-integration | |
- name: Stop Quil dependencies | |
run: docker compose -f cirq-rigetti/docker-compose.test.yaml down | |
# TODO(#6706) remove after we start using NumPy 2.0 in regular pytest | |
pytest-numpy-2: | |
name: Pytest Ubuntu with NumPy-2 | |
strategy: | |
matrix: | |
python-version: ['3.10', '3.11', '3.12'] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: 'x64' | |
- name: Set up caching of dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: ${{ env.pythonLocation }}-${{ hashFiles('**/requirements.txt', 'dev_tools/requirements/**/*.txt') }} | |
- name: Install requirements | |
run: | | |
pip install wheel | |
pip install --upgrade --upgrade-strategy eager -r dev_tools/requirements/dev-np2.env.txt | |
- name: Pytest check | |
run: check/pytest -n auto --warn-numpy-data-promotion --durations=20 --ignore=cirq-rigetti | |
pip-compile: | |
name: Check consistency of requirements | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: 'x64' | |
- name: Install requirements | |
run: pip install pip-tools | |
- name: Test dependencies with pip-compile | |
run: | | |
pip-compile --resolver=backtracking dev_tools/requirements/deps/cirq-all.txt -o- | |
build_protos: | |
name: Build protos | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: 'x64' | |
- name: Install requirements | |
run: | | |
pip install -r dev_tools/requirements/deps/protos.txt | |
- name: Build protos | |
run: check/protos-up-to-date | |
coverage: | |
name: Coverage check | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: 'x64' | |
- name: Set up caching of dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: ${{ env.pythonLocation }}-${{ hashFiles('**/requirements.txt', 'dev_tools/requirements/**/*.txt') }} | |
- name: Install requirements | |
run: | | |
pip install wheel | |
pip install --upgrade --upgrade-strategy eager -r dev_tools/requirements/dev.env.txt | |
- name: Run Quil dependencies | |
run: docker compose -f cirq-rigetti/docker-compose.test.yaml up -d | |
- name: Coverage check | |
run: check/pytest-and-incremental-coverage -n auto --rigetti-integration | |
- name: Upload coverage reports to Codecov | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
- name: Stop Quil dependencies | |
run: docker compose -f cirq-rigetti/docker-compose.test.yaml down | |
windows: | |
name: Pytest Windows | |
strategy: | |
matrix: | |
python-version: ['3.10', '3.11', '3.12'] | |
runs-on: windows-2019 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: 'x64' | |
- name: Set up caching of dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: ${{ env.pythonLocation }}-${{ hashFiles('**/requirements.txt', 'dev_tools/requirements/**/*.txt') }} | |
- name: Install requirements | |
run: | | |
pip install wheel | |
pip install --upgrade --upgrade-strategy eager -r dev_tools/requirements/no-contrib.env.txt | |
- name: Pytest Windows | |
run: | | |
source dev_tools/pypath | |
check/pytest -n auto --durations=20 --ignore=cirq-core/cirq/contrib | |
shell: bash | |
macos: | |
name: Pytest MacOS | |
strategy: | |
matrix: | |
python-version: ['3.10', '3.11', '3.12'] | |
# TODO(#6577): upgrade to macos-latest when it runs Python 3.10 | |
runs-on: macos-13 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: 'x64' | |
- name: Set up caching of dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: ${{ env.pythonLocation }}-${{ hashFiles('**/requirements.txt', 'dev_tools/requirements/**/*.txt') }} | |
- name: Install requirements | |
run: | | |
pip install wheel | |
pip install --upgrade --upgrade-strategy eager -r dev_tools/requirements/no-contrib.env.txt | |
- name: Pytest check | |
run: check/pytest -n auto --durations=20 --ignore=cirq-core/cirq/contrib | |
notebooks-stable: | |
name: Changed Notebooks Isolated Test against Cirq stable | |
env: | |
NOTEBOOK_PARTITIONS: 4 | |
strategy: | |
matrix: | |
# partitions should be named partition-0 to partition-(NOTEBOOK_PARTITIONS-1) | |
partition: [partition-0, partition-1, partition-2, partition-3] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: 'x64' | |
- name: Install requirements | |
run: pip install -r dev_tools/requirements/isolated-base.env.txt | |
- name: Notebook tests | |
run: check/pytest -n auto -m slow dev_tools/notebooks/isolated_notebook_test.py -k ${{matrix.partition}} | |
- name: Persist the outputs | |
uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: notebook-outputs | |
path: out | |
notebooks-branch: | |
name: Notebook Tests against PR | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Python environment | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: 'x64' | |
- name: Install requirements | |
run: pip install -r dev_tools/requirements/notebooks.env.txt | |
- name: Notebook tests | |
run: check/pytest -n auto -m slow dev_tools/notebooks/notebook_test.py | |
- name: Persist the outputs | |
uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: notebook-outputs | |
path: out | |
ts-build: | |
name: Bundle file consistency | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Node environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.17.0' | |
- name: Install node dependencies | |
run: check/npm ci | |
- name: Check build matches the current | |
run: check/ts-build-current | |
ts-lint: | |
name: Typescript lint check | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Node environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.17.0' | |
- name: Install node dependencies | |
run: check/npm ci | |
- name: Lint Typescript files | |
run: check/ts-lint | |
ts-test: | |
name: Typescript tests | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Node environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.17.0' | |
- name: Install node dependencies | |
run: check/npm ci | |
- name: Run unit tests | |
run: check/ts-test | |
- name: Run end-to-end tests | |
run: check/ts-test-e2e | |
ts-coverage: | |
name: Typescript tests coverage | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out source repository | |
uses: actions/checkout@v4 | |
- name: Set up Node environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.17.0' | |
- name: Install node dependencies | |
run: check/npm ci | |
- name: Run coverage test | |
run: check/ts-coverage |