fastapi>=0.115,<1.0
uvicorn[standard]>=0.32,<1.0
pydantic>=2.9,<3.0
pyswisseph>=2.10,<3.0

# Geo y husos horarios.
#
# `tzdata` explícito: las imágenes slim no lo traen, y sin él zoneinfo no
# resuelve nada — todos los offsets históricos saldrían mal, en silencio.
#
# `timezonefinder`: el rango es el que se ha PROBADO, no el que parecía
# prudente. Lo que varía entre versiones es qué devuelve para un punto en mar
# abierto —unas dan None, otras un «Etc/GMT+X»— y de eso depende una rama del
# resolutor. La suite entera pasa con 6.6.3 y con 8.3.0, así que el rango
# cubre las dos; se excluye la 9 porque todavía no existe nada que probar.
#
# Aquí había un `geopy`. Se ha quitado: la geocodificación se hace con urllib
# a pelo, en app/services/geo/geocoding.py, porque hacía falta controlar el
# límite de una petición por segundo y la caché desde un único punto, y
# envolver una librería para desactivarle casi todo no aporta nada.
timezonefinder>=6.5,<9.0
tzdata>=2024.1
