tzdata

Python package providing the IANA time zone database as installable, versioned data

Library
PyPI
v2026.5
121 stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
65 /100 Good
Development Activity 56
Maintenance 52
Community 72
Maturity 60
Momentum 20

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
75 /100 Good
Architecture 70
Code Quality 78
Innovation 55
Learning Curve 95

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 zoneinfo once 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.toml for 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

Python
55%
MIT

LibrePhotos

File Storage

8,111

Self-hosted photo library with AI-powered face recognition, semantic search, and automatic event albums — no cloud required.

View details
84
Repo Health
78
Technical
66
Dependency
Built with
Python 55%
TypeScript 43%
Updated 6 days ago
Python
62%
Apache 2.0

marimo

Data Engineering · Developer Tools

23,309

A reactive Python notebook that eliminates hidden state, runs reproducibly, and deploys as a web app or script — stored as pure Python, built for the AI era.

View details
90
Repo Health
91
Technical
65
Dependency
Built with
Python 62%
TypeScript 37%
Updated 6 days ago
Python
62%
Apache 2.0

Polar

Developer Tools · Ecommerce · Invoicing Finance

10,410

Open source payments infrastructure that turns software into a business — subscriptions, usage-based billing, digital products, and merchant-of-record compliance in one platform.

View details
90
Repo Health
82
Technical
66
Dependency
Built with
Python 62%
TypeScript 31%
Updated 1 weeks ago
Rust
63%
MIT

PostgresML

AI Development · Databases

6,823

Run ML training and LLM inference natively inside PostgreSQL with GPU acceleration — no data movement required.

View details
51
Repo Health
76
Technical
64
Dependency
Built with
Rust 63%
JavaScript 11%
Updated 1 years ago
Python
94%
Apache 2.0

SWIRL

Data Engineering · Databases · Search

3,046

Federated AI search and RAG across 100+ enterprise sources—no data extraction, no vector database required.

View details
61
Repo Health
83
Technical
65
Dependency
Built with
Python 94%
Updated 1 weeks ago
Python
97%
MPL 2.0

Taiga Back

Developer Tools · Project Management

859

Self-hosted agile project management backend with Scrum, Kanban, issue tracking, and a full REST API — built on Django and PostgreSQL.

View details
72
Repo Health
74
Technical
64
Dependency
Built with
Python 97%
Updated 1 months ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers