tzdata
Python package providing the IANA time zone database as installable, versioned data
Repository Health
Technical Analysis
tzdata is a Python package that ships zic-compiled binaries of the IANA time zone database as pip-installable data, created as part of PEP 615 (support for the IANA time zone database in the standard library’s zoneinfo module). It exists as a fallback for systems that don’t have OS-level time zone data installed, or where that data isn’t in a location Python’s zoneinfo module can find, most notably Windows, minimal containers, and some virtualenv setups.
Unlike most Python packages, tzdata contains almost no logic — its src/tzdata/__init__.py is six lines — and instead is a versioned, redistributable data package. New releases track upstream IANA tzdata releases, so pip install --upgrade tzdata is the standard way to get current time zone rules (e.g. new DST law changes) without upgrading the Python interpreter itself.
What You Get
- zic-compiled IANA time zone binaries for every zone in the IANA database, importable via
zoneinfoonce installed - Regular releases tracking upstream IANA tzdata updates, so time zone rule changes (DST law changes, zone renames) can be picked up via a simple pip upgrade
- A working fallback for platforms without reliable OS time zone data, notably Windows and minimal/slim container images
- Version metadata (
tzdata.IANA_VERSION) so applications can introspect which IANA release is bundled - License compliance data (
licenses/directory) covering the underlying IANA tzdata license terms
Common Use Cases
- Ensuring
zoneinfo.ZoneInfo('America/New_York')resolves correctly in Docker containers built from slim/minimal base images that lack system tzdata - Guaranteeing consistent, versioned time zone behavior across Windows, Linux, and macOS in a cross-platform Python application without depending on the OS’s time zone data
- Pinning a specific IANA tzdata version in a
requirements.txt/pyproject.tomlfor reproducible date/time calculations across deployments - Picking up newly enacted DST or time zone law changes quickly via a package upgrade rather than waiting on an OS update
Under The Hood
Architecture - The package’s actual Python code is minimal by design: src/tzdata/__init__.py (6 lines) exposes version metadata, while src/tzdata/zoneinfo/ and src/tzdata/zones/ contain the compiled IANA zone data itself, structured so Python’s zoneinfo module (or the backports.zoneinfo package on older Python) can locate zone files by standard path (e.g. tzdata.zoneinfo.America.New_York). The repository’s real complexity lives in its build/release tooling: update.py fetches and compiles the latest upstream IANA tzdata release using zic, and bump_version.py/tag_release.sh automate versioning that tracks the upstream IANA release identifier.
Tech Stack - Pure Python packaging using setuptools as the build backend (pyproject.toml + setup.cfg), with isort/pre-commit for repo hygiene. The package has no runtime dependencies of its own — it is consumed by Python’s standard library zoneinfo module or the backports.zoneinfo shim, not by importing tzdata’s Python code directly in most cases.
Code Quality - Testing focuses on the data itself rather than logic: tests/test_contents.py verifies the packaged zone data matches expectations, and tests/test_version.py checks version-string consistency with the upstream IANA release. Given the package is fundamentally a data distribution mechanism rather than an algorithmic library, this test shape (contents + version validation) appropriately targets the actual risk surface — a corrupted or mismatched data release.
API Design - There is effectively no API surface to learn: applications don’t import tzdata directly in normal use, they simply install it so that zoneinfo.ZoneInfo(...) (standard library, Python 3.9+) can find zone data on interpreter startup. This zero-API design is the correct one for a data-only fallback package — the value is in resolving an availability problem, not in providing new functionality to call.
Used by 15 apps in this directory
ArchiveBox
Bookmarks Archiving
Self-hosted web archiving that saves HTML, PDFs, screenshots, media, and code in open formats you own forever
Baserow
No Code Platforms · Databases
Open-source no-code platform to build databases, apps, automations, and AI agents — self-hosted or cloud, with full data ownership.
changedetection.io
Monitoring
Self-hosted website change detection with AI-powered smart alerts, browser automation, price tracking, and 85+ notification channels.
Flagsmith
Developer Tools · Devops · Ab Testing Experimentation
Open-source feature flagging, remote config, and A/B/multivariate testing platform for web, mobile, and server-side apps — self-host or use the hosted SaaS.
Flowfile
Data Engineering
Visual ETL that compiles to Polars — build pipelines on a canvas, export as standalone Python, and run anywhere without platform lock-in.
GrowthBook
Developer Tools · Analytics · Monitoring
Open source feature flags, A/B testing, and warehouse-native experimentation that queries your existing data infrastructure—no data movement required.
Horilla
Human Resources · ERP
Open-source HRMS covering recruitment, attendance, payroll, and biometrics in one self-hosted Django application.
Khoj
AI Assistants · Knowledge Management · Productivity
A self-hostable AI second brain that chats with your documents, searches the web, builds custom agents, and runs entirely on your own LLM.
knowhere
AI Development · Developer Tools
Transform messy, unstructured documents into persistent, navigable memory that AI agents can actually use.