Skip to content

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

  1. Verify the bug hasn't been reported before
  2. Create an issue with:
  3. Clear description of the problem
  4. Steps to reproduce
  5. Expected vs actual behavior
  6. Environment information (Python version, OS, etc.)

✨ Requesting Features

  1. Verify the feature doesn't already exist
  2. Create an issue describing:
  3. The problem it solves
  4. Specific use cases
  5. Proposed design (optional)

🛠️ Contributing Code

General Process

  1. Fork the repository
  2. Create a branch for your feature: git checkout -b feature/new-functionality
  3. Make your changes following style guides
  4. Write tests for your code
  5. Run all tests and verifications
  6. Commit your changes: git commit -m "feat: clear description"
  7. Push to your fork: git push origin feature/new-functionality
  8. 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

  1. Create Pydantic model in fracttal_etl/connections/httplib/schemas/connections.py
  2. Implement connection in corresponding module
  3. Add tests in test/
  4. 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

  1. Implement operator in fracttal_etl/transform/
  2. Add specific tests
  3. 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.