# Contributing to pydhis2

First off, thank you for considering contributing to `pydhis2`. It's people like you that make `pydhis2` such a great tool.

Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue or assessing patches and features.

## Code of Conduct

This project and everyone participating in it is governed by the [Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code.

## How Can I Contribute?

### Reporting Bugs

This is one of the simplest ways to contribute. If you find a bug, please ensure the bug was not already reported by searching on GitHub under [Issues](https://github.com/pydhis2/pydhis2/issues).

If you're unable to find an open issue addressing the problem, open a new one. Be sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring.

### Suggesting Enhancements

If you have an idea for an enhancement, please open an issue to discuss it. This allows us to coordinate our efforts and prevent duplication of work.

### Your First Code Contribution

Unsure where to begin contributing to `pydhis2`? You can start by looking through these `good-first-issue` and `help-wanted` issues:

- [Good first issues](https://github.com/pydhis2/pydhis2/labels/good%20first%20issue) - issues which should only require a few lines of code, and a test or two.
- [Help wanted issues](https://github.com/pydhis2/pydhis2/labels/help%20wanted) - issues which should be a bit more involved than `good-first-issue` issues.

### Pull Requests

1.  Fork the repo and create your branch from `main`.
2.  If you've added code that should be tested, add tests.
3.  If you've changed APIs, update the documentation.
4.  Ensure the test suite passes.
5.  Make sure your code lints.
6.  Issue that pull request!

## Styleguides

We use `ruff` to format our code. Please run `ruff format .` before committing your changes.

We also use `ruff` for linting. Please run `ruff check .` to check for any linting errors.

## License

By contributing, you agree that your contributions will be licensed under its Apache License 2.0.
