
    \j                         d Z ddlmZ ddlmZ ddlZddlmZmZm	Z	m
Z
  e
j                  e      Zddedeeeeef      z  d	ed
edz  def
dZdej(                  dedz  fdZy)z;Contains utilities to handle pagination on Huggingface Hub.    )Iterable)AnyN   )get_sessionhf_raise_for_statushttp_backoffloggingpathparamsheaderstimeoutreturnc              #   d  K   t               }|j                  | |||      }t        |       |j                         E d{    t	        |      }|Yt
        j                  d|        t        d|||      }t        |       |j                         E d{    t	        |      }|Xyy7 k7 w)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   r   Nz+Pagination detected. Requesting next page: GET)r   r   )r   getr   json_get_next_pageloggerdebugr   )r
   r   r   r   sessionr	next_pages          T/root/.hermes/venv/lib/python3.12/site-packages/huggingface_hub/utils/_pagination.pypaginater      s      mGD'JAvvx q!I

B9+NO	7GLA668"1%	 
  	s*   >B0 B,AB0B.B0*B0.B0responsec                 X    | j                   j                  di       j                  d      S )Nnexturl)linksr   )r   s    r   r   r   3   s$    >>fb)--e44    )N)__doc__collections.abcr   typingr   httpx r   r   r   r	   
get_logger__name__r   strdictlisttuplefloatr   Responser    r    r   <module>r/      s    B $   E E 
		H	%&3 &tE#s(O'< < &t &V[^bVb &nv &05U^^ 5d
 5r    