o
    l>jd                     @   s   d Z ddlmZ ddlmZ ddlmZmZ ddlmZ ddl	m
Z
m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dS )z8Domain models for reminders and related data structures.    )datetime)IntEnum)LiteralOptional)Field)FrozenServiceModelMutableServiceModelc                   @   sJ  e Zd ZU dZeed< eed< eed< dZeed< dZeed< d	Z	e
e ed
< d	Ze
e ed< d	Ze
e ed< dZeed< dZeed< dZeed< dZeed< d	Ze
e ed< eedZee ed< eedZee ed< eedZee ed< eedZee ed< d	Ze
e ed< d	Ze
e ed< d	Ze
e ed< d	Ze
e ed< d	S )Reminderz=A reminder in a reminders list with metadata and related IDs.idlist_idtitle descF	completedNcompleted_datedue_date
start_dater   priorityflaggedall_daydeleted	time_zonedefault_factory	alarm_idshashtag_idsattachment_idsrecurrence_rule_idsparent_reminder_idcreatedmodifiedrecord_change_tag)__name__
__module____qualname____doc__str__annotations__r   r   boolr   r   r   r   r   r   intr   r   r   r   r   listr   r   r   r   r   r   r    r!    r+   r+   ^/home/thesage/.local/lib/python3.10/site-packages/pyicloud/services/reminders/models/domain.pyr	      s.   
 r	   c                   @   s6   e Zd ZU dZed ed< eed< dZee	 ed< dS )ReminderChangeEventz@Incremental reminder change event emitted by ``iter_changes()``.)updatedr   typereminder_idNreminder)
r"   r#   r$   r%   r   r'   r&   r1   r   r	   r+   r+   r+   r,   r-   &   s
   
 r-   c                   @   s   e Zd ZU dZeed< eed< dZee ed< dZe	ed< dZ
ee ed< dZee ed	< d
Zeed< eedZee ed< dZee ed< dZee ed< dS )RemindersListz-A collection of reminders with list metadata.r
   r   Ncolorr   countbadge_emblemsorting_styleFis_groupr   reminder_idsguidr!   )r"   r#   r$   r%   r&   r'   r3   r   r4   r)   r5   r6   r7   r(   r   r*   r8   r9   r!   r+   r+   r+   r,   r2   .   s   
 r2   c                   @   sB   e Zd ZU dZeed< eed< eed< eed< dZee ed< dS )Alarmz?Container for alarm triggers, referenced by Reminder.alarm_ids.r
   	alarm_uidr0   
trigger_idNr!   )r"   r#   r$   r%   r&   r'   r!   r   r+   r+   r+   r,   r:   @   s   
 r:   c                   @   s   e Zd ZdZdZdZdS )	ProximityzGeofence proximity direction.      N)r"   r#   r$   r%   ARRIVINGLEAVINGr+   r+   r+   r,   r=   J   s    r=   c                   @   s   e Zd ZU dZeed< eed< dZeed< dZeed< dZe	ed< dZ
e	ed	< eddd
Ze	ed< ejZeed< dZeed< dZee ed< dS )LocationTriggerz(Location-based alarm trigger (geofence).r
   alarm_idr   r   addressg        latitude	longitudedefaultgeradius	proximitylocation_uidNr!   )r"   r#   r$   r%   r&   r'   r   rD   rE   floatrF   r   rJ   r=   r@   rK   rL   r!   r   r+   r+   r+   r,   rB   Q   s   
 rB   c                   @   sJ   e Zd ZU dZeed< eed< dZeed< dZeed< dZe	e ed	< dS )
URLAttachmentzURL attachment on a reminder.r
   r0   r   urlz
public.urlutiNr!   )
r"   r#   r$   r%   r&   r'   rO   rP   r!   r   r+   r+   r+   r,   rN   c   s   
 rN   c                   @   s   e Zd ZU dZeed< eed< dZeed< dZeed< edddZ	e
ed	< edddZe
ed
< edddZe
ed< dZeed< dZee ed< dS )ImageAttachmentzImage attachment on a reminder.r
   r0   r   file_asset_urlfilenamer   rG   	file_sizewidthheightzpublic.jpegrP   Nr!   )r"   r#   r$   r%   r&   r'   rR   rS   r   rT   r)   rU   rV   rP   r!   r   r+   r+   r+   r,   rQ   m   s   
 rQ   c                   @   sJ   e Zd ZU dZeed< eed< eed< dZee ed< dZ	ee ed< dS )HashtagzTag associated with a reminder.r
   namer0   Nr   r!   )
r"   r#   r$   r%   r&   r'   r   r   r   r!   r+   r+   r+   r,   rW   ~   s   
 rW   c                   @   s    e Zd ZdZdZdZdZdZdS )RecurrenceFrequencyzRecurrence frequency type.r>   r?         N)r"   r#   r$   r%   DAILYWEEKLYMONTHLYYEARLYr+   r+   r+   r,   rY      s    rY   c                   @   s~   e Zd ZU dZeed< eed< ejZeed< e	dddZ
eed< e	dddZeed	< e	ddd
dZeed< dZee ed< dS )RecurrenceRulez)Recurrence rule for a repeating reminder.r
   r0   	frequencyr>   rG   intervalr   occurrence_count   )rH   rI   lefirst_day_of_weekNr!   )r"   r#   r$   r%   r&   r'   rY   r\   ra   r   rb   r)   rc   rf   r!   r   r+   r+   r+   r,   r`      s   
 r`   N)r%   r   enumr   typingr   r   pydanticr   pyicloud.common.modelsr   r   r	   r-   r2   r:   r=   rB   rN   rQ   rW   rY   r`   r+   r+   r+   r,   <module>   s"    

	