Skip to main content

calendary_co

Calendario de festivos oficiales y eventos culturales de Colombia, con soporte para la Ley Emiliani (vía colombian-holidays) y ventana rodante de 3 años (año actual + 2 siguientes).

Instalación

pip install calendary_co

Desarrollo local:

pip install -e "ruta/a/LIBRERIAS py/calendary_co"

Con dependencias de desarrollo (pytest):

pip install -e "ruta/a/LIBRERIAS py/calendary_co[dev]"

Ventana rodante de años

El paquete precalienta automáticamente el año en curso y los dos siguientes. No hace falta añadir años manualmente cada enero:

from datetime import date
from calendary_co import get_active_years, get_full_calendar

# Con fecha de referencia (útil en tests)
ref = date(2026, 7, 2)
print(list(get_active_years(ref)))  # [2026, 2027, 2028]

calendario = get_full_calendar(ref)  # {2026: [...], 2027: [...], 2028: [...]}

Consultas fuera de la ventana activa siguen funcionando (cálculo bajo demanda).

Demo rápido

Script de prueba incluido en el repositorio:

cd "/calendary_co"
pip install -e .
python demo_calendary.py

Muestra festivos y eventos culturales entre dos fechas (edita FECHA_INICIO y FECHA_FIN en el archivo).

API principal

Festivos oficiales

from datetime import date
from calendary_co import is_holiday, get_holiday_name, get_holidays_for_year

d = date(2026, 7, 20)
is_holiday(d)           # True (festivo o domingo)
get_holiday_name(d)     # "Día de la Independencia (Independence Day)"
get_holidays_for_year(2026)  # lista de (fecha, nombre), 18 festivos legales

Consulta por rango (recomendado)

Solo festivos nombrados y eventos culturales entre dos fechas, con día de la semana en español:

from datetime import date
from calendary_co import consultar_festividades, format_consulta_festividades

inicio = date(2026, 6, 1)
fin = date(2026, 6, 30)

resultados = consultar_festividades(inicio, fin)

# Filtrar por ciudad (opcional):
# consultar_festividades(inicio, fin, ciudad="Cali")

# Filtrar por nivel (opcional):
# consultar_festividades(inicio, fin, niveles=["nacional"])
# consultar_festividades(inicio, fin, niveles=["municipal", "regional"])
# consultar_festividades(inicio, fin, niveles=["municipal"])

# resultados["festivos_oficiales"]  -> festivos legales (siempre, independiente del filtro niveles)
# resultados["eventos_culturales_rangos"]  -> culturales agrupados por fechas
# resultados["niveles_aplicados"]  -> niveles usados en la consulta
# resultados["dias"]  -> detalle por dia (uso avanzado)

print(format_consulta_festividades(resultados, inicio, fin))

No incluye días vacíos (sin festivo nombrado ni evento cultural). Los domingos sin actividad cultural no aparecen.

Contexto detallado para un día o rango

from datetime import date
from calendary_co import get_calendar_context, get_calendar_contexts, format_context_for_prompt

ctx = get_calendar_context(date(2026, 12, 27), ciudad="Cali")
# ctx.is_holiday_or_sunday, ctx.holiday_name, ctx.cultural_events, ctx.season

contextos = get_calendar_contexts(date(2026, 7, 14), date(2026, 7, 20), ciudad="Cali")
texto = format_context_for_prompt(contextos)

Validación de temporalidad

Evita mensajes incoherentes (por ejemplo, “Feliz Navidad” en julio):

from datetime import date
from calendary_co import validar_temporalidad_mensaje

validar_temporalidad_mensaje("Feliz Navidad", date(2026, 7, 20))  # False
validar_temporalidad_mensaje("Recuerda tu pago", date(2026, 7, 20))  # True

Eventos incluidos

Festivos oficiales: 18 festivos legales + domingos (Ley Emiliani, Pascua, traslados).

Culturales nacionales: Velitas, Novena de Aguinaldos, Amor y Amistad, Día de la Madre/Padre, Halloween, Semana Santa, etc.

Municipales: ferias y fiestas patronales por municipio (referencia MINCIT), incluyendo San Juan (24 de junio) y Fiestas de San Juan y San Pedro en Tolima y Huila. San Pedro y San Pablo es festivo oficial (Ley Emiliani).

Ferias regionales: Carnaval de Barranquilla, Feria de Cali, Feria de las Flores, Leyenda Vallenata, Carnaval de Negros y Blancos, Feria de Manizales, y más en municipal_events.py.

colombia.co: eventos adicionales desde colombia.co/eventos (API /mark-events/events/{año}/{mes}/es), empaquetados en calendary_co/data/colombia_co_events.json. Actualizar con python scripts/sync_colombia_co_events.py.

Opcionalmente puedes filtrar eventos regionales y municipales pasando ciudad="Nombre del municipio" en las consultas.

Tests

cd "/calendary_co"
python -m pytest tests/ -v

Publicación en PyPI

pip install --upgrade build twine
python -m build
python -m twine upload dist/*

Paquete: pip install calendary_co

Licencia

MIT — Copyright (c) 2026 Alejandro Galicia. Derechos de autor reservados al titular; la licencia permite uso, modificación y distribución libre en proyectos personales, comerciales y de código abierto, con inclusión del aviso de copyright. Ver LICENSE.

Dependencias

  • colombian-holidays>=1.0.0 — festivos oficiales Colombia (Ley Emiliani)
  • python-dateutil>=2.8.2 — cálculo de Pascua y eventos móviles

Metadata

Release files for calendary-co 0.1.2

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

Source distribution (sdist)

Source distribution for calendary-co 0.1.2
File Size Uploaded
calendary_co-0.1.2.tar.gz 23.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for calendary-co 0.1.2
File Interpreter ABI Platform
calendary_co-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 44.0 kB

Release files / calendary_co-0.1.2.tar.gz

Download URL calendary_co-0.1.2.tar.gz
Size 23.4 kB
Tags Source
SHA-256 checksum
How to use checksums
52e5c6b37d19a0afd5a02d6d0f6684cf4fb453f86fdbc2f2a910504bc77397d9
BLAKE2b-256 checksum
How to use checksums
c1f706e8dc26857c003a164385a8f001ea462a80a530753e6aaca3115fe3b8ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release files / calendary_co-0.1.2-py3-none-any.whl

Download URL calendary_co-0.1.2-py3-none-any.whl
Size 20.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c864ab8df6900e85dc4da46cf319fae362ee16f005d6c0fa5284346954466d73
BLAKE2b-256 checksum
How to use checksums
e9b6779265eeea796eae09f482c57b96a5a5ffafe3a0a9b322a844ba2b4f2492
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

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