# Contributing ## Contributing to the code base ### Requirements Developing requires: * the [uv](https://docs.astral.sh/uv/) package manager; * the [pre-commit](https://pre-commit.com/) git hook manager, typically installed with [pipx](https://pipx.pypa.io/stable/). ### Setting up a development environment Clone the repository: ```bash git clone git@github.com:rayference/dessinemoi.git ``` Enter the created repository and set up the development environment: ```bash cd dessinemoi uv sync ``` Finally, activate the pre-commit hooks: ```bash pre-commit install ``` ### Running tests The testing process of *Dessine-moi* uses [pytest](https://docs.pytest.org). A uv task is defined to help you run the tests: ```bash uv run task test ``` This will run pytest for all relevant files (unit tests and doctests included in the documentation). ## Building the documentation To build the documentation, use the dedicated Rye task: ```bash uv run task docs ``` Incremental autobuild is also supported: ```bash uv run task docs-serve ``` ## Maintainers: release process **Pre-release steps** 1. Make sure that all tests pass. 2. Make sure the change log is up-to-date. Add the release date to the relevant section header. 3. Set the package version number to the target value: ```bash uv version ``` 4. Create and push a commit with the following message: `dessinemoi version `. **Release steps** 1. Create a [new release on GitHub](https://github.com/rayference/dessinemoi/releases). 2. When asked for a tag, create a new one (`v`). 3. The automated workflow will build the package and upload it to PyPI. **Post-release steps** 1. Create a new section in the change log (`CHANGELOG.md`) with the title *Dessine-moi (upcoming release)*. 2. Bump the version to the next development one: ```bash uv version .dev ``` 3. Create and push a commit with the following message: `Version ready for development`.