Skip to main content

pylendar

PyPI Tests

A Python port of the classic BSD calendar(1) reminder tool. You keep a plain-text file of dates, and pylendar tells you which ones are coming up.

$ pylendar -w -W30
Sun Jun 21*	Summer solstice ☀️
Wed Jul  1	Canada Day 🍁
Sat Jul  4	US Independence Day 🦅
Tue Jul 14	World Emoji Day 🙌

Why it exists

The BSD calendar program has been around since Version 7 AT&T UNIX, and the idea behind it is wonderfully simple: a text file where every line is a date and a description, and the program prints whatever falls in the next few days. No database, no sync service, no account to sign up for. Just a file you can grep, diff, and keep in version control alongside everything else.

That simplicity is why it's still worth using. The catch is that the BSD variants have drifted apart over the decades. FreeBSD, macOS, OpenBSD, NetBSD, and Debian each grew their own set of date formats and flags, and none of them are easy to get running on many modern Linux systems.

pylendar brings the idea back as a single, lightweight Python program that:

  • reads them all. It understands the date formats from every major BSD variant, so existing calendar files just work.
  • adds a few niceties. ISO 8601 dates (2026-02-17), automatic age calculation (Pat turns [1990] becomes Pat turns 36), and weekday-relative dates like Sun<Dec 25 (the last Sunday before Christmas).
  • gets the astronomy right. Moon phases, equinoxes, and solstices are pinned down precisely with the astronomy-engine library. Easter and the Chinese New Year land on the right day every year, too.
  • speaks Unicode. Full UTF-8 and emoji support ⭐, so your calendar files read the same everywhere.
  • runs anywhere Python does, and installs in a single command.

pylendar intentionally omits the superuser email mode. On BSD, calendar -a processes every user's calendar file and mails each person their results. pylendar only ever runs as you, on your own files, and never sends mail.

Installing

The fastest way to try it, without installing anything permanently, is with uv:

$ uvx pylendar

To keep it around as a tool on your PATH:

$ uv tool install pylendar

Or add it to a project:

$ uv add pylendar

Because it carries PEP 723 inline metadata, the single pylendar.py source file also runs as a stand-alone script with no installation at all: uv run --script path/to/pylendar.py. It also installs the traditional way with pip install pylendar.

Getting started

Create a starter calendar file with a few commented examples to copy from:

$ pylendar --init
pylendar: starter calendar written to ~/.calendar/calendar

Each line is a date, a single tab, and a description:

Jan 1	New Year's Day
Jul 4	US Independence Day [1776]
2028-07-14	Start of the LA Olympics
* 15	Mid-month reminder
May/MonSecond	2nd Monday in May
Easter	Easter Sunday
DecSolstice	Winter solstice

Add your own dates, then run it:

$ pylendar

By default pylendar shows today's events, plus the next three days when you run it on a Friday. A few options worth knowing:

  • -A 30 looks 30 days ahead
  • -w prints the weekday name in front of each event
  • -t 2026-12-20 pretends it's a different day

Run pylendar --help for the full list, or man pylendar for the complete date-format reference.

Documentation

The manpage is the authoritative reference for every supported date format, command-line option, file-search path, and BSD compatibility note.

See also

License

BSD 3-Clause. See LICENSE.

Metadata

Release files for pylendar 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pylendar 1.0.0
File Size Uploaded
pylendar-1.0.0.tar.gz 104.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pylendar 1.0.0
File Interpreter ABI Platform
pylendar-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 133.1 kB

Release files / pylendar-1.0.0.tar.gz

Download URL pylendar-1.0.0.tar.gz
Size 104.8 kB
Tags Source
SHA-256 checksum
How to use checksums
407aef512ea614094bbe59b24a5b7abab1f53af3a4196bab8fde4c2808da1efd
BLAKE2b-256 checksum
How to use checksums
4b9161231a6ce7cc7920c4a69c54c6dc79a3ce32ce0e9036d2e651759d459b49
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 13, 2026.

Transparency log

Release files / pylendar-1.0.0-py3-none-any.whl

Download URL pylendar-1.0.0-py3-none-any.whl
Size 28.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0e281dc67384c8c7aa6613ca8766bb1a75ace71a2d8e9811b60861a7016926dc
BLAKE2b-256 checksum
How to use checksums
4202b28d493b46eabf9f530ffde6c4b6b7b5ef977168b55a72b1e7fac0459637
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.1.0

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