o
    3Ihr                     @   sx   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dededed	efd
dZdejd	ee f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urEtd|  td|dd|d}t| | E dH  t|}|dusdS d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_retriesretry_on_status_codesr   )r   getr   json_get_next_pageloggerdebugr   )r
   r   r   sessionr	next_page r   a/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/huggingface_hub/utils/_pagination.pypaginate   s   r   responsec                 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	   
get_logger__name__r   strr   Responser   r   r   r   r   <module>   s   
