@@ -2,6 +2,7 @@ import datetime
22from _typeshed import Incomplete , SupportsItems
33from collections .abc import Callable
44from typing import Any , ClassVar , Final , Literal , overload
5+ from typing_extensions import TypeIs
56
67from .caselessdict import CaselessDict
78from .parser import Contentline , Contentlines
@@ -22,6 +23,8 @@ __all__ = [
2223 "Todo" ,
2324 "component_factory" ,
2425 "get_example" ,
26+ "IncompleteComponent" ,
27+ "InvalidCalendar" ,
2528]
2629
2730def get_example (component_directory : str , example_name : str ) -> bytes : ...
@@ -31,6 +34,9 @@ class ComponentFactory(CaselessDict[Incomplete]):
3134
3235INLINE : CaselessDict [int ]
3336
37+ class InvalidCalendar (ValueError ): ...
38+ class IncompleteComponent (ValueError ): ...
39+
3440class Component (CaselessDict [Incomplete ]):
3541 name : ClassVar [str | None ]
3642 required : ClassVar [tuple [str , ...]]
@@ -71,16 +77,54 @@ class Component(CaselessDict[Incomplete]):
7177 def to_ical (self , sorted : bool = True ) -> bytes : ...
7278 def __eq__ (self , other : Component ) -> bool : ... # type: ignore[override]
7379
80+ # type_def is a TypeForm
81+ def create_single_property (prop : str , value_attr : str , value_type : tuple [type , ...], type_def : Any , doc : str ) -> property : ...
82+ def is_date (dt : datetime .date ) -> bool : ... # TypeIs[datetime.date and not datetime.datetime]
83+ def is_datetime (dt : datetime .date ) -> TypeIs [datetime .datetime ]: ...
84+
7485class Event (Component ):
7586 name : ClassVar [Literal ["VEVENT" ]]
7687 @classmethod
7788 def example (cls , name : str ) -> Event : ...
89+ @property
90+ def DTSTART (self ) -> datetime .date | datetime .datetime | None : ...
91+ @DTSTART .setter
92+ def DTSTART (self , value : datetime .date | datetime .datetime | None ) -> None : ...
93+ @property
94+ def DTEND (self ) -> datetime .date | datetime .datetime | None : ...
95+ @DTEND .setter
96+ def DTEND (self , value : datetime .date | datetime .datetime | None ) -> None : ...
97+ @property
98+ def DURATION (self ) -> datetime .timedelta | None : ...
99+ @DURATION .setter
100+ def DURATION (self , value : datetime .timedelta | None ) -> None : ...
101+ @property
102+ def duration (self ) -> datetime .timedelta : ...
103+ @property
104+ def start (self ) -> datetime .date | datetime .datetime : ...
105+ @start .setter
106+ def start (self , value : datetime .date | datetime .datetime | None ) -> None : ...
107+ @property
108+ def end (self ) -> datetime .date | datetime .datetime : ...
109+ @end .setter
110+ def end (self , value : datetime .date | datetime .datetime | None ) -> None : ...
78111
79112class Todo (Component ):
80113 name : ClassVar [Literal ["VTODO" ]]
81114
82115class Journal (Component ):
83116 name : ClassVar [Literal ["VJOURNAL" ]]
117+ @property
118+ def DTSTART (self ) -> datetime .date | datetime .datetime | None : ...
119+ @DTSTART .setter
120+ def DTSTART (self , value : datetime .date | datetime .datetime | None ) -> None : ...
121+ @property
122+ def start (self ) -> datetime .date | datetime .datetime : ...
123+ @start .setter
124+ def start (self , value : datetime .date | datetime .datetime | None ) -> None : ...
125+ end = start
126+ @property
127+ def duration (self ) -> datetime .timedelta : ...
84128
85129class FreeBusy (Component ):
86130 name : ClassVar [Literal ["VFREEBUSY" ]]
0 commit comments