Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
150 commits
Select commit Hold shift + click to select a range
823226b
Switch IR bindings to nanobind
denialhaag Dec 8, 2025
38f0fe3
Switch FoMaC bindings to nanobind
denialhaag Dec 9, 2025
1aa9833
Switch NA bindings to nanobind
denialhaag Dec 9, 2025
b882d10
Switch DD bindings to nanobind
denialhaag Dec 9, 2025
1babd3e
Add necessary nanobind/stl headers
denialhaag Dec 9, 2025
5b22fad
Fix iterator implementations
denialhaag Dec 9, 2025
78c840c
Remove pybind11 dependency
denialhaag Dec 9, 2025
7fa342c
Merge branch 'main' into nanobind
denialhaag Dec 9, 2025
05e1ee8
Do not lint nanobind/stl includes
denialhaag Dec 10, 2025
d7e77b4
Do not lint comparison pairs
denialhaag Dec 10, 2025
d034b25
Do not lint NB_MODULE
denialhaag Dec 10, 2025
fb71055
Fix inclusion errors
denialhaag Dec 10, 2025
82c6a2d
Hopefully fix linter errors related to pointers
denialhaag Dec 10, 2025
016f250
Target stable ABI
denialhaag Dec 10, 2025
1d5fbae
Enable stub generation
denialhaag Dec 10, 2025
d65c4bd
Include memory
denialhaag Dec 10, 2025
f33f337
Fix more linter errors
denialhaag Dec 10, 2025
ace60c0
Check if not linting NB_MODULE is still necessary
denialhaag Dec 10, 2025
e62daf8
Maybe fix conversion errors bur probably not
denialhaag Dec 10, 2025
6fe1ada
Stop NOLINTing NB_MODULE
denialhaag Dec 10, 2025
22023ff
Check if not linting nanobind/stl includes is still necessary
denialhaag Dec 10, 2025
3517614
Revert "Check if not linting nanobind/stl includes is still necessary"
denialhaag Dec 10, 2025
8f31a72
Fix remaining fixable linter errors
denialhaag Dec 10, 2025
99bb3a2
Include nanobind/stl/unique_ptr.h
denialhaag Dec 10, 2025
dc85238
Move docstrings from operations.pyi to bindings files
denialhaag Dec 10, 2025
17b16ee
Move docstrings from __init__.pyi to bindings files
denialhaag Dec 10, 2025
0b540bd
Move docstrings from registers.pyi to bindings file
denialhaag Dec 11, 2025
22d17ac
Move docstrings from symbolic.pyi to bindings files
denialhaag Dec 11, 2025
85d7e42
Move docstrings from fomac.pyi to bindings file
denialhaag Dec 11, 2025
a76def3
Move docstrings from na/fomac.pyi to bindings file
denialhaag Dec 11, 2025
fe9aee1
Move docstrings from dd.pyi to bindings files
denialhaag Dec 11, 2025
16903e0
Remove old stub files
denialhaag Dec 11, 2025
979c066
Fix stub generation
denialhaag Dec 11, 2025
8159443
Use build-time stubs for now
denialhaag Dec 12, 2025
a93dd3a
Begin to improve typing
denialhaag Dec 12, 2025
6c968f3
Fix install-time stub generation
denialhaag Dec 12, 2025
fe96d74
Fix Site comparison
denialhaag Dec 12, 2025
d44c0c3
Add py.typed markers and include privates again
denialhaag Dec 12, 2025
cb350b6
Add script for generating stub files
denialhaag Dec 13, 2025
ad2e576
Fix Operation comparison
denialhaag Dec 13, 2025
8f6120e
Fix remaining typing issues
denialhaag Dec 13, 2025
bfb40ca
Fix linter errors that I know how to fix
denialhaag Dec 14, 2025
28e4262
Improve Permutation bindings
denialhaag Dec 14, 2025
63b77d3
Enable free threading
denialhaag Dec 14, 2025
b1e5dea
Improve docstrings
denialhaag Dec 14, 2025
3730bf7
Improve stub-generation script
denialhaag Dec 14, 2025
338bdc4
Fix enum definitions
denialhaag Dec 14, 2025
adb2eda
Use nb::hash
denialhaag Dec 14, 2025
78ebb46
Call mcrz and not mcrx
denialhaag Dec 14, 2025
11c3629
Add nb::keep_alive to Permutation.__iter__()
denialhaag Dec 14, 2025
3cd92bd
Check for nullptr in CompoundOperation.__init__()
denialhaag Dec 14, 2025
0c120cd
Improve IfElseOperation bindings
denialhaag Dec 14, 2025
5fcb397
Remove print statement
denialhaag Dec 14, 2025
7f61e6a
Remove dead install() calls
denialhaag Dec 14, 2025
0d3fc39
Fix more docstrings
denialhaag Dec 14, 2025
1a729f4
Further improve stub-generation script
denialhaag Dec 14, 2025
266ec5d
Improve custom Control type
denialhaag Dec 14, 2025
011c986
Simplify Expression constructor
denialhaag Dec 14, 2025
52e02bf
Always mark nb::module_ as const
denialhaag Dec 14, 2025
a0ccd14
Fix implementations of __getitem__
denialhaag Dec 14, 2025
e5b62f4
Configure stub-generation script to fail on errors
denialhaag Dec 15, 2025
f5f2cde
Fix linter errors
denialhaag Dec 15, 2025
0bfd882
Fix __delitem__() implementations
denialhaag Dec 15, 2025
6750774
Fix function name
denialhaag Dec 15, 2025
5119eab
Improve Control helpers
denialhaag Dec 15, 2025
2002e46
Fix linter errors
denialhaag Dec 15, 2025
ea6ed14
Verify Operations lists
denialhaag Dec 15, 2025
7d25109
Make qubit and type_ read-only
denialhaag Dec 15, 2025
b8b3532
Limit num_qubits in getMatrix()
denialhaag Dec 15, 2025
fb9b79f
Make Permutation unhashable
denialhaag Dec 15, 2025
3b0360f
Fix symbolic right divisions
denialhaag Dec 15, 2025
b5793f3
Add nb::keep_alive to Device.submit_job()
denialhaag Dec 15, 2025
ccc036d
Fix capitalization of Device.Status members
denialhaag Dec 15, 2025
474fce8
Initialize lists using ...
denialhaag Dec 16, 2025
214690f
Fix argument name of Expression.__getitem__()
denialhaag Dec 16, 2025
ea40398
Do not export enum values
denialhaag Dec 16, 2025
e7aef98
Fix right division
denialhaag Dec 16, 2025
dcd3a49
Document MemoryError
denialhaag Dec 16, 2025
58a8f45
Mark arithmetic operations
denialhaag Dec 16, 2025
f023049
Validate register attributes
denialhaag Dec 16, 2025
d3046a3
Fix usage of std::ranges::sort
denialhaag Dec 16, 2025
0210d3a
Update lock file
denialhaag Dec 16, 2025
facc879
Merge branch 'main' into nanobind
denialhaag Dec 16, 2025
b6f40b7
Fully remove right division
denialhaag Dec 16, 2025
395a676
Throw an error if control qubit index is negative
denialhaag Dec 16, 2025
903bf81
Fix error messages
denialhaag Dec 16, 2025
39443b3
Fix linter errors
denialhaag Dec 16, 2025
5fb1c5a
Fix docstring
denialhaag Dec 16, 2025
cc81d6a
Improve consistency
denialhaag Dec 16, 2025
682c784
Improve size validation
denialhaag Dec 16, 2025
18369f2
Validate keys and values
denialhaag Dec 16, 2025
4080b19
Fix dangling references
denialhaag Dec 16, 2025
c9ecdf8
⬆️ upgraded nanobind to version 2.10.2
burgholzer Dec 17, 2025
69a7484
⏪ restore `na/__init__.py`
burgholzer Dec 17, 2025
36d9266
⬆️ upgrade maximum tested CMake version to 4.2
burgholzer Dec 17, 2025
5ed4344
🔧 Explicitly search for the StableABI component if scikit-build-core …
burgholzer Dec 17, 2025
46a7784
🔧Enable Stable ABI builds for CPython 3.12+
burgholzer Dec 17, 2025
6ada5ad
🔧 add ABI3 checks to cibuildwheel repair wheel step
burgholzer Dec 17, 2025
98566c3
🔧 the explicit marker file we already have is fine
burgholzer Dec 17, 2025
2a236d7
Remove CMake stub generation
denialhaag Dec 18, 2025
f2cd1ca
Install stub files for better IDE support
denialhaag Dec 18, 2025
c0daa5e
Add pattern file and improve stub-generation script
denialhaag Dec 18, 2025
867bb16
Merge branch 'main' into nanobind
denialhaag Dec 18, 2025
2d7fe9f
Update changelog and upgrade guide
denialhaag Dec 18, 2025
cb0ac44
Merge branch 'main' into nanobind
denialhaag Dec 18, 2025
d4da0ab
Fix installation locations
denialhaag Dec 18, 2025
1270a05
Add quotes to stub-generation script
denialhaag Dec 18, 2025
4d940c7
Test new workflows version
denialhaag Dec 18, 2025
b43988b
Dummy change to test if check-stubs works
denialhaag Dec 18, 2025
7e10e9e
Fix comment
denialhaag Dec 18, 2025
0206fd4
Further improve stub-generation script
denialhaag Dec 18, 2025
dd1f962
Add bindings-specific clang-tidy config
denialhaag Dec 18, 2025
571acd5
Move up license-tools hook
denialhaag Dec 18, 2025
0f780b0
Further improve stub-generation script
denialhaag Dec 18, 2025
ac2ec20
Improvements to make the rabbit happy
denialhaag Dec 18, 2025
08e10a0
Specify rv_policy in FoMaC bindings
denialhaag Dec 18, 2025
63e42c0
Fix upgrade guide
denialhaag Dec 18, 2025
57d39af
Revert "Dummy change to test if check-stubs works"
denialhaag Dec 18, 2025
f248f2b
Update to new workflows version
denialhaag Dec 19, 2025
350cad3
Set up MLIR for the C++ linter
denialhaag Dec 19, 2025
8768a1a
🐛 fix empty link libs for QIR Runner target
burgholzer Dec 4, 2025
bab4c56
🚚 create dedicated `mqt.core.na` submodule to closely follow the stru…
burgholzer Dec 21, 2025
65cc21a
⬆️ upgrade `ty` dependency to version 0.0.5
burgholzer Dec 21, 2025
f094707
♻️ replace `generate-stubs` script with new `nox` session
burgholzer Dec 21, 2025
96940e1
Merge branch 'main' into nanobind
burgholzer Dec 21, 2025
cf279dd
⬆️ upgrade reusable workflows to version v1.17.6
burgholzer Dec 21, 2025
fca6ec2
🚨 fix clang-tidy warning
burgholzer Dec 21, 2025
24f40d2
♻️ refine stubs session
burgholzer Dec 21, 2025
026ceaf
👌 address code rabbit comments
burgholzer Dec 21, 2025
493e505
🚨 one less ruff rule exclusion for stubs
burgholzer Dec 21, 2025
5e3c0c3
🚨 one less ruff rule exclusion for stubs
burgholzer Dec 21, 2025
10b3a94
🚨 disable `*-prefer-static-over-anonymous-namespace` rule
burgholzer Dec 21, 2025
acb3225
🚨 fix compiler warnings
burgholzer Dec 21, 2025
c9e22b5
🚨 fix compiler warnings
burgholzer Dec 21, 2025
74dfb25
♻️ simplify function calls and enforce matrix shape annotations in DD…
burgholzer Dec 21, 2025
bb1cff8
♻️ enforce keyword-only arguments in session and library functions
burgholzer Dec 21, 2025
e0fa893
🚨 ignore `*-pro-bounds-avoid-unchecked-container-access` in bindings
burgholzer Dec 21, 2025
1a38576
♻️ simplify permutation bindings
burgholzer Dec 21, 2025
a961cda
🚨 fix some linter warnings
burgholzer Dec 21, 2025
d4b5715
🐛 fix wrong method being bound for `p` gate
burgholzer Dec 22, 2025
4a48766
✏️ streamline docstring
burgholzer Dec 22, 2025
91608d4
🏷️ include `PathLike[str]` in `qasm2` and `qasm3` methods
burgholzer Dec 22, 2025
5ff3329
🏷️ solve `Control | int` type hint without performance hit
burgholzer Dec 22, 2025
5efd34c
👌 address CodeRabbit comments and linter warnings
burgholzer Dec 22, 2025
cf79be3
👥 add to changelog entry for nanobind migration
burgholzer Dec 22, 2025
31c8445
👌 address further CodeRabbit comments
burgholzer Dec 22, 2025
0e7be5d
♻️ refactor control type handling in bindings for improved simplicity…
burgholzer Dec 22, 2025
07206d3
👌 next batch of CodeRabbit comments
burgholzer Dec 22, 2025
861b730
Merge branch 'main' into nanobind
burgholzer Dec 22, 2025
5f7c1f4
🚨 fix clang-tidy warnings
burgholzer Dec 22, 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
5 changes: 2 additions & 3 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ Checks: |
readability-*,
-readability-identifier-length,
-readability-magic-numbers,
-readability-function-cognitive-complexity
-readability-function-cognitive-complexity,
-*-prefer-static-over-anonymous-namespace

CheckOptions:
- key: readability-identifier-naming.ClassCase
Expand Down Expand Up @@ -73,5 +74,3 @@ CheckOptions:
value: CamelCase
- key: readability-identifier-naming.VariableCase
value: camelBack
- key: misc-include-cleaner.IgnoreHeaders
value: pybind11/detail/.*
4 changes: 2 additions & 2 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ permissions:
jobs:
build-sdist:
name: 🐍 Packaging
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-sdist.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-sdist.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6

# Builds wheels on all supported platforms using cibuildwheel.
# The wheels are uploaded as GitHub artifacts `dev-cibw-*` or `cibw-*`, depending on whether
Expand All @@ -31,7 +31,7 @@ jobs:
windows-2022,
windows-11-arm,
]
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-wheel-cibuildwheel.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-wheel-cibuildwheel.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
with:
runs-on: ${{ matrix.runs-on }}

Expand Down
33 changes: 17 additions & 16 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ concurrency:
jobs:
change-detection:
name: 🔍 Change
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-change-detection.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-change-detection.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6

cpp-tests-ubuntu:
name: 🇨‌ Test 🐧
Expand All @@ -30,7 +30,7 @@ jobs:
- runs-on: ubuntu-24.04
compiler: gcc
config: Debug
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-ubuntu.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-ubuntu.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
with:
runs-on: ${{ matrix.runs-on }}
compiler: ${{ matrix.compiler }}
Expand All @@ -50,7 +50,7 @@ jobs:
- runs-on: macos-14
compiler: clang
config: Debug
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-macos.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-macos.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
with:
runs-on: ${{ matrix.runs-on }}
compiler: ${{ matrix.compiler }}
Expand All @@ -71,7 +71,7 @@ jobs:
- runs-on: windows-2022
compiler: msvc
config: Debug
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-windows.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-windows.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
with:
runs-on: ${{ matrix.runs-on }}
compiler: ${{ matrix.compiler }}
Expand All @@ -88,7 +88,7 @@ jobs:
runs-on: [ubuntu-24.04, ubuntu-24.04-arm]
compiler: [gcc, clang, clang-20, clang-21]
config: [Release, Debug]
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-ubuntu.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-ubuntu.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
with:
runs-on: ${{ matrix.runs-on }}
compiler: ${{ matrix.compiler }}
Expand All @@ -105,7 +105,7 @@ jobs:
runs-on: [macos-14, macos-15, macos-15-intel]
compiler: [clang, clang-20, clang-21, gcc-14, gcc-15]
config: [Release, Debug]
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-macos.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-macos.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
with:
runs-on: ${{ matrix.runs-on }}
compiler: ${{ matrix.compiler }}
Expand All @@ -123,7 +123,7 @@ jobs:
runs-on: [windows-2022, windows-2025, windows-11-arm]
compiler: [msvc, clang]
config: [Release]
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-windows.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-windows.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
with:
runs-on: ${{ matrix.runs-on }}
compiler: ${{ matrix.compiler }}
Expand All @@ -133,7 +133,7 @@ jobs:
name: 🇨‌ Coverage
needs: change-detection
if: fromJSON(needs.change-detection.outputs.run-cpp-tests)
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-coverage.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-coverage.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
permissions:
contents: read
id-token: write
Expand All @@ -142,14 +142,14 @@ jobs:
name: 🇨‌ Lint
needs: change-detection
if: fromJSON(needs.change-detection.outputs.run-cpp-linter)
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-linter.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-linter.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
with:
cmake-args: -DBUILD_MQT_CORE_BENCHMARKS=ON -DBUILD_MQT_CORE_MLIR=ON -DBUILD_MQT_CORE_BINDINGS=ON
clang-version: 21
build-project: true
files-changed-only: true
setup-python: true
install-pkgs: "pybind11==3.0.1"
install-pkgs: "nanobind==2.10.2"
cpp-linter-extra-args: "-std=c++20"
setup-mlir: true

Expand All @@ -168,15 +168,15 @@ jobs:
macos-14,
windows-2022,
]
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-tests.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-tests.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
with:
runs-on: ${{ matrix.runs-on }}

python-coverage:
name: 🐍 Coverage
needs: [change-detection, python-tests]
if: fromJSON(needs.change-detection.outputs.run-python-tests)
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-coverage.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-coverage.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
permissions:
contents: read
id-token: write
Expand All @@ -190,23 +190,24 @@ jobs:
fail-fast: false
matrix:
runs-on: [macos-15, windows-2025]
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-tests.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-tests.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
with:
runs-on: ${{ matrix.runs-on }}

python-linter:
name: 🐍 Lint
needs: change-detection
if: fromJSON(needs.change-detection.outputs.run-python-tests)
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-linter.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-linter.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
with:
check-stubs: true
enable-ty: true

build-sdist:
name: 🚀 CD
needs: change-detection
if: fromJSON(needs.change-detection.outputs.run-cd)
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-sdist.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-sdist.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6

build-wheel:
name: 🚀 CD
Expand All @@ -224,7 +225,7 @@ jobs:
windows-2022,
windows-11-arm,
]
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-wheel-cibuildwheel.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-wheel-cibuildwheel.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
with:
runs-on: ${{ matrix.runs-on }}

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/upstream.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
fail-fast: false
matrix:
runs-on: [ubuntu-24.04, macos-14, windows-2022]
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-qiskit-upstream-tests.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-qiskit-upstream-tests.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
with:
runs-on: ${{ matrix.runs-on }}
setup-z3: true
Expand All @@ -28,7 +28,7 @@ jobs:
name: Create issue on failure
needs: qiskit-upstream-tests
if: ${{ always() }}
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-qiskit-upstream-issue.yml@654680ab77b3af8226a9f5cd9acfd157bd106f17 # v1.17.5
uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-qiskit-upstream-issue.yml@2acb39781fa6ca7baa10c2a31a508cb0e2292d9e # v1.17.6
with:
tests-result: ${{ needs.qiskit-upstream-tests.result }}
permissions:
Expand Down
3 changes: 2 additions & 1 deletion .license-tools-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
".*\\.tex",
"uv\\.lock",
"py\\.typed",
".*build.*"
".*build.*",
"core_patterns.txt"
]
}
12 changes: 6 additions & 6 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,12 @@ repos:
- id: rst-directive-colons
- id: rst-inline-touching-normal

# Check for license headers
- repo: https://github.com/emzeat/mz-lictools
rev: v2.9.0
hooks:
- id: license-tools

# Ensure uv lock file is up-to-date
- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.9.18
Expand Down Expand Up @@ -101,12 +107,6 @@ repos:
- id: blacken-docs
additional_dependencies: [black==25.*]

# Check for license headers
- repo: https://github.com/emzeat/mz-lictools
rev: v2.9.0
hooks:
- id: license-tools

# Clang-format the C++ part of the code base automatically
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v21.1.8
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ This project adheres to [Semantic Versioning], with the exception that minor rel

### Changed

- ♻️ Migrate Python bindings from `pybind11` to `nanobind` ([#1383]) ([**@denialhaag**], [**@burgholzer**])
- 📦️ Provide Stable ABI wheels for Python 3.12+ ([#1383]) ([**@burgholzer**], [**@denialhaag**])
- 🚚 Create dedicated `mqt.core.na` submodule to closely follow the structure of other submodules ([#1383]) ([**@burgholzer**])
- ✨ Add common definitions and utilities for QDMI ([#1355]) ([**@burgholzer**])
- 🚚 Move `NA` QDMI device in its right place next to other QDMI devices ([#1355]) ([**@burgholzer**])
- ♻️ Allow repeated loading of QDMI device library with potentially different session configurations ([#1355]) ([**@burgholzer**])
Expand Down Expand Up @@ -285,6 +288,7 @@ _📚 Refer to the [GitHub Release Notes](https://github.com/munich-quantum-tool

[#1385]: https://github.com/munich-quantum-toolkit/core/pull/1385
[#1384]: https://github.com/munich-quantum-toolkit/core/pull/1384
[#1383]: https://github.com/munich-quantum-toolkit/core/pull/1383
[#1382]: https://github.com/munich-quantum-toolkit/core/pull/1382
[#1381]: https://github.com/munich-quantum-toolkit/core/pull/1381
[#1378]: https://github.com/munich-quantum-toolkit/core/pull/1378
Expand Down
5 changes: 3 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# Licensed under the MIT License

# set required cmake version
cmake_minimum_required(VERSION 3.24...4.0)
cmake_minimum_required(VERSION 3.24...4.2)

project(
mqt-core
Expand Down Expand Up @@ -47,7 +47,8 @@ if(BUILD_MQT_CORE_BINDINGS)
endif()

# top-level call to find Python
find_package(Python 3.10 REQUIRED COMPONENTS Interpreter Development.Module)
find_package(Python 3.10 REQUIRED COMPONENTS Interpreter Development.Module
${SKBUILD_SABI_COMPONENT})
endif()

# check if this is the master project or used via add_subdirectory
Expand Down
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,6 @@ The project relies on some external dependencies:

- [boost/multiprecision](https://github.com/boostorg/multiprecision): A library for multiprecision arithmetic (used in the ZX package).
- [nlohmann/json](https://github.com/nlohmann/json): A JSON library for modern C++.
- [pybind/pybind11_json](https://github.com/pybind/pybind11_json): A library for using `nlohmann::json` with `pybind11` (only used for creating the Python bindings).
- [google/googletest](https://github.com/google/googletest): A testing framework for C++ (only used in tests).

CMake will automatically look for installed versions of these libraries. If it does not find them, they will be fetched automatically at configure time via the [FetchContent](https://cmake.org/cmake/help/latest/module/FetchContent.html) module (check out the documentation for more information on how to customize this behavior).
Expand Down
18 changes: 15 additions & 3 deletions UPGRADING.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,24 @@ In the process, the `mqt-core-dd-compare` entry point as well as the `evaluation
The `eval/dd_evaluation.py` script acts as a drop-in replacement for the previous CLI entry point.
Since the `eval` directory is not part of the Python package, this functionality is only available via source installations or by cloning the repository.

### Removal of Python 3.13t wheels
### Python wheels

This release contains two changes to the distributed wheels.

First, we have removed all wheels for Python 3.13t.
Free-threading Python was introduced as an experimental feature in Python 3.13.
It became stable in Python 3.14.
To conserve space on PyPI and to reduce the CD build times, we have removed all wheels for Python 3.13t from our CI.
We continue to provide wheels for the regular Python versions 3.10 to 3.14, as well as 3.14t.

Second, for Python 3.12+, we are now providing Stable ABI wheels instead of separate version-specific wheels.
This was enabled by migrating our Python bindings from `pybind11` to `nanobind`.

Both of these changes were made in the interest of conserving PyPI space and reducing CI/CD build times.
The full list of wheels now reads:

- 3.10
- 3.11
- 3.12+ Stable ABI
- 3.14t

## [3.3.0]

Expand Down
6 changes: 6 additions & 0 deletions bindings/.clang-tidy
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
InheritParentConfig: true
Checks: |
-*-avoid-c-arrays,
-cppcoreguidelines-owning-memory,
-misc-redundant-expression,
-*-pro-bounds-avoid-unchecked-container-access
9 changes: 1 addition & 8 deletions bindings/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,7 @@
#
# Licensed under the MIT License

# add the IR bindings package
add_subdirectory(ir)

# add the DD bindings package
add_subdirectory(dd)

# add the NA bindings package
add_subdirectory(na)

# add the FoMaC bindings package
add_subdirectory(fomac)
add_subdirectory(na)
3 changes: 3 additions & 0 deletions bindings/core_patterns.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
_hashable_values_:

_unhashable_values_map_:
2 changes: 1 addition & 1 deletion bindings/dd/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ if(NOT TARGET ${MQT_CORE_TARGET_NAME}-dd-bindings)
file(GLOB_RECURSE DD_SOURCES **.cpp)

# declare the Python module
add_mqt_python_binding(
add_mqt_python_binding_nanobind(
CORE
${MQT_CORE_TARGET_NAME}-dd-bindings
${DD_SOURCES}
Expand Down
Loading
Loading