# Contributing Thank you for considering contributing to `mutyper`! This document outlines the guidelines and expectations for contributing to the project at [github.com/harrispopgen/mutyper](https://github.com/harrispopgen/mutyper). ## Table of Contents - [Code of Conduct](#code-of-conduct) - [How to Contribute](#how-to-contribute) - [Reporting Bugs](#reporting-bugs) - [Requesting Features](#requesting-features) - [Pull Requests](#pull-requests) - [Style Guidelines](#style-guidelines) - [Testing Guidelines](#testing-guidelines) - [Documentation Guidelines](#documentation-guidelines) - [Acknowledgements](#acknowledgements) ## Code of Conduct This project adheres to the [Contributor Covenant Code of Conduct](https://www.contributor-covenant.org/version/2/0/code_of_conduct/). By participating, you are expected to uphold this code. Please report unacceptable behavior to [harris.kelley@gmail.com](mailto:harris.kelley@gmail.com). ## How to Contribute We welcome contributions of all kinds—bug reports, feature requests, code contributions, documentation improvements, and more. To get started: 1. Fork the repository to your own GitHub account 2. Clone the repository to your local machine 3. Create a new branch for your changes: `git checkout -b your-branch-name` 4. Make your changes and commit them: `git commit -m "your commit message"` 5. Push your changes to your forked repository: `git push origin your-branch-name` 6. Create a Pull Request to merge your changes into the main repository ## Reporting Bugs If you find a bug or other issue with `mutyper`, please report it by opening a new issue on GitHub. Please include as much information as possible, including: - A clear and concise description of the problem - Steps to reproduce the issue - Expected behavior - Actual behavior - Screenshots or other relevant information ## Requesting Features If you have an idea for a new feature or improvement to `mutyper`, please submit it as a feature request on GitHub. Please provide a clear and concise description of the feature, including: - Why the feature is needed - How it would work - Any potential drawbacks or limitations ## Pull Requests If you would like to contribute code to `mutyper`, please submit a Pull Request on GitHub. Please follow these guidelines: - Ensure the code is well-tested and follows the style guidelines (see below) - Write clear and concise commit messages - Ensure the Pull Request description explains what the changes are and why they are needed - Ensure the Pull Request title is descriptive and includes the relevant issue number (if applicable) - Squash commits and rebase on the latest version of the `main` branch before submitting ## Style Guidelines We use [Black](https://black.readthedocs.io/en/stable/), [Docformatter](https://docformatter.readthedocs.io), and [Flake8](https://flake8.pycqa.org/en/latest/) for formatting Python code and enforcing style. Please ensure your code is formatted/linted before submitting a Pull Request. ## Testing Guidelines We use [pytest](https://docs.pytest.org/en/latest/) and [doctest](https://www.sphinx-doc.org/en/master/usage/extensions/doctest.html) for testing. Please ensure your changes are well-tested and include new tests where appropriate. All tests should pass before submitting a Pull Request. ## Documentation Guidelines We use [Sphinx](https://www.sphinx-doc.org/) for documentation, and running doctests. Please ensure your changes include any necessary updates to the documentation, including: - docstrings - doctests - API reference documentation - quickstart documentation ## Acknowledgements We welcome and appreciate all contributions to `mutyper`. Thank you for helping to improve the project!