Skip to main content

larzical

iCalendar (RFC 5545) — build and parse .ics — with zero dependencies.

Generate calendar invites and feeds that Google Calendar, Apple Calendar and Outlook accept, and parse the ones they send you. larzical implements the parts of RFC 5545 that matter in practice — and the details hand-rolled .ics generators get wrong: correct TEXT escaping, 75-octet line folding (multibyte-safe), UTC date-times, and CRLF endings.

Install

pip install larzical

Use

from larzical import Calendar, Event, Alarm
from datetime import datetime, date

cal = Calendar(prodid="-//Acme//App//EN", name="Team")
cal.add(Event(
    summary="Launch call",
    start=datetime(2026, 8, 1, 15, 0),
    end=datetime(2026, 8, 1, 16, 0),
    location="Zoom",
    description="Kickoff; agenda attached.",
    attendees=["a@x.com", "b@x.com"],
    alarms=[Alarm(trigger="-PT15M")],
))
cal.add(Event(summary="Company holiday", start=date(2026, 12, 25)))  # all-day

ics = cal.to_ical()               # a valid .ics string, folded + CRLF
Calendar.parse(ics)               # round-trips back to Events

Why it's correct

.ics files fail silently in calendar clients when the low-level rules are wrong. larzical is anchored to the spec:

  • TEXT escaping (3.3.11) — , ; \ and newlines escaped/unescaped.
  • Line folding (3.1) — content lines folded at 75 octets with CRLF , and never split in the middle of a multibyte character.
  • Date-time (3.3.5) — UTC YYYYMMDDTHHMMSSZ; all-day as VALUE=DATE.
  • Round-trip — Calendar.parse(cal.to_ical()) reconstructs the events.

Tests

python -m unittest discover -s tests -v   # 17 tests

The Larz stack

One of 60+ pure-Python, zero-dependency libraries at github.com/larz-scripter. Pairs with larzqr (add a scannable event QR) and larzemail (attach the invite to a MIME email).

License

MIT (c) larz-scripter

Metadata

Release files for larzical 0.1.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 larzical 0.1.0
File Size Uploaded Provenance
larzical-0.1.0.tar.gz 7.4 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 14.3 kB

Release files / larzical-0.1.0.tar.gz

Download URL larzical-0.1.0.tar.gz
Size 7.4 kB
Tags Source
SHA-256 checksum
How to use checksums
20aad171f150d42205bfc09e444998ee38bb05c7bde34542efdde06cc7d7bd3a
BLAKE2b-256 checksum
How to use checksums
d256bc86541c8f2609c735491e8b7c717f8d5de6cedd3cc4ad512f789f53bca3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / larzical-0.1.0-py3-none-any.whl

Download URL larzical-0.1.0-py3-none-any.whl
Size 6.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
64d2b838f133b0a687c214cd34bd59a9cd8a083d3895fb285a218586e0136cd8
BLAKE2b-256 checksum
How to use checksums
1331a4e9a1b1a45ebcfad30e76dfb35acd8e3f503091ed88d40d1e0d868e6c81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Security for larzical 0.1.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

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