Skip to content

chore(deps): actualiza dependencias y cierra las 7 alertas de Dependabot - #9

Merged
HC-ONLINE merged 1 commit into
mainfrom
chore/update-deps
Oct 20, 2026
Merged

HC-ONLINE merged 1 commit into
mainfrom
chore/update-deps

Conversation

@HC-ONLINE

Copy link
Copy Markdown
Owner

Resuelve las 7 alertas de Dependabot abiertas (todas en starlette 0.41.3) y sincroniza las herramientas de desarrollo.

Cambios

Runtime

Paquete Antes Ahora
fastapi 0.115.6 0.153.0
starlette (transitivo) 0.41.3 1.9.0
uvicorn 0.34.0 0.54.0
pydantic / pydantic-settings 2.10.6 / 2.7.1 2.14.1 / 2.16.1
httpx 0.26.0 0.28.1
redis / hiredis 5.0.1 / 2.3.2 8.1.0 / 3.5.0
prometheus-client 0.19.0 0.26.0
python-json-logger 2.0.7 4.2.0
python-dotenv / python-multipart 1.2.2 / 0.0.31 1.2.4 / 0.0.32

typing-extensions sube a 4.16.0 porque pydantic 2.14.1 lo exige.

Desarrollo

black 26.10.1, flake8 7.4.1, mypy 2.4.0, pytest 9.1.1, pytest-asyncio 1.4.0, pytest-cov 7.1.0, pytest-mock 3.17.0, pre-commit 4.7.0, types-requests 2.33.0.20261006, types-redis 4.6.0.20241004.

.pre-commit-config.yaml

Sincronizado con pyproject.toml (antes usaba versiones muy antiguas, incluso fastapi==0.109.0 y pydantic==2.5.3 en las additional_dependencies del hook de mypy).

Alertas de seguridad cerradas

starlette 1.9.0 cubre todas (la más exigente pedía >= 1.3.1):

  • CVE-2026-48818 — SSRF y robo de credenciales NTLM vía rutas UNC en StaticFiles (high)
  • CVE-2025-62727 — DoS O(n²) al fusionar headers Range en FileResponse (high)
  • CVE-2026-54283 — request.form() ignora max_fields/max_part_size en bodies urlencoded (high)
  • CVE-2026-48710 — falta de validación de header Host (medium)
  • CVE-2026-48817 — métodos HTTP arbitrarios vía getattr en HTTPEndpoint (medium)
  • CVE-2025-54121 — DoS al parsear multipart grande (medium)
  • CVE-2026-54282 — poisons de request.url.hostname (low)

Validación

  • pytest: 61 passed (antes y después), cobertura idéntica 76.83%
  • black --check / flake8 / mypy api/: limpios
  • pre-commit run --all-files: black, flake8 y mypy Passed
  • Arranque real con Redis 7 en Docker (igual que el CI): GET /health 200, GET /metrics 200, POST /chat sin auth 401, body inválido 422
  • Camino de éxito real contra Groq: POST /chat → 200 con respuesta generada y provider_meta.tokens_total; POST /stream → 200 con frames SSE
  • Fallback de los 5 proveedores encadenado correctamente → 503 ALL_PROVIDERS_FAILED estructurado
  • Redis 8.1 validado contra el contenedor real con todos los métodos que usa api/infra/redis_client.py

Riesgo / notas

  • Nuevo warning de runtime: StarletteDeprecationWarning: Using httpx with starlette.testclient is deprecated; install httpx2 instead (solo afecta a TestClient en tests).
  • Redis 5 → 8 es el salto más grande. El comportamiento se verificó contra Redis real, pero redis_client.py:36 usa close(), deprecado desde redis 5.0.1 (ya lo era antes de este PR); conviene migrarlo a aclose() en un PR aparte.
  • En Windows, mixed-line-ending --fix=lf reescribe finales de línea en archivos no tocados por core.autocrlf=true y la ausencia de .gitattributes. Ese churn fue revertido en este PR.

@HC-ONLINE
HC-ONLINE merged commit 7cb3d2a into main Oct 20, 2026
3 checks passed
@HC-ONLINE
HC-ONLINE deleted the chore/update-deps branch October 20, 2026 16:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant