Enhance the "Getting Started" notebook (#868) #1982
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
# Copyright 2021 Google LLC | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
name: ci | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- v* | |
pull_request: | |
branches: | |
- main | |
jobs: | |
build_dist: | |
runs-on: ${{ matrix.os_dist.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os_dist: [ | |
{os: ubuntu-latest, dist: cp36-manylinux_x86_64}, | |
{os: ubuntu-latest, dist: cp37-manylinux_x86_64}, | |
{os: ubuntu-latest, dist: cp38-manylinux_x86_64}, | |
{os: ubuntu-latest, dist: cp39-manylinux_x86_64}, | |
{os: ubuntu-latest, dist: cp310-manylinux_x86_64}, | |
{os: ubuntu-latest, dist: cp311-manylinux_x86_64}, | |
{os: ubuntu-latest, dist: cp312-manylinux_x86_64}, | |
{os: ubuntu-latest, dist: cp36-manylinux_i686}, | |
{os: ubuntu-latest, dist: cp37-manylinux_i686}, | |
# cp38-manylinux_i686 disabled because pandas isn't prebuilt and takes 20 minutes to build. | |
# {os: ubuntu-latest, dist: cp38-manylinux_i686}, | |
# cp39-manylinux_i686 disabled because pandas isn't prebuilt and takes 20 minutes to build. | |
# {os: ubuntu-latest, dist: cp39-manylinux_i686}, | |
# cp310-manylinux_i686 disabled because scipy isn't prebuilt and fails to build. | |
# | |
# The actual error seen in github actions: | |
# | |
# numpy.distutils.system_info.NotFoundError: No BLAS/LAPACK | |
# libraries found. To build Scipy from sources, BLAS & LAPACK | |
# libraries need to be installed. | |
# | |
#{os: ubuntu-latest, dist: cp310-manylinux_i686}, | |
# pypy manylinux builds disabled because scipy isn't prebuilt and fails to build. | |
# | |
# The actual error seen in github actions: | |
# | |
# numpy.distutils.system_info.NotFoundError: No BLAS/LAPACK | |
# libraries found. To build Scipy from sources, BLAS & LAPACK | |
# libraries need to be installed. | |
# | |
# {os: ubuntu-latest, dist: pp37-manylinux_x86_64}, | |
# {os: ubuntu-latest, dist: pp38-manylinux_x86_64}, | |
# {os: ubuntu-latest, dist: pp39-manylinux_x86_64}, | |
# {os: ubuntu-latest, dist: pp37-manylinux_i686}, | |
# {os: ubuntu-latest, dist: pp38-manylinux_i686}, | |
# {os: ubuntu-latest, dist: pp39-manylinux_i686}, | |
# musllinux builds disabled because scipy isn't prebuilt and fails to build. | |
# | |
# The actual error seen in github actions: | |
# | |
# numpy.distutils.system_info.NotFoundError: No BLAS/LAPACK | |
# libraries found. To build Scipy from sources, BLAS & LAPACK | |
# libraries need to be installed. | |
# | |
# {os: ubuntu-latest, dist: cp36-musllinux_x86_64}, | |
# {os: ubuntu-latest, dist: cp37-musllinux_x86_64}, | |
# {os: ubuntu-latest, dist: cp38-musllinux_x86_64}, | |
# {os: ubuntu-latest, dist: cp39-musllinux_x86_64}, | |
# {os: ubuntu-latest, dist: cp310-musllinux_x86_64}, | |
# {os: ubuntu-latest, dist: cp36-musllinux_i686}, | |
# {os: ubuntu-latest, dist: cp37-musllinux_i686}, | |
# {os: ubuntu-latest, dist: cp38-musllinux_i686}, | |
# {os: ubuntu-latest, dist: cp39-musllinux_i686}, | |
# {os: ubuntu-latest, dist: cp310-musllinux_i686}, | |
{os: macos-latest, dist: cp36-macosx_x86_64, macosarch: x86_64}, | |
{os: macos-latest, dist: cp37-macosx_x86_64, macosarch: x86_64}, | |
{os: macos-latest, dist: cp38-macosx_x86_64, macosarch: x86_64}, | |
{os: macos-latest, dist: cp39-macosx_x86_64, macosarch: x86_64}, | |
{os: macos-latest, dist: cp310-macosx_x86_64, macosarch: x86_64}, | |
{os: macos-latest, dist: cp311-macosx_x86_64, macosarch: x86_64}, | |
{os: macos-latest, dist: cp312-macosx_x86_64, macosarch: x86_64}, | |
{os: macos-latest, dist: cp38-macosx_arm64, macosarch: arm64}, | |
{os: macos-latest, dist: cp39-macosx_arm64, macosarch: arm64}, | |
{os: macos-latest, dist: cp310-macosx_arm64, macosarch: arm64}, | |
{os: macos-latest, dist: cp311-macosx_arm64, macosarch: arm64}, | |
{os: macos-latest, dist: cp312-macosx_arm64, macosarch: arm64}, | |
# pypy OSX builds disabled because numpy isn't prebuilt and fails to build. | |
# | |
# The actual error seen in github actions: | |
# | |
# RuntimeError: Found /usr/lib/libcblas.dylib, but that file is a | |
# symbolic link to the MacOS Accelerate framework, which is not | |
# supported by NumPy. You must configure the build to use a | |
# different optimized library, or disable the use of optimized | |
# BLAS and LAPACK by setting the environment variables | |
# NPY_BLAS_ORDER="" and NPY_LAPACK_ORDER="" before building NumPy. | |
# | |
# {os: macOS-10.15, dist: pp37-macosx_x86_64}, | |
# {os: macOS-10.15, dist: pp38-macosx_x86_64}, | |
# {os: macOS-10.15, dist: pp39-macosx_x86_64}, | |
{os: windows-2019, dist: cp36-win_amd64}, | |
{os: windows-2019, dist: cp37-win_amd64}, | |
{os: windows-2019, dist: cp38-win_amd64}, | |
{os: windows-2019, dist: cp39-win_amd64}, | |
{os: windows-2019, dist: cp310-win_amd64}, | |
{os: windows-2019, dist: cp311-win_amd64}, | |
{os: windows-2019, dist: cp312-win_amd64}, | |
{os: windows-2019, dist: cp36-win32}, | |
{os: windows-2019, dist: cp37-win32}, | |
# cp38-win32 and cp39-win32 disabled because scipy fails to build. | |
# | |
# The actual error seen in github actions: | |
# | |
# Need python for 64-bit, but found 32-bit | |
# ..\..\meson.build:82:0: ERROR: Python dependency not found | |
# | |
#{os: windows-2019, dist: cp38-win32}, | |
#{os: windows-2019, dist: cp39-win32}, | |
# cp310-win32 disabled because numpy isn't prebuilt and fails to build. | |
# | |
# The actual error seen in github actions: | |
# | |
# CCompiler_spawn() got an unexpected keyword argument 'env' | |
# | |
# {os: windows-2019, dist: cp310-win32}, | |
] | |
env: | |
CIBW_BUILD: "${{ matrix.os_dist.dist }}" | |
CIBW_ARCHS_MACOS: "${{ matrix.os_dist.macosarch }}" | |
CIBW_TEST_REQUIRES: cirq-core pytest | |
CIBW_TEST_COMMAND: pytest {project}/src {project}/glue/cirq && stim help | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v3 | |
- run: python dev/overwrite_dev_versions_with_date.py | |
- run: python -m pip install pybind11~=2.11.1 cibuildwheel~=2.16.2 setuptools wheel | |
- run: python -m cibuildwheel --print-build-identifiers | |
- run: python -m cibuildwheel --output-dir dist | |
- uses: actions/[email protected] | |
with: | |
name: "dist-stim-${{ matrix.os_dist.os }}-${{ matrix.os_dist.dist }}-${{ matrix.os_dist.macosarch }}" | |
path: dist/* | |
build_sdist: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v3 | |
- run: python -m pip install setuptools pybind11~=2.11.1 | |
- run: python dev/overwrite_dev_versions_with_date.py | |
- run: mkdir output | |
- run: python setup.py sdist | |
- run: cd glue/cirq && python setup.py sdist | |
- run: cd glue/sample && python setup.py sdist | |
- uses: actions/[email protected] | |
with: | |
name: "dist-sinter" | |
path: glue/sample/dist/*.tar.gz | |
- uses: actions/[email protected] | |
with: | |
name: "dist-stimcirq" | |
path: glue/cirq/dist/*.tar.gz | |
- uses: actions/[email protected] | |
with: | |
name: "dist-stim-sdist" | |
path: dist/*.tar.gz | |
check_sdist_installs_stim: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v3 | |
- run: python -m pip install pybind11~=2.11.1 cibuildwheel~=2.16.2 setuptools wheel | |
- run: python setup.py sdist | |
- run: pip install dist/*.tar.gz | |
check_sdist_installs_sinter: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v3 | |
- run: python -m pip install setuptools | |
- run: cd glue/sample && python setup.py sdist | |
- run: pip install glue/sample/dist/* | |
- run: python -c "import sinter" | |
merge_upload_artifacts: | |
needs: ["build_dist", "build_sdist"] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Merge Artifacts | |
uses: actions/upload-artifact/merge@v4 | |
with: | |
name: dist-stim | |
pattern: dist-stim-* | |
upload_dev_release_to_pypi: | |
needs: ["merge_upload_artifacts"] | |
if: github.ref == 'refs/heads/main' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/[email protected] | |
with: | |
name: dist-stim | |
path: dist-stim | |
- uses: actions/[email protected] | |
with: | |
name: dist-stimcirq | |
path: dist-stimcirq | |
- uses: actions/[email protected] | |
with: | |
name: dist-sinter | |
path: dist-sinter | |
- uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
packages_dir: dist-stim | |
password: ${{ secrets.pypi_token_stim }} | |
- uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
packages_dir: dist-stimcirq | |
password: ${{ secrets.pypi_token_stimcirq }} | |
- uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
packages_dir: dist-sinter | |
password: ${{ secrets.pypi_token_sinter }} | |
run_main: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- run: cmake . | |
- run: make stim -j 2 | |
- run: echo -e "H 0 \n CNOT 0 1 \n M 0 1" | out/stim --sample | |
build_bazel: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- uses: bazel-contrib/[email protected] | |
with: | |
bazelisk-cache: true | |
disk-cache: ${{ github.workflow }} | |
repository-cache: true | |
bazelisk-version: 1.x | |
- run: bazel build :all | |
- run: bazel test :stim_test | |
build_clang: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v1 | |
- run: | | |
cd .. | |
git clone https://github.com/google/googletest.git -b release-1.12.1 | |
mkdir googletest/build && cd googletest/build | |
cmake .. -DBUILD_GMOCK=OFF | |
make | |
sudo make install | |
- uses: egor-tensin/setup-clang@v1 | |
with: | |
version: latest | |
platform: x64 | |
- run: cmake . -DCMAKE_C_COMPILER=cc -DCMAKE_CXX_COMPILER=c++ | |
- run: cmake --build . | |
build_lib: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- run: cmake . | |
- run: make libstim -j 2 | |
- run: echo -e '#include "stim.h"\nint main(int argc,const char **argv) {return !stim::find_bool_argument("test", argc, argv);}' > test.cc | |
- run: g++ -std=c++20 test.cc out/libstim.a -I src | |
- run: ./a.out test | |
build_lib_install: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- run: mkdir install_dir | |
- run: cmake . -DCMAKE_INSTALL_PREFIX=install_dir | |
- run: make -j 2 | |
- run: make install | |
- run: echo -e '#include "stim.h"\nint main(int argc,const char **argv) {return !stim::find_bool_argument("test", argc, argv);}' > test.cc | |
- run: g++ -std=c++20 test.cc install_dir/lib/libstim.a -I install_dir/include | |
- run: ./a.out test | |
- run: echo -e "H 0 \n CNOT 0 1 \n M 0 1" | install_dir/bin/stim --sample | |
benchmark_windows: | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- uses: microsoft/[email protected] | |
- run: cmake . | |
- run: MSBuild.exe stim_perf.vcxproj /p:Configuration=Release /p:OutDir=msbuild_out /p:O=2 | |
- run: msbuild_out/stim_perf.exe | |
benchmark: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
simd_width: [64, 128, 256] | |
steps: | |
- uses: actions/checkout@v1 | |
- run: cmake . -DSIMD_WIDTH=${{ matrix.simd_width }} | |
- run: make stim_perf -j 2 | |
- run: out/stim_perf | |
test: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
simd_width: [64, 128, 256] | |
steps: | |
- uses: actions/checkout@v1 | |
- run: | | |
cd .. | |
git clone https://github.com/google/googletest.git -b release-1.12.1 | |
mkdir googletest/build && cd googletest/build | |
cmake .. -DBUILD_GMOCK=OFF | |
make | |
sudo make install | |
- run: cmake . -DSIMD_WIDTH=${{ matrix.simd_width }} | |
- run: make stim_test -j 2 | |
- run: out/stim_test | |
test_o3: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- run: | | |
cd .. | |
git clone https://github.com/google/googletest.git -b release-1.12.1 | |
mkdir googletest/build && cd googletest/build | |
cmake .. -DBUILD_GMOCK=OFF | |
make | |
sudo make install | |
- run: cmake . -DSIMD_WIDTH=256 | |
- run: make stim_test_o3 -j 2 | |
- run: out/stim_test_o3 | |
test_generated_docs_are_fresh: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v3 | |
- uses: bazel-contrib/[email protected] | |
with: | |
bazelisk-cache: true | |
disk-cache: ${{ github.workflow }} | |
repository-cache: true | |
bazelisk-version: 1.x | |
- uses: actions/setup-node@v1 | |
with: | |
node-version: 16.x | |
- run: bazel build :stim_dev_wheel | |
- run: pip install bazel-bin/stim-0.0.dev0-py3-none-any.whl | |
- run: diff <(python dev/gen_stim_api_reference.py -dev) doc/python_api_reference_vDev.md | |
- run: diff <(python dev/gen_stim_stub_file.py -dev) glue/python/src/stim/__init__.pyi | |
- run: diff <(python dev/gen_stim_stub_file.py -dev) doc/stim.pyi | |
- run: diff <(python -c "import stim; stim.main(command_line_args=['help', 'gates_markdown'])") doc/gates.md | |
- run: diff <(python -c "import stim; stim.main(command_line_args=['help', 'formats_markdown'])") doc/result_formats.md | |
- run: diff <(python -c "import stim; stim.main(command_line_args=['help', 'commands_markdown'])") doc/usage_command_line.md | |
- run: diff <(dev/gen_known_gates_for_js.sh) glue/crumble/test/generated_gate_name_list.test.js | |
- run: python doc/stim.pyi | |
- run: npm install -g [email protected] [email protected] | |
- run: diff <(dev/compile_crumble_into_cpp_string_file.sh) src/stim/diagram/crumble_data.cc | |
- run: pip install -e glue/sample | |
- run: diff <(python dev/gen_sinter_api_reference.py -dev) doc/sinter_api.md | |
test_generated_file_lists_are_fresh: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: dev/regen_file_lists.sh /tmp | |
- run: diff /tmp/perf_files file_lists/perf_files | |
- run: diff /tmp/pybind_files file_lists/pybind_files | |
- run: diff /tmp/source_files_no_main file_lists/source_files_no_main | |
- run: diff /tmp/test_files file_lists/test_files | |
test_pybind: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v3 | |
- uses: bazel-contrib/[email protected] | |
with: | |
bazelisk-cache: true | |
disk-cache: ${{ github.workflow }} | |
repository-cache: true | |
bazelisk-version: 1.x | |
- run: bazel build :stim_dev_wheel | |
- run: pip install bazel-bin/stim-0.0.dev0-py3-none-any.whl | |
- run: pip install pytest | |
- run: pytest src | |
- run: dev/doctest_proper.py --module stim | |
test_stimcirq: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v3 | |
- uses: bazel-contrib/[email protected] | |
with: | |
bazelisk-cache: true | |
disk-cache: ${{ github.workflow }} | |
repository-cache: true | |
bazelisk-version: 1.x | |
- run: bazel build :stim_dev_wheel | |
- run: pip install bazel-bin/stim-0.0.dev0-py3-none-any.whl | |
- run: pip install -e glue/cirq | |
- run: pip install pytest | |
- run: pytest glue/cirq | |
- run: dev/doctest_proper.py --module stimcirq --import cirq sympy | |
test_sinter: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v3 | |
- uses: bazel-contrib/[email protected] | |
with: | |
bazelisk-cache: true | |
disk-cache: ${{ github.workflow }} | |
repository-cache: true | |
bazelisk-version: 1.x | |
- run: bazel build :stim_dev_wheel | |
- run: pip install bazel-bin/stim-0.0.dev0-py3-none-any.whl | |
- run: pip install -e glue/sample | |
- run: pip install pytest pymatching fusion-blossom~=0.1.4 mwpf~=0.1.5 | |
- run: pytest glue/sample | |
- run: dev/doctest_proper.py --module sinter | |
- run: sinter help | |
test_stimzx: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v3 | |
- uses: bazel-contrib/[email protected] | |
with: | |
bazelisk-cache: true | |
disk-cache: ${{ github.workflow }} | |
repository-cache: true | |
bazelisk-version: 1.x | |
- run: bazel build :stim_dev_wheel | |
- run: pip install bazel-bin/stim-0.0.dev0-py3-none-any.whl | |
- run: pip install -e glue/zx | |
- run: pip install pytest | |
- run: pytest glue/zx | |
- run: dev/doctest_proper.py --module stimzx | |
test_stimjs: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: mymindstorm/setup-emsdk@v14 | |
with: | |
version: 2.0.18 | |
actions-cache-folder: 'emsdk-cache' | |
- uses: actions/setup-node@v1 | |
with: | |
node-version: 16.x | |
- run: npm install | |
- run: bash glue/javascript/build_wasm.sh | |
- run: node puppeteer_run_tests.js | |
test_crumble: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- run: node glue/crumble/run_tests_headless.js |