Skip to content

Mejora: reorganizar estructura del proyecto (src/, tests/, requirements.txt) #53

@Jandres25

Description

@Jandres25

💡 Descripción

Reorganizar la estructura del proyecto para mejorar la organización, escalabilidad y seguir las mejores prácticas de Python. Actualmente todos los archivos están en la raíz, lo que dificulta la escalabilidad. Se propone separar el código fuente, tests y documentación en carpetas dedicadas.

Funcionalidad a mejorar: Estructura general del proyecto

Cambio propuesto:

  • Crear carpeta src/ para código fuente (calculator. py, main.py, gui.py)
  • Crear carpeta tests/ para tests (test_*. py, conftest.py)
  • Mantener docs/ como está
  • Crear requirements.txt para gestión de dependencias

📁 Estructura Actual vs Propuesta

Actual:

team-practice/
├── calculator.py
├── main.py
├── gui.py
├── test_calculator.py
├── test_gui_calculator.py
├── conftest.py
├── docs/
├── .github/
└── ... 

Propuesta:

team-practice/
├── src/                       # NUEVO - Código fuente
│   ├── __init__.py
│   ├── calculator.py
│   ├── cli.py                 # Renombrar main.py
│   └── gui.py
├── tests/                     # NUEVO - Tests
│   ├── __init__.py
│   ├── conftest.py
│   ├── test_calculator.py
│   └── test_gui.py            # Renombrar test_gui_calculator.py
├── docs/                      # Mantener como está
│   ├── USER_GUIDE.md
│   └── screenshots/
├── .github/
├── README.md
├── CHANGELOG.md
├── LICENSE
├── .gitignore
└── requirements.txt           # NUEVO

📋 Tareas

Reorganización de archivos:

  • Crear carpeta src/ y mover:
    • calculator.pysrc/calculator.py
    • main.pysrc/cli.py (renombrar)
    • gui.pysrc/gui.py
  • Crear carpeta tests/ y mover:
    • test_calculator.pytests/test_calculator. py
    • test_gui_calculator.pytests/test_gui.py (renombrar)
    • conftest.pytests/conftest.py
  • Crear archivos __init__.py en src/ y tests/

Nuevos archivos:

  • Crear requirements.txt con contenido:
    pytest>=7.0.0
  • Crear src/__init__.py con imports del paquete

Actualización de código:

  • Actualizar imports en src/cli.py (de calculator a src.calculator)
  • Actualizar imports en src/gui.py (de calculator a src.calculator)
  • Actualizar imports en tests/test_calculator.py (a src.calculator)
  • Actualizar imports en tests/test_gui.py (a src.gui)
  • Actualizar .github/workflows/ci.yml con nuevas rutas de tests
  • Actualizar README.md con nuevos comandos de ejecución
  • Verificar que no se requiera actualizar .gitignore

Verificación:

  • Ejecutar tests y verificar que todos pasen: pytest tests/ -v
  • Verificar que GUI funcione: python src/gui.py
  • Verificar que CLI funcione: python src/cli.py
  • Verificar que CI/CD pase en GitHub Actions

🎯 Beneficios

  1. ✅ Separación clara entre código, tests y documentación
  2. ✅ Escalabilidad: Fácil agregar más módulos
  3. ✅ Profesionalismo: Estructura estándar de Python
  4. ✅ Mejores imports: from src.calculator import ...
  5. ✅ Testing estándar: pytest tests/
  6. ✅ Gestión de dependencias clara con requirements.txt
  7. ✅ Onboarding más fácil para nuevos colaboradores

📝 Notas Adicionales

  • tkinter NO se incluye en requirements.txt (viene con Python)
  • La carpeta docs/ se mantiene intacta
  • main.py se renombra a cli.py para mayor claridad
  • Archivos de configuración permanecen en raíz
  • Todo código nuevo debe ir en src/ después de esta reorganización
  • Todos los tests nuevos deben ir en tests/

✅ Criterios de Aceptación

  • Estructura de carpetas creada correctamente
  • Todos los archivos movidos sin pérdida de funcionalidad
  • Imports actualizados en todos los archivos
  • requirements.txt creado
  • README.md actualizado
  • CI/CD funcionando con nueva estructura
  • Todos los tests pasan
  • GUI funciona correctamente
  • CLI funciona correctamente

Metadata

Metadata

Assignees

Labels

documentaciónCambios en README, docstrings, etc.en progresoTarea que está siendo trabajadamejoraMejora a funciones existentes

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions