# API Reference

## icalendar.cal

Calendar is a dictionary like Python object that can render itself as VCAL files according to rfc2445.

These are the defined components.

class `icalendar.cal.``Calendar`(*args, **kwargs)

  This is the base object for an iCalendar file.

class `icalendar.cal.``Component`(*args, **kwargs)

  Component is the base object for calendar, Event and the other components defined in RFC 2445. normally you will not use this class directy, but rather one of the subclasses.

  `add`(name, value, parameters=None, encode=1)

    Add a property.

    Parameters:

    - name (string) – Name of the property.
    - value (Python native type or icalendar property type.) – Value of the property. Either of a basic Python type of any of the icalendar’s own property types.
    - parameters (Dictionary) – Property parameter dictionary for the value. Only available, if encode is set to True.
    - encode (Boolean) – True, if the value should be encoded to one of icalendar’s own property types (Fallback is “vText”) or False, if not.

    Returns: | None

  `add_component`(component)

    Add a subcomponent to this component.

  `content_line`(name, value, sorted=True)

    Returns property as content line.

  `content_lines`(sorted=True)

    Converts the Component and subcomponents into content lines.

  `decoded`(name, default=[])

    Returns decoded value of property.

  classmethod `from_ical`(st, multiple=False)

    Populates the component recursively from a string.

  `get_inline`(name, decode=1)

    Returns a list of values (split on comma).

  `is_empty`()

    Returns True if Component has no items or subcomponents, else False.

  `property_items`(recursive=True, sorted=True)

    Returns properties in this component and subcomponents as: [(name, value), …]

  `set_inline`(name, values, encode=1)

    Converts a list of values into comma seperated string and sets value to that.

  `to_ical`(sorted=True)

    Parameters: | sorted – Whether parameters and properties should be lexicographically sorted.

  `walk`(name=None)

    Recursively traverses component and subcomponents. Returns sequence of same. If name is passed, only components with name will be returned.

class `icalendar.cal.``ComponentFactory`(*args, **kwargs)

  All components defined in rfc 2445 are registered in this factory class. To get a component you can use it like this.

## icalendar.prop

This module contains the parser/generators (or coders/encoders if you prefer) for the classes/datatypes that are used in iCalendar:

4.2 Defined property parameters are:

> ALTREP, CN, CUTYPE, DELEGATED-FROM, DELEGATED-TO, DIR, ENCODING, FMTTYPE, FBTYPE, LANGUAGE, MEMBER, PARTSTAT, RANGE, RELATED, RELTYPE, ROLE, RSVP, SENT-BY, TZID, VALUE

4.3 Defined value data types are:

> BINARY, BOOLEAN, CAL-ADDRESS, DATE, DATE-TIME, DURATION, FLOAT, INTEGER, PERIOD, RECUR, TEXT, TIME, URI, UTC-OFFSET

iCalendar properties have values. The values are strongly typed. This module defines these types, calling val.to_ical() on them will render them as defined in rfc2445.

If you pass any of these classes a Python primitive, you will have an object that can render itself as iCalendar formatted date.

Property Value Data Types start with a ‘v’. they all have an to_ical() and from_ical() method. The to_ical() method generates a text string in the iCalendar format. The from_ical() method can parse this format and return a primitive Python datatype. So it should always be true that:

> x == vDataType.from_ical(VDataType(x).to_ical())

These types are mainly used for parsing and file generation. But you can set them directly.

class `icalendar.prop.``FixedOffset`(offset, name)

  Fixed offset in minutes east from UTC.

class `icalendar.prop.``LocalTimezone`

  Timezone of the machine where the code is running.

class `icalendar.prop.``TypesFactory`(*args, **kwargs)

  All Value types defined in rfc 2445 are registered in this factory class.

  The value and parameter names don’t overlap. So one factory is enough for both kinds.

  `for_property`(name)

    Returns a the default type for a property or parameter

  `from_ical`(name, value)

    Decodes a named property or parameter value from an icalendar encoded string to a primitive python type.

  `to_ical`(name, value)

    Encodes a named value from a primitive python type to an icalendar encoded string.

class `icalendar.prop.``vBinary`(obj)

  Binary property values are base 64 encoded.

class `icalendar.prop.``vBoolean`

  Returns specific string according to state.

class `icalendar.prop.``vCalAddress`

  This just returns an unquoted string.

class `icalendar.prop.``vDDDLists`(dt_list)

  A list of vDDDTypes values.

class `icalendar.prop.``vDDDTypes`(dt)

  A combined Datetime, Date or Duration parser/generator. Their format cannot be confused, and often values can be of either types. So this is practical.

class `icalendar.prop.``vDate`(dt)

  Render and generates iCalendar date format.

class `icalendar.prop.``vDatetime`(dt)

  Render and generates icalendar datetime format.

  vDatetime is timezone aware and uses the pytz library, an implementation of the Olson database in Python. When a vDatetime object is created from an ical string, you can pass a valid pytz timezone identifier. When a vDatetime object is created from a python datetime object, it uses the tzinfo component, if present. Otherwise an timezone-naive object is created. Be aware that there are certain limitations with timezone naive DATE-TIME components in the icalendar standard.

class `icalendar.prop.``vDuration`(td)

  Subclass of timedelta that renders itself in the iCalendar DURATION format.

class `icalendar.prop.``vFloat`

  Just a float.

class `icalendar.prop.``vFrequency`

  A simple class that catches illegal values.

class `icalendar.prop.``vGeo`(geo)

  A special type that is only indirectly defined in the rfc.

class `icalendar.prop.``vInline`

  This is an especially dumb class that just holds raw unparsed text and has parameters. Conversion of inline values are handled by the Component class, so no further processing is needed.

class `icalendar.prop.``vInt`

  Just an int.

class `icalendar.prop.``vPeriod`(per)

  A precise period of time.

class `icalendar.prop.``vRecur`(*args, **kwargs)

  Recurrence definition.

class `icalendar.prop.``vText`

  Simple text.

class `icalendar.prop.``vTime`(*args)

  Render and generates iCalendar time format.

class `icalendar.prop.``vUTCOffset`(td)

  Renders itself as a utc offset.

class `icalendar.prop.``vUri`

  Uniform resource identifier is basically just an unquoted string.

class `icalendar.prop.``vWeekday`

  This returns an unquoted weekday abbrevation.