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
- Verifica que el bug no haya sido reportado anteriormente
- Crea un issue con:
- Descripción clara del problema
- Pasos para reproducir
- Comportamiento esperado vs actual
- Información del entorno (Python version, OS, etc.)
Solicitar Features
- Verifica que la feature no exista ya
- Crea un issue describiendo:
- El problema que soluciona
- Casos de uso específicos
- Diseño propuesto (opcional)
Contribuir Código
Proceso General
- Fork el repositorio
- Crea una branch para tu feature:
git checkout -b feature/nueva-funcionalidad - Haz tus cambios siguiendo las guías de estilo
- Escribe tests para tu código
- Ejecuta todos los tests y verificaciones
- Commit tus cambios:
git commit -m "feat: descripción clara" - Push a tu fork:
git push origin feature/nueva-funcionalidad - 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
- Crear modelo Pydantic en
fracttal_etl/connections/httplib/schemas/connections.py - Implementar conexión en módulo correspondiente
- Añadir tests en
test/ - 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
- Implementar operador en
fracttal_etl/transform/ - Añadir tests específicos
- 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.