Desarrollo#
dane-data es software libre (MIT). Los errores y las propuestas se reportan en
GitHub.
Entorno#
El proyecto usa uv:
git clone https://github.com/IntegralIndefinida/DANE-data
cd DANE-data
uv run --extra dev --extra app pytest -q # todas las pruebas
uv run --extra app dane-data app # la aplicación con el código local
Organización del código#
src/dane_data/
├── config.py carpetas de datos (set_paths, variables de entorno, config.json)
├── _io.py lectura robusta de los archivos del DANE (separador, codificación, coma decimal)
├── stats.py tablas, medias y cuantiles ponderados
├── referencias.py salario mínimo, departamentos, diccionarios DDI (data/*.json)
├── geih/ downloader.py · loader.py · indicadores.py · agregados.py
├── eam/ downloader.py · loader.py · indicadores.py
├── cli.py comando dane-data
└── app/ aplicación Streamlit (Inicio.py + paginas/)
Todo lo que ve el usuario está en español: nombres, docstrings, mensajes y textos de la aplicación. Las variables armonizadas van en minúscula y las originales del DANE en mayúscula.
Pruebas#
tests/conftest.pyconstruye carpetas sintéticas de la GEIH y la EAM con las rarezas de cada época. Cuando aparezca una rareza nueva en los archivos del DANE, agréguela a estos datos.Las pruebas de los descargadores usan ZIP en memoria: nunca se conectan a internet.
GitHub Actions (
.github/workflows/pruebas.yml) corre todas las pruebas en cada push amainy en cada pull request, con Python 3.10 (pandas 2) y 3.12 (las versiones deuv.lock).tests/test_docs.pyrevisa que la referencia de la API cubra todo__all__y ejecuta los ejemplos de los docstrings (los que necesitan microdatos llevan# doctest: +SKIP).Si hay datos reales en
$DANE_DATA_TEST_GEIH,$DANE_DATA_TEST_GEIH_EMPALMEo en las carpetas configuradas, las pruebas comparan cada mes con las cifras publicadas por el DANE (tests/datos/dane_publicado.csv, vea Validación). Cuando el DANE publica meses nuevos:uv run --extra app python tests/datos/actualizar_publicado.py sep2026
Documentación#
uv run --extra docs sphinx-build -W -b html docs docs/_build/html
Los docstrings siguen el estilo de NumPy con las secciones en español (
Parámetros,Devuelve,Véase también,Notas,Ejemplos).Las páginas de
docs/api/listan cada función pública;tests/test_docs.pyfalla si falta alguna.Los notebooks (primeros pasos y ejemplos) se publican con sus salidas, porque el servidor de la documentación no tiene los microdatos. Después de cambiar uno, o cuando haya datos nuevos, vuelva a ejecutarlos con los datos locales:
uv run --extra docs python docs/ejecutar_notebooks.py
El script también actualiza las miniaturas de la galería (
docs/_static/galeria/).La documentación se publica sola en GitHub Pages con cada cambio en
main.
Diferencias con la documentación del DANE#
Cuando los datos contradicen lo que publica el DANE (diccionarios, etiquetas, notas metodológicas):
Se sigue a los datos, después de verificarlo con los datos reales o en el ANDA.
Se agrega una fila a la tabla de Diferencias con la documentación del DANE (en el README), con lo que dice el ANDA, lo que muestran los datos, lo que hace
dane-datay los años afectados.Los diccionarios de
data/*.jsonse dejan como los publica el DANE.Se deja un comentario en el código donde se aparta de la documentación.
Publicar una versión#
Actualice la versión en
pyproject.tomly ensrc/dane_data/__init__.py, y corrauv lock.Escriba las notas en
.github/NOTAS_RELEASE.mdy en Novedades.git tag vX.Y.Z && git push origin vX.Y.Z.
El flujo de GitHub Actions corre las pruebas, crea la versión en GitHub con el zip para estudiantes y publica el paquete en PyPI.