QUARK-plugin-quantinuum 0.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. quark_plugin_quantinuum-0.0.1/.github/change-filters.yml +10 -0
  2. quark_plugin_quantinuum-0.0.1/.github/workflows/ci-tests.yml +94 -0
  3. quark_plugin_quantinuum-0.0.1/.github/workflows/release.yml +133 -0
  4. quark_plugin_quantinuum-0.0.1/.gitignore +232 -0
  5. quark_plugin_quantinuum-0.0.1/.pre-commit-config.yaml +44 -0
  6. quark_plugin_quantinuum-0.0.1/DEVELOPMENT.md +22 -0
  7. quark_plugin_quantinuum-0.0.1/LICENSE +201 -0
  8. quark_plugin_quantinuum-0.0.1/NOTICE +5 -0
  9. quark_plugin_quantinuum-0.0.1/PKG-INFO +233 -0
  10. quark_plugin_quantinuum-0.0.1/README.md +8 -0
  11. quark_plugin_quantinuum-0.0.1/examples/single_pipeline_local_aer_simulator.yml +5 -0
  12. quark_plugin_quantinuum-0.0.1/examples/single_pipeline_nexus.yml +6 -0
  13. quark_plugin_quantinuum-0.0.1/mypy.ini +11 -0
  14. quark_plugin_quantinuum-0.0.1/pyproject.toml +49 -0
  15. quark_plugin_quantinuum-0.0.1/setup.cfg +4 -0
  16. quark_plugin_quantinuum-0.0.1/src/QUARK_plugin_quantinuum.egg-info/PKG-INFO +233 -0
  17. quark_plugin_quantinuum-0.0.1/src/QUARK_plugin_quantinuum.egg-info/SOURCES.txt +40 -0
  18. quark_plugin_quantinuum-0.0.1/src/QUARK_plugin_quantinuum.egg-info/dependency_links.txt +1 -0
  19. quark_plugin_quantinuum-0.0.1/src/QUARK_plugin_quantinuum.egg-info/requires.txt +9 -0
  20. quark_plugin_quantinuum-0.0.1/src/QUARK_plugin_quantinuum.egg-info/top_level.txt +1 -0
  21. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/__init__.py +58 -0
  22. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/backends/__init__.py +13 -0
  23. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/backends/aer_simulator.py +83 -0
  24. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/backends/helpers.py +17 -0
  25. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/backends/quantinuuum_nexus.py +162 -0
  26. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/benchmarks/__init__.py +13 -0
  27. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/benchmarks/free_fermion/__init__.py +17 -0
  28. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/benchmarks/free_fermion/free_fermion.py +207 -0
  29. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/benchmarks/free_fermion/free_fermion_helpers.py +421 -0
  30. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/interfaces/__init__.py +13 -0
  31. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/interfaces/backend_input_pytket.py +26 -0
  32. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/interfaces/backend_input_qiskit.py +26 -0
  33. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/interfaces/backend_result.py +23 -0
  34. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/interfaces/nexus_compilation_result.py +28 -0
  35. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/interfaces/nexus_upload_result.py +30 -0
  36. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/miscellaneous/__init__.py +13 -0
  37. quark_plugin_quantinuum-0.0.1/src/quark_plugin_quantinuum/miscellaneous/nexus_upload.py +66 -0
  38. quark_plugin_quantinuum-0.0.1/tests/__init__.py +0 -0
  39. quark_plugin_quantinuum-0.0.1/tests/configs/free_fermion_test_config.yml +10 -0
  40. quark_plugin_quantinuum-0.0.1/tests/conftest.py +4 -0
  41. quark_plugin_quantinuum-0.0.1/tests/test_free_fermion.py +8 -0
  42. quark_plugin_quantinuum-0.0.1/uv.lock +3014 -0
@@ -0,0 +1,10 @@
1
+ # Filters used by [dorny/path-filters](https://github.com/dorny/paths-filter)
2
+ # to detect changes in each subproject, and only run the corresponding jobs.
3
+
4
+
5
+ python-tests:
6
+ - "src/**"
7
+ - "tests/**"
8
+ - "pyproject.toml"
9
+ - "uv.lock"
10
+ - ".github/workflows/ci-tests.yml"
@@ -0,0 +1,94 @@
1
+ name: Continuous integration 🐍
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ branches:
9
+ - '*'
10
+ merge_group:
11
+ types: [checks_requested]
12
+ workflow_dispatch: {}
13
+
14
+ env:
15
+ # Pinned version for the uv package manager
16
+ UV_VERSION: "0.6.11"
17
+ UV_FROZEN: 1
18
+
19
+ jobs:
20
+ # Check if changes were made to the relevant files.
21
+ # Always returns true if running on the default branch, to ensure all changes are thoroughly checked.
22
+ changes:
23
+ name: Check for changes in Python files
24
+ runs-on: ubuntu-latest
25
+ # Required permissions
26
+ permissions:
27
+ pull-requests: read
28
+ # Set job outputs to values from filter step
29
+ outputs:
30
+ has-changes: ${{ github.ref_name == github.event.repository.default_branch || steps.filter.outputs.python-tests }}
31
+ steps:
32
+ - uses: actions/checkout@v4
33
+ - uses: dorny/paths-filter@v3
34
+ id: filter
35
+ with:
36
+ filters: .github/change-filters.yml
37
+
38
+ check:
39
+ needs: changes
40
+ if: ${{ needs.changes.outputs.has-changes == 'true' }}
41
+
42
+ name: check python ${{ matrix.python-version }}
43
+ runs-on: ubuntu-latest
44
+
45
+ strategy:
46
+ matrix:
47
+ python-version: ['3.12', '3.13']
48
+
49
+ steps:
50
+ - uses: actions/checkout@v4
51
+ - name: Set up uv
52
+ uses: astral-sh/setup-uv@v5
53
+ with:
54
+ version: ${{ env.UV_VERSION }}
55
+ enable-cache: true
56
+ - name: Setup dependencies.
57
+ run: uv sync --python ${{ matrix.python-version }}
58
+
59
+ - name: Type check with mypy
60
+ run: uv run mypy .
61
+
62
+ - name: Check formatting with ruff
63
+ run: uv run ruff format --check
64
+
65
+ - name: Lint with ruff
66
+ run: uv run ruff check
67
+
68
+ - name: Run tests
69
+ run: |
70
+ uv run pytest
71
+
72
+ # This is a meta job to mark successful completion of the required checks,
73
+ # even if they are skipped due to no changes in the relevant files.
74
+ required-checks:
75
+ name: Required checks 🐍
76
+ needs: [changes, check]
77
+ if: ${{ !cancelled() }}
78
+ runs-on: ubuntu-latest
79
+ steps:
80
+ - name: Fail if required checks failed
81
+ # This condition should simply be `if: failure() || cancelled()`,
82
+ # but there seems to be a bug in the github workflow runner.
83
+ #
84
+ # See https://github.com/orgs/community/discussions/80788
85
+ if: |
86
+ needs.changes.result == 'failure' || needs.changes.result == 'cancelled' ||
87
+ needs.check.result == 'failure' || needs.check.result == 'cancelled'
88
+ run: |
89
+ echo "Required checks failed"
90
+ echo "Please check the logs for more information"
91
+ exit 1
92
+ - name: Pass if required checks passed
93
+ run: |
94
+ echo "All required checks passed"
@@ -0,0 +1,133 @@
1
+ name: Release
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - "*"
7
+ push:
8
+ branches:
9
+ - main
10
+ release:
11
+ types:
12
+ - published
13
+
14
+ env:
15
+ UV_VERSION: "0.6.11"
16
+
17
+ jobs:
18
+ build:
19
+ name: Build distribution
20
+ if: ${{ github.event_name == 'pull_request' || github.event_name == 'push' }}
21
+ runs-on: ubuntu-latest
22
+ permissions:
23
+ contents: read
24
+ steps:
25
+ - name: Check out repository
26
+ uses: actions/checkout@v4
27
+ with:
28
+ fetch-depth: 0
29
+
30
+ - name: Set up Python
31
+ uses: actions/setup-python@v5
32
+ with:
33
+ python-version: "3.12"
34
+
35
+ - name: Set up uv
36
+ uses: astral-sh/setup-uv@v5
37
+ with:
38
+ version: ${{ env.UV_VERSION }}
39
+ enable-cache: true
40
+
41
+ - name: Build distributions
42
+ run: uv build
43
+
44
+ - name: Upload distributions artifact
45
+ uses: actions/upload-artifact@v4
46
+ with:
47
+ name: python-package-distributions-ci
48
+ path: dist/
49
+ if-no-files-found: error
50
+
51
+ release-build:
52
+ name: Build release distribution
53
+ if: ${{ github.event_name == 'release' }}
54
+ runs-on: ubuntu-latest
55
+ permissions:
56
+ contents: read
57
+ outputs:
58
+ package-version: ${{ steps.package-version.outputs.version }}
59
+ steps:
60
+ - name: Check out release tag
61
+ uses: actions/checkout@v4
62
+ with:
63
+ fetch-depth: 0
64
+ ref: refs/tags/${{ github.event.release.tag_name }}
65
+
66
+ - name: Set up Python
67
+ uses: actions/setup-python@v5
68
+ with:
69
+ python-version: "3.12"
70
+
71
+ - name: Set up uv
72
+ uses: astral-sh/setup-uv@v5
73
+ with:
74
+ version: ${{ env.UV_VERSION }}
75
+ enable-cache: true
76
+
77
+ - name: Build distributions
78
+ run: uv build
79
+
80
+ - name: Read built version
81
+ id: package-version
82
+ run: |
83
+ python - <<'PY'
84
+ import os
85
+ from pathlib import Path
86
+
87
+ wheel = next(Path("dist").glob("*.whl"))
88
+ version = wheel.name.split("-")[1]
89
+ github_output = Path(os.environ["GITHUB_OUTPUT"])
90
+ with github_output.open("a", encoding="utf-8") as fh:
91
+ fh.write(f"version={version}\n")
92
+ PY
93
+
94
+ - name: Upload distributions artifact
95
+ uses: actions/upload-artifact@v4
96
+ with:
97
+ name: python-package-distributions-release
98
+ path: dist/
99
+ if-no-files-found: error
100
+
101
+ publish:
102
+ name: Publish to PyPI
103
+ if: ${{ github.event_name == 'release' }}
104
+ needs: release-build
105
+ runs-on: ubuntu-latest
106
+ environment:
107
+ name: pypi
108
+ url: https://pypi.org/p/QUARK-plugin-quantinuum
109
+ permissions:
110
+ id-token: write
111
+ steps:
112
+ - name: Download distributions
113
+ uses: actions/download-artifact@v4
114
+ with:
115
+ name: python-package-distributions-release
116
+ path: dist/
117
+
118
+ - name: Publish distributions
119
+ uses: pypa/gh-action-pypi-publish@release/v1
120
+
121
+ release-summary:
122
+ name: Release summary
123
+ if: ${{ github.event_name == 'release' && success() }}
124
+ needs: [release-build, publish]
125
+ runs-on: ubuntu-latest
126
+ steps:
127
+ - name: Summarize release
128
+ run: |
129
+ {
130
+ echo "Published version \`${{ needs.release-build.outputs.package-version }}\` to PyPI."
131
+ echo
132
+ echo "Package page: https://pypi.org/project/QUARK-plugin-quantinuum/${{ needs.release-build.outputs.package-version }}/"
133
+ } >> "${GITHUB_STEP_SUMMARY}"
@@ -0,0 +1,232 @@
1
+ # === Custom files ===
2
+ benchmark_runs
3
+ .idea
4
+ *.pkl
5
+ *.png
6
+ # === Custom files ===
7
+
8
+
9
+
10
+ # Byte-compiled / optimized / DLL files
11
+ __pycache__/
12
+ *.py[cod]
13
+ *$py.class
14
+
15
+ # C extensions
16
+ *.so
17
+
18
+ # Distribution / packaging
19
+ .Python
20
+ build/
21
+ develop-eggs/
22
+ dist/
23
+ downloads/
24
+ eggs/
25
+ .eggs/
26
+ lib/
27
+ lib64/
28
+ parts/
29
+ sdist/
30
+ var/
31
+ wheels/
32
+ share/python-wheels/
33
+ *.egg-info/
34
+ .installed.cfg
35
+ *.egg
36
+ MANIFEST
37
+
38
+ # PyInstaller
39
+ # Usually these files are written by a python script from a template
40
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
41
+ *.manifest
42
+ *.spec
43
+
44
+ # Installer logs
45
+ pip-log.txt
46
+ pip-delete-this-directory.txt
47
+
48
+ # Unit test / coverage reports
49
+ htmlcov/
50
+ .tox/
51
+ .nox/
52
+ .coverage
53
+ .coverage.*
54
+ .cache
55
+ nosetests.xml
56
+ coverage.xml
57
+ *.cover
58
+ *.py,cover
59
+ .hypothesis/
60
+ .pytest_cache/
61
+ cover/
62
+
63
+ # Translations
64
+ *.mo
65
+ *.pot
66
+
67
+ # Django stuff:
68
+ *.log
69
+ local_settings.py
70
+ db.sqlite3
71
+ db.sqlite3-journal
72
+
73
+ # Flask stuff:
74
+ instance/
75
+ .webassets-cache
76
+
77
+ # Scrapy stuff:
78
+ .scrapy
79
+
80
+ # Sphinx documentation
81
+ docs/_build/
82
+
83
+ # PyBuilder
84
+ .pybuilder/
85
+ target/
86
+
87
+ # Jupyter Notebook
88
+ .ipynb_checkpoints
89
+
90
+ # IPython
91
+ profile_default/
92
+ ipython_config.py
93
+
94
+ # pyenv
95
+ # For a library or package, you might want to ignore these files since the code is
96
+ # intended to run in multiple environments; otherwise, check them in:
97
+ # .python-version
98
+
99
+ # pipenv
100
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
101
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
102
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
103
+ # install all needed dependencies.
104
+ #Pipfile.lock
105
+
106
+ # UV
107
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
108
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
109
+ # commonly ignored for libraries.
110
+ #uv.lock
111
+
112
+ # poetry
113
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
114
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
115
+ # commonly ignored for libraries.
116
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
117
+ #poetry.lock
118
+
119
+ # pdm
120
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
121
+ #pdm.lock
122
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
123
+ # in version control.
124
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
125
+ .pdm.toml
126
+ .pdm-python
127
+ .pdm-build/
128
+
129
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
130
+ __pypackages__/
131
+
132
+ # Celery stuff
133
+ celerybeat-schedule
134
+ celerybeat.pid
135
+
136
+ # SageMath parsed files
137
+ *.sage.py
138
+
139
+ # Environments
140
+ .env
141
+ .venv
142
+ env/
143
+ venv/
144
+ ENV/
145
+ env.bak/
146
+ venv.bak/
147
+
148
+ # Spyder project settings
149
+ .spyderproject
150
+ .spyproject
151
+
152
+ # Rope project settings
153
+ .ropeproject
154
+
155
+ # mkdocs documentation
156
+ /site
157
+
158
+ # mypy
159
+ .mypy_cache/
160
+ .dmypy.json
161
+ dmypy.json
162
+
163
+ # Pyre type checker
164
+ .pyre/
165
+
166
+ # pytype static type analyzer
167
+ .pytype/
168
+
169
+ # Cython debug symbols
170
+ cython_debug/
171
+
172
+ # PyCharm
173
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
174
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
175
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
176
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
177
+ #.idea/
178
+
179
+ # Ruff stuff:
180
+ .ruff_cache/
181
+
182
+ # PyPI configuration file
183
+ .pypirc
184
+
185
+ # Latex
186
+ *.acn
187
+ *.acr
188
+ *.alg
189
+ *.aux
190
+ *.bak
191
+ *.bbl
192
+ *.bcf
193
+ *.blg
194
+ *.brf
195
+ *.bst
196
+ *.dvi
197
+ *.fdb_latexmk
198
+ *.fls
199
+ *.glg
200
+ *.glo
201
+ *.gls
202
+ *.idx
203
+ *.ilg
204
+ *.ind
205
+ *.ist
206
+ *.lof
207
+ *.log
208
+ *.lol
209
+ *.lot
210
+ *.maf
211
+ *.mtc
212
+ *.mtc1
213
+ *.nav
214
+ *.nlo
215
+ *.nls
216
+ *.out
217
+ *.pdf
218
+ *.pyg
219
+ *.run.xml
220
+ *.snm
221
+ *.synctex.gz
222
+ *.tex.backup
223
+ *.tex~
224
+ *.thm
225
+ *.toc
226
+ *.vrb
227
+ *.xdy
228
+ *.xml
229
+ *blx.bib
230
+ .bak
231
+ .mtc
232
+ build/
@@ -0,0 +1,44 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v4.5.0 # Use the ref you want to point at
4
+ hooks:
5
+ - id: check-added-large-files
6
+ - id: check-case-conflict
7
+ - id: check-executables-have-shebangs
8
+ - id: check-merge-conflict
9
+ - id: check-toml
10
+ - id: check-vcs-permalinks
11
+ - id: check-yaml
12
+ - id: detect-private-key
13
+ - id: end-of-file-fixer
14
+ - id: trailing-whitespace
15
+ - id: fix-byte-order-marker
16
+ - id: mixed-line-ending
17
+ # Python-specific
18
+ - id: check-ast
19
+ - id: check-docstring-first
20
+ - id: debug-statements
21
+
22
+ - repo: local
23
+ hooks:
24
+ - id: ruff-format
25
+ name: ruff format
26
+ description: Format python code with `ruff`.
27
+ entry: uv run ruff format
28
+ language: system
29
+ files: \.py$
30
+ pass_filenames: false
31
+ - id: ruff-check
32
+ name: ruff
33
+ description: Check python code with `ruff`.
34
+ entry: uv run ruff check --fix --exit-non-zero-on-fix
35
+ language: system
36
+ files: \.py$
37
+ pass_filenames: false
38
+ - id: mypy-check
39
+ name: mypy
40
+ description: Check python code with `mypy`.
41
+ entry: uv run mypy .
42
+ language: system
43
+ files: \.py$
44
+ pass_filenames: false
@@ -0,0 +1,22 @@
1
+ # Development
2
+
3
+ ## Publishing to PyPI
4
+
5
+ Publishing is handled by the GitHub Actions workflow in `.github/workflows/release.yml`.
6
+
7
+ Pull requests and pushes to `main` build the sdist and wheel with `uv build` to validate packaging.
8
+
9
+ To publish:
10
+
11
+ 1. Configure this GitHub repository as a trusted publisher for the `QUARK-plugin-quantinuum` project on PyPI.
12
+ 2. Create a GitHub Release for the version you want to publish.
13
+ 3. When the release is published, the workflow will build the sdist and wheel from the release tag and upload them to PyPI.
14
+
15
+ ## Versioning
16
+
17
+ Package versions are derived from git tags via `setuptools-scm`.
18
+
19
+ - A release created from tag `v0.1.0` will publish package version `0.1.0`.
20
+ - Development builds created from commits after a tag will get an auto-generated development version.
21
+
22
+ Each GitHub Release should therefore point at a clean version tag such as `v0.1.0`.