o
    -wi                     @  s   d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZmZ d dlZer.d dlmZ edZG dd de
ZG d	d
 d
ee ZG dd dee eZdS )    )annotations)abstractmethod)	TYPE_CHECKINGAnyClassVarIteratorMappingProtocolSizedTypeVaroverloadN)DocumentTc                   @  s   e Zd Zd	ddZdS )
_Clientargsr   kwargsreturndict[str, Any]c                 O     d S N )selfr   r   r   r   Q/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/wandb/apis/paginator.pyexecute   s    z_Client.executeN)r   r   r   r   r   r   )__name__
__module____qualname__r   r   r   r   r   r      s    r   c                   @  s   e Zd ZU dZdZded< 	d-d.ddZd/ddZee	d0ddZ
ee	d1ddZe	d2ddZd3ddZd3ddZd0d d!Zed4d$d%Zed5d'd%Zd6d*d%Zd7d+d,ZeZdS )8	Paginatorz8An iterator for paginated objects from GraphQL requests.NzClassVar[Document | None]QUERY2   clientr   	variablesMapping[str, Any]per_pageintc                 C  s,   || _ t|| _|| _g | _d| _d | _d S N)r    dictr!   r#   objectsindexlast_response)r   r    r!   r#   r   r   r   __init__"   s   

zPaginator.__init__r   Iterator[T]c                 C  s
   d| _ | S r%   )r)   r   r   r   r   __iter__2   s   zPaginator.__iter__boolc                 C     t )z+Whether there are more pages to be fetched.NotImplementedErrorr-   r   r   r   more6      zPaginator.more
str | Nonec                 C  r0   )z2The start cursor to use for the next fetched page.r1   r-   r   r   r   cursor<   r4   zPaginator.cursorlist[T]c                 C  r0   )zAConvert the last fetched response data into the iterated objects.r1   r-   r   r   r   convert_objectsB      zPaginator.convert_objectsNonec                 C  s   | j | j| jd dS )z3Update the query variables for the next page fetch.)perPager6   N)r!   updater#   r6   r-   r   r   r   update_variablesG   s   zPaginator.update_variablesc                 C  s   | j j| j| jd| _dS )z4Fetch and store the response data for the next page.)variable_valuesN)r    r   r   r!   r*   r-   r   r   r   _update_responseK   s   zPaginator._update_responsec                 C  s.   | j sdS |   |   | j|   dS )zVFetch the next page, if any, returning True and storing the response if there was one.FT)r3   r=   r?   r(   extendr8   r-   r   r   r   
_load_pageQ   s   zPaginator._load_pager)   r   c                 C  r   r   r   r   r)   r   r   r   __getitem__Z      zPaginator.__getitem__slicec                 C  r   r   r   rB   r   r   r   rC   \   rD   int | sliceT | list[T]c                 C  sV   d}t |tr
|jn|}|r&|t| jd kr&|  }|r&|t| jd ks| j| S )NT   )
isinstancerE   stoplenr(   rA   )r   r)   loadedrJ   r   r   r   rC   _   s   
c                 C  sJ   |  j d7  _ t| j| j kr|  stt| j| j krt| j| j  S )NrH   )r)   rK   r(   rA   StopIterationr-   r   r   r   __next__f   s   zPaginator.__next__)r   )r    r   r!   r"   r#   r$   )r   r,   )r   r/   )r   r5   )r   r7   )r   r:   )r)   r$   r   r   )r)   rE   r   r7   )r)   rF   r   rG   )r   r   )r   r   r   __doc__r   __annotations__r+   r.   propertyr   r3   r6   r8   r=   r?   rA   r   rC   rN   nextr   r   r   r   r      s0   
 



	

	r   c                   @  s:   e Zd ZdZedddZdddZeedd	d
ZdS )SizedPaginatorz1A Paginator for objects with a known total count.r   
int | Nonec                 C  s   t jddd t| S )NzX`.length` is deprecated and will be removed in a future version. Use `len(...)` instead.F)repeat)wandbtermwarnrK   r-   r   r   r   lengthu   s
   zSizedPaginator.lengthr$   c                 C  s*   | j d u r	|   | j d u rtd| j S )NzObject doesn't provide length)_lengthrA   
ValueErrorr-   r   r   r   __len__   s
   

zSizedPaginator.__len__c                 C  r0   r   r1   r-   r   r   r   rY      r9   zSizedPaginator._lengthN)r   rT   )r   r$   )	r   r   r   rO   rQ   rX   r[   r   rY   r   r   r   r   rS   r   s    

rS   )
__future__r   abcr   typingr   r   r   r   r   r	   r
   r   r   rV   wandb_graphql.language.astr   r   r   r   rS   r   r   r   r   <module>   s    ,U