Source code for icalendar.prop.uri

"""URI values from :rfc:`5545`."""


from typing import Any, ClassVar

from icalendar.compatibility import Self
from icalendar.error import JCalParsingError
from icalendar.parser import Parameters
from icalendar.parser_tools import DEFAULT_ENCODING, to_unicode


[docs] class vUri(str): """URI Value Name: URI Purpose: This value type is used to identify values that contain a uniform resource identifier (URI) type of reference to the property value. Format Definition: This value type is defined by the following notation: .. code-block:: text uri = scheme ":" hier-part [ "?" query ] [ "#" fragment ] Description: This value type might be used to reference binary information, for values that are large, or otherwise undesirable to include directly in the iCalendar object. Property values with this value type MUST follow the generic URI syntax defined in [RFC3986]. When a property parameter value is a URI value type, the URI MUST be specified as a quoted-string value. Examples: The following is a URI for a network file: .. code-block:: text http://example.com/my-report.txt .. code-block:: pycon >>> from icalendar.prop import vUri >>> uri = vUri.from_ical('http://example.com/my-report.txt') >>> uri vUri('http://example.com/my-report.txt') >>> uri.uri 'http://example.com/my-report.txt' """ default_value: ClassVar[str] = "URI" params: Parameters __slots__ = ("params",) def __new__( cls, value: str, encoding: str = DEFAULT_ENCODING, /, params: dict[str, Any] | None = None, ): value = to_unicode(value, encoding=encoding) self = super().__new__(cls, value) self.params = Parameters(params) return self
[docs] def to_ical(self): return self.encode(DEFAULT_ENCODING)
[docs] @classmethod def from_ical(cls, ical): try: return cls(ical) except Exception as e: raise ValueError(f"Expected , got: {ical}") from e
[docs] @classmethod def examples(cls) -> list[Self]: """Examples of vUri.""" return [cls("http://example.com/my-report.txt")]
[docs] def to_jcal(self, name: str) -> list: """The jCal representation of this property according to :rfc:`7265`.""" return [name, self.params.to_jcal(), self.VALUE.lower(), str(self)]
[docs] @classmethod def from_jcal(cls, jcal_property: list) -> Self: """Parse jCal from :rfc:`7265`. Parameters: jcal_property: The jCal property to parse. Raises: ~error.JCalParsingError: If the provided jCal is invalid. """ JCalParsingError.validate_property(jcal_property, cls) return cls( jcal_property[3], Parameters.from_jcal_property(jcal_property), )
@property def ical_value(self) -> str: """The URI.""" return self.uri @property def uri(self) -> str: """The URI.""" return str(self) def __repr__(self) -> str: """repr(self)""" return f"{self.__class__.__name__}({self.uri!r})" from icalendar.param import FMTTYPE, GAP, LABEL, LANGUAGE, LINKREL, RELTYPE, VALUE
__all__ = ["vUri"]