How to contribute
We're grateful for your interest in contributing to Qubo Solver! Please follow our guidelines to ensure a smooth contribution process.
Reporting an Issue or Proposing a Feature
Section titled “Reporting an Issue or Proposing a Feature”Your course of action will depend on your objective, but generally, you should start by creating an issue. If you've discovered a bug or have a feature you'd like to see added, feel free to create an issue on the issue tracker (external). Here are some steps to take:
- Quickly search the existing issues using relevant keywords to ensure your issue hasn't been addressed already.
-
If your issue is not listed, create a new one. Try to be as detailed and clear as possible in your description.
-
If you're merely suggesting an improvement or reporting a bug, that's already excellent! We thank you for it. Your issue will be listed and, hopefully, addressed at some point.
- However, if you're willing to be the one solving the issue, that would be even better! In such instances, you would proceed by preparing a Pull Request.
Submitting a Pull Request
Section titled “Submitting a Pull Request”We're excited that you're eager to contribute to Qubo Solver! We use the standard GitHub fork workflow: fork the repository, make your changes on a branch in your fork, and once you are satisfied with your feature and all the tests pass, open a Pull Request (external) from your fork's branch to main.
Here's the process for making a contribution:
-
Fork the repository (external) to your own GitHub account.
-
Clone your fork locally:
git clone https://github.com/<your username>/qubo-solver.gitcd qubo-solvergit remote add upstream https://github.com/pasqal-io/qubo-solver.git- Create a new branch for your change, using a
topic/<short-description>naming convention, where<short-description>is a few hyphenated words describing the change (e.g.topic/solver-timeout):
git checkout -b topic/- Push your branch to your fork:
git push --set-upstream origin topic/- Once your feature is ready and all the tests pass, open a Pull Request from your fork's branch against the
mainbranch ofpasqal-io/qubo-solver.
If your fork falls behind, sync it by fetching and merging (or rebasing on) upstream/main:
git fetch upstreamgit merge upstream/mainSetting up your development environment
Section titled “Setting up your development environment”1) Clone your fork of the Qubo Solver GitHub repository (external)
git clone https://github.com/<your username>/qubo-solver.git2) Setup an environment for developing. From your qubo-solver folder run:
python -m venv .venvsource .venv/bin/activatepip install --group dev -e .Useful things for your workflow: Linting and Testing
Section titled “Useful things for your workflow: Linting and Testing”Use prek (a drop-in, faster replacement for pre-commit) to make sure that the code is properly linted before pushing a new commit. Make sure that the unit tests and type checks are passing since the merge request will not be accepted if the automatic CI/CD pipeline do not pass.
pip install prekprek installprek run --all-filespytestA Word on Patents
Section titled “A Word on Patents”Quantum computing is a heavily patented field. If your contribution introduces a new quantum algorithm, rather than an improvement to the existing library, please check beforehand that it is not covered by an existing patent.
Contributing Terms
Section titled “Contributing Terms”Finally, before contributing, please take a moment to review the following:
By contributing, you agree to follow and accept these documents.
