truly editable installs that also include the C++ part; this implies incredibly fast rebuilds that can be further improved by installing ccache.
completely eliminates the setup.py (and the MANIFEST.in) file and all custom build code that was required previously.
As part of this change, we adopt the established best practice of a src-layout for the Python package. This implies that the Python package no longer lives in the main package directory, but is moved to src/mqt/....
This avoids several pitfalls when working with Python packages and makes the overall handling way easier.
This also means there is no direct build-time dependency on cmake and ninja anymore as this is automatically handled by scikit-build-core on demand.
As part of this rewrite, several nox sessions are also updated.
CI
Parts of the CI have been modernized with the latest best practises.
Unfortunately, we cannot yet adopt the reusable workflows from mqt-core due to the flint dependency in this project.
This will come as a follow-up
Checklist:
[x] The pull request only contains commits that are related to it.
[ ] I have added appropriate tests and documentation.
[ ] I have made sure that all CI jobs on GitHub pass.
[ ] The pull request introduces no new warnings and follows the project's style guidelines.
Description
This PR brings a major refactoring for the overall Python packaging as well as parts of the CI employed in the project.
Packaging
We are (finally) moving away from
setuptools
and towards modernscikit-build-core
(https://scikit-build-core.readthedocs.io/) This brings many advantages such assetup.py
(and theMANIFEST.in
) file and all custom build code that was required previously.As part of this change, we adopt the established best practice of a src-layout for the Python package. This implies that the Python package no longer lives in the main package directory, but is moved to
src/mqt/...
. This avoids several pitfalls when working with Python packages and makes the overall handling way easier.This also means there is no direct build-time dependency on cmake and ninja anymore as this is automatically handled by scikit-build-core on demand.
As part of this rewrite, several
nox
sessions are also updated.CI
Parts of the CI have been modernized with the latest best practises. Unfortunately, we cannot yet adopt the reusable workflows from mqt-core due to the flint dependency in this project. This will come as a follow-up
Checklist: