diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 9e09177c0..38b1eddb1 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -12,7 +12,7 @@ permissions: jobs: build-sdist: name: 🐍 Packaging - uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-sdist.yml@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-sdist.yml@v1.16 # Builds wheels on all supported platforms using cibuildwheel. # The wheels are uploaded as GitHub artifacts `dev-cibw-*` or `cibw-*`, depending on whether @@ -31,7 +31,7 @@ jobs: windows-2022, windows-11-arm, ] - uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-wheel-cibuildwheel.yml@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-wheel-cibuildwheel.yml@v1.16 with: runs-on: ${{ matrix.runs-on }} setup-z3: true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ae259ab14..a116491fc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ concurrency: jobs: change-detection: name: 🔍 Change - uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-change-detection.yml@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-change-detection.yml@v1.16 cpp-tests-ubuntu: name: 🇨‌ Test 🐧 @@ -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@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-ubuntu.yml@v1.16 with: runs-on: ${{ matrix.runs-on }} compiler: ${{ matrix.compiler }} @@ -51,7 +51,7 @@ jobs: - runs-on: macos-14 compiler: clang config: Debug - uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-macos.yml@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-macos.yml@v1.16 with: runs-on: ${{ matrix.runs-on }} compiler: ${{ matrix.compiler }} @@ -73,7 +73,7 @@ jobs: - runs-on: windows-2022 compiler: msvc config: Debug - uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-windows.yml@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-windows.yml@v1.16 with: runs-on: ${{ matrix.runs-on }} compiler: ${{ matrix.compiler }} @@ -92,7 +92,7 @@ jobs: [ubuntu-22.04, ubuntu-24.04, ubuntu-22.04-arm, ubuntu-24.04-arm] compiler: [gcc, clang, clang-19, clang-20] config: [Release, Debug] - uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-ubuntu.yml@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-ubuntu.yml@v1.16 with: runs-on: ${{ matrix.runs-on }} compiler: ${{ matrix.compiler }} @@ -116,7 +116,7 @@ jobs: compiler: gcc-14 - runs-on: macos-15 compiler: gcc-15 - uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-macos.yml@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-macos.yml@v1.16 with: runs-on: ${{ matrix.runs-on }} compiler: ${{ matrix.compiler }} @@ -135,7 +135,7 @@ jobs: runs-on: [windows-2022, windows-2025, windows-11-arm] compiler: [msvc, clang] config: [Release, Debug] - uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-windows.yml@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-tests-windows.yml@v1.16 with: runs-on: ${{ matrix.runs-on }} compiler: ${{ matrix.compiler }} @@ -146,7 +146,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@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-coverage.yml@v1.16 with: setup-z3: true permissions: @@ -158,7 +158,7 @@ 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@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-cpp-linter.yml@v1.16 with: clang-version: 20 cmake-args: -DBUILD_MQT_QMAP_BINDINGS=ON @@ -176,7 +176,7 @@ jobs: matrix: runs-on: [ubuntu-24.04, ubuntu-24.04-arm, macos-13, macos-14, windows-2022] - uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-tests.yml@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-tests.yml@v1.16 with: runs-on: ${{ matrix.runs-on }} setup-z3: true @@ -185,7 +185,7 @@ jobs: 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@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-coverage.yml@v1.16 permissions: contents: read id-token: write @@ -202,7 +202,7 @@ jobs: exclude: # see https://github.com/munich-quantum-toolkit/qmap/issues/703 - runs-on: macos-15 - uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-tests.yml@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-tests.yml@v1.16 with: runs-on: ${{ matrix.runs-on }} setup-z3: true @@ -211,7 +211,7 @@ jobs: 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@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-linter.yml@v1.16 with: setup-z3: true @@ -219,7 +219,7 @@ jobs: name: 📝 CodeQL needs: change-detection if: fromJSON(needs.change-detection.outputs.run-code-ql) - uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-code-ql.yml@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-code-ql.yml@v1.16 with: setup-z3: true @@ -227,7 +227,7 @@ jobs: 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@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-sdist.yml@v1.16 build-wheel: name: 🚀 CD @@ -245,7 +245,7 @@ jobs: windows-2022, windows-11-arm, ] - uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-wheel-cibuildwheel.yml@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-python-packaging-wheel-cibuildwheel.yml@v1.16 with: runs-on: ${{ matrix.runs-on }} setup-z3: true diff --git a/.github/workflows/update-mqt-core.yml b/.github/workflows/update-mqt-core.yml index 70b7269c8..5eb1eebc2 100644 --- a/.github/workflows/update-mqt-core.yml +++ b/.github/workflows/update-mqt-core.yml @@ -21,7 +21,7 @@ concurrency: jobs: update-mqt-core: name: ⬆️ Update MQT Core - uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-mqt-core-update.yml@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-mqt-core-update.yml@v1.16 with: update-to-head: ${{ github.event.inputs.update-to-head == 'true' }} secrets: diff --git a/.github/workflows/upstream.yml b/.github/workflows/upstream.yml index 8617f02a4..b995a7dfa 100644 --- a/.github/workflows/upstream.yml +++ b/.github/workflows/upstream.yml @@ -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@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-qiskit-upstream-tests.yml@v1.16 with: runs-on: ${{ matrix.runs-on }} setup-z3: true @@ -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@v1.15 + uses: munich-quantum-toolkit/workflows/.github/workflows/reusable-qiskit-upstream-issue.yml@v1.16 with: tests-result: ${{ needs.qiskit-upstream-tests.result }} permissions: diff --git a/CHANGELOG.md b/CHANGELOG.md index 0888af1e8..f3744e29b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ This project adheres to [Semantic Versioning], with the exception that minor rel ## [Unreleased] +### Added + +- 🐍 Build Python 3.14 wheels ([#717]) ([**@denialhaag**]) + ### Fixed - 🚸 Increase binary compatibility between `mqt-qmap`, `mqt-core`, and `mqt-qcec` ([#714]) ([**@denialhaag**]) @@ -106,6 +110,7 @@ _📚 Refer to the [GitHub Release Notes] for previous changelogs._ +[#717]: https://github.com/munich-quantum-toolkit/qmap/pull/717 [#715]: https://github.com/munich-quantum-toolkit/qmap/pull/715 [#714]: https://github.com/munich-quantum-toolkit/qmap/pull/714 [#712]: https://github.com/munich-quantum-toolkit/qmap/pull/712 diff --git a/noxfile.py b/noxfile.py index 9d4dc2c66..75c787147 100644 --- a/noxfile.py +++ b/noxfile.py @@ -26,6 +26,8 @@ nox.options.sessions = ["lint", "tests", "minimums"] +# TODO(denialhaag): Add 3.14 when all dependencies support it +# https://github.com/munich-quantum-toolkit/qmap/issues/718 PYTHON_ALL_VERSIONS = ["3.9", "3.10", "3.11", "3.12", "3.13"] if os.environ.get("CI", None): diff --git a/pyproject.toml b/pyproject.toml index 3c79ff828..df3399cff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,6 +46,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Development Status :: 5 - Production/Stable", "Typing :: Typed", ] @@ -339,6 +340,9 @@ manylinux-s390x-image = "manylinux_2_28" test-skip = [ "cp3*t-*", # no freethreading qiskit wheels "cp*-win_arm64", # no numpy, qiskit, ... wheels + # TODO(denialhaag): Remove when all dependencies support Python 3.14 + # https://github.com/munich-quantum-toolkit/qmap/issues/718 + "cp314-*", ] # The mqt-core shared libraries are provided by the mqt-core Python package. @@ -350,7 +354,7 @@ environment = { Z3_ROOT="/opt/python/cp311-cp311/lib/python3.11/site-packages/z3 before-all = "/opt/python/cp311-cp311/bin/pip install z3-solver==4.12.6" repair-wheel-command = [ "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/python/cp311-cp311/lib/python3.11/site-packages/z3/lib", - """auditwheel repair -w {dest_dir} {wheel} \ + """auditwheel repair -w {dest_dir} {wheel} \ --exclude libmqt-core-ir.so.3.1 \ --exclude libmqt-core-qasm.so.3.1 \ --exclude libmqt-core-circuit-optimizer.so.3.1 \