# Contributing to qmb

Thanks for your interest in contributing to qmb!
Any kinds of contributions are welcome.

## How to contribute to qmb

If you have/implemented an idea or find/fixed a bug, use GitHub issues or pull requests.
Providing a minimum working example for bugs would be helpful.
If you have any questions, please use the GitHub discussions.

## Code structure

The code structure of qmb is following the standard Python package structure.
We organize the package code into the folder named `qmb`, and the tests into the folder named `tests`.
The file `pyproject.toml` is used to define the package metadata.
The file `Dockerfile` is used to build the Docker image for the CLI application.
There are also some other files such as `.clang-format`, `.pre-commit-config.yaml` used to format and lint the code.

## How to get involved

Please learn the basic Git usage to contribute to qmb.
We use the git flow mode to merge the pull requests.
Please provide the essential information with proper formatting in the git commit message and the pull request description.

Please make sure that your code is properly formatted, linted and typed when you submit a pull request.
In Python code conventions, use double quotes (") for string literals and single quotes (') for character literals.
The comments in the code are expected to be enough for other developers to understand your code.
Please add docstrings to the code in NumPy style.
If necessary, please update documentations and add tests for your changes.
Any warning should be fixed when submitting a pull request.
At last, please check carefully on the correctness and the robustness of the code when submitting a pull request.

---

Thanks! :heart: :heart: :heart:

USTC Knowledge Computing Lab
