Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
e40d6cc
⬆️ update to latest mqt-core version
burgholzer Mar 3, 2025
4de7291
🔧 allow finding `mqt.core` Python package
burgholzer Mar 3, 2025
a784578
👽 adjust to latest mqt-core changes
burgholzer Mar 3, 2025
3f2567a
🔥 remove left-over C++ executables
burgholzer Mar 3, 2025
d999c90
🔥 remove non-existing section from toc
burgholzer Mar 3, 2025
89fd918
🔧 configure rpath management
burgholzer Mar 4, 2025
1389cd3
✨ use PEP 735 dependency groups
burgholzer Mar 4, 2025
c2a0f80
🔧 update various pyproject.toml configuration settings
burgholzer Mar 4, 2025
2f54d01
♻️ refactor code to directly use MQT Core
burgholzer Mar 4, 2025
acbb34a
🏁 patch dll directory on Windows
burgholzer Mar 4, 2025
88f2252
🔧 exclude mqt-core shared libraries from wheel repair
burgholzer Mar 4, 2025
c169af1
👷⬆️ update MQT workflows to v1.7
burgholzer Mar 4, 2025
e6d762f
👷📝 update RtD build config
burgholzer Mar 4, 2025
89eda97
🚨 update clang-tidy config
burgholzer Mar 4, 2025
a61db0b
⬆️🪝 Update pre-commit hooks
burgholzer Mar 4, 2025
448a427
⬆️ update to scikit-build-core 0.11
burgholzer Mar 4, 2025
90e34fd
🔧 use PEP 639 license expressions
burgholzer Mar 4, 2025
465637c
🔧 update renovate config to enable more automerge
burgholzer Mar 4, 2025
a2719e0
🔥 remove the TN flow from the path simulator
burgholzer Mar 4, 2025
a9d9c06
🏷️ update typestubs
burgholzer Mar 4, 2025
4d779e5
🔒 update lockfile
burgholzer Mar 4, 2025
67ee10a
♻️ use more of MQT Core's functionality
burgholzer Mar 4, 2025
646c319
📄 update license year
burgholzer Mar 4, 2025
393c0a7
🚨 address linter warnings
burgholzer Mar 4, 2025
fd95157
📌 add lower bounds for graphviz and breathe
burgholzer Mar 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .clang-tidy
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
FormatStyle: file

Checks: |
boost-*,
bugprone-*,
-bugprone-easily-swappable-parameters,
-bugprone-unchecked-optional-access,
Expand All @@ -13,6 +12,8 @@ Checks: |
-cppcoreguidelines-special-member-functions,
-cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-macro-usage,
-cppcoreguidelines-pro-type-reinterpret-cast,
-cppcoreguidelines-pro-bounds-constant-array-index,
-cppcoreguidelines-avoid-do-while,
google-*,
-google-readability-todo,
Expand All @@ -23,6 +24,7 @@ Checks: |
modernize-*,
-modernize-use-trailing-return-type,
performance-*,
-performance-no-int-to-ptr,
portability-*,
readability-*,
-readability-identifier-length,
Expand Down Expand Up @@ -72,3 +74,5 @@ CheckOptions:
value: CamelCase
- key: readability-identifier-naming.VariableCase
value: camelBack
- key: misc-include-cleaner.IgnoreHeaders
value: pybind11/detail/.*
15 changes: 11 additions & 4 deletions .github/renovate.json5
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
},
lockFileMaintenance: {
"enabled": true,
// "automerge": true, disabled due to endless update loops caused by setuptools_scm
"automerge": true,
},
configMigration: true,
labels: ["dependencies"],
Expand All @@ -30,9 +30,16 @@
commitMessagePrefix: "⬆\uFE0F\uD83E\uDE9D",
},
{
"description": "Automerge patch updates",
"matchUpdateTypes": ["patch"],
"automerge": true
description: "Automerge patch updates",
matchUpdateTypes: ["patch"],
automerge: true
},
{
description: "Automerge minor updates for stable dependencies",
matchManagers: ["pep621", "pre-commit"],
matchUpdateTypes: ["minor", "patch"],
matchCurrentVersion: "!/^0/",
automerge: true
}
]
}
37 changes: 4 additions & 33 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
name: CD
name: CD 🚀
on:
push:
branches: [main]
release:
types: [published]
workflow_dispatch:
Expand All @@ -13,36 +11,11 @@ permissions:

jobs:
# Builds the sdist and wheels on all supported platforms and uploads the resulting
# wheels as GitHub artifacts `dev-cibw-*`, `test-cibw-*`, or `cibw-*`, depending on
# whether the workflow is triggered from a PR, a push to main, or a release, respectively.
# wheels as GitHub artifacts `dev-cibw-*` or `cibw-*`, depending on whether the
# workflow is triggered from a PR or a release, respectively.
python-packaging:
name: 🐍 Packaging
uses: cda-tum/mqt-workflows/.github/workflows/reusable-python-packaging.yml@v1.5
with:
# Do not include local version information on pushes to main to facilitate TestPyPI uploads.
no-local-version: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }}
# Do not build emulated wheels on pushes to main to reduce runner load for CD.
build-emulated-wheels: ${{ github.ref != 'refs/heads/main' || github.event_name != 'push' }}

# Downloads the previously generated artifacts and deploys to TestPyPI on pushes to main
deploy-test-pypi:
name: 🚀 Deploy to Test PyPI
runs-on: ubuntu-latest
environment:
name: test-pypi
url: https://test.pypi.org/p/mqt.ddsim
needs: [python-packaging]
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
steps:
- uses: actions/download-artifact@v4
with:
pattern: test-cibw-*
path: dist
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
attestations: true
uses: cda-tum/mqt-workflows/.github/workflows/reusable-python-packaging.yml@v1.7

# Downloads the previously generated artifacts and deploys to PyPI on published releases.
deploy:
Expand All @@ -64,5 +37,3 @@ jobs:
with:
subject-path: "dist/*"
- uses: pypa/gh-action-pypi-publish@release/v1
with:
attestations: true
169 changes: 158 additions & 11 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,59 +14,190 @@ concurrency:
jobs:
change-detection:
name: 🔍 Change
uses: cda-tum/mqt-workflows/.github/workflows/reusable-change-detection.yml@v1.5
uses: cda-tum/mqt-workflows/.github/workflows/reusable-change-detection.yml@v1.7

cpp-tests:
name: 🇨‌ Test
needs: change-detection
if: fromJSON(needs.change-detection.outputs.run-cpp-tests)
uses: cda-tum/mqt-workflows/.github/workflows/reusable-cpp-ci.yml@v1.5
uses: cda-tum/mqt-workflows/.github/workflows/reusable-cpp-ci.yml@v1.7
with:
# Runs to enable
enable-ubuntu2404-gcc-release: true
enable-ubuntu2404-arm-gcc-release: true
enable-macos13-clang-release: true
enable-macos14-clang-release: true
enable-windows2022-msvc-release: true
# Runs to disable
enable-ubuntu2404-gcc-debug: false
enable-ubuntu2404-clang-release: false
enable-ubuntu2404-clang-debug: false
enable-ubuntu2204-gcc-release: false
enable-ubuntu2204-gcc-debug: false
enable-ubuntu2204-clang-release: false
enable-ubuntu2204-clang-debug: false
enable-ubuntu2404-arm-gcc-debug: false
enable-ubuntu2404-arm-clang-release: false
enable-ubuntu2404-arm-clang-debug: false
enable-ubuntu2204-arm-gcc-release: false
enable-ubuntu2204-arm-gcc-debug: false
enable-ubuntu2204-arm-clang-release: false
enable-ubuntu2204-arm-clang-debug: false
enable-macos13-clang-debug: false
enable-macos13-gcc-release: false
enable-macos13-gcc-debug: false
enable-macos14-clang-debug: false
enable-macos14-gcc-release: false
enable-macos14-gcc-debug: false
enable-macos15-clang-release: false
enable-macos15-clang-debug: false
enable-macos15-gcc-release: false
enable-macos15-gcc-debug: false
enable-windows2022-msvc-debug: false
enable-windows2022-clang-release: false
enable-windows2022-clang-debug: false
enable-windows2025-msvc-release: false
enable-windows2025-msvc-debug: false
enable-windows2025-clang-release: false
enable-windows2025-clang-debug: false

# run extensive C++ tests whenever this is on a PR and the PR has the `extensive-cpp-ci` label
cpp-tests-extensive:
name: 🇨‌ Test (Extensive)
needs: change-detection
if: fromJSON(needs.change-detection.outputs.run-cpp-tests) && github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'extensive-cpp-ci')
uses: cda-tum/mqt-workflows/.github/workflows/reusable-cpp-ci.yml@v1.7
with:
# Runs to enable
enable-ubuntu2404-gcc-debug: true
enable-ubuntu2404-clang-release: true
enable-ubuntu2404-clang-debug: true
enable-ubuntu2204-gcc-release: true
enable-ubuntu2204-gcc-debug: true
enable-ubuntu2204-clang-release: true
enable-ubuntu2204-clang-debug: true
enable-ubuntu2404-arm-gcc-debug: true
enable-ubuntu2404-arm-clang-release: true
enable-ubuntu2404-arm-clang-debug: true
enable-ubuntu2204-arm-gcc-release: true
enable-ubuntu2204-arm-gcc-debug: true
enable-ubuntu2204-arm-clang-release: true
enable-ubuntu2204-arm-clang-debug: true
enable-macos13-clang-debug: true
enable-macos13-gcc-release: true
enable-macos13-gcc-debug: true
enable-macos14-clang-debug: true
enable-macos14-gcc-release: true
enable-macos14-gcc-debug: true
enable-macos15-clang-release: true
enable-macos15-clang-debug: true
enable-macos15-gcc-release: true
enable-macos15-gcc-debug: true
enable-windows2022-msvc-debug: true
enable-windows2022-clang-release: true
enable-windows2022-clang-debug: true
enable-windows2025-msvc-release: true
enable-windows2025-msvc-debug: true
enable-windows2025-clang-release: true
enable-windows2025-clang-debug: true
# Runs to disable (these are already enabled in the non-extensive run)
enable-ubuntu2404-gcc-release: false
enable-ubuntu2404-arm-gcc-release: false
enable-macos13-clang-release: false
enable-macos14-clang-release: false
enable-windows2022-msvc-release: false

cpp-coverage:
name: 🇨‌ Coverage
needs: change-detection
if: fromJSON(needs.change-detection.outputs.run-cpp-tests)
uses: cda-tum/mqt-workflows/.github/workflows/reusable-cpp-coverage.yml@v1.7
# Explicitly set permissions so that the workflows also work from forks.
permissions:
contents: read # Required for the `actions/checkout` action
id-token: write # Required for the `codecov/codecov-action` action
with:
cmake-args: ""
cmake-args-ubuntu: -G Ninja
cmake-args-macos: -G Ninja
cmake-args-windows: -T ClangCL

cpp-linter:
name: 🇨‌ Lint
needs: change-detection
if: fromJSON(needs.change-detection.outputs.run-cpp-linter)
uses: cda-tum/mqt-workflows/.github/workflows/reusable-cpp-linter.yml@v1.5
uses: cda-tum/mqt-workflows/.github/workflows/reusable-cpp-linter.yml@v1.7

# run extensive Python tests whenever this is on a PR and the PR has the `extensive-python-ci` label
python-tests:
name: 🐍 Test
needs: change-detection
if: fromJSON(needs.change-detection.outputs.run-python-tests)
uses: cda-tum/mqt-workflows/.github/workflows/reusable-python-ci.yml@v1.5
uses: cda-tum/mqt-workflows/.github/workflows/reusable-python-ci.yml@v1.7
# Explicitly set permissions so that the workflows also work from forks.
permissions:
contents: read # Required for the `actions/checkout` action
id-token: write # Required for the `codecov/codecov-action` action
with:
# Runs to enable
enable-ubuntu2404: true
enable-ubuntu2404-arm: true
enable-macos13: true
enable-macos14: true
enable-windows2022: true
# Runs to disable
enable-ubuntu2204: false
enable-ubuntu2204-arm: false
enable-macos15: false
enable-windows2025: false

python-tests-extensive:
name: 🐍 Test (Extensive)
needs: change-detection
if: fromJSON(needs.change-detection.outputs.run-python-tests) && github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'extensive-python-ci')
uses: cda-tum/mqt-workflows/.github/workflows/reusable-python-ci.yml@v1.7
# Explicitly set permissions so that the workflows also work from forks.
permissions:
contents: read # Required for the `actions/checkout` action
id-token: write # Required for the `codecov/codecov-action` action
with:
# Runs to enable
enable-ubuntu2204: true
enable-ubuntu2204-arm: true
enable-macos15: true
enable-windows2025: true
# Runs to disable (these are already enabled in the non-extensive run)
enable-ubuntu2404: false
enable-ubuntu2404-arm: false
enable-macos13: false
enable-macos14: false
enable-windows2022: false

python-linter:
name: 🐍 Lint
needs: change-detection
if: fromJSON(needs.change-detection.outputs.run-python-tests)
uses: cda-tum/mqt-workflows/.github/workflows/reusable-python-linter.yml@v1.7

code-ql:
name: 📝 CodeQL
needs: change-detection
if: fromJSON(needs.change-detection.outputs.run-code-ql)
uses: cda-tum/mqt-workflows/.github/workflows/reusable-code-ql.yml@v1.5
uses: cda-tum/mqt-workflows/.github/workflows/reusable-code-ql.yml@v1.7

cd:
name: 🚀 CD
needs: change-detection
if: fromJSON(needs.change-detection.outputs.run-cd)
uses: cda-tum/mqt-workflows/.github/workflows/reusable-python-packaging.yml@v1.5
uses: cda-tum/mqt-workflows/.github/workflows/reusable-python-packaging.yml@v1.7

required-checks-pass: # This job does nothing and is only used for branch protection
name: 🚦 Check
if: always()
needs:
- change-detection
- cpp-tests
- cpp-tests-extensive
- cpp-coverage
- cpp-linter
- python-tests
- python-tests-extensive
- python-linter
- code-ql
- cd
runs-on: ubuntu-latest
Expand All @@ -79,6 +210,14 @@ jobs:
fromJSON(needs.change-detection.outputs.run-cpp-tests)
&& '' || 'cpp-tests,'
}}
${{
fromJSON(needs.change-detection.outputs.run-cpp-tests) && github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'extensive-cpp-ci')
&& '' || 'cpp-tests-extensive,'
}}
${{
fromJSON(needs.change-detection.outputs.run-cpp-tests)
&& '' || 'cpp-coverage,'
}}
${{
fromJSON(needs.change-detection.outputs.run-cpp-linter)
&& '' || 'cpp-linter,'
Expand All @@ -87,6 +226,14 @@ jobs:
fromJSON(needs.change-detection.outputs.run-python-tests)
&& '' || 'python-tests,'
}}
${{
fromJSON(needs.change-detection.outputs.run-python-tests) && github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'extensive-python-ci')
&& '' || 'python-tests-extensive,'
}}
${{
fromJSON(needs.change-detection.outputs.run-python-tests)
&& '' || 'python-linter,'
}}
${{
fromJSON(needs.change-detection.outputs.run-code-ql)
&& '' || 'code-ql,'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update-mqt-core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ concurrency:
jobs:
update-mqt-core:
name: ⬆️ Update MQT Core
uses: cda-tum/mqt-workflows/.github/workflows/reusable-mqt-core-update.yml@v1.5
uses: cda-tum/mqt-workflows/.github/workflows/reusable-mqt-core-update.yml@v1.7
with:
update-to-head: ${{ github.event.inputs.update-to-head == 'true' }}
9 changes: 5 additions & 4 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ repos:

# Format configuration files with prettier
- repo: https://github.com/rbubley/mirrors-prettier
rev: v3.5.2
rev: v3.5.3
hooks:
- id: prettier
types_or: [yaml, markdown, html, css, scss, javascript, json]
Expand All @@ -103,10 +103,11 @@ repos:
- nox
- numpy
- pytest
- mqt.core>=3.0.0b5

# Check for spelling
- repo: https://github.com/crate-ci/typos
rev: v1.30.0
rev: v1.30.1
hooks:
- id: typos

Expand All @@ -121,7 +122,7 @@ repos:

# Check best practices for scientific Python code
- repo: https://github.com/scientific-python/cookie
rev: 2024.08.19
rev: 2025.01.22
hooks:
- id: sp-repo-review
additional_dependencies: ["repo-review[cli]"]
Expand All @@ -136,6 +137,6 @@ repos:

# Check the pyproject.toml file
- repo: https://github.com/henryiii/validate-pyproject-schema-store
rev: 2024.11.25
rev: 2025.02.24
hooks:
- id: validate-pyproject
Loading
Loading