Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/sandialabs/pyGSTi into fe…
Browse files Browse the repository at this point in the history
…ature-crosstalk-free-gst
  • Loading branch information
dhothem committed Jan 20, 2025
2 parents 16e9309 + c74fcb2 commit c483ebb
Show file tree
Hide file tree
Showing 380 changed files with 26,990 additions and 24,035 deletions.
92 changes: 92 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
## Global owners (default to pyGSTi maintainers) ##
# These will also be owners for everything below
# so they can approve minor PRs without adding
# undue burden on volunteer code owners
* @sandialabs/pygsti-maintainers @sandialabs/pygsti-gatekeepers


## Drift analysis ##
pygsti/protocols/stability.py @tjproct @sandialabs/pygsti-gatekeepers
pygsti/report/section/drift.py @tjproct @sandialabs/pygsti-gatekeepers
pygsti/report/templates/drift_html_report/ @tjproct @sandialabs/pygsti-gatekeepers

## Forward simulators ##
pygsti/forwardsims @rileyjmurray @sandialabs/pygsti-gatekeepers
pygsti/forwardsims/termforwardsim* @adhumu @sandialabs/pygsti-gatekeepers

## IBMQ interface ##
pygsti/extras/devices @sandialabs/pygsti-ibmq @sandialabs/pygsti-gatekeepers
pygsti/extras/ibmq @sandialabs/pygsti-ibmq @sandialabs/pygsti-gatekeepers

## Interpygate ##
pygsti/extras/interpygate/ @kevincyoung @sandialabs/pygsti-gatekeepers

## Modelmembers ##
pygsti/modelmembers/ @rileyjmurray @sandialabs/pygsti-gatekeepers
pygsti/modelmembers/instruments/ @sandialabs/pygsti-mcm @sandialabs/pygsti-gatekeepers

## Modelpack owners ##
pygsti/modelpacks/ @kmrudin @sandialabs/pygsti-gatekeepers

## Optimizer owners ##
pygsti/objectivefns @rileyjmurray @sandialabs/pygsti-gatekeepers
pygsti/optimize @rileyjmurray @sandialabs/pygsti-gatekeepers

## RB owners ##
pygsti/algorithms/compilers.py @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers
pygsti/algorithms/mirroring.py @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers
pygsti/algorithms/randomcircuit.py @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers
pygsti/algorithms/rbfit.py @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers
pygsti/protocols/rb.py @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers
pygsti/tools/rbtheory.py @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers
pygsti/tools/rbtools.py @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers
pygsti/tools/symplectic.py @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers

## RPE owners ##
pygsti/extras/rpe @kmrudin @sandialabs/pygsti-gatekeepers
pygsti/models/rpemodel.py @kmrudin @sandialabs/pygsti-gatekeepers
pygsti/protocols/rpe.py @kmrudin @sandialabs/pygsti-gatekeepers

## Reporting owners ##
# Specifically just for workspace plots/tables
pygsti/report/workspace*.py @pcwysoc @sandialabs/pygsti-gatekeepers



## Tutorial owners ##
# In addition to general tutorial owners,
# we will also have specific tutorials be owned
# by topics owners are responsible for above
jupyter_notebooks/ @sandialabs/pygsti-tutorials @sandialabs/pygsti-gatekeepers
jupyter_notebooks/**/*RB-*.ipynb @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers
jupyter_notebooks/Examples/1QGST-InterpolatedOps.ipynb @kevincyoung @sandialabs/pygsti-gatekeepers
jupyter_notebooks/Tutorials/algorithms/DriftCharacterization.ipynb @tjproct @sandialabs/pygsti-gatekeepers
jupyter_notebooks/Tutorials/algorithms/MirrorCircuitBenchmarks.ipynb @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers
jupyter_notebooks/Tutorials/algorithms/RobustPhaseEstimation.ipynb @kmrudin @sandialabs/pygsti-gatekeepers
jupyter_notebooks/Tutorials/objects/advanced/IBMQExperiment.ipynb @sandialabs/pygsti-ibmq @sandialabs/pygsti-gatekeepers
jupyter_notebooks/Tutorials/objects/advanced/Instruments.ipynb @sandialabs/pygsti-mcm @sandialabs/pygsti-gatekeepers
jupyter_notebooks/Tutorials/objects/advanced/InterpolatedOperators.ipynb @kevincyoung @sandialabs/pygsti-gatekeepers
jupyter_notebooks/Tutorials/objects/advanced/ModelPacks.ipynb @kmrudin @sandialabs/pygsti-gatekeepers
jupyter_notebooks/Tutorials/reporting/ @pcwysoc @sandialabs/pygsti-gatekeepers

## Test owners ##
test/ @rileyjmurray @sandialabs/pygsti-gatekeepers
test/test_packages/extras/test_drift.py @tjproct @sandialabs/pygsti-gatekeepers
test/test_packages/extras/test_interpygate.py @kevincyoung @sandialabs/pygsti-gatekeepers
test/test_packages/extras/test_rb.py @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers
test/test_packages/extras/test_rpe.py @kmrudin @sandialabs/pygsti-gatekeepers
test/test_packages/extras/test_rpeobjects.py @kmrudin @sandialabs/pygsti-gatekeepers
test/test_packages/objects/test_instruments.py @sandialabs/pygsti-mcm @sandialabs/pygsti-gatekeepers
test/test_packages/report/ @pcwysoc @sandialabs/pygsti-gatekeepers
test/test_packages/reportb/ @pcwysoc @sandialabs/pygsti-gatekeepers
test/unit/algorithms/test_randomcircuit.py @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers
test/unit/extras/interpygate @kevincyoung @sandialabs/pygsti-gatekeepers
test/unit/extras/rb/ @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers
test/unit/extras/rpe/ @kmrudin @sandialabs/pygsti-gatekeepers
test/unit/modelpacks/ @kmrudin @sandialabs/pygsti-gatekeepers
test/unit/objects/test_instrument.py @sandialabs/pygsti-mcm @sandialabs/pygsti-gatekeepers
test/unit/protocols/test_rb.py @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers
test/unit/report/ @pcwysoc @sandialabs/pygsti-gatekeepers
test/unit/tools/test_symplectic.py @sandialabs/pygsti-rb @sandialabs/pygsti-gatekeepers


55 changes: 26 additions & 29 deletions .github/workflows/autodeploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,43 +4,40 @@
name: Deploy new version on pypi.org

on:
push:
branches: [ "master" ]
# Pattern matched against refs/tags
tags:
- 'v*' # Push events to every tag not containing '/' (use '**' for hierarchical tags)

# Dont allow running manually from Actions tab -- use manualdeploy for this
#workflow_dispatch:
release:
types:
- published
workflow_dispatch:

jobs:
build_wheels:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
#if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') # doesn't work -- try using tags: above

strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
os: [ubuntu-latest, macos-13, windows-latest]
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
fetch-depth: 0 # to fetch all branches and *tags* (needed to get version number correctly)

- uses: actions/setup-python@v2
- uses: actions/setup-python@v5
name: Install Python
with:
python-version: '3.8'
python-version: '3.10'

- name: Build wheels
uses: pypa/[email protected]
env:
CIBW_BUILD: cp37-* cp38-* cp39-* cp310-*
CIBW_BUILD: cp38-* cp39-* cp310-* cp311-*
CIBW_BUILD_VERBOSITY: 1
CIBW_BEFORE_ALL_LINUX: ./.github/ci-scripts/before_install.sh
CIBW_BEFORE_ALL_MACOS: ./.github/ci-scripts/before_install_macos.sh

- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v4
with:
name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
path: ./wheelhouse/*.whl

build_sdist:
Expand All @@ -49,38 +46,38 @@ jobs:
#if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') # doesn't work -- try using tags: above

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
fetch-depth: 0 # to fetch all branches and *tags* (needed to get version number correctly)

- uses: actions/setup-python@v2
- uses: actions/setup-python@v5
name: Install Python
with:
python-version: '3.8'
python-version: '3.10'

- name: Build sdist
run: python setup.py sdist

- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v4
with:
name: cibw-sdist
path: dist/*.tar.gz

upload_pypi:
needs: [build_wheels, build_sdist]
runs-on: ubuntu-latest
# upload to PyPI on every tag starting with 'v' -- doesn't work -> try using tags: above
#if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
# alternatively, to publish when a GitHub Release is created, use the following rule:
# if: github.event_name == 'release' && github.event.action == 'published'
if: github.event_name == 'release' && github.event.action == 'published'
permissions:
# IMPORTANT: this permission is mandatory for trusted publishing
id-token: write
steps:
- uses: actions/download-artifact@v2
- uses: actions/download-artifact@v4
with:
name: artifact
pattern: cibw-*
path: dist
merge-multiple: true

- name: Publish package on PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
verbose: true
# With the use of OIDC, API tokens are no longer needed
# See https://docs.pypi.org/trusted-publishers/using-a-publisher/ for more info
33 changes: 33 additions & 0 deletions .github/workflows/beta-master.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# This workflow runs a full test suite on beta and master
# This includes all versions of supported Python, all OSes, and all test subsets

name: Build and run tests (beta & master)

on:
push:
branches: [ "beta", "master" ]
workflow_dispatch: # Allow manual running from GitHub

jobs:
build:
strategy:
fail-fast: false
matrix:
os: [macos-13, ubuntu-latest, windows-latest] # TODO: Unpin mac version when cvxopt or Python 3.8 dropped
python-version: [3.8, 3.9, '3.10', '3.11']
use-cython: ['true', 'false']
uses: ./.github/workflows/reuseable-main.yml
name: Run pyGSTi tests
with:
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
use-cython: ${{ matrix.use-cython }}
run-unit-tests: 'true'
run-extra-tests: 'true'
run-notebook-tests: 'false' # TODO: Turn off failing notebook tests for runner failures starting end of May 2024






52 changes: 52 additions & 0 deletions .github/workflows/develop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# This workflow runs a moderate test suite on develop
# This includes all versions of supported Python, no MacOS, only unit tests,
# and only tests environments with Cython in them

name: Build and run tests (develop)

on:
push:
branches: [ "develop" ]
workflow_dispatch: # Allow manual running from GitHub

jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest] # No Mac
python-version: [3.8, 3.9, '3.10', '3.11']
use-cython: ['true', 'false']
uses: ./.github/workflows/reuseable-main.yml
name: Run pyGSTi tests
with:
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
use-cython: 'true' # Cython only
run-unit-tests: 'true'
run-extra-tests: 'false' # No integration tests
run-notebook-tests: 'false' # No notebook tests

push: # Push to stable "beta" branch on successful build
runs-on: ubuntu-latest

# Only run on "develop" branch if tests pass
needs: build
if: github.ref == 'refs/heads/develop' && github.event_name == 'push'

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.PYGSTI_TOKEN }}
- name: Merge changes to beta branch
run: |
git config --global user.name 'PyGSTi'
git config --global user.email '[email protected]'
git checkout beta
git merge --ff-only ${GITHUB_SHA} && git push origin beta
71 changes: 0 additions & 71 deletions .github/workflows/extras.yml

This file was deleted.

37 changes: 37 additions & 0 deletions .github/workflows/feature-branches.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# This workflow runs a light test suite on all non-main branches
# This includes only least/most supported Python version, no MacOS, only unit tests,
# and only tests environments with Cython in them

name: Build and run tests (feature branches)

on:
push:
branches-ignore: [ "beta", "develop", "master" ]
# Hacky way to only run pull requests from forked repositories (assumes : is not used in branch names unless forked)
# https://github.community/t/how-to-trigger-an-action-on-push-or-pull-request-but-not-both/16662/10
pull_request:
branches: [ "**:**" ]
workflow_dispatch: # Allow manual running from GitHub

jobs:
build:
strategy:
# fail-fast: true is OK here
matrix:
os: [ubuntu-latest, windows-latest] # No Mac
python-version: [3.8, '3.11'] # Only extremal Python versions
uses: ./.github/workflows/reuseable-main.yml
name: Run pyGSTi tests
with:
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
use-cython: 'true' # Only test environment with Cython
run-unit-tests: 'true'
run-extra-tests: 'false' # No integration tests
run-notebook-tests: 'false' # No notebook tests






Loading

0 comments on commit c483ebb

Please sign in to comment.