{"repo":"allenporter/ical","free":true,"listed":false,"github":"https://github.com/allenporter/ical","clone":"git clone https://github.com/allenporter/ical.git","description":"iCalendar rfc 5445 implementation in Python with recurring event support","language":"Python","stars":46,"topics":["calendar","ical","icalendar","ics","rfc5545"],"license":"Apache-2.0","category":"productivity","readme_excerpt":"ical A modern Python RFC 5545 iCalendar library with built-in recurring event support — no companion libraries needed. Why ical? Most Python iCalendar libraries require two separate packages to handle recurring events: ical handles this natively with a single, unified Timeline interface, with a Pythonic API and validated inputs. Feature ical icalendar ics.py --- --- --- --- Built-in recurrence expansion ✅ ❌ needs recurring-ical-events ❌ Pythonic attribute access ( event.start , event.summary ) ✅ ❌ ( event.get('DTSTART').dt ) ✅ Input validation with clear error messages ✅ ❌ ❌ Full type annotations ( py.typed ) ✅ strict ty ✅ v7+ ❌ Application-level store API ✅ ❌ ❌ RFC 7986 / RFC 6868 / RFC 8536 ✅ partial ❌ Active maintenance ✅ ✅ ⚠️ stalled Used By - Home Assistant — powers the Local Calendar, Remote Calendar, and Google Calendar integrations (including serving locally-synced calendars for performance) Installation Or with pip: Requires Python 3.11+. Fetching calendars from a url asynchronously (see below) requires the optional async extra, which pulls in aiohttp : Quickstart Reading an .ics file Parse a calendar file and iterate over events in chronological order, with recurring events automatically expanded: Fetching a remote .ics url Fetching a remote calendar over HTTP without blocking the event loop requires the optional ical[async] extra: An existing aiohttp.ClientSession can be passed in via the session argument to reuse connection pooling; otherwise a session is created ","default_branch":null,"files":null,"tree":[],"storefront":"/r/allenporter","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/allenporter/ical/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}