o
    l>jb                     @  s  d Z ddlm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mZ ddlmZ dd	lmZ G d
d deZeddG dd dZeddG dd dZedddG d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"d1S )2z;Typed domain models for the modern Photos CloudKit service.    )annotations)	dataclass)datetime)AnyOptional)Field)CKQueryFilterByCKRecordCKZoneIDReq)CKModel)PyiCloudExceptionc                      s*   e Zd ZdZdddd fd
dZ  ZS )PhotosServiceExceptionzPhoto service exception.N)photoalbumr   'PhotoAsset | None'r   'BasePhotoAlbum | None'returnNonec                  s   t  j|  || _|| _d S )N)super__init__r   r   )selfr   r   args	__class__ ]/home/thesage/.local/lib/python3.10/site-packages/pyicloud/services/photos_cloudkit/models.pyr      s   
zPhotosServiceException.__init__)r   r   r   r   r   r   )__name__
__module____qualname____doc__r   __classcell__r   r   r   r   r      s
    r   T)slotsc                   @  sh   e Zd ZU dZded< ded< ded< ded< ded	< d
Zded< d
Zded< d
Zded< dddZd
S )PhotoResourcez,A downloadable photo/video resource variant.strkeyfilenameOptional[str]urlzOptional[int]sizetypeNchecksumwidthheightr   dict[str, Any]c                 C  s"   | j | j| j| j| j| j| jdS )z5Return a compatibility dict for legacy callers/tests.r%   r'   r(   r)   r*   r+   r,   r.   )r   r   r   r   as_dict+   s   zPhotoResource.as_dict)r   r-   )	r   r   r   r   __annotations__r*   r+   r,   r/   r   r   r   r   r"      s   
 r"   c                   @  s:   e Zd ZU dZded< ded< ded< ded< d	ed
< dS )PhotoChangeEventz:A zone change event surfaced by ``icloud photos changes``.r#   kindrecord_namer&   record_typebooldeletedzOptional[datetime]modifiedNr   r   r   r   r0   r   r   r   r   r1   9   s   
 r1   )r!   frozenc                   @  s6   e Zd ZU dZded< ded< ded< dZd	ed
< dS )SmartAlbumSpecz0Static configuration for one Photos smart album.z'ObjectTypeEnum'obj_typez'ListTypeEnum'	list_typez'DirectionEnum'	directionr   ztuple[CKQueryFilterBy, ...]query_filtersN)r   r   r   r   r0   r>   r   r   r   r   r:   D   s   
 r:   c                   @     e Zd ZU dZded< dS )PhotosBatchCountFieldValuez2Minimal wrapper for the Hyperion item count value.intvalueNr8   r   r   r   r   r@   N      
 r@   c                   @  r?   )PhotosBatchCountFieldsz5Fields envelope returned by the Hyperion count query.r@   	itemCountNr8   r   r   r   r   rD   T   rC   rD   c                   @  r?   )PhotosBatchCountRecordz2One record inside a Hyperion count batch response.rD   fieldsNr8   r   r   r   r   rF   Z   rC   rF   c                   @  $   e Zd ZU dZeedZded< dS )PhotosBatchCountResponseBatchz8One batch entry returned by the Hyperion count endpoint.default_factoryzlist[PhotosBatchCountRecord]recordsN)r   r   r   r   r   listrL   r0   r   r   r   r   rI   `      
 rI   c                   @  rH   )PhotosBatchCountResponsez;Response payload for Photos' internal batch count endpoint.rJ   z#list[PhotosBatchCountResponseBatch]batchN)r   r   r   r   r   rM   rP   r0   r   r   r   r   rO   f   rN   rO   c                   @  s&   e Zd ZU dZdZded< ded< dS )PhotosBatchCountStringListValuez<STRING_LIST filter value used by the Hyperion count request.STRING_LISTr#   r)   z	list[str]rB   N)r   r   r   r   r)   r0   r   r   r   r   rQ   l   s   
 rQ   c                   @  s*   e Zd ZU dZded< ded< ded< dS )PhotosBatchCountFilterz6Single filter envelope for the Hyperion count request.r#   	fieldName
comparatorrQ   
fieldValueNr8   r   r   r   r   rS   s   s
   
 rS   c                   @  s"   e Zd ZU dZded< ded< dS )PhotosBatchCountQueryz5Internal Photos query object for album/member counts.r#   
recordTyperS   filterByNr8   r   r   r   r   rW   {   s   
 rW   c                   @  s2   e Zd ZU dZded< ded< ded< ded	< d
S )PhotosBatchCountRequestBatchz6One batch entry posted to the Hyperion count endpoint.rA   resultsLimitrW   queryr5   zoneWider
   zoneIDNr8   r   r   r   r   rZ      s   
 rZ   c                   @  r?   )PhotosBatchCountRequestz:Request payload for Photos' internal batch count endpoint.z"list[PhotosBatchCountRequestBatch]rP   Nr8   r   r   r   r   r_      rC   r_   c                   @  s*   e Zd ZU dZdZded< dZded< dS )PhotosUploadErrorzOne upload-image-ws error item.Nz
str | Nonecodemessage)r   r   r   r   ra   r0   rb   r   r   r   r   r`      s   
 r`   c                   @  sB   e Zd ZU dZeedZded< eedZded< dZ	ded	< dS )
PhotosUploadResponsez!Upload-image-ws response payload.rJ   zlist[CKRecord]rL   zlist[PhotosUploadError]errorsNzbool | NoneisDuplicate)
r   r   r   r   r   rM   rL   r0   rd   re   r   r   r   r   rc      s
   
 rc   F   )DirectionEnumListTypeEnumObjectTypeEnum)BasePhotoAlbum
PhotoAssetN)*r   
__future__r   dataclassesr   r   typingr   r   pydanticr   pyicloud.common.cloudkitr   r	   r
   pyicloud.common.cloudkit.baser   pyicloud.exceptionsr   r   r"   r1   r:   r@   rD   rF   rI   rO   rQ   rS   rW   rZ   r_   r`   rc   	constantsrg   rh   ri   servicerj   rk   r   r   r   r   <module>   s:    

			