Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

♻️ Modernize Project Structure #216

Merged
merged 84 commits into from
Jul 5, 2024
Merged

♻️ Modernize Project Structure #216

merged 84 commits into from
Jul 5, 2024

Conversation

lucasberent
Copy link
Collaborator

@lucasberent lucasberent commented Apr 21, 2024

Description

This PR brings QECC up to date with the latest best practices.
Especially, it revamps the Python packaging, includes more extensive testing and Apple Silicon support

Checklist:

  • 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.

@burgholzer
Copy link
Member

@lucasberent any updates here?

@github-advanced-security
Copy link

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

@burgholzer
Copy link
Member

@lucasberent (@pehamTom for awareness): this is now ready and turned out quite nicely, I believe.
Essentially, this PR updates QECC to the latest best practices within the MQT as much as possible given its annoying flint dependency (which, in turn, causes a dependency on GMP and MPFR). That last part is actually what required most of the work here.

Compared to the main branch this PR

  • switches to a FetchContent-managed mqt-core in favour of the git submodule. This makes it way easier to manage and more flexible. A dependabot-like workflow is added to automatically update the mqt-core version periodically.
  • enables testing on Python 3.12 including temporary workarounds for the ldpc project not releasing Python 3.12 wheels and currently not compiling with numpy>=2.0.
  • enables C++ and Python builds as well as tests for Apple Silicon Macs.
  • adds wheels for Apple Silicon Macs that directly bundle gmp, mpfr and flint.
  • enables build caching for the various flint builds on macOS (reduces the build time from 7-10min down to 1min)
  • updates the scikit-build-core packaging configuration to speed up wheel builds
  • cleans up and updates the pre-commit checks (e.g., replaces the slow codespell check)
  • updates the CI/CD workflows to be maximally aligned with the existing reusable MQT workflows so that once flint is dropped, the required changes to switch over to the MQT workflows is minimal. This also includes change detection that will only trigger certain CI runs if deemed necessary. Wheels are now also only built on releases and on changes to the CD.yml file
  • ...

Overall, this brings the repository much more in line again with the rest of the MQT repositories. If you have no serious objections, I'd merge the PR tomorrow and release a new version. Then #234 can be rebased and we can start working on getting that in.

Copy link
Member

@burgholzer burgholzer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alright. Getting this in 🚀

@burgholzer burgholzer merged commit 213d38d into main Jul 5, 2024
33 checks passed
@burgholzer burgholzer deleted the update-mqt-core branch July 5, 2024 09:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
continuous integration Anything related to the CI setup dependencies Pull requests that update a dependency file minor Minor version update python Pull requests that update Python code submodules Pull requests that update Submodules code usability Anything related to usability
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

2 participants