Thank you for your interest in contributing to EasySwitch! This guide will help you contribute effectively while maintaining our quality standards.
- Prerequisites
- Local Setup
- Contribution Workflow
- Code Conventions
- Testing & Quality
- Issue Management
- Code of Conduct
- Python 3.10+
- UV (recommended) or pip
- Basic knowledge of payment APIs
- Familiarity with async testing
Click "Fork" at the top-right of the project's GitHub page.
git clone https://github.com/your-username/easyswitch.git
cd easyswitchWith UV (recommended):
# Install UV
pip install uv
# Create virtual environment
uv venv
# Activate environment
source venv/bin/activate # Linux/Mac
# OR
.\venv\Scripts\activate # Windows
# Install dependencies
uv pip install -e .[dev]With standard pip:
python -m venv venv
source venv/bin/activate
pip install -e .[dev]-
Create a Branch
git checkout -b feat/new-feature
-
Implement Your Changes
- Follow code conventions
- Add relevant tests
-
Verify Code Quality
uv run lint # Style check uv run test # Run tests
-
Push Changes
git push origin feat/new-feature
-
Open a Pull Request
- Complete the PR template
- Clearly describe your changes
- Reference related issues
- Typing: Use type annotations everywhere
- Async: Prefer
async/awaitfor I/O operations - Exceptions: Use the project's custom exceptions
- Naming:
- Variables/functions:
snake_case - Classes:
PascalCase - Constants:
UPPER_CASE
- Variables/functions:
- Docstrings: Follow Google Style
def send_payment(amount: float) -> bool: """Sends payment to the aggregator. Args: amount: Amount to send (in XOF) Returns: bool: True if payment succeeded """
- Use validators from
easyswitch.utils.validators - Always validate API inputs
uv run test # All tests
uv run test -k "test_payment" # Specific testsuv run coverage- 1 test per feature
- Isolated, idempotent tests
- Mock external APIs
- Check for existing issues
- Use the "Bug Report" template
- Include:
- Environment (Python, OS)
- Reproduction steps
- Relevant logs/errors
- Use the "Feature Request" template
- Describe:
- Use case
- Expected impact
- API sketch if applicable
We adhere to the Contributor Covenant Code of Conduct. By participating:
- Be kind and open-minded
- Accept constructive feedback
- Prioritize collaboration
Check out these labeled issues:
good first issuefor simple contributionshelp wantedfor more challenging tasks
Thank you for helping make EasySwitch even better! 💪