Skip to main content

Holidays

Public holidays, Easter, and calendar-date questions for OVOS - "is today a holiday", "when is Christmas", "how many days until Easter", "what day of the week is March 3rd". Fully offline, available in English, Danish, German, French, and Spanish.

Tests PyPI version

What it answers

  • Is today a holiday - "is today a holiday".
  • When a named holiday falls - "when is Christmas", including Easter ("when is Easter") computed directly via Computus rather than depending on it appearing in every country's own holiday list (some countries only list Easter Monday, since Easter Sunday is implicit).
  • Days until a named holiday - "how many days until Easter".
  • What weekday a given date falls/fell on - "what day of the week is March 3rd", "what day of the week was May 17th 1990".

Not included: general arbitrary date-to-date arithmetic ("how many days between March 3rd and June 12th") - that's proposed as a small upstream addition to the official ovos-skill-date-time skill instead of a new skill here, since it's a natural extension of what that skill already does, not something specific to holidays. See OpenVoiceOS/ovos-skill-date-time#274.

Usage

"is today a holiday"
"when is christmas"
"how many days until easter"
"what day of the week is march 3rd"
"er i dag en helligdag"                   (Danish)
"hvornår er det jul"                      (Danish)
"hvor mange dage er der til påske"        (Danish)
"ist heute ein feiertag"                  (German)
"wann ist weihnachten"                    (German)
"est-ce que c'est férié aujourd'hui"      (French)
"quand est noël"                          (French)
"es hoy festivo"                          (Spanish)
"cuándo es navidad"                       (Spanish)

Sourcing: computed, not bundled

Unlike ovos-skill-nameday (which needs an actual bundled per-locale dataset), holiday dates are computed live via the Python holidays library - it covers ~100 countries and implements Computus and other calendar rules directly, no network access and no bundled date data at runtime. There is no build_data.py/titles_*.json step the way ovos-skill-wiki-offline/ovos-skill-geography have - just a dependency, a locale-to-country mapping, and a small hand-curated per-locale alias list (locale/<lang>/holiday_aliases.json) for the handful of holidays people are likely to ask about by an everyday name rather than the library's formal calendar name (e.g. Danish "jul" vs. the library's own "Juledag").

Relationship to ovos-skill-nameday

Deliberately kept as a separate skill from name-day (navnedag) lookups, despite both answering "what's special about today" - holidays are computed algorithmically here, while name days need an actual bundled per-locale dataset (closer to ovos-skill-wiki-offline's architecture). See ovos-skill-nameday's README for the fuller reasoning.

Collision risk, verified rather than assumed: an early draft used an invented Danish example ("Sankt Hans") that turned out not to exist in the actual holidays library data at all. The real, checked collision case is Finland's official "flag days" (liputuspäivät), several of which are genuinely named after real people - e.g. Mikael Agricolan päivä (Mikael Agricola Day), where "Mikael" is also an ordinary Finnish given name with its own name day. Resolved by how each skill's intent is scoped: this skill's {holiday} slot captures free text and validates it in code against that locale's own official holiday names (resolve_holiday()) - a bare "Mikael" with no match in that list simply doesn't resolve here, while ovos-skill-nameday's intents require an explicit anchor word ("navnedag" or the local equivalent) and match an open name slot instead, so the two skills' matching utterances don't overlap even though the underlying words can.

Known limitations

  • Country is derived from the locale's region subtag, not a general language-to-country solution. en-us derives US by taking the region subtag directly (BCP-47's language-REGION convention makes this exact, not a guess) - but a locale like es-es still only maps to Spain specifically, not "some representative Spanish-speaking country"; honest for how each of this project's locales is actually defined, not a claim to solve language-to-country mapping in general.
  • Same-day multi-category name merging. When a country's library entry has two categories both naming the same date, holidays joins the names with "; " (e.g. the US's Martin Luther King Jr. Day). Resolution stays consistent either way, but a merged name would sound awkward spoken verbatim if a user's phrasing happened to substring-match into one rather than a curated alias.
  • Regional/subnational holidays aren't included - holidays supports state/province-level subdivisions via a subdivision code, but this skill only requests national-level categories for now.
  • The alias list is hand-curated and incomplete by design - it covers the holidays people are actually likely to ask about by an everyday name per locale; anything not listed still resolves via a substring match against the library's own official names, just less reliably than a curated entry.

See DEVELOPMENT.md for the full reasoning behind each of these, plus two real alias-curation errors and a category- naming bug caught by verifying against the library's actual output rather than assuming it during development.

Install

pip install ovos-skill-holidays

Development

See DEVELOPMENT.md.

Category

Daily

Tags

#holidays #calendar #date-math #easter

Release files for ovos-skill-holidays 0.0.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 ovos-skill-holidays 0.0.2
File Size Uploaded
ovos_skill_holidays-0.0.2.tar.gz 37.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ovos-skill-holidays 0.0.2
File Interpreter ABI Platform
ovos_skill_holidays-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 86.3 kB

Release files / ovos_skill_holidays-0.0.2.tar.gz

Download URL ovos_skill_holidays-0.0.2.tar.gz
Size 37.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c012bb7c88d0bb8de1048be913e9c493543e7d915fe667943c967828c906d0f0
BLAKE2b-256 checksum
How to use checksums
55e66ce7874b134037371c581e0289bdad22ccd1d51e6b12f431d96bfa3ae31f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 18, 2026.

Transparency log

Release files / ovos_skill_holidays-0.0.2-py3-none-any.whl

Download URL ovos_skill_holidays-0.0.2-py3-none-any.whl
Size 48.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f1ea641fbeb3315e858db56f91cccdd8a906df2d588d847e13f41d492cf848e0
BLAKE2b-256 checksum
How to use checksums
d81ca5af960434fea10a7c0c247083679382b82ca7296f62f62e81d1c8f14989
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

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