Contributing
Contributing to rms-link-checker
Thank you for your interest in contributing to rms-link-checker! This document provides guidelines and instructions for contributing to the project.
Code of Conduct
We expect all contributors to follow our Code of Conduct, which ensures a welcoming and inclusive environment for everyone. See CODE_OF_CONDUCT.md.
Getting Started
Fork the repository on GitHub
Clone your fork locally:
git clone https://github.com/your-username/rms-link-checker.git cd rms-link-checker
Create a virtual environment and install the package with dev dependencies:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -e ".[dev]"
Development Workflow
Create a new branch for your feature or bugfix:
git checkout -b feature/your-feature-name # or git checkout -b bugfix/issue-number
Make your changes, following our coding standards
Write or update tests as necessary (we follow TDD — tests first!)
Run the tests to ensure they pass:
pytest -n auto --cov
Run all checks with the provided script:
./scripts/run-all-checks.sh
Commit your changes with a descriptive message:
git commit -m "feat: add feature description"
Push your branch to your fork:
git push origin feature/your-feature-name
Open a Pull Request on GitHub
Coding Standards
We follow these standards for all code contributions:
Python Style: Follow PEP 8 (enforced via
ruff)Type Hints: Use type hints for all function parameters and return values
Docstrings: Document all classes and methods with Google-style docstrings
Testing: Include unit tests for new functionality (TDD approach)
Compatibility: Ensure compatibility with Python 3.10+
Pull Request Process
Ensure all tests pass
Update documentation if necessary
Make sure your code is properly formatted and passes both
ruffandmypyRequest a review from a maintainer
Address any feedback from reviewers
The maintainers will merge your PR once it meets all requirements.
Testing
We use pytest for testing. To run the tests with coverage:
pytest -n auto --cov
For more verbose output:
pytest -v
To run a specific test file:
pytest tests/test_url_utils.py
Documentation
We use Sphinx for documentation. To build the docs:
cd docs
make html
The generated documentation will be in docs/_build/html.
Reporting Issues
If you find a bug or have a suggestion for improvement:
Check if the issue already exists in the GitHub issue tracker
If not, create a new issue with:
A clear, descriptive title
A detailed description of the issue
Steps to reproduce (for bugs)
Your environment information (Python version, OS, etc.)
Any relevant logs or screenshots
Thank you for contributing to rms-link-checker!