Saltar a contenido

Contributing

¡Gracias por tu interés en contribuir a Fracttal ETL Hub! Este documento explica cómo puedes ayudar al proyecto.

Primeros Pasos

1. Configuración del Entorno de Desarrollo

# Clona el repositorio
git clone https://github.com/Fracttal-Tech-S-L/Hub.git
cd Hub

# Crea un entorno virtual
python3 -m venv .venv
source .venv/bin/activate  # En Windows: .venv\Scripts\activate

# Instala dependencias
pip install -e .[dev]

2. Ejecutar Tests

# Ejecutar todos los tests
make tests-all

# Ejecutar un tests específico
make tests-method METHOD=test_connection

3. Verificar Código

# Ejecutar linting
make lint

# Verificar tipos
make type-check

Tipos de Contribuciones

Reportar Bugs

  1. Verifica que el bug no haya sido reportado anteriormente
  2. Crea un issue con:
  3. Descripción clara del problema
  4. Pasos para reproducir
  5. Comportamiento esperado vs actual
  6. Información del entorno (Python version, OS, etc.)

Solicitar Features

  1. Verifica que la feature no exista ya
  2. Crea un issue describiendo:
  3. El problema que soluciona
  4. Casos de uso específicos
  5. Diseño propuesto (opcional)

Contribuir Código

Proceso General

  1. Fork el repositorio
  2. Crea una branch para tu feature: git checkout -b feature/nueva-funcionalidad
  3. Haz tus cambios siguiendo las guías de estilo
  4. Escribe tests para tu código
  5. Ejecuta todos los tests y verificaciones
  6. Commit tus cambios: git commit -m "feat: descripción clara"
  7. Push a tu fork: git push origin feature/nueva-funcionalidad
  8. Crea un Pull Request

Guías de Desarrollo

Estilo de Código
  • Sigue PEP 8 para Python
  • Usa type hints en todas las funciones
  • Documenta con docstrings en formato Google
  • Mantén líneas menores a 88 caracteres
Commits

Usamos Conventional Commits:

feat: nueva funcionalidad
fix: corrección de bug
docs: cambios en documentación
style: cambios de formato
refactor: refactorización de código
test: añadir tests
chore: cambios de mantenimiento
Tests
  • Escribe tests unitarios para toda nueva funcionalidad
  • Mantén cobertura de código > 80%
  • Tests deben ser independientes y rápidos

Áreas de Contribución

Conexiones

Añadir Nueva Conexión

  1. Crear modelo Pydantic en fracttal_etl/connections/httplib/schemas/connections.py
  2. Implementar conexión en módulo correspondiente
  3. Añadir tests en test/
  4. Actualizar documentación en PROMPT_ETL.md

Ejemplo: Nueva Conexión

# En connections.py
class NewConnectionParams(BaseHttpConnectionParams):
    """Parámetros para nueva conexión."""
    api_key: str = Field(description="API key para autenticación")
    endpoint: str = Field(description="Endpoint específico")

# En módulo de conexión
class NewConnection(ConnectionBase):
    def __init__(self, params: NewConnectionParams):
        self.params = params

    def test_connection(self) -> bool:
        # Implementación
        pass

Transformaciones

Añadir Nuevo Operador

  1. Implementar operador en fracttal_etl/transform/
  2. Añadir tests específicos
  3. Documentar en PROMPT_ETL.md

Documentación

  • Mantén la documentación actualizada
  • Añade ejemplos claros
  • Usa el generador de docs para mantener consistencia

Code Review

Checklist para Reviews

  • Código sigue guías de estilo
  • Tests pasan y cubren funcionalidad
  • Documentación actualizada
  • No introduce regressions
  • Performance adecuada
  • Seguridad considerada

Aprobación

Pull requests requieren: - ✅ Al menos 1 aprobación - ✅ Tests pasando - ✅ Sin conflictos de merge - ✅ Descripción clara de cambios

Recursos

Reconocimiento

¡Gracias a todos los contribuidores! Tu ayuda hace que Fracttal ETL Hub sea mejor para todos.


Para preguntas sobre contribución, abre un issue o contacta al equipo de desarrollo.