Open Source · MIT License

AION Lithuanian Market Calendar

A Python package that answers one question and gets it right every time: was that a working day in Lithuania? Every statutory non-working day is computed from article 123 of the Labour Code rather than stored in a table, so the package is correct for 2027, 2040 and any year after — offline, with no update and no network call.

MIT License No API key required No network call Zero dependencies Never needs updating

total PyPI downloads
pip install aion-lithuanian-market-calendar

Why this exists

Most holiday libraries ship a table of dates and a note saying “update this every year.” That table is a liability: it is correct until the December it is not, and nothing in your test suite will tell you when that happens.

Lithuania does not need a table. Every one of its sixteen statutory non-working days is derivable — twelve are fixed calendar dates, two come from Easter, and two are the first Sunday of a named month. So this package computes them. Install it once and it stays correct indefinitely, with no maintenance and nothing to refresh.

That is a deliberate contrast with our Indian market calendar, which does ship a data file — because Indian exchange holidays are announced annually by the exchanges and genuinely cannot be derived. The right design follows the jurisdiction, not the habit.

Užgavėnės is not a day off

Several Lithuanian calendar and accounting websites publish a „nedarbo dienos“ list of seventeen days for 2026. The extra entry is Užgavėnės — Shrove Tuesday, 17 February 2026.

It is absent from article 123. It is a traditional pre-Lent celebration and an ordinary working day. Treating it as a holiday shifts every settlement, invoice and payroll date that crosses it.

This package keeps holidays() at sixteen and exposes Užgavėnės separately through observances(), as a distinct type that cannot enter business-day arithmetic. The test suite asserts that separation for every year from 2024 to 2040.

>>> observances(2026)
(Observance(date=2026-02-17, name_en='Shrove Tuesday (Carnival)',
            name_lt='Užgavėnės'),)

>>> is_business_day("2026-02-17")
True   # it is a working day

We mention this prominently because it is the single easiest way to get a Lithuanian calendar wrong, and because a package that quietly disagrees with the wall calendar owes the reader an explanation.

The sixteen statutory holidays

Names follow article 123 of the Labour Code (Darbo kodeksas, 123 straipsnis „Švenčių dienos“) in nominative form. Article 123 lists fourteen provisions; two of them cover two calendar days each — Easter Sunday with Easter Monday, and 25 with 26 December — which is why sixteen dates fall out of fourteen provisions.

DateEnglishLietuviškai
1 JanuaryNew Year's DayNaujieji metai
16 FebruaryDay of Restoration of the State of LithuaniaLietuvos valstybės atkūrimo diena
11 MarchDay of Restoration of Independence of LithuaniaLietuvos nepriklausomybės atkūrimo diena
moveableEaster SundayŠv. Velykos
moveableEaster MondayVelykų antroji diena
1 MayInternational Labour DayTarptautinė darbo diena
first Sunday of MayMother's DayMotinos diena
first Sunday of JuneFather's DayTėvo diena
24 JuneDay of Dew and St John (Midsummer)Rasos ir Joninių diena
6 JulyStatehood Day and Day of the National AnthemValstybės (Lietuvos karaliaus Mindaugo karūnavimo) ir Tautiškos giesmės diena
15 AugustAssumption DayŽolinė (Švč. Mergelės Marijos ėmimo į dangų diena)
1 NovemberAll Saints' DayVisų Šventųjų diena
2 NovemberDay of Remembrance of the Dead (All Souls' Day)Mirusiųjų atminimo (Vėlinių) diena
24 DecemberChristmas EveŠv. Kūčios
25 DecemberChristmas DayŠv. Kalėdos
26 DecemberSecond Day of ChristmasŠv. Kalėdų antroji diena

No substitute days. Lithuania does not move a holiday that falls on a weekend to the following Monday. Assumption Day on Saturday 15 August 2026 is simply absorbed, and the Monday after is an ordinary working day. This was the highest-risk assumption in the package and it has now been confirmed against the statute and by a Lithuanian native speaker.

What it is for

  • Payments and settlement. Value dates, SEPA cut-offs, T+2, invoice terms and late-payment interest all count working days. Lithuania is the largest EMI and payment-institution licensing hub in the EU, so a great deal of European payment infrastructure settles on this calendar specifically.
  • Payroll and HR. Time sheets, leave accrual, notice periods and holiday premiums are defined against šventės. Getting 6 July wrong is a payroll error, not a cosmetic one.
  • Market data. Nasdaq Vilnius session checks, bar alignment, gap detection, and backtests that must not read a holiday as missing data.
  • Scheduling and SLA. “Three business days” in a contract; a batch job that must not fire on a holiday.
  • Reporting deadlines. Tax and regulatory filings that shift when the due date is not a working day.

Package details

  • License: MIT — use freely in commercial and open-source projects
  • Python: 3.9 and above
  • Dependencies: none
  • Languages: every holiday carries name_en and name_lt
  • Market: Nasdaq Vilnius (XVIL) session checks
  • No account, no API key: works immediately after pip install
  • No network, ever: runs in an air-gapped settlement box or a CI runner with no egress

View on PyPI →

Quick reference

from aion_lithuanian_market_calendar import (
    is_business_day, next_business_day, business_days_between, holiday_on,
)

is_business_day()                      # is today a working day in Lithuania
is_business_day("2026-12-25")          # False
next_business_day("2026-12-24")        # date(2026, 12, 28)
business_days_between("2026-12-20", "2027-01-05")   # 8

holiday_on("2026-06-24").name_lt       # 'Rasos ir Joninių diena'
holiday_on("2026-06-24").name_en       # 'Day of Dew and St John (Midsummer)'

Dates accept a date, a datetime, an ISO string, or None for today. Also available: holidays(year), holidays_between(), observances(year), is_public_holiday(), is_weekend(), previous_business_day(), easter_sunday(year) and is_market_open().

How it is verified

Easter is unit-tested against known dates for 2024, 2025, 2026, 2027, 2030 and 2035 — using the Gregorian (Western) computus, since Lithuania is predominantly Catholic and observes Western Easter. Using the Orthodox date misplaces two holidays every year, and it is the most common bug in hand-rolled European holiday code.

Mother's Day and Father's Day are asserted to fall on a Sunday for every year from 2024 to 2040. The full 2026 date list and every Lithuanian holiday name are pinned in the test suite.

The list and its spellings were checked against the text of article 123 and independently reviewed by a Lithuanian native speaker in September 2026. That review confirmed the sixteen are complete, that Father's Day is the first Sunday of June, and that a holiday falling on a weekend gets no replacement weekday.

Verify the number yourself

curl -sS "https://pypistats.org/api/packages/aion-lithuanian-market-calendar/overall" | python3 -m json.tool

The download counter above is sourced from /api/lithuanian-calendar/public-metrics (backed by PyPIStats, cached hourly). PyPI numbers count download events, not unique humans.