o
    0 i                     @   s<  d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZmZmZmZ dd
lmZmZmZ ddlmZ eeZzddlmZ ddlmZ dZ W n e!yd   dZ Y nw G dd de	Z"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(dS ) a  Contains commands to authenticate to the Hugging Face Hub and interact with your repositories.

Usage:
    # login and save token locally.
    hf auth login --token=hf_*** --add-to-git-credential

    # switch between tokens
    hf auth switch

    # list all tokens
    hf auth list

    # logout from all tokens
    hf auth logout

    # check which account you are logged in as
    hf auth whoami
    )_SubParsersAction)ListOptional)	HTTPError)BaseHuggingfaceCLICommand)ENDPOINT)HfApi   )	auth_listauth_switchloginlogout)get_stored_tokens	get_tokenlogging   )ANSI)inquirerChoiceTFc                   @   s   e Zd ZedefddZdS )AuthCommandsparserc                    s  | j ddd  jdd} j fddd |j dd	d}|jd
tdd |jdddd |jdd d |j ddd}|jdtdd |jdd d |j ddd}|jdd d |j ddd}|jdtdd |jdddd |jdd d |j ddd}|jd d d d S )!Nauthz,Manage authentication (login, logout, etc.).)helpzAuthentication subcommandsc                    s      S N)
print_helpargsZauth_parser d/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/huggingface_hub/cli/auth.py<lambda>B       z2AuthCommands.register_subcommand.<locals>.<lambda>)funcr   z8Log in using a token from huggingface.co/settings/tokensz--tokenz;Token generated from https://huggingface.co/settings/tokens)typer   z--add-to-git-credential
store_truez.Optional: Save token to git credential helper.)actionr   c                 S      t | S r   )	AuthLoginr   r   r   r    r!   R   r"   r   zLog outz--token-namez3Optional: Name of the access token to log out from.c                 S   r'   r   )
AuthLogoutr   r   r   r    r!   [   r"   whoamiz;Find out which huggingface.co account you are logged in as.c                 S   r'   r   )
AuthWhoamir   r   r   r    r!   a   r"   switchzSwitch between access tokensz0Optional: Name of the access token to switch to.c                 S   r'   r   )
AuthSwitchr   r   r   r    r!   o   r"   listzList all stored access tokensc                 S   r'   r   )AuthListr   r   r   r    r!   r   r"   )
add_parseradd_subparsersset_defaultsadd_argumentstr)r   Zauth_subparsersZlogin_parserZlogout_parserZwhoami_parserZauth_switch_parserZauth_list_parserr   r   r    register_subcommand;   sT   z AuthCommands.register_subcommandN)__name__
__module____qualname__staticmethodr   r5   r   r   r   r    r   :   s    r   c                   @      e Zd Zdd ZdS )BaseAuthCommandc                 C   s   || _ t | _d S r   )r   r   _api)selfr   r   r   r    __init__v   s   zBaseAuthCommand.__init__N)r6   r7   r8   r>   r   r   r   r    r;   u       r;   c                   @   r:   )r(   c                 C   s    t   t| jj| jjd d S )N)tokenadd_to_git_credential)r   set_verbosity_infor   r   r@   rA   r=   r   r   r    run|   s
   
zAuthLogin.runNr6   r7   r8   rD   r   r   r   r    r(   {   r?   r(   c                   @   r:   )r)   c                 C   s   t   t| jjd d S )N)
token_name)r   rB   r   r   rF   rC   r   r   r    rD      s   zAuthLogout.runNrE   r   r   r   r    r)      r?   r)   c                   @   s@   e Zd Zdd Zdee fddZdee dee fddZd	S )
r-   c                 C   sJ   t   | jj}|d u r|  }|d u rtd t  t|| jjd d S )Nz!No token name provided. Aborting.)rA   )	r   rB   r   rF   _select_token_nameprintexitr   rA   )r=   rF   r   r   r    rD      s   zAuthSwitch.runreturnc                 C   s   t t  }|std d S tr| |S td t|dD ]\}}t| d|  q 	 z,t	d}|
 dkr=W d S t|d }d|  krOt|k rVn n|| W S td	 W n tyh   td
 Y nw q/)Nz+No stored tokens found. Please login first.zAvailable stored tokens:r   z. Tz=Enter the number of the token to switch to (or 'q' to quit): qr   z$Invalid selection. Please try again.z4Invalid input. Please enter a number or 'q' to quit.)r.   r   keysloggererror_inquirer_py_available_select_token_name_tuirH   	enumerateinputlowerintlen
ValueError)r=   token_namesirF   choiceindexr   r   r    rG      s,   


zAuthSwitch._select_token_namerW   c                 C   sD   dd |D }zt jd|d d W S  ty!   td Y d S w )Nc                 S   s   g | ]}t ||d qS )namer   ).0rF   r   r   r    
<listcomp>   s    z5AuthSwitch._select_token_name_tui.<locals>.<listcomp>zSelect a token to switch to:)messagechoicesdefaultzToken selection cancelled.)r   selectexecuteKeyboardInterruptrM   info)r=   rW   r`   r   r   r    rP      s   
z!AuthSwitch._select_token_name_tuiN)	r6   r7   r8   rD   r   r4   rG   r   rP   r   r   r   r    r-      s    r-   c                   @   r:   )r/   c                 C   s   t   t  d S r   )r   rB   r
   rC   r   r   r    rD      s   
zAuthList.runNrE   r   r   r   r    r/      r?   r/   c                   @   r:   )r+   c              
   C   s   t  }|d u rtd t  z7| j|}ttd|d  dd |d D }|r5ttdd| td	krCtd
t  W d S W d S  t	yi } zt| tt
|jj td W Y d }~d S d }~ww )NzNot logged inzuser: r\   c                 S   s   g | ]}|d  qS r[   r   )r]   orgr   r   r    r^      s    z"AuthWhoami.run.<locals>.<listcomp>orgszorgs: ,zhttps://huggingface.coz(Authenticated through private endpoint: r   )r   rH   rI   r<   r*   r   boldjoinr   r   redresponsetext)r=   r@   re   rg   er   r   r    rD      s&   zAuthWhoami.runNrE   r   r   r   r    r+      r?   r+   N))__doc__argparser   typingr   r   Zrequests.exceptionsr   Zhuggingface_hub.commandsr   Zhuggingface_hub.constantsr   Zhuggingface_hub.hf_apir   Z_loginr
   r   r   r   utilsr   r   r   Z
_cli_utilsr   Z
get_loggerr6   rM   Z
InquirerPyr   ZInquirerPy.base.controlr   rO   ImportErrorr   r;   r(   r)   r-   r/   r+   r   r   r   r    <module>   s2   
;	3