Thank you for your interest in contributing to the ATH Móvil Python unofficial library!
# Fork and clone the repo
git clone https://github.com/django-athm/athm-python.git
cd athm-python
# Install uv if needed
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install dependencies and pre-commit hooks
uv sync --all-extras --dev
pre-commit install-
Create a branch
git checkout -b feature/your-feature-name # or git checkout -b fix/your-bug-fix -
Make your changes
- Write clear, readable code
- Add tests for new functionality
- Add Google-style docstrings and type hints
- Update docs if needed
-
Run tests
uv run pytest
-
Commit using Conventional Commits
git commit -m "feat(client): add new feature" git commit -m "fix(models): fix validation bug" git commit -m "docs: update readme"
Types:
feat,fix,docs,style,refactor,test,chore -
Push and open a PR
git push origin feature/your-feature-name
Pre-commit hooks automatically handle formatting and linting with ruff and mypy. Just commit and they'll run:
- Formatting: Ruff auto-formats code (PEP 8, 100 char lines)
- Linting: Ruff catches common issues
- Type checking: mypy validates type hints
- Commit messages: commitizen validates format
To manually run all checks:
pre-commit run --all-files- Place unit tests in
tests/unit/ - Use descriptive names:
test_create_payment_with_valid_data - Mock external API calls with
pytest-httpx - Run tests:
uv run pytest - Run with coverage:
uv run pytest --cov=athm
Documentation is in docs/ using MkDocs:
# Preview locally
uv run mkdocs serve
# Build
uv run mkdocs buildUpdate relevant docs when adding features.
- Fill out the PR template completely
- Ensure CI checks pass (tests, linting, type checking)
- Address review feedback
- Keep PRs focused on a single feature/fix
Check existing issues before starting work on major changes.
Use the issue templates:
- Bug Report: For bugs and unexpected behavior
- Feature Request: For new features or enhancements
Include as much detail as possible.
- Check the documentation
- Search existing issues
- Open a new issue if needed
By contributing, you agree that your contributions will be licensed under the MIT License.