mqt-yaqs 0.1.0__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 (94) hide show
  1. mqt_yaqs-0.1.0/.git_archival.txt +3 -0
  2. mqt_yaqs-0.1.0/.gitattributes +1 -0
  3. mqt_yaqs-0.1.0/.github/ISSUE_TEMPLATE/bug-report.yml +45 -0
  4. mqt_yaqs-0.1.0/.github/ISSUE_TEMPLATE/feature-request.yml +32 -0
  5. mqt_yaqs-0.1.0/.github/SECURITY.md +19 -0
  6. mqt_yaqs-0.1.0/.github/codecov.yml +18 -0
  7. mqt_yaqs-0.1.0/.github/contributing.md +78 -0
  8. mqt_yaqs-0.1.0/.github/pull_request_template.md +16 -0
  9. mqt_yaqs-0.1.0/.github/release-drafter.yml +52 -0
  10. mqt_yaqs-0.1.0/.github/renovate.json5 +38 -0
  11. mqt_yaqs-0.1.0/.github/support.md +11 -0
  12. mqt_yaqs-0.1.0/.github/workflows/cd.yml +38 -0
  13. mqt_yaqs-0.1.0/.github/workflows/ci.yml +118 -0
  14. mqt_yaqs-0.1.0/.github/workflows/release-drafter.yml +21 -0
  15. mqt_yaqs-0.1.0/.gitignore +180 -0
  16. mqt_yaqs-0.1.0/.license-tools-config.json +32 -0
  17. mqt_yaqs-0.1.0/.pre-commit-config.yaml +144 -0
  18. mqt_yaqs-0.1.0/.readthedocs.yaml +42 -0
  19. mqt_yaqs-0.1.0/LICENSE.md +21 -0
  20. mqt_yaqs-0.1.0/PKG-INFO +102 -0
  21. mqt_yaqs-0.1.0/README.md +60 -0
  22. mqt_yaqs-0.1.0/docs/_static/custom.css +53 -0
  23. mqt_yaqs-0.1.0/docs/_static/mqt_dark.png +0 -0
  24. mqt_yaqs-0.1.0/docs/_static/mqt_light.png +0 -0
  25. mqt_yaqs-0.1.0/docs/_templates/page.html +76 -0
  26. mqt_yaqs-0.1.0/docs/conf.py +223 -0
  27. mqt_yaqs-0.1.0/docs/contributing.md +3 -0
  28. mqt_yaqs-0.1.0/docs/development_guide.md +346 -0
  29. mqt_yaqs-0.1.0/docs/examples/equivalence_checking.md +64 -0
  30. mqt_yaqs-0.1.0/docs/examples/physics_simulation.md +103 -0
  31. mqt_yaqs-0.1.0/docs/examples/strong_circuit_simulation.md +99 -0
  32. mqt_yaqs-0.1.0/docs/examples/weak_circuit_simulation.md +96 -0
  33. mqt_yaqs-0.1.0/docs/index.md +61 -0
  34. mqt_yaqs-0.1.0/docs/installation.md +127 -0
  35. mqt_yaqs-0.1.0/docs/lit_header.bib +364 -0
  36. mqt_yaqs-0.1.0/docs/references.md +21 -0
  37. mqt_yaqs-0.1.0/docs/refs.bib +19 -0
  38. mqt_yaqs-0.1.0/docs/support.md +3 -0
  39. mqt_yaqs-0.1.0/images/banner.jpeg +0 -0
  40. mqt_yaqs-0.1.0/images/social_banner.png +0 -0
  41. mqt_yaqs-0.1.0/noxfile.py +113 -0
  42. mqt_yaqs-0.1.0/pyproject.toml +184 -0
  43. mqt_yaqs-0.1.0/src/mqt/yaqs/__init__.py +19 -0
  44. mqt_yaqs-0.1.0/src/mqt/yaqs/_version.py +21 -0
  45. mqt_yaqs-0.1.0/src/mqt/yaqs/_version.pyi +11 -0
  46. mqt_yaqs-0.1.0/src/mqt/yaqs/circuits/__init__.py +8 -0
  47. mqt_yaqs-0.1.0/src/mqt/yaqs/circuits/circuit_tjm.py +266 -0
  48. mqt_yaqs-0.1.0/src/mqt/yaqs/circuits/equivalence_checker.py +67 -0
  49. mqt_yaqs-0.1.0/src/mqt/yaqs/circuits/utils/__init__.py +8 -0
  50. mqt_yaqs-0.1.0/src/mqt/yaqs/circuits/utils/dag_utils.py +204 -0
  51. mqt_yaqs-0.1.0/src/mqt/yaqs/circuits/utils/mpo_utils.py +377 -0
  52. mqt_yaqs-0.1.0/src/mqt/yaqs/core/__init__.py +8 -0
  53. mqt_yaqs-0.1.0/src/mqt/yaqs/core/data_structures/__init__.py +8 -0
  54. mqt_yaqs-0.1.0/src/mqt/yaqs/core/data_structures/networks.py +828 -0
  55. mqt_yaqs-0.1.0/src/mqt/yaqs/core/data_structures/noise_model.py +63 -0
  56. mqt_yaqs-0.1.0/src/mqt/yaqs/core/data_structures/simulation_parameters.py +344 -0
  57. mqt_yaqs-0.1.0/src/mqt/yaqs/core/libraries/__init__.py +8 -0
  58. mqt_yaqs-0.1.0/src/mqt/yaqs/core/libraries/circuit_library.py +123 -0
  59. mqt_yaqs-0.1.0/src/mqt/yaqs/core/libraries/gate_library.py +993 -0
  60. mqt_yaqs-0.1.0/src/mqt/yaqs/core/libraries/noise_library.py +78 -0
  61. mqt_yaqs-0.1.0/src/mqt/yaqs/core/libraries/observables_library.py +23 -0
  62. mqt_yaqs-0.1.0/src/mqt/yaqs/core/methods/__init__.py +8 -0
  63. mqt_yaqs-0.1.0/src/mqt/yaqs/core/methods/dissipation.py +76 -0
  64. mqt_yaqs-0.1.0/src/mqt/yaqs/core/methods/dynamic_tdvp.py +49 -0
  65. mqt_yaqs-0.1.0/src/mqt/yaqs/core/methods/matrix_exponential.py +120 -0
  66. mqt_yaqs-0.1.0/src/mqt/yaqs/core/methods/stochastic_process.py +138 -0
  67. mqt_yaqs-0.1.0/src/mqt/yaqs/core/methods/tdvp.py +576 -0
  68. mqt_yaqs-0.1.0/src/mqt/yaqs/physics/__init__.py +8 -0
  69. mqt_yaqs-0.1.0/src/mqt/yaqs/physics/physics_tjm.py +213 -0
  70. mqt_yaqs-0.1.0/src/mqt/yaqs/simulator.py +267 -0
  71. mqt_yaqs-0.1.0/tests/__init__.py +8 -0
  72. mqt_yaqs-0.1.0/tests/circuits/__init__.py +8 -0
  73. mqt_yaqs-0.1.0/tests/circuits/test_circuit_tjm.py +266 -0
  74. mqt_yaqs-0.1.0/tests/circuits/test_equivalence_checking.py +121 -0
  75. mqt_yaqs-0.1.0/tests/circuits/utils/__init__.py +8 -0
  76. mqt_yaqs-0.1.0/tests/circuits/utils/test_dag_utils.py +193 -0
  77. mqt_yaqs-0.1.0/tests/circuits/utils/test_mpo_utils.py +291 -0
  78. mqt_yaqs-0.1.0/tests/core/__init__.py +8 -0
  79. mqt_yaqs-0.1.0/tests/core/data_structures/__init__.py +8 -0
  80. mqt_yaqs-0.1.0/tests/core/data_structures/test_networks.py +624 -0
  81. mqt_yaqs-0.1.0/tests/core/data_structures/test_noise_model.py +76 -0
  82. mqt_yaqs-0.1.0/tests/core/data_structures/test_simulation_parameters.py +136 -0
  83. mqt_yaqs-0.1.0/tests/core/libraries/__init__.py +8 -0
  84. mqt_yaqs-0.1.0/tests/core/libraries/test_circuit_library.py +110 -0
  85. mqt_yaqs-0.1.0/tests/core/libraries/test_gate_library.py +385 -0
  86. mqt_yaqs-0.1.0/tests/core/methods/__init__.py +8 -0
  87. mqt_yaqs-0.1.0/tests/core/methods/test_dissipation.py +53 -0
  88. mqt_yaqs-0.1.0/tests/core/methods/test_dynamic_tdvp.py +107 -0
  89. mqt_yaqs-0.1.0/tests/core/methods/test_matrix_exponential.py +138 -0
  90. mqt_yaqs-0.1.0/tests/core/methods/test_tdvp.py +268 -0
  91. mqt_yaqs-0.1.0/tests/physics/__init__.py +8 -0
  92. mqt_yaqs-0.1.0/tests/physics/test_physics_tjm.py +230 -0
  93. mqt_yaqs-0.1.0/tests/test_simulator.py +306 -0
  94. mqt_yaqs-0.1.0/uv.lock +3200 -0
@@ -0,0 +1,3 @@
1
+ node: $Format:%H$
2
+ node-date: $Format:%cI$
3
+ describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
@@ -0,0 +1 @@
1
+ .git_archival.txt export-subst
@@ -0,0 +1,45 @@
1
+ name: 🐛 Bug report
2
+ description: Something is not working correctly.
3
+ title: "🐛 <title>"
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: >-
8
+ **Thank you for wanting to report a bug for this project!**
9
+
10
+ ⚠
11
+ Verify first that your issue is not [already reported on GitHub](https://github.com/cda-tum/mqt-yaqs/search?q=is%3Aissue&type=issues).
12
+
13
+ If you have general questions, please consider [starting a discussion](https://github.com/cda-tum/mqt-yaqs/discussions).
14
+ - type: textarea
15
+ attributes:
16
+ label: Environment information
17
+ description: >-
18
+ Please provide information about your environment. For example, OS, Python version, mqt.yaqs version etc.
19
+ placeholder: |
20
+ - OS:
21
+ - Python compiler:
22
+ - mqt.yaqs version:
23
+ - Additional environment information:
24
+ validations:
25
+ required: true
26
+ - type: textarea
27
+ attributes:
28
+ label: Description
29
+ description: A clear and concise description of what the bug is.
30
+ validations:
31
+ required: true
32
+ - type: textarea
33
+ attributes:
34
+ label: Expected behavior
35
+ description: A clear and concise description of what you expected to happen.
36
+ - type: textarea
37
+ attributes:
38
+ label: How to Reproduce
39
+ description: Please provide steps to reproduce this bug.
40
+ placeholder: |
41
+ 1. Get package from '...'
42
+ 2. Then run '...'
43
+ 3. An error occurs.
44
+ validations:
45
+ required: true
@@ -0,0 +1,32 @@
1
+ name: ✨ Feature request
2
+ description: Suggest an idea
3
+ title: "✨ <title>"
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: >
8
+ **Thank you for wanting to suggest a feature for this project!**
9
+
10
+ ⚠
11
+ Verify first that your idea is not [already requested on GitHub](https://github.com/cda-tum/mqt-yaqs/search?q=is%3Aissue&type=issues).
12
+
13
+ - type: textarea
14
+ attributes:
15
+ label: What's the problem this feature will solve?
16
+ description: >-
17
+ What are you trying to do, that you are unable to achieve as it currently stands?
18
+ placeholder: >-
19
+ I'm trying to do X and I'm missing feature Y for this to be
20
+ easily achievable.
21
+ validations:
22
+ required: true
23
+
24
+ - type: textarea
25
+ attributes:
26
+ label: Describe the solution you'd like
27
+ description: >
28
+ Clear and concise description of what you want to happen.
29
+ placeholder: >-
30
+ When I do X, I want to achieve Y in a situation when Z.
31
+ validations:
32
+ required: true
@@ -0,0 +1,19 @@
1
+ # Security Policy
2
+
3
+ ## Supported Versions
4
+
5
+ Security updates are applied only to the most recent releases.
6
+
7
+ ## Reporting a Vulnerability
8
+
9
+ To report vulnerabilities, you can privately report a potential security issue
10
+ via the GitHub security vulnerabilities feature. This can be done here:
11
+
12
+ https://github.com/cda-tum/mqt-yaqs/security/advisories
13
+
14
+ Please do **not** open a public issue about a potential security vulnerability.
15
+
16
+ You can find more details on the security vulnerability feature in the GitHub
17
+ documentation here:
18
+
19
+ https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability
@@ -0,0 +1,18 @@
1
+ ignore:
2
+ - "tests/**/*"
3
+
4
+ coverage:
5
+ range: 60..90
6
+ precision: 1
7
+ status:
8
+ project:
9
+ default:
10
+ threshold: 0.5%
11
+ patch:
12
+ default:
13
+ threshold: 1%
14
+
15
+ comment:
16
+ layout: "reach, diff, flags, files"
17
+ require_changes: true
18
+ show_carryforward_flags: true
@@ -0,0 +1,78 @@
1
+ # Contributing
2
+
3
+ Thank you for your interest in contributing to this project.
4
+ We value contributions from people with all levels of experience.
5
+ In particular if this is your first pull request not everything has to be perfect.
6
+ We will guide you through the process.
7
+
8
+ We use GitHub to [host code](https://github.com/cda-tum/mqt-yaqs), to [track issues and feature requests](https://github.com/cda-tum/mqt-yaqs/issues), as well as accept [pull requests](https://github.com/cda-tum/mqt-yaqs/pulls).
9
+ See <https://docs.github.com/en/get-started/quickstart> for a general introduction to working with GitHub and contributing to projects.
10
+
11
+ ## Types of Contributions
12
+
13
+ You can contribute in several ways:
14
+
15
+ - 🐛 Report Bugs
16
+ : Report bugs at <https://github.com/cda-tum/mqt-yaqs/issues> using the _🐛 Bug report_ issue template. Please make sure to fill out all relevant information in the respective issue form.
17
+
18
+ - 🐛 Fix Bugs
19
+ : Look through the [GitHub Issues](https://github.com/cda-tum/mqt-yaqs/issues) for bugs. Anything tagged with "bug" is open to whoever wants to try and fix it.
20
+
21
+ - ✨ Propose New Features
22
+ : Propose new features at <https://github.com/cda-tum/mqt-yaqs/issues> using the _✨ Feature request_ issue template. Please make sure to fill out all relevant information in the respective issue form.
23
+
24
+ - ✨ Implement New Features
25
+ : Look through the [GitHub Issues](https://github.com/cda-tum/mqt-yaqs/issues) for features. Anything tagged with "feature" or "enhancement" is open to whoever wants to implement it. We highly appreciate external contributions to the project.
26
+
27
+ - 📝 Write Documentation
28
+ : MQT YAQS could always use some more documentation, and we appreciate any help with that.
29
+
30
+ ## Get Started 🎉
31
+
32
+ Ready to contribute? Check out the {doc}`Development Guide <development_guide>` to set up MQT YAQS for local development and learn about the style guidelines and conventions used throughout the project.
33
+
34
+ We value contributions from people with all levels of experience.
35
+ In particular, if this is your first PR, not everything has to be perfect.
36
+ We will guide you through the PR process.
37
+ Nevertheless, please try to follow the guidelines below as well as you can to help make the PR process quick and smooth.
38
+
39
+ ## Core Guidelines
40
+
41
+ - ["Commit early and push often"](https://www.worklytics.co/blog/commit-early-push-often).
42
+ - Write meaningful commit messages, preferably using [gitmoji](https://gitmoji.dev) for additional context.
43
+ - Focus on a single feature or bug at a time and only touch relevant files. Split multiple features into separate contributions.
44
+ - Add tests for new features to ensure they work as intended. Document new features appropriately.
45
+ - Add tests for bug fixes to demonstrate that the bug has been resolved.
46
+ - Document your code thoroughly and ensure it is readable.
47
+ - Keep your code clean by removing debug statements, leftover comments, and unrelated code.
48
+ - Check your code for style and linting errors before committing.
49
+ - Follow the project's coding standards and conventions.
50
+ - Be open to feedback and willing to make necessary changes based on code reviews.
51
+
52
+ ## Pull Request Workflow
53
+
54
+ - Create PRs early. It is ok to create work-in-progress PRs. You may mark these as draft PRs on GitHub.
55
+ - Describe your PR with a descriptive title, reference any related issues by including the issue number in the PR description, and add a comprehensive description of the changes. Follow the provided PR template and do not delete any sections, except for the issue reference if your PR is not related to an issue.
56
+ - Whenever a PR is created or updated, several workflows on all supported platforms and versions of Python are executed. These workflows ensure that the project still builds, all tests pass, the code is properly formatted, and no new linting errors are introduced. Your PR must pass all these continuous integration (CI) checks before it can be merged.
57
+ - Once your PR is ready, change it from a draft PR to a regular PR and request a review from one of the project maintainers. Only request a review once you are done with your changes and the PR is ready to be reviewed. If you are unsure whether your PR is ready, ask in the PR comments. If you are a first-time contributor, request a review from one of the maintainers by mentioning them in a comment on the PR.
58
+ - If your PR gets a "Changes requested" review, address the feedback and update your PR by pushing to the same branch. Do not close the PR and open a new one. Respond to review comments on the PR (e.g., with "done 👍" or "done in @<commit>") to let the reviewer know that you have addressed the feedback. Note that reviewers do not get a notification if you just react to the review comment with an emoji. Write a comment to notify the reviewer. Do not resolve the review comments yourself. The reviewer will mark the comments as resolved once they are satisfied with the changes.
59
+ - Be sure to re-request a review once you have made changes after a code review so that maintainers know that the requests have been addressed.
60
+ - No need to squash commits before merging; we usually squash them to keep the history clean. We only merge without squashing if the commit history is clean and meaningful. Avoid rebasing or force-pushing your PR branch before merging, as it complicates reviews. You can rebase or clean up commits after addressing all review comments if desired.
61
+
62
+ Here are some tips for finding the cause of certain failures:
63
+
64
+ - If any of the `CI / 🇨‌ Test` checks fail, this indicates build errors or test failures in the C++ part of the code base. Look through the respective logs on GitHub for any error or failure messages.
65
+ - If any of the `CI / 🐍 Test` checks fail, this indicates build errors or test failures in the Python part of the code base. Look through the respective logs on GitHub for any error or failure messages.
66
+ - If any of the `codecov/\*` checks fail, this means that your changes are not appropriately covered by tests or that the overall project coverage decreased too much. Ensure that you include tests for all your changes in the PR.
67
+ - If `cpp-linter` comments on your PR with a list of warnings, these have been raised by `clang-tidy` when checking the C++ part of your changes for warnings or style guideline violations. The individual messages frequently provide helpful suggestions on how to fix the warnings. If you don't see any messages, but the `🇨‌ Lint / 🚨 Lint` check is red, click on the `Details` link to see the full log of the check and a step summary.
68
+ - If the `pre-commit.ci` check fails, some of the `pre-commit` checks failed and could not be fixed automatically by the _pre-commit.ci_ bot. Such failures are most likely related to the Python part of the code base. The individual log messages frequently provide helpful suggestions on how to fix the warnings.
69
+ - If the `docs/readthedocs.org:\*` check fails, the documentation could not be built properly. Inspect the corresponding log file for any errors.
70
+
71
+ ---
72
+
73
+ This document was inspired by and partially adapted from
74
+
75
+ - <https://matplotlib.org/stable/devel/coding_guide.html>
76
+ - <https://opensource.creativecommons.org/contributing-code/pr-guidelines/>
77
+ - <https://yeoman.io/contributing/pull-request.html>
78
+ - <https://github.com/scikit-build/scikit-build>
@@ -0,0 +1,16 @@
1
+ ## Description
2
+
3
+ Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
4
+
5
+ Fixes #(issue) <!--- Replace (issue) with the issue number that is fixed by this pull request. -->
6
+
7
+ ## Checklist:
8
+
9
+ <!---
10
+ This checklist serves as a reminder of a couple of things that ensure your pull request will be merged swiftly.
11
+ -->
12
+
13
+ - [ ] The pull request only contains commits that are related to it.
14
+ - [ ] I have added appropriate tests and documentation.
15
+ - [ ] I have made sure that all CI jobs on GitHub pass.
16
+ - [ ] The pull request introduces no new warnings and follows the project's style guidelines.
@@ -0,0 +1,52 @@
1
+ name-template: "MQT YAQS $RESOLVED_VERSION Release"
2
+ tag-template: "v$RESOLVED_VERSION"
3
+ categories:
4
+ - title: "🚀 Features and Enhancements"
5
+ labels:
6
+ - "feature"
7
+ - "enhancement"
8
+ - "usability"
9
+ - "refactor"
10
+ - title: "🐛 Bug Fixes"
11
+ labels:
12
+ - "bug"
13
+ - "fix"
14
+ - title: "📄 Documentation"
15
+ labels:
16
+ - "documentation"
17
+ - title: "📦 Packaging"
18
+ labels:
19
+ - "packaging"
20
+ - title: "🧹 Code Quality"
21
+ labels:
22
+ - "code quality"
23
+ - title: "🤖 CI"
24
+ labels:
25
+ - "continuous integration"
26
+ - title: "⬆️ Dependencies"
27
+ collapse-after: 5
28
+ labels:
29
+ - "dependencies"
30
+ - "submodules"
31
+ - "github_actions"
32
+ - "pre-commit"
33
+ change-template: "- $TITLE @$AUTHOR (#$NUMBER)"
34
+ change-title-escapes: '\<*_&'
35
+ version-resolver:
36
+ major:
37
+ labels:
38
+ - "major"
39
+ minor:
40
+ labels:
41
+ - "minor"
42
+ patch:
43
+ labels:
44
+ - "patch"
45
+ default: patch
46
+
47
+ template: |
48
+ ## 👀 What Changed
49
+
50
+ $CHANGES
51
+
52
+ **Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION
@@ -0,0 +1,38 @@
1
+ {
2
+ $schema: "https://docs.renovatebot.com/renovate-schema.json",
3
+ extends: ["config:recommended", ":gitSignOff"],
4
+ prHourlyLimit: 10,
5
+ enabledManagers: ["github-actions", "pre-commit", "pep621"],
6
+ "pre-commit": {
7
+ enabled: true
8
+ },
9
+ lockFileMaintenance: {
10
+ "enabled": true,
11
+ "automerge": true,
12
+ },
13
+ configMigration: true,
14
+ labels: ["dependencies"],
15
+ schedule: ["every weekend"],
16
+ packageRules: [
17
+ {
18
+ matchManagers: ["github-actions"],
19
+ addLabels: ["github-actions"],
20
+ commitMessagePrefix: "⬆\uFE0F\uD83D\uDC68\u200D\uD83D\uDCBB"
21
+ },
22
+ {
23
+ matchManagers: ["pep621"],
24
+ addLabels: ["python"],
25
+ commitMessagePrefix: "⬆\uFE0F\uD83D\uDC0D"
26
+ },
27
+ {
28
+ matchManagers: ["pre-commit"],
29
+ addLabels: ["pre-commit"],
30
+ commitMessagePrefix: "⬆\uFE0F\uD83E\uDE9D",
31
+ },
32
+ {
33
+ "description": "Automerge patch updates",
34
+ "matchUpdateTypes": ["patch"],
35
+ "automerge": true
36
+ }
37
+ ]
38
+ }
@@ -0,0 +1,11 @@
1
+ # Support
2
+
3
+ If you are stuck with a problem using MQT YAQS or have questions, please get in touch at our [Issues](https://github.com/cda-tum/mqt-yaqs/issues) or [Discussions](https://github.com/cda-tum/mqt-yaqs/discussions). We'd love to help.
4
+
5
+ You can save time by following this procedure when reporting a problem:
6
+
7
+ - Do try to solve the problem on your own first.
8
+ - Search through past [Issues](https://github.com/cda-tum/mqt-yaqs/issues) and [Discussions](https://github.com/cda-tum/mqt-yaqs/discussions) to see if someone else already had the same problem.
9
+ - Before filing a bug report, try to create a minimal working example (MWE) that reproduces the problem. It is much easier to identify the cause for the problem if a handful of lines suffice to show that something is not working.
10
+
11
+ You can also always reach us at [quantum.cda@xcit.tum.de](mailto:quantum.cda@xcit.tum.de).
@@ -0,0 +1,38 @@
1
+ name: CD 🚀
2
+ on:
3
+ release:
4
+ types: [published]
5
+ workflow_dispatch:
6
+
7
+ permissions:
8
+ attestations: write
9
+ contents: read
10
+ id-token: write
11
+
12
+ jobs:
13
+ python-packaging:
14
+ name: 🐍 Packaging
15
+ uses: cda-tum/mqt-workflows/.github/workflows/reusable-python-packaging.yml@v1.7
16
+ with:
17
+ pure-python: true
18
+
19
+ # Downloads the previously generated artifacts and deploys to PyPI on published releases.
20
+ deploy:
21
+ if: github.event_name == 'release' && github.event.action == 'published'
22
+ name: 🚀 Deploy to PyPI
23
+ runs-on: ubuntu-latest
24
+ environment:
25
+ name: pypi
26
+ url: https://pypi.org/p/mqt.yaqs
27
+ needs: [python-packaging]
28
+ steps:
29
+ - uses: actions/download-artifact@v4
30
+ with:
31
+ pattern: cibw-*
32
+ path: dist
33
+ merge-multiple: true
34
+ - name: Generate artifact attestation for sdist and wheel
35
+ uses: actions/attest-build-provenance@v2
36
+ with:
37
+ subject-path: "dist/*"
38
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,118 @@
1
+ name: CI
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ pull_request:
7
+ merge_group:
8
+ workflow_dispatch:
9
+
10
+ concurrency:
11
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
12
+ cancel-in-progress: true
13
+
14
+ jobs:
15
+ change-detection:
16
+ name: 🔍 Change
17
+ uses: cda-tum/mqt-workflows/.github/workflows/reusable-change-detection.yml@v1.7
18
+
19
+ python-tests:
20
+ name: 🐍 Test
21
+ needs: change-detection
22
+ if: fromJSON(needs.change-detection.outputs.run-python-tests)
23
+ uses: cda-tum/mqt-workflows/.github/workflows/reusable-python-ci.yml@v1.7
24
+ permissions:
25
+ contents: read
26
+ id-token: write
27
+ with:
28
+ # Runs to enable
29
+ enable-ubuntu2404: true
30
+ enable-ubuntu2404-arm: true
31
+ enable-macos13: true
32
+ enable-macos14: true
33
+ enable-windows2022: true
34
+ # Runs to disable
35
+ enable-ubuntu2204: false
36
+ enable-ubuntu2204-arm: false
37
+ enable-macos15: false
38
+ enable-windows2025: false
39
+
40
+ # run extensive Python tests whenever this is on a PR and the PR has the `extensive-python-ci` label
41
+ python-tests-extensive:
42
+ name: 🐍 Test (Extensive)
43
+ needs: change-detection
44
+ if: fromJSON(needs.change-detection.outputs.run-python-tests) && github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'extensive-python-ci')
45
+ uses: cda-tum/mqt-workflows/.github/workflows/reusable-python-ci.yml@v1.7
46
+ permissions:
47
+ contents: read
48
+ id-token: write
49
+ with:
50
+ # Runs to enable
51
+ enable-ubuntu2204: true
52
+ enable-ubuntu2204-arm: true
53
+ enable-macos15: true
54
+ enable-windows2025: true
55
+ # Runs to disable (these are already enabled in the non-extensive run)
56
+ enable-ubuntu2404: false
57
+ enable-ubuntu2404-arm: false
58
+ enable-macos13: false
59
+ enable-macos14: false
60
+ enable-windows2022: false
61
+
62
+ python-linter:
63
+ name: 🐍 Lint
64
+ needs: change-detection
65
+ if: fromJSON(needs.change-detection.outputs.run-python-tests)
66
+ uses: cda-tum/mqt-workflows/.github/workflows/reusable-python-linter.yml@v1.7
67
+
68
+ code-ql:
69
+ name: 📝 CodeQL
70
+ needs: change-detection
71
+ if: fromJSON(needs.change-detection.outputs.run-code-ql)
72
+ uses: cda-tum/mqt-workflows/.github/workflows/reusable-code-ql-python.yml@v1.7
73
+
74
+ cd:
75
+ name: 🚀 CD
76
+ needs: change-detection
77
+ if: fromJSON(needs.change-detection.outputs.run-cd)
78
+ uses: cda-tum/mqt-workflows/.github/workflows/reusable-python-packaging.yml@v1.7
79
+ with:
80
+ pure-python: true
81
+
82
+ required-checks-pass: # This job does nothing and is only used for branch protection
83
+ name: 🚦 Check
84
+ if: always()
85
+ needs:
86
+ - change-detection
87
+ - python-tests
88
+ - python-tests-extensive
89
+ - python-linter
90
+ - code-ql
91
+ - cd
92
+ runs-on: ubuntu-latest
93
+ steps:
94
+ - name: Decide whether the needed jobs succeeded or failed
95
+ uses: re-actors/alls-green@release/v1
96
+ with:
97
+ allowed-skips: >-
98
+ ${{
99
+ fromJSON(needs.change-detection.outputs.run-python-tests)
100
+ && '' || 'python-tests,'
101
+ }}
102
+ ${{
103
+ fromJSON(needs.change-detection.outputs.run-python-tests) && github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'extensive-python-ci')
104
+ && '' || 'python-tests-extensive,'
105
+ }}
106
+ ${{
107
+ fromJSON(needs.change-detection.outputs.run-python-tests)
108
+ && '' || 'python-linter,'
109
+ }}
110
+ ${{
111
+ fromJSON(needs.change-detection.outputs.run-code-ql)
112
+ && '' || 'code-ql,'
113
+ }}
114
+ ${{
115
+ fromJSON(needs.change-detection.outputs.run-cd)
116
+ && '' || 'cd,'
117
+ }}
118
+ jobs: ${{ toJSON(needs) }}
@@ -0,0 +1,21 @@
1
+ name: Release Drafter
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request_target:
8
+ types: [opened, reopened, synchronize]
9
+ merge_group:
10
+
11
+ jobs:
12
+ update_release_draft:
13
+ name: Run
14
+ permissions:
15
+ contents: write
16
+ pull-requests: write
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: release-drafter/release-drafter@v6
20
+ env:
21
+ GITHUB_TOKEN: ${{ github.token }}
@@ -0,0 +1,180 @@
1
+ # Custom
2
+ sandbox/
3
+ experiments_hidden/
4
+
5
+ # Byte-compiled / optimized / DLL files
6
+ __pycache__/
7
+ *.py[cod]
8
+ *$py.class
9
+
10
+ # C extensions
11
+ *.so
12
+ .ccache/
13
+ cmake-build-*
14
+
15
+ # Distribution / packaging
16
+ .Python
17
+ /build/
18
+ /test/*/build
19
+ develop-eggs/
20
+ dist/
21
+ downloads/
22
+ eggs/
23
+ .eggs/
24
+ lib/
25
+ lib64/
26
+ parts/
27
+ sdist/
28
+ var/
29
+ wheels/
30
+ share/python-wheels/
31
+ *.egg-info/
32
+ .installed.cfg
33
+ *.egg
34
+ MANIFEST
35
+
36
+ # PyInstaller
37
+ # Usually these files are written by a python script from a template
38
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
39
+ *.manifest
40
+ *.spec
41
+
42
+ # Installer logs
43
+ pip-log.txt
44
+ pip-delete-this-directory.txt
45
+
46
+ # Unit test / coverage reports
47
+ htmlcov/
48
+ .tox/
49
+ .nox/
50
+ .coverage
51
+ .coverage.*
52
+ .cache
53
+ nosetests.xml
54
+ coverage.xml
55
+ *.cover
56
+ *.py,cover
57
+ .hypothesis/
58
+ .pytest_cache/
59
+ cover/
60
+ *.profraw
61
+
62
+ # Translations
63
+ *.mo
64
+ *.pot
65
+
66
+ # Django stuff:
67
+ *.log
68
+ local_settings.py
69
+ db.sqlite3
70
+ db.sqlite3-journal
71
+
72
+ # Flask stuff:
73
+ instance/
74
+ .webassets-cache
75
+
76
+ # Scrapy stuff:
77
+ .scrapy
78
+
79
+ # Sphinx documentation
80
+ docs/_build/
81
+ docs/api/
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
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95
+ __pypackages__/
96
+
97
+ # Celery stuff
98
+ celerybeat-schedule
99
+ celerybeat.pid
100
+
101
+ # SageMath parsed files
102
+ *.sage.py
103
+
104
+ # Environments
105
+ .env*
106
+ .venv*
107
+ env*/
108
+ venv*/
109
+ ENV/
110
+ env.bak/
111
+ venv.bak/
112
+
113
+ # Spyder project settings
114
+ .spyderproject
115
+ .spyproject
116
+
117
+ # Rope project settings
118
+ .ropeproject
119
+
120
+ # mkdocs documentation
121
+ /site
122
+
123
+ # mypy
124
+ .mypy_cache/
125
+ .dmypy.json
126
+ dmypy.json
127
+
128
+ # Pyre type checker
129
+ .pyre/
130
+
131
+ # pytype static type analyzer
132
+ .pytype/
133
+
134
+ # Cython debug symbols
135
+ cython_debug/
136
+
137
+ # setuptools_scm
138
+ src/mqt/*/_version.py
139
+
140
+ # SKBuild cache dir
141
+ _skbuild/
142
+
143
+ # Any build dirs in the tests
144
+ test/**/build/
145
+
146
+ # Common editor files
147
+ *~
148
+ *.swp
149
+
150
+ # RPM spec file
151
+ !/distro/*.spec
152
+ /distro/*.tar.gz
153
+ *.rpm
154
+
155
+ # ruff
156
+ .ruff_cache/
157
+
158
+ # OS specific stuff
159
+ .DS_Store
160
+ .DS_Store?
161
+ ._*
162
+ .Spotlight-V100
163
+ .Trashes
164
+ ehthumbs.db
165
+ Thumbs.db
166
+
167
+ .idea/
168
+ .vscode/
169
+ # tmt setup
170
+ /distro/main.fmf
171
+ /distro/plans/main.fmf
172
+ /distro/tests/main.fmf
173
+
174
+ /docs/**/build
175
+ docs/**/_build
176
+ .vs
177
+ out/build
178
+
179
+ node_modules/
180
+ wheelhouse/