U
    ”Ê¹jr  ã                   @   sp   d Z ddlmZmZmZ ddlZddlmZmZm	Z	m
Z
 e
 e¡Zeeeedœdd„Zejee d	œd
d„ZdS )z;Contains utilities to handle pagination on Huggingface Hub.é    )ÚDictÚIterableÚOptionalNé   )Úget_sessionÚhf_raise_for_statusÚhttp_backoffÚlogging)ÚpathÚparamsÚheadersÚreturnc                 c   s‚   t ƒ }|j| ||d�}t|ƒ | ¡ E dH  t|ƒ}|dk	r~t d|› �¡ td|dd|d�}t|ƒ | ¡ E dH  t|ƒ}q4dS )a/  Fetch a list of models/datasets/spaces and paginate through results.

    This is using the same "Link" header format as GitHub.
    See:
    - https://requests.readthedocs.io/en/latest/api/#requests.Response.links
    - https://docs.github.com/en/rest/guides/traversing-with-pagination#link-header
    )r   r   Nz+Pagination detected. Requesting next page: ÚGETé   i­  )Úmax_retriesZretry_on_status_codesr   )r   Úgetr   ÚjsonÚ_get_next_pageÚloggerÚdebugr   )r
   r   r   ÚsessionÚrZ	next_page© r   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/huggingface_hub/utils/_pagination.pyÚpaginate   s    r   )Úresponser   c                 C   s   | j  di ¡ d¡S )NÚnextÚurl)Úlinksr   )r   r   r   r   r   3   s    r   )Ú__doc__Útypingr   r   r   ÚrequestsÚ r   r   r   r	   Z
get_loggerÚ__name__r   Ústrr   ÚResponser   r   r   r   r   Ú<module>   s   
