Dependencias del sistema - dstanziola/app16 GitHub Wiki
Documentación de Dependencias - Sistema de Inventario
Fecha de Creación: 2025-07-17
Última Actualización: 2025-07-17
Versión: 1.0.0
Estado: IMPLEMENTADO
Resumen Ejecutivo
Este documento detalla todas las dependencias del Sistema de Inventario Copy Point S.A., organizadas por categorías funcionales y niveles de importancia crítica. El proyecto implementa Clean Architecture con patrones TDD y DRY.
Dependencias de Producción
Core Framework y Base de Datos
Dependencia |
Versión |
Propósito |
Criticidad |
SQLAlchemy |
>=2.0.20 |
ORM principal para gestión de datos |
CRÍTICA |
aiosqlite |
>=0.19.0 |
Driver asíncrono SQLite |
CRÍTICA |
alembic |
>=1.13.0 |
Sistema de migraciones de BD |
ALTA |
python-dotenv |
1.0.0 |
Gestión de variables de entorno |
ALTA |
Interfaz de Usuario
Dependencia |
Versión |
Propósito |
Criticidad |
PyQt6 |
>=6.4.0 |
Framework principal de UI |
CRÍTICA |
tkcalendar |
>=1.6.1 |
Widget calendario para fechas |
MEDIA |
Pillow |
10.1.0 |
Procesamiento de imágenes |
ALTA |
API y Servicios Web
Dependencia |
Versión |
Propósito |
Criticidad |
fastapi |
>=0.110.0 |
Framework API REST |
ALTA |
uvicorn[standard] |
>=0.27.0 |
Servidor ASGI para FastAPI |
ALTA |
jinja2 |
3.1.2 |
Motor de templates |
MEDIA |
Códigos de Barras y QR
Dependencia |
Versión |
Propósito |
Criticidad |
python-barcode |
0.15.1 |
Generación códigos de barras |
ALTA |
qrcode |
7.4.2 |
Generación códigos QR |
ALTA |
pyzbar |
0.1.9 |
Lectura códigos de barras |
ALTA |
Reportes y Documentos
Dependencia |
Versión |
Propósito |
Criticidad |
reportlab |
4.0.4 |
Generación de reportes PDF |
CRÍTICA |
openpyxl |
3.1.2 |
Procesamiento archivos Excel |
ALTA |
pandas |
2.1.3 |
Análisis y manipulación de datos |
ALTA |
Seguridad y Autenticación
Dependencia |
Versión |
Propósito |
Criticidad |
bcrypt |
4.0.1 |
Hash de contraseñas |
CRÍTICA |
Utilidades del Sistema
Dependencia |
Versión |
Propósito |
Criticidad |
psutil |
>=5.9.0 |
Información del sistema |
MEDIA |
colorama |
0.4.6 |
Colores en terminal |
BAJA |
structlog |
>=23.1.0 |
Sistema de logging estructurado |
ALTA |
Dependencias de Desarrollo
Testing
Dependencia |
Versión |
Propósito |
Criticidad |
pytest |
>=7.4.0 |
Framework de pruebas principal |
CRÍTICA |
pytest-asyncio |
>=0.21.0 |
Soporte pruebas asíncronas |
ALTA |
pytest-cov |
>=4.1.0 |
Cobertura de código |
ALTA |
html-testRunner |
>=1.2.1 |
Reportes HTML de pruebas |
MEDIA |
Análisis de Código
Dependencia |
Versión |
Propósito |
Criticidad |
mypy |
>=1.8.0 |
Verificación de tipos estáticos |
ALTA |
black |
-- |
Formateo automático de código |
ALTA |
isort |
-- |
Ordenamiento de imports |
ALTA |
flake8 |
-- |
Linting y análisis estático |
ALTA |
Documentación y Empaquetado
Dependencia |
Versión |
Propósito |
Criticidad |
pdoc3 |
>=0.10.0 |
Generación documentación API |
MEDIA |
pyinstaller |
5.13.0 |
Empaquetado ejecutables |
ALTA |
Dependencias del Sistema (Built-in Python)
Módulos Estándar Críticos
# Gestión del sistema
import os
import sys
import pathlib
import configparser
import logging
# Interfaz gráfica nativa
import tkinter
from tkinter import messagebox, filedialog, ttk
# Base de datos
import sqlite3
# Utilidades
import json
import csv
import datetime
import decimal
import uuid
import hashlib
import re
import threading
import asyncio
# Testing
import unittest
Arquitectura de Dependencias
Clean Architecture - Capas y Sus Dependencias
┌─────────────────────────────────────┐
│ UI Layer (PyQt6) │
├─────────────────────────────────────┤
│ Application Layer (Services) │
├─────────────────────────────────────┤
│ Domain Layer (Pure Python) │
├─────────────────────────────────────┤
│ Infrastructure Layer (SQLAlchemy) │
└─────────────────────────────────────┘
Inyección de Dependencias
- Service Container: Implementación propia
- Repository Pattern: SQLAlchemy + Repositorios abstractos
- Factory Pattern: Creación de servicios y componentes
Configuración del Entorno
Archivo pyproject.toml
[tool.black]
line-length = 88
target-version = ['py39']
[tool.isort]
profile = "black"
line_length = 88
[tool.flake8]
max-line-length = 88
exclude = .git,__pycache__,env
Archivo pytest.ini
[tool:pytest]
testpaths = tests
python_files = test_*.py
python_classes = Test*
python_functions = test_*
addopts = --strict-markers --strict-config
markers =
unit: Unit tests
integration: Integration tests
slow: Slow tests
Dependencias por Funcionalidad
Gestión de Inventario
- SQLAlchemy (persistencia)
- pandas (análisis)
- structlog (auditoría)
Interface de Usuario
- PyQt6 (ventanas principales)
- tkcalendar (widgets fecha)
- Pillow (imágenes)
Generación de Reportes
- reportlab (PDFs)
- openpyxl (Excel)
- python-barcode (códigos)
- qrcode (códigos QR)
API y Integraciones
- fastapi (endpoints)
- uvicorn (servidor)
- jinja2 (templates)
Seguridad
- bcrypt (passwords)
- python-dotenv (configuración)
Versionado y Compatibilidad
Versiones de Python Soportadas
- Mínima: Python 3.9
- Recomendada: Python 3.11
- Máxima Probada: Python 3.12
Política de Actualización
- Dependencias Críticas: Actualizaciones menores automáticas
- Dependencias Mayores: Revisión manual obligatoria
- Vulnerabilidades: Actualización inmediata
Instalación y Gestión
Instalación de Dependencias de Producción
pip install -r requirements.txt
Instalación Completa (Desarrollo)
pip install -r requirements.txt
pip install black isort flake8 pylint
Verificación de Dependencias
# Verificar instalación
python -c "import pkg_resources; pkg_resources.require(open('requirements.txt').readlines())"
# Auditoría de seguridad
pip audit
# Lista de dependencias instaladas
pip freeze > installed_requirements.txt
Dependencias Opcionales
Desarrollo Avanzado
pylint
- Análisis avanzado de código
bandit
- Análisis de seguridad
memory_profiler
- Profiling de memoria
Producción Empresarial
psycopg2
- Driver PostgreSQL
redis
- Cache distribuido
celery
- Cola de tareas asíncronas
Notas de Compatibilidad
Conflictos Conocidos
- PyQt6 vs tkinter: Utilizados en capas separadas
- SQLAlchemy 2.0: Sintaxis actualizada requerida
- Python 3.12: Algunas dependencias pueden requerir actualización
Recomendaciones de Entorno
- Entorno Virtual: Obligatorio
- Sistema Operativo: Windows 10/11, Linux Ubuntu 20.04+
- Memoria RAM: Mínimo 4GB, Recomendado 8GB
- Espacio en Disco: Mínimo 500MB para dependencias
Licencias
Licencias de Dependencias Principales
- SQLAlchemy: MIT License
- PyQt6: GPL v3 / Commercial
- FastAPI: MIT License
- reportlab: BSD License
- pytest: MIT License
Consideraciones Legales
- PyQt6: Requiere licencia comercial para distribución comercial
- GPL Dependencies: Verificar compatibilidad con licencia del proyecto
Métricas de Dependencias
Estadísticas Actuales
- Total Dependencias: 25 directas
- Dependencias Críticas: 7
- Dependencias de Desarrollo: 8
- Tamaño Total Instalado: ~150MB
- Tiempo de Instalación: ~5 minutos
Evolución del Proyecto
- v1.0.0: 15 dependencias base
- v1.5.0: +5 dependencias (reportes)
- v2.0.0: +5 dependencias (API y testing)
Gestión de Riesgos
Dependencias Críticas Sin Alternativa
- PyQt6: Framework UI principal
- SQLAlchemy: ORM principal
- reportlab: Generación PDF
Plan de Contingencia
- PyQt6 → tkinter: Migración completa UI
- SQLAlchemy → Raw SQL: Reimplementación DAL
- reportlab → Alternativas: weasyprint, xhtml2pdf
Changelog de Dependencias
v1.0.0 (2025-07-17)
- Documentación inicial de dependencias
- Análisis completo del proyecto existente
- Clasificación por criticidad y funcionalidad
Mantenido por: Sistema de Inventario Copy Point S.A.
Contacto: [email protected]
Próxima Revisión: 2025-08-17