Thank you for your interest in contributing to the GavaConnect SDK for Python! We welcome contributions from the community and are pleased to have you aboard.
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Code Standards
- Testing
- Submitting Changes
- Release Process
- Getting Help
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to acoruss+sdks@gmail.com.
- Be respectful: Treat everyone with respect and kindness
- Be inclusive: Welcome newcomers and help them learn
- Be collaborative: Work together towards common goals
- Be constructive: Provide helpful feedback and suggestions
- Be professional: Maintain professional standards in all interactions
- Python 3.13 or higher
- uv (recommended) or pip
- Git
- A GitHub account
We welcome several types of contributions:
- 🐛 Bug Reports: Help us identify and fix issues
- ✨ Feature Requests: Suggest new functionality
- 📝 Documentation: Improve or add documentation
- 🧪 Tests: Add or improve test coverage
- 🔧 Code: Fix bugs or implement features
- 🎨 Design: Improve user experience and interface
-
Fork the repository
# Fork the repo on GitHub, then clone your fork git clone https://github.com/YOUR_USERNAME/gavaconnect-sdk-python.git cd gavaconnect-sdk-python
-
Add upstream remote
git remote add upstream https://github.com/acoruss/gavaconnect-sdk-python.git
-
Install dependencies
# Using uv (recommended) uv sync --extra dev # Or using pip pip install -e ".[dev]"
-
Activate the virtual environment
source .venv/bin/activate # If using uv # Or activate your virtual environment if using pip
-
Verify the setup
uv run pytest uv run ruff check uv run mypy gavaconnect
-
Create a feature branch
git checkout -b feature/your-feature-name # or git checkout -b fix/issue-description -
Make your changes
- Write clear, concise code
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
-
Test your changes
# Run all tests uv run pytest # Run with coverage uv run pytest --cov=gavaconnect --cov-report=html # Check code quality uv run ruff check uv run ruff format uv run mypy gavaconnect uv run bandit -r gavaconnect
-
Commit your changes
git add . git commit -m "feat: add new feature description"
We use conventional commits for clear and consistent commit messages:
feat:New featurefix:Bug fixdocs:Documentation changestest:Adding or updating testsrefactor:Code refactoringstyle:Code style changes (formatting, etc.)chore:Maintenance tasksci:CI/CD changes
Examples:
feat: add authentication support for API calls
fix: resolve connection timeout issue
docs: update installation instructions
test: add unit tests for authentication module
- Line length: Maximum 88 characters
- Formatting: Use Ruff for code formatting
- Import sorting: Automatic with Ruff
- Type hints: Required for all public functions and methods
We use the following tools to maintain code quality:
- Ruff: Linting and formatting
- mypy: Static type checking
- bandit: Security vulnerability scanning
- pytest: Testing framework
Before submitting your changes, ensure all checks pass:
# Format code
uv run ruff format
# Lint code
uv run ruff check --fix
# Type checking
uv run mypy gavaconnect
# Security scanning
uv run bandit -r gavaconnect
# Run tests
uv run pytest --cov=gavaconnect- Place tests in the
tests/directory - Use descriptive test names that explain what is being tested
- Follow the
test_*.pynaming convention - Use pytest fixtures for common setup
- Aim for high test coverage (>90%)
- Unit tests: Test individual functions and methods
- Integration tests: Test component interactions
- End-to-end tests: Test complete workflows
# Run all tests
uv run pytest
# Run specific test file
uv run pytest tests/test_main.py
# Run tests with coverage
uv run pytest --cov=gavaconnect --cov-report=html
# Run tests in parallel (if you have pytest-xdist installed)
uv run pytest -n auto-
Update your branch
git fetch upstream git rebase upstream/main
-
Push your changes
git push origin feature/your-feature-name
-
Create a Pull Request
- Go to GitHub and create a pull request
- Use a clear and descriptive title
- Fill out the pull request template
- Link any related issues
When creating a pull request, please include:
- Description: What changes are you making and why?
- Type of change: Bug fix, new feature, documentation, etc.
- Testing: How have you tested your changes?
- Checklist: Confirm you've completed all required steps
- Automated checks: All CI checks must pass
- Code review: At least one maintainer will review your code
- Testing: Ensure all tests pass and coverage is maintained
- Documentation: Update documentation if needed
- Approval: Once approved, a maintainer will merge your PR
Releases are managed by the maintainers and follow semantic versioning:
- Patch (0.0.x): Bug fixes and small improvements
- Minor (0.x.0): New features that are backward compatible
- Major (x.0.0): Breaking changes
The release process is automated using GitHub Actions and follows these steps:
- Version bump in
pyproject.toml - Update
CHANGELOG.md - Create a GitHub release
- Publish to PyPI
- Check the README.md for basic usage
- Review existing issues and pull requests
- Look at the code and tests for examples
- GitHub Issues: Report bugs or request features
- GitHub Discussions: Ask questions or discuss ideas
- Email: Contact maintainers at acoruss+sdks@gmail.com
Contributors will be recognized in several ways:
- Listed in the project's contributors
- Mentioned in release notes for significant contributions
- Invited to join the maintainer team for outstanding contributors
Thank you for contributing to GavaConnect SDK for Python! Your efforts help make this project better for everyone. 🚀
Questions? Don't hesitate to ask! We're here to help you succeed.