"""Enumerations for different types in the RFCs.""" from enum import Enum as _Enum class Enum(_Enum): """Enum class that can be pickled.""" def __reduce_ex__(self, _p): """For pickling.""" return self.__class__, (self._name_,) class StrEnum(str, Enum): """Enum for strings.""" class PARTSTAT(StrEnum): """Enum for PARTSTAT from :rfc:`5545`. Attributes: ``NEEDS_ACTION``, ``ACCEPTED``, ``DECLINED``, ``TENTATIVE``, ``DELEGATED``, ``COMPLETED``, ``IN_PROCESS`` """ NEEDS_ACTION = "NEEDS-ACTION" ACCEPTED = "ACCEPTED" DECLINED = "DECLINED" TENTATIVE = "TENTATIVE" DELEGATED = "DELEGATED" COMPLETED = "COMPLETED" IN_PROCESS = "IN-PROCESS" class FBTYPE(StrEnum): """Enum for FBTYPE from :rfc:`5545`. Attributes: ``FREE``, ``BUSY``, ``BUSY-UNAVAILABLE``, ``BUSY-TENTATIVE`` """ FREE = "FREE" BUSY = "BUSY" BUSY_UNAVAILABLE = "BUSY-UNAVAILABLE" BUSY_TENTATIVE = "BUSY-TENTATIVE" class CUTYPE(StrEnum): """Enum for CTYPE from :rfc:`5545`. Attributes: ``INDIVIDUAL``, ``GROUP``, ``RESOURCE``, ``ROOM``, ``UNKNOWN`` """ INDIVIDUAL = "INDIVIDUAL" GROUP = "GROUP" RESOURCE = "RESOURCE" ROOM = "ROOM" UNKNOWN = "UNKNOWN" class RELTYPE(StrEnum): """Enum for RELTYPE from :rfc:`5545`. Attributes: ``PARENT``, ``CHILD``, ``SIBLING`` """ PARENT = "PARENT" CHILD = "CHILD" SIBLING = "SIBLING" class RANGE(StrEnum): """Enum for RANGE from :rfc:`5545`. Attributes: ``THISANDFUTURE``, ``THISANDPRIOR`` """ THISANDFUTURE = "THISANDFUTURE" THISANDPRIOR = "THISANDPRIOR" # deprecated class RELATED(StrEnum): """Enum for RELATED from :rfc:`5545`. Attributes: ``START``, ``END`` """ START = "START" END = "END" class ROLE(StrEnum): """Enum for ROLE from :rfc:`5545`. Attributes: ``CHAIR``, ``REQ-PARTICIPANT``, ``OPT-PARTICIPANT``, ``NON-PARTICIPANT`` """ CHAIR = "CHAIR" REQ_PARTICIPANT = "REQ-PARTICIPANT" OPT_PARTICIPANT = "OPT-PARTICIPANT" NON_PARTICIPANT = "NON-PARTICIPANT" __all__ = [ "PARTSTAT", "FBTYPE", "CUTYPE", "RANGE", "RELATED", "ROLE", "RELTYPE", ]