python-dateutil

Powerful extensions to Python's datetime module for parsing, deltas, recurrence, and timezones.

Library
PyPI
v3.0.0
2,641 stars
Apache-2.0 OR BSD-3-Clause

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
88 /100 Excellent
Development Activity 100
Maintenance 72
Community 80
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
85 /100 Excellent
Architecture 85
Code Quality 85
Innovation 80
Learning Curve 90

python-dateutil is the de facto standard library for anything Python’s built-in datetime module doesn’t handle out of the box. It adds fuzzy natural-language date parsing, calendar-correct relative date arithmetic, RFC 2445 (iCalendar) recurrence rules, and comprehensive timezone resolution against system and Olson tz data. First released in 2003 and now downloaded hundreds of millions of times a week, it underpins countless higher-level libraries (including pandas) that need robust date and time handling.

The package is organized into small, independently importable submodules — parser, relativedelta, rrule, tz, easter, and utils — so consumers pay only for what they use. A strict test suite (including Hypothesis-based property tests and warnings-as-errors CI) and years of careful deprecation handling have made it one of the most trusted low-level building blocks in the Python ecosystem.

What You Get

  • parser.parse() for fuzzy, locale-tolerant parsing of almost any date/time string format into a native datetime
  • relativedelta for calendar-correct arithmetic (e.g. adding a month without manual day-overflow handling)
  • rrule implementing the full iCalendar (RFC 2445) recurrence-rule specification, including recurrence sets and string parsing
  • tz module with tzfile, tzoffset, tzlocal, gettz(), and Windows registry-based timezone support backed by Olson tz data
  • easter() for computing Easter Sunday under Western, Orthodox, or Julian algorithms
  • isoparser for strict, fast ISO-8601 parsing when input format is known and controlled

Common Use Cases

  • Parsing user-submitted or scraped date strings of unknown format into usable datetime objects
  • Computing recurring schedules (billing cycles, reminders, recurring events) via rrule
  • Calendar-aware date math such as “three months from today” or “the last weekday of this month”
  • Resolving and converting between timezones reliably across Linux, macOS, and Windows
  • Backing higher-level data and scheduling libraries that need dependable date/time primitives

Under The Hood

Architecture: dateutil is organized into clearly separated submodules under src/dateutil/ — parser/ (_parser.py holds the core tokenizer and parse() entry point, isoparser.py handles strict ISO-8601 parsing), tz/ (tz.py implements tzfile, tzoffset, tzlocal, tzwin, and gettz() resolution against system/Olson zoneinfo data, backed by _common.py’s shared ambiguity helpers), rrule.py (a single ~1700-line module implementing the iCalendar RFC 2445 recurrence engine), relativedelta.py (the relativedelta/weekday classes for calendar-aware arithmetic), and easter.py/utils.py for narrow utilities. Each submodule is lazily importable via a custom __getattr__ in __init__.py, so consumers pay import cost only for the piece they use.

Tech Stack: A pure-Python package targeting Python 2.7 and 3.3+, with a single runtime dependency on six for Py2/3 compatibility shims — evidence of its long legacy tail. Build tooling is classic setuptools plus setuptools_scm for version derivation from git tags, packaged from a src/ layout. CI spans GitHub Actions and AppVeyor for Windows coverage, with codecov tracking and pre-commit hooks for lint.

Code Quality: Testing is thorough — tests/ mirrors the module layout with dedicated suites for the parser, rrule, tz, relativedelta, easter, and isoparser modules, plus a property/ subdirectory using Hypothesis for property-based testing of parsing and recurrence edge cases. pytest is configured with filterwarnings = error, so any uncaught DeprecationWarning fails the suite — a strict signal of deliberate API stewardship. Deprecated private functions (_timelex, _tzparser, _resultbase) are explicitly wrapped to emit warnings rather than silently removed.

API Design: The public surface is small and memorable — parse(), relativedelta(), rrule(), and tz.gettz() — each usable independently with minimal boilerplate. The tradeoff is a slightly dated surface: parser.parse() accepts loosely-typed kwargs (dayfirst, yearfirst, fuzzy) rather than a structured config object, and the six dependency signals years of Python 2 compatibility baggage. Documentation is comprehensive — a full Sphinx site on Read the Docs plus docs/examples.rst and a dedicated exercises directory — keeping the learning curve shallow despite the API’s age.

Used by 50 apps in this directory

TypeScript
91%
Apache 2.0

Helicone

AI Development · Analytics · Monitoring

6,235

An open-source AI gateway and LLM observability platform that routes requests to 100+ models while logging cost, latency, and full traces for every call.

View details
74
Repo Health
81
Technical
65
Dependency
Built with
TypeScript 91%
Updated 6 days ago
HTML
45%
LGPL-2.1

Horilla

ERP · Human Resources

1,470

Open-source HRMS covering recruitment, attendance, payroll, and biometrics in one self-hosted Django application.

View details
91
Repo Health
60
Technical
64
Dependency
Built with
HTML 45%
Python 41%
JavaScript 11%
Updated 1 weeks ago
Python
94%
Apache 2.0

knowhere

AI Development · AI Memory · Developer Tools

3,755

Transform messy, unstructured documents into persistent, navigable memory that AI agents can actually use.

View details
83
Repo Health
75
Technical
66
Dependency
Built with
Python 94%
Updated 6 days ago
TypeScript
39%
Apache 2.0

Label Studio

AI Development · Data Engineering

28,540

Label Studio is an open-source, multi-type data labeling platform that lets teams annotate images, text, audio, video, and time series data with a configurable XML-based UI and export annotations in formats ready for any ML framework.

View details
93
Repo Health
87
Technical
64
Dependency
Built with
TypeScript 39%
JavaScript 27%
Python 25%
Updated 1 weeks 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
C++
66%
Other

Memgraph

AI Development · Databases

4,628

High-performance in-memory graph database for AI context and real-time analytics

View details
90
Repo Health
79
Technical
66
Dependency
Built with
C++ 66%
Python 18%
Updated 6 days ago
Python
95%
MIT

MemPalace

AI Agents · AI Development · AI Memory

59,720

Local-first AI memory with verbatim storage, pluggable backends, and 96.6% retrieval recall on LongMemEval — no API key required.

View details
86
Repo Health
84
Technical
73
Dependency
Built with
Python 95%
Updated 1 weeks ago
TypeScript
84%
Apache 2.0

nao

AI Development · Analytics

1,949

Build and deploy an open-source analytics agent that understands your data warehouse and answers business questions in plain English.

View details
85
Repo Health
76
Technical
67
Dependency
Built with
TypeScript 84%
Python 15%
Updated 6 days ago
Python
52%
Other

Odoo

CRM · ERP · Productivity

55,289

The open source ERP platform that integrates CRM, accounting, inventory, manufacturing, and 60+ business apps into one seamlessly connected suite.

View details
87
Repo Health
82
Technical
64
Dependency
Built with
Python 52%
JavaScript 43%
Updated 6 days 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