o
    .j|                     @   s  d dl Z d dlmZmZ d dlmZ d dlmZ ddlmZm	Z	m
Z
 ejZdd ZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG dd de	ZG dd de	ZG dd de	ZG dd de
ZG dd deZG dd deZG dd  d eZG d!d" d"eZG d#d$ d$e	ZG d%d& d&eZG d'd( d(eZG d)d* d*eZG d+d, d,eZG d-d. d.e
Z G d/d0 d0e
Z!G d1d2 d2e
Z"G d3d4 d4e
Z#G d5d6 d6e
Z$G d7d8 d8e
Z%G d9d: d:e
Z&G d;d< d<e
Z'G d=d> d>e
Z(G d?d@ d@eZ)G dAdB dBeZ*G dCdD dDeZ+G dEdF dFeZ,G dGdH dHeZ-G dIdJ dJeZ.G dKdL dLeZ/G dMdN dNeZ0dS )O    N)datetimetimezone)ClassVar)ns   )BaseElementNamedBaseElementValuedBaseElementc              
   C   s   t | tr^z| t} W nQ tttfy]   ddl}| j|	 d} tj
jtd}tjjtd}|| j|  | krCtd|  |} n| || j|  krVtd|  |} n| t} Y nw | dS )z>coerce datetimes to UTC (assume localtime if nothing is given)r   N)tzinfoz6Cannot coerce datetime %s to UTC. Changed to min-date.z6Cannot coerce datetime %s to UTC. Changed to max-date.z%Y%m%dT%H%M%SZ)
isinstancer   
astimezoneutc_tzOverflowErrorOSError
ValueErrortzlocalreplaceget_localzoneminmaxr
   	utcoffsetloggingerrorstrftime)tsr   mindatemaxdate r   I/home/thesage/.local/lib/python3.10/site-packages/caldav/elements/cdav.py_to_utc_date_string   s$   


r   c                   @   $   e Zd ZU eddZee ed< dS )CalendarQueryCzcalendar-querytagN__name__
__module____qualname__r   r#   r   str__annotations__r   r   r   r   r!   0      
 r!   c                   @   r    )FreeBusyQueryr"   zfree-busy-queryr#   Nr$   r   r   r   r   r+   4   r*   r+   c                   @   r    )
Mkcalendarr"   
mkcalendarr#   Nr$   r   r   r   r   r,   8   r*   r,   c                   @   r    )CalendarMultiGetr"   zcalendar-multigetr#   Nr$   r   r   r   r   r.   <   r*   r.   c                   @   r    )Filterr"   filterr#   Nr$   r   r   r   r   r/   A   r*   r/   c                   @   r    )
CompFilterr"   zcomp-filterr#   Nr$   r   r   r   r   r1   E   r*   r1   c                   @   r    )
PropFilterr"   zprop-filterr#   Nr$   r   r   r   r   r2   I   r*   r2   c                   @   r    )ParamFilterr"   zparam-filterr#   Nr$   r   r   r   r   r3   M   r*   r3   c                       sD   e Zd ZU eddZee ed< ddededd	f fd
dZ	  Z
S )	TextMatchr"   z
text-matchr#   i;octetF	collationnegatereturnNc                    s@   t  j|d | jd u rtd|| jd< |rd| jd< d S d S )N)value)Unexpected value None for self.attributesr6   yesznegate-condition)super__init__
attributesr   )selfr9   r6   r7   	__class__r   r   r=   U   s   

zTextMatch.__init__)r5   F)r%   r&   r'   r   r#   r   r(   r)   boolr=   __classcell__r   r   r@   r   r4   R   s   
 $r4   c                       L   e Zd ZU eddZee ed< d
dedB dedB ddf fdd	Z	  Z
S )	TimeRanger"   z
time-ranger#   Nstartendr8   c                    P   t    | jd u rtd|d urt|| jd< |d ur&t|| jd< d S d S Nr:   rF   rG   r<   r=   r>   r   r   r?   rF   rG   r@   r   r   r=   c   s   

zTimeRange.__init__)NNr%   r&   r'   r   r#   r   r(   r)   r   r=   rC   r   r   r@   r   rE   `      
 ,rE   c                   @   r    )
NotDefinedr"   zis-not-definedr#   Nr$   r   r   r   r   rN   q   r*   rN   c                   @   r    )CalendarDatar"   zcalendar-datar#   Nr$   r   r   r   r   rO   v   r*   rO   c                       rD   )Expandr"   expandr#   NrF   rG   r8   c                    rH   rI   rJ   rK   r@   r   r   r=   }   s   

zExpand.__init__)NrL   r   r   r@   r   rP   z   rM   rP   c                   @   r    )Compr"   compr#   Nr$   r   r   r   r   rR      r*   rR   c                   @   r    )CalendarUserAddressSetr"   zcalendar-user-address-setr#   Nr$   r   r   r   r   rT      r*   rT   c                   @   r    )CalendarUserTyper"   zcalendar-user-typer#   Nr$   r   r   r   r   rU      r*   rU   c                   @   r    )CalendarHomeSetr"   zcalendar-home-setr#   Nr$   r   r   r   r   rV      r*   rV   c                   @   r    )Calendarr"   calendarr#   Nr$   r   r   r   r   rW      r*   rW   c                   @   r    )CalendarDescriptionr"   zcalendar-descriptionr#   Nr$   r   r   r   r   rY      r*   rY   c                   @   r    )CalendarTimeZoner"   zcalendar-timezoner#   Nr$   r   r   r   r   rZ      r*   rZ   c                   @   r    )SupportedCalendarComponentSetr"   z supported-calendar-component-setr#   Nr$   r   r   r   r   r[      r*   r[   c                   @   r    )SupportedCalendarDatar"   zsupported-calendar-datar#   Nr$   r   r   r   r   r\      r*   r\   c                   @   r    )MaxResourceSizer"   zmax-resource-sizer#   Nr$   r   r   r   r   r]      r*   r]   c                   @   r    )MinDateTimer"   zmin-date-timer#   Nr$   r   r   r   r   r^      r*   r^   c                   @   r    )MaxDateTimer"   zmax-date-timer#   Nr$   r   r   r   r   r_      r*   r_   c                   @   r    )MaxInstancesr"   zmax-instancesr#   Nr$   r   r   r   r   r`      r*   r`   c                   @   r    )MaxAttendeesPerInstancer"   zmax-attendees-per-instancer#   Nr$   r   r   r   r   ra      r*   ra   c                   @   r    )Allpropr"   allpropr#   Nr$   r   r   r   r   rb      r*   rb   c                   @   r    )ScheduleTagr"   zschedule-tagr#   Nr$   r   r   r   r   rd      r*   rd   c                   @   r    )ScheduleInboxURLr"   zschedule-inbox-URLr#   Nr$   r   r   r   r   re      r*   re   c                   @   r    )ScheduleOutboxURLr"   zschedule-outbox-URLr#   Nr$   r   r   r   r   rf      r*   rf   c                   @   r    )ScheduleResponser"   zschedule-responser#   Nr$   r   r   r   r   rg      r*   rg   c                   @   (   e Zd ZU dZeddZee ed< dS )Responsezc
    https://datatracker.ietf.org/doc/html/rfc6638#section-10.2
    Child of schedule-response
    r"   responser#   N	r%   r&   r'   __doc__r   r#   r   r(   r)   r   r   r   r   ri         
 ri   c                   @   rh   )	RecipientzZ
    https://datatracker.ietf.org/doc/html/rfc6638#section-10.3
    Child of response
    r"   	recipientr#   Nrk   r   r   r   r   rn      rm   rn   c                   @   rh   )RequestStatuszZ
    https://datatracker.ietf.org/doc/html/rfc6638#section-10.4
    Child of response
    r"   zrequest-statusr#   Nrk   r   r   r   r   rp      rm   rp   )1r   r   r   typingr   caldav.lib.namespacer   baser   r   r	   utcr   r   r!   r+   r,   r.   r/   r1   r2   r3   r4   rE   rN   rO   rP   rR   rT   rU   rV   rW   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rd   re   rf   rg   ri   rn   rp   r   r   r   r   <module>   sT   #		