Skip to content

djangoplicity/djangoplicity-icalendar

Repository files navigation

iCalendar package for Python

The iCalendar package is a parser/generator of iCalendar files for use with Python. It follows the RFC 2445 (iCalendar) specification.

Introduction

I (Max M) have often needed to parse and generate iCalendar files. Finally I got tired of writing ad-hoc tools.

So this is my attempt at making an iCalendar package for Python. The inspiration has come from the email package in the standard lib, which I think is pretty simple, yet efficient and powerful.

The package can both generate and parse iCalendar files, and can easily be used as is.

The aim is to make a package that is fully compliant to RFC 2445, well designed, simple to use and well documented.

News

Example

To open and parse a file:

>>> from icalendar import Calendar, Event
>>> cal = Calendar.from_string(open('test.ics','rb').read())
>>> cal
VCALENDAR({'VERSION': vText(u'2.0'), 'METHOD': vText(u'Request'), 'PRODID': vText(u'-//My product//mxm.dk/')})

>>> for component in cal.walk():
...     component.name
'VCALENDAR'
'VEVENT'
'VEVENT'

To create a calendar and write it to disk:

>>> cal = Calendar()
>>> from datetime import datetime
>>> from icalendar import UTC # timezone
>>> cal.add('prodid', '-//My calendar product//mxm.dk//')
>>> cal.add('version', '2.0')

>>> event = Event()
>>> event.add('summary', 'Python meeting about calendaring')
>>> event.add('dtstart', datetime(2005,4,4,8,0,0,tzinfo=UTC))
>>> event.add('dtend', datetime(2005,4,4,10,0,0,tzinfo=UTC))
>>> event.add('dtstamp', datetime(2005,4,4,0,10,0,tzinfo=UTC))
>>> event['uid'] = '20050115T101010/27346262376@mxm.dk'
>>> event.add('priority', 5)

>>> cal.add_component(event)

>>> f = open('example.ics', 'wb')
>>> f.write(cal.as_string())
>>> f.close()

More documentation

Consult this example for introductory doctests and explanations. Here are two smaller examples.

All modules and classes also have doctests that shows how they work. There is also an interfaces.py file which describes the API.

Mailing list

If you have any comments or feedback on the module, please use the iCalendar mailing list. You can subscribe to it here:

http://codespeak.net/mailman/listinfo/icalendar-dev

We would love to hear use cases, or get ideas for improvements.

There is also a checkins mailing list, if you want to follow development:

http://codespeak.net/mailman/listinfo/icalendar-checkins

Download

You can also check out the development version of iCalendar from subversion, using a command like:

svn co http://codespeak.net/svn/iCalendar/trunk iCalendar

Dependencies

It is dependent on the datetime package, so it requires Python >= 2.3. There are no other dependencies.

License

LGPL. See LICENSE.txt for details.