Saltar a contenido

Configuración del Entorno de Desarrollo

Introducción

Esta guía te ayudará a configurar un entorno de desarrollo completo para GestionExpedienteElectronico_Version1, incluyendo herramientas de desarrollo, debugging, testing y contribución al proyecto.

Prerrequisitos de Desarrollo

Software Obligatorio

Python 3.9.6+

# Verificar versión instalada
python --version

# Si necesitas instalar Python, descargar desde:
# https://www.python.org/downloads/

Git

# Verificar instalación
git --version

# Configurar Git (si es primera vez)
git config --global user.name "Tu Nombre"
git config --global user.email "tu.email@example.com"

Microsoft Excel

Crítico para Desarrollo

Excel debe estar instalado para testing y debugging de la funcionalidad core de automatización COM.

IDEs y Editores Recomendados

Visual Studio Code (Recomendado)

Extensiones esenciales:

{
    "recommendations": [
        "ms-python.python",
        "ms-python.vscode-pylance",
        "ms-python.black-formatter",
        "ms-python.flake8",
        "ms-python.isort",
        "ms-toolsai.jupyter",
        "redhat.vscode-yaml",
        "yzhang.markdown-all-in-one"
    ]
}

PyCharm Professional (Alternativa)

  • Configuración automática de ambientes virtuales
  • Debugging avanzado
  • Integración Git integrada
  • Refactoring tools

Configuración del Proyecto

1. Clonar y Configurar Repositorio

# Opción A: Clonar repositorio principal
git clone https://github.com/HammerDev99/GestionExpedienteElectronico_Version1.git
cd GestionExpedienteElectronico_Version1

# Opción B: Fork + Clone (para contribuciones)
# 1. Hacer fork en GitHub web interface
# 2. Clonar tu fork
git clone https://github.com/TU-USUARIO/GestionExpedienteElectronico_Version1.git
cd GestionExpedienteElectronico_Version1

# 3. Agregar upstream
git remote add upstream https://github.com/HammerDev99/GestionExpedienteElectronico_Version1.git

2. Ambiente Virtual y Dependencias

Crear y Activar Ambiente Virtual

# Crear ambiente virtual
python -m venv .venv

# Activar ambiente virtual
# Windows:
.venv\Scripts\Activate
# Linux/macOS:
source .venv/bin/activate

# Verificar activación (debería mostrar (.venv) en el prompt)
which python  # Linux/macOS
where python   # Windows

Instalar Dependencias de Desarrollo

# Dependencias básicas
pip install --upgrade pip
pip install -r requirements.txt

# Dependencias adicionales para desarrollo
pip install --upgrade \
    pytest>=6.0.0 \
    pytest-cov>=2.0.0 \
    black>=22.0.0 \
    flake8>=4.0.0 \
    isort>=5.0.0 \
    mypy>=0.991 \
    pre-commit>=2.0.0 \
    mkdocs-material>=8.0.0 \
    mkdocstrings[python]>=0.19.0

3. Configuración de Pre-commit Hooks

# Instalar pre-commit
pip install pre-commit

# Configurar hooks (crear .pre-commit-config.yaml)
cat > .pre-commit-config.yaml << EOF
repos:
  - repo: https://github.com/psf/black
    rev: 22.10.0
    hooks:
      - id: black
        args: [--line-length=88]

  - repo: https://github.com/pycqa/isort
    rev: 5.11.4
    hooks:
      - id: isort
        args: [--profile=black]

  - repo: https://github.com/pycqa/flake8
    rev: 6.0.0
    hooks:
      - id: flake8
        args: [--max-line-length=88, --extend-ignore=E203]

  - repo: https://github.com/pre-commit/mirrors-mypy
    rev: v0.991
    hooks:
      - id: mypy
        additional_dependencies: [types-all]
EOF

# Instalar hooks
pre-commit install

Configuración del IDE

Visual Studio Code

1. Configuración de Workspace

Crear .vscode/settings.json:

{
    "python.defaultInterpreterPath": "./.venv/Scripts/python.exe",
    "python.envFile": "${workspaceFolder}/.env",
    "python.linting.enabled": true,
    "python.linting.pylintEnabled": false,
    "python.linting.flake8Enabled": true,
    "python.linting.flake8Args": [
        "--max-line-length=88",
        "--extend-ignore=E203"
    ],
    "python.formatting.provider": "black",
    "python.formatting.blackArgs": [
        "--line-length=88"
    ],
    "python.sortImports.path": "isort",
    "python.sortImports.args": [
        "--profile=black"
    ],
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
        "source.organizeImports": true
    },
    "python.testing.pytestEnabled": true,
    "python.testing.pytestArgs": [
        "src/test"
    ],
    "files.exclude": {
        "**/__pycache__": true,
        "**/*.pyc": true,
        "build/": true,
        "dist/": true,
        ".pytest_cache/": true
    }
}

2. Launch Configuration

Crear .vscode/launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Run Main Application",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/src/__main__.py",
            "console": "integratedTerminal",
            "cwd": "${workspaceFolder}",
            "env": {
                "PYTHONPATH": "${workspaceFolder}/src"
            }
        },
        {
            "name": "Debug Tests",
            "type": "python",
            "request": "launch",
            "module": "pytest",
            "args": [
                "src/test/",
                "-v",
                "--tb=short"
            ],
            "console": "integratedTerminal",
            "cwd": "${workspaceFolder}"
        },
        {
            "name": "Debug Specific Strategy",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/debug_strategy.py",
            "console": "integratedTerminal",
            "args": [
                "SingleCuadernoStrategy"
            ]
        }
    ]
}

3. Tasks Automation

Crear .vscode/tasks.json:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Format Code",
            "type": "shell",
            "command": "${config:python.defaultInterpreterPath}",
            "args": ["-m", "black", "src/"],
            "group": "build",
            "presentation": {
                "echo": true,
                "reveal": "silent",
                "focus": false,
                "panel": "shared"
            }
        },
        {
            "label": "Sort Imports",
            "type": "shell",
            "command": "${config:python.defaultInterpreterPath}",
            "args": ["-m", "isort", "src/"],
            "group": "build"
        },
        {
            "label": "Lint Code",
            "type": "shell",
            "command": "${config:python.defaultInterpreterPath}",
            "args": ["-m", "flake8", "src/"],
            "group": "test"
        },
        {
            "label": "Run Tests",
            "type": "shell",
            "command": "${config:python.defaultInterpreterPath}",
            "args": ["-m", "pytest", "src/test/", "-v"],
            "group": "test"
        },
        {
            "label": "Build Executable",
            "type": "shell",
            "command": "${config:python.defaultInterpreterPath}",
            "args": ["-m", "PyInstaller", "config/main.spec"],
            "group": "build"
        }
    ]
}

Variables de Entorno de Desarrollo

Crear archivo .env

# Configuración de desarrollo
DEBUG=True
LOG_LEVEL=DEBUG
EXCEL_VISIBLE=False

# Rutas de recursos (desarrollo)
TEMPLATE_PATH=src/assets/000IndiceElectronicoC0.xlsm
DATA_PATH=src/assets/
LOGS_PATH=logs/

# Configuración de testing
PYTEST_TIMEOUT=30
TEST_DATA_PATH=src/test/test_data/

# Configuración de build
BUILD_MODE=development
VERSION_CHECK=True

Cargar Variables en Python

# En archivos que necesiten configuración
import os
from pathlib import Path

# Cargar variables de entorno
if Path('.env').exists():
    from dotenv import load_dotenv
    load_dotenv()

DEBUG = os.getenv('DEBUG', 'False').lower() == 'true'
LOG_LEVEL = os.getenv('LOG_LEVEL', 'INFO')

Entorno Listo

Con esta configuración tienes un entorno de desarrollo completo y profesional. Consulta el CLAUDE.md para conocer las mejores prácticas del proyecto.