Skip to content

allow passing a callable to de/serialization funcs #16160

allow passing a callable to de/serialization funcs

allow passing a callable to de/serialization funcs #16160

Workflow file for this run

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@v5
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