ics.py vs icalendar

September 11th, 2018


Tried out ics.py and icalendar to parse Google Calendar calendars with Python (without having to write a custom integration).

I preferred ics.py for its much more pythonic interface:

cal = Calendar(requests.get('url of ical file').text)
for evt in cal.events:
	print(evt.name)

Versus icalendar’s much worse documentation and interface (but gives much more raw access to the underlying data):

cal = Calendar.from_ical(requests.get('url of ical file').text)
for component in cal.walk():
	if component.name == "VEVENT":
		print(component.get('summary'))

Unfortunately, the maintainer of ics stopped all open source contribution as of July this year, its featureset is woefully poor (with open PRs for accessing event atteendees and no sign of implementing recurring events via dateutil.rules), so I’ll likely have to use icalendar. Over time, would be nice to build something akin to ics.py with these features (I like the ideas behind the arrow library it uses), but retain icalendar’s ability to drop into the raw fields for unsupported features.