Contributing
Thank you for your interest in contributing to Fracttal ETL Hub! This document explains how you can help the project.
🚀 Getting Started
1. Development Environment Setup
# Clone the repository
git clone https://github.com/Fracttal-Tech-S-L/Hub.git
cd Hub
# Create a virtual environment
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -e .[dev]
2. Run Tests
# Run all tests
make tests-all
# Run a specific tests
make tests-method METHOD=test_connection
3. Code Verification
# Run linting
make lint
# Check types
make type-check
📝 Types of Contributions
🐛 Reporting Bugs
- Verify the bug hasn't been reported before
- Create an issue with:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Environment information (Python version, OS, etc.)
✨ Requesting Features
- Verify the feature doesn't already exist
- Create an issue describing:
- The problem it solves
- Specific use cases
- Proposed design (optional)
🛠️ Contributing Code
General Process
- Fork the repository
- Create a branch for your feature:
git checkout -b feature/new-functionality - Make your changes following style guides
- Write tests for your code
- Run all tests and verifications
- Commit your changes:
git commit -m "feat: clear description" - Push to your fork:
git push origin feature/new-functionality - Create a Pull Request
Development Guidelines
Code Style
- Follow PEP 8 for Python
- Use type hints in all functions
- Document with Google-style docstrings
- Keep lines under 88 characters
Commits
We use Conventional Commits:
feat: new functionality
fix: bug fix
docs: documentation changes
style: formatting changes
refactor: code refactoring
test: add tests
chore: maintenance changes
Tests
- Write unit tests for all new functionality
- Maintain code coverage > 80%
- Tests should be independent and fast
🔧 Contribution Areas
Connections
Adding New Connection
- Create Pydantic model in
fracttal_etl/connections/httplib/schemas/connections.py - Implement connection in corresponding module
- Add tests in
test/ - Update documentation in
PROMPT_ETL.md
Example: New Connection
# In connections.py
class NewConnectionParams(BaseHttpConnectionParams):
"""Parameters for new connection."""
api_key: str = Field(description="API key for authentication")
endpoint: str = Field(description="Specific endpoint")
# In connection module
class NewConnection(ConnectionBase):
def __init__(self, params: NewConnectionParams):
self.params = params
def test_connection(self) -> bool:
# Implementation
pass
Transformations
Adding New Operator
- Implement operator in
fracttal_etl/transform/ - Add specific tests
- Document in
PROMPT_ETL.md
Documentation
- Keep documentation up to date
- Add clear examples
- Use the docs generator to maintain consistency
🔍 Code Review
Review Checklist
- Code follows style guides
- Tests pass and cover functionality
- Documentation updated
- No regressions introduced
- Adequate performance
- Security considered
Approval
Pull requests require: - ✅ At least 1 approval - ✅ Tests passing - ✅ No merge conflicts - ✅ Clear description of changes
📚 Resources
🙏 Acknowledgment
Thanks to all contributors! Your help makes Fracttal ETL Hub better for everyone.
For questions about contributing, open an issue or contact the development team.