icalendar.parser.content_line module#

parsing and generation of content lines

class icalendar.parser.content_line.Contentline(value, strict=False, encoding='utf-8')[source]#

Bases: str

A content line is basically a string that can be folded and parsed into parts.

classmethod from_ical(ical, strict=False)[source]#

Unfold the content lines in an iCalendar into long content lines.

classmethod from_parts(name, params, values, sorted=True)[source]#

Turn a parts into a content line.

parts()[source]#

Split the line into name, parameters, and unescaped values parts.

Properly handles escaping with backslashes and double-quote sections to avoid corrupting URL-encoded characters in values.

The backslash sequences in the values are unescaped, as for the values of TEXT properties, while URL encoding is preserved. Use raw_parts() to get the values verbatim instead.

Return type:

tuple[str, Parameters, str]

Examples

With parameter:

DESCRIPTION;ALTREP="cid:part1.0001@example.org":The Fall'98 Wild

Without parameters:

DESCRIPTION:The Fall'98 Wild
raw_parts()[source]#

Split the line into name, parameters, and raw values parts.

This is parts() without the unescaping: the values are returned verbatim, preserving both backslash sequences and URL encoding. It is used for RFC 7265 UNKNOWN values, whose real value type—and therefore whose escaping rules—are not known.

See parts() for the parts themselves and for examples.

Return type:

tuple[str, Parameters, str]

strict#
to_ical()[source]#

Long content lines are folded so they are less than 75 characters wide.

value_separator_index()[source]#

Return the index of the colon that separates the value.

This is the first colon that is not inside a quoted parameter section. A colon inside a quoted parameter value (for example ALTREP="http://x") is skipped, and a colon that belongs to the value (TEXT does not escape :) is not mistaken for the separator. Backslash has no special meaning in the parameter grammar (RFC 5545 Section 3.1), so it is treated as an ordinary character.

Return type:

int

Returns:

An integer representing the index position of the separator, or -1 if there is none.

class icalendar.parser.content_line.Contentlines(iterable=(), /)[source]#

Bases: list[Contentline]

I assume that iCalendar files generally are a few kilobytes in size. Then this should be efficient. for Huge files, an iterator should probably be used instead.

classmethod from_ical(st)[source]#

Parses a string into content lines.

to_ical()[source]#

Simply join self.