Skip to main content

uydatos

tests PyPI Python Licencia: MIT

In English: strict, dependency-free Python readers for Uruguayan and regional public data (Central Bank of Uruguay exchange rates, ANCAP fuel prices, INIA weather, Salto Grande river stations, Argentina's CPI, Brazil's IPCA, IDE.uy geocoding, RUT/ID check digits). Each reader documents its source's traps and raises instead of silently fixing bad data.

Lectores estrictos de datos públicos de Uruguay y la región, en Python puro (sin dependencias).

La idea es una sola: rechazar en vez de arreglar. Cada fuente de acá tiene al menos una trampa que no da error y produce una serie creíble pero falsa: una respuesta de error guardada como si fuera un mes sin datos, columnas con los nombres invertidos, un archivo que apila publicaciones en vez de ser una serie, una API que sigue sirviendo índices discontinuados. Cada lector conoce las trampas de su fuente, las documenta y levanta una excepción con el motivo.

Módulo Fuente Qué trae La trampa principal
uydatos.bcu Banco Central del Uruguay (web service SOAP) Dólar, Unidad Indexada, peso argentino, real Una respuesta de error se guarda igual y parece un mes sin cotización.
uydatos.ancap ANCAP, catálogo de datos abiertos Precio máximo al público de combustibles Las columnas Unidad y Valor vienen invertidas, y el archivo apila publicaciones.
uydatos.inia INIA, estación Salto Grande Lluvia y temperaturas diarias desde 1970, normales y anomalías El día va de 9:00 a 9:00; un vacío es nulo, no cero.
uydatos.salto_grande Comisión Técnica Mixta de Salto Grande (SOAP) Estaciones hidrometeorológicas de la cuenca del río Uruguay El arreglo SOAP encoded se llama item: buscar Estacion da lista vacía sin error.
uydatos.indec API de series de datos.gob.ar IPC nacional de Argentina, base dic-2016 La API sigue sirviendo las bases 2003 y 2008, discontinuadas.
uydatos.ibge API SIDRA del IBGE IPCA de Brasil, número-índice La tabla trae varias variables; una variación leída como índice no da error.
uydatos.ideuy IDE.uy (direcciones.ide.uy) Coordenadas de una dirección o esquina, con su calidad Ante lo que no encuentra devuelve el centro de la localidad, una puerta vecina u otra calle, sin error.
uydatos.rut Offline Dígito verificador de RUT y cédula Excel convierte el RUT en float y se come el cero inicial.
uydatos.semanas Offline Semanas ISO 8601 (W41) El 01/01/2027 es la 2026-W53.
uydatos.catalogo catalogodatos.gub.uy (CKAN) URLs vigentes de los recursos de un dataset Las URLs de descarga cambian cuando el organismo resube un archivo.

Instalación

pip install uydatos

Requiere Python 3.10 o posterior.

Uso

Cada módulo separa bajar (la única función que sale a internet) de leer (que trabaja sobre el archivo en disco). Así lo bajado queda guardado tal cual vino, y lo que se lee se puede volver a verificar.

from pathlib import Path
from uydatos import bcu

bcu.descargar(9800, "2025-01", "2026-09", Path("datos/bcu"))   # un XML por mes
ui = bcu.leer_serie(Path("datos/bcu"), 9800)                    # {date: valor}

ui_mensual = {f["mes"]: f["promedio"] for f in bcu.promedio_mensual(ui)}
bcu.a_pesos_de({"2025-01": 1000.0}, base="2026-09", ui=ui_mensual)  # pesos constantes
from uydatos.rut import validar_rut, validar_ci

validar_rut(12345678919.0)  # ('dv_ok_estructura_rara', '012345678919'): Excel se había comido el 0
validar_ci("1.234.567-2")    # ('valido', '12345672')
validar_ci("1.234.567-3")    # ('dv_no_valida', '12345673')

Desde la línea de comandos:

python -m uydatos.bcu bajar datos/bcu 2225 2026-01 2026-09
python -m uydatos.bcu serie datos/bcu 2225
python -m uydatos.ancap bajar datos/ancap.csv
python -m uydatos.ancap serie datos/ancap.csv "GASOIL 50-S *"
python -m uydatos.inia bajar datos/inia && python -m uydatos.inia resumen datos/inia
python -m uydatos.salto_grande bajar datos/estaciones.xml
python -m uydatos.salto_grande cerca datos/estaciones.xml -31.383 -57.960
python -m uydatos.indec bajar datos/ipc_ar.json
python -m uydatos.ibge bajar datos/ipca.json
python -m uydatos.catalogo inia-precipitacion-temps-extremas-sg
python -m uydatos.ideuy "Avenida 18 de Julio 1360" --localidad Montevideo --departamento Montevideo

Lo que estos lectores se niegan a hacer

  • Rellenar huecos. Un fin de semana sin cotización devuelve None, salvo que se pida explícitamente el último día hábil (hacia_atras=True), y aun así no salta más de una semana.
  • Convertir un índice en inflación. Eso es una decisión de análisis, no una lectura.
  • Inventar unidades que la fuente no declara.
  • Elegir por vos qué cotización corresponde a un fin fiscal.

Tests

pip install -e ".[test]"
pytest              # sin red: todo con archivos de prueba
pytest -m red       # contra las fuentes reales

Datos

Este repositorio publica código, no datos. Cada fuente tiene sus propias condiciones de uso; los datos de los catálogos de Uruguay se publican bajo la Licencia de Datos Abiertos de Uruguay.

Licencia

MIT. Usalo, adaptalo y compartilo; solo mantené el aviso de autoría.

Metadata

Release files for uydatos 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for uydatos 0.2.1
File Size Uploaded
uydatos-0.2.1.tar.gz 55.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for uydatos 0.2.1
File Interpreter ABI Platform
uydatos-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 91.2 kB

Release files / uydatos-0.2.1.tar.gz

Download URL uydatos-0.2.1.tar.gz
Size 55.0 kB
Tags Source
SHA-256 checksum
How to use checksums
5872c4b1371c42ce9d2d5830f6e0c3d55d6fa0024d04845b8e35902c8303085d
BLAKE2b-256 checksum
How to use checksums
84e88b86c614290ee2ded71f33b5153051cd5fcbca7e957dc940a66d2759b001
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / uydatos-0.2.1-py3-none-any.whl

Download URL uydatos-0.2.1-py3-none-any.whl
Size 36.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
98a962e841ab437e24c4a134f1f76de4cd5a48d2a8b4f235893cd878e16bb38d
BLAKE2b-256 checksum
How to use checksums
559316faf25f4f81c91302365d1274fc977b45beb4eb214f711af4d9a47f3670
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

This release

0.2.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page