# Contributing to `UNIQUE`

Thank you for considering contributing to `UNIQUE`! 🎉


## How Can You Contribute?


### Reporting Bugs 🐛

Found a bug? We appreciate you taking the time to let us know! Please follow these steps to report it:

1. Ensure the bug hasn't been reported already by checking existing issues.
2. If it's a new issue, open a new one. Be sure to include a clear title and description, along with any relevant information to help us reproduce the bug (e.g., OS, conda/virtual environment, minimal reproducible example, etc.).

Please, include **[Bug]** in the issue title to make it easier to track and spot the issue.


### Requesting Features 🚀

Have an idea for a new feature or improvement? Share it with us! Here's how:

1. Check existing issues to see if your feature request has been suggested before.
2. If it's a new idea, open a new issue. Describe the feature you'd like to see, along with any relevant details and a use case in which the feature would be used.

Please, include **[Feature Request]** in the issue title to make it easier to track and spot the issue.


### Contributing Code 💻

Interested in contributing code? Awesome! Follow these steps to get started:

0. Feel free to submit an issue first before working on the feature to see whether your contribution and idea is something the maintainers and other users would find useful.
1. Fork the repository and create your branch from `master`.
2. Implement your changes, making sure to document and test your code, by including docstrings (following [Google-style docstrings](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html)), type-hinting, thorough unit-testing, etc.
3. Submit a pull request to the `master` branch. Provide a clear title and description of your changes, along with any relevant information or context (e.g., OS, environment and dependencies, etc.). If your PR fixes a bug, detail what the problem was (linking to existing bug issues, if any) and how it was fixed. If your PR adds new code, include justification for why this code is relevant and should be added (linking to existing feature requests, if any).
4. Ensure that maintainers are allowed to edit your PR, by following [these instructions](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork).

The maintainers and/or other power-users will discuss the PR and eventually merge it into the main branch if accepted.

> [!TIP]
> Use tools such as [`black`](https://black.readthedocs.io/en/stable/index.html) and [`isort`](https://pycqa.github.io/isort/) to make your code PEP-8 compliant and avoid any merging issues.


## Code of Conduct 🤝

Please note that we have a Code of Conduct in place to ensure a positive and inclusive community environment. By participating in this project, you agree to abide by its terms.


## Thank You! 🙌

We appreciate your contributions to `UNIQUE`! Your help makes this project better for everyone. Let's build something amazing together! 🚀
