o
    h                     @   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auth_parser N/var/www/html/ai/venv/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   auth_subparserslogin_parserlogout_parserwhoami_parserauth_switch_parserauth_list_parserr    r   r!   register_subcommand;   sT   z AuthCommands.register_subcommandN)__name__
__module____qualname__staticmethodr   r<   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)r=   r>   r?   rE   r    r    r    r!   rB   u       rB   c                   @   rA   )r)   c                 C   s    t   t| jj| jjd d S )N)tokenadd_to_git_credential)r   set_verbosity_infor   r   rG   rH   rD   r    r    r!   run|   s
   
zAuthLogin.runNr=   r>   r?   rK   r    r    r    r!   r)   {   rF   r)   c                   @   rA   )r*   c                 C   s   t   t| jjd d S )N)
token_name)r   rI   r   r   rM   rJ   r    r    r!   rK      s   zAuthLogout.runNrL   r    r    r    r!   r*      rF   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.)rH   )	r   rI   r   rM   _select_token_nameprintexitr   rH   )rD   rM   r    r    r!   rK      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_tuirO   	enumerateinputlowerintlen
ValueError)rD   token_namesirM   choiceindexr    r    r!   rN      s,   


zAuthSwitch._select_token_namer^   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   ).0rM   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KeyboardInterruptrT   info)rD   r^   rg   r    r    r!   rW      s   
z!AuthSwitch._select_token_name_tuiN)	r=   r>   r?   rK   r   r5   rN   r   rW   r    r    r    r!   r.      s    r.   c                   @   rA   )r0   c                 C   s   t   t  d S r   )r   rI   r
   rJ   r    r    r!   rK      s   
zAuthList.runNrL   r    r    r    r!   r0      rF   r0   c                   @   rA   )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: rc   c                 S   s   g | ]}|d  qS rb   r    )rd   orgr    r    r!   re      s    z"AuthWhoami.run.<locals>.<listcomp>orgszorgs: ,zhttps://huggingface.coz(Authenticated through private endpoint: r   )r   rO   rP   rC   r+   r   boldjoinr   r   redresponsetext)rD   rG   rl   rn   er    r    r!   rK      s&   zAuthWhoami.runNrL   r    r    r    r!   r,      rF   r,   N))__doc__argparser   typingr   r   requests.exceptionsr   huggingface_hub.commandsr   huggingface_hub.constantsr   huggingface_hub.hf_apir   _loginr
   r   r   r   utilsr   r   r   
_cli_utilsr   
get_loggerr=   rT   
InquirerPyr   InquirerPy.base.controlr   rV   ImportErrorr   rB   r)   r*   r.   r0   r,   r    r    r    r!   <module>   s2   
;	3