o
    Ďi'                     @   s  d Z ddlZddlmZmZ ddlZddlmZmZm	Z	m
Z
 ddlmZ ddlmZmZmZmZmZmZmZmZ edd	Zed
d	Zedd	Zejedd ejedd G dd deejZejdddgdejdddddfdededeee ejdd	f dededee ejdd	f deee ejdd	f d dfd!d"Z!ejd#d$gdejddfdededed%ee ejd&d	f d df
d'd(Z"ejd)d*gddejfd+ed,ededed df
d-d.Z#ejd/d0d1gddddejfded2eee ejd3d	f deee  ejd4d	f deded dfd5d6Z$ejdd7d8gdddejdfdedeeej%d9d	f d:edededee ejd;d	f d dfd<d=Z&ejd#d>gddejfdedeeej%d?d	f deded df
d@dAZ'ejddBdCgddddejfdedeeej%dDd	f dEeee ejdFdGdHd	f d:ededed dfdIdJZ(ejdKdLgddejfdededed dfdMdNZ)ejd#dOgdddejfdedeeej%dPd	f dQee ejdRdSdTd	f deded dfdUdVZ*dS )Wa  Contains commands to interact with repositories on the Hugging Face Hub.

Usage:
    # create a new dataset repo on the Hub
    hf repo create my-cool-dataset --repo-type=dataset

    # create a private model repo on the Hub
    hf repo create my-cool-model --private
    N)	AnnotatedOptional)CLIErrorHfHubHTTPErrorRepositoryNotFoundErrorRevisionNotFoundError)ANSI   )
PrivateOpt	RepoIdArgRepoTypeRepoTypeOptRevisionOptTokenOpt
get_hf_apityper_factoryzManage repos on the Hub.)helpz"Manage tags for a repo on the Hub.z&Manage branches for a repo on the Hub.tag)namebranchc                   @   s   e Zd ZdZdZdZdS )GatedChoicesautomanualfalseN)__name__
__module____qualname__r   r   r    r   r   T/home/jeff/fluffinator/venv/lib/python3.10/site-packages/huggingface_hub/cli/repo.pyr   3   s    r   createzhf repo create my-modelz7hf repo create my-dataset --repo-type dataset --private)examplesFrepo_id	repo_type	space_sdkzEHugging Face Spaces SDK type. Required when --type is set to 'space'.privatetokenexist_okz-Do not raise an error if repo already exists.resource_group_idzoResource group in which to create the repo. Resource groups is only available for Enterprise Hub organizations.returnc           	   	   C   sT   t |d}|j| |j|||||d}tdt|j d tdt|  dS )zCreate a new repo on the Hub.r%   )r!   r"   r$   r%   r&   r'   r#   Successfully created  on the Hub.zYour repo is now available at N)r   create_repovalueprintr   boldr!   )	r!   r"   r#   r$   r%   r&   r'   apirepo_urlr   r   r   repo_create9   s   
 	r2   deletezhf repo delete my-model
missing_okz=If set to True, do not raise an error if repo does not exist.c                 C   s6   t |d}|j| |j|d tdt|  d dS )z>Delete a repo from the Hub. This is an irreversible operation.r)   )r!   r"   r4   Successfully deleted r+   N)r   delete_repor-   r.   r   r/   )r!   r"   r%   r4   r0   r   r   r   repo_deleteg   s   
r7   movez:hf repo move old-namespace/my-model new-namespace/my-modelfrom_idto_idc                 C   sB   t |d}|j| ||jd tdt|  dt| d dS )z8Move a repository from a namespace to another namespace.r)   )r9   r:   r"   zSuccessfully moved z to r+   N)r   	move_repor-   r.   r   r/   )r9   r:   r%   r"   r0   r   r   r   	repo_move}   s   
&r<   settingsz#hf repo settings my-model --privatez&hf repo settings my-model --gated autogatedz$The gated status for the repository.z)Whether the repository should be private.c                 C   sB   t |d}|j| |r|jnd||jd tdt|  d dS )z$Update the settings of a repository.r)   N)r!   r>   r$   r"   z%Successfully updated the settings of r+   )r   update_repo_settingsr-   r.   r   r/   )r!   r>   r$   r%   r"   r0   r   r   r   repo_settings   s   
r@   z"hf repo branch create my-model devz4hf repo branch create my-model dev --revision abc123z!The name of the branch to create.revisionz?If set to True, do not raise an error if branch already exists.c              	   C   sL   t |d}|j| |||j|d tdt| d|j dt|   dS )z*Create a new branch for a repo on the Hub.r)   )r!   r   rA   r"   r&   r*    branch on  N)r   create_branchr-   r.   r   r/   )r!   r   rA   r%   r"   r&   r0   r   r   r   branch_create   s   
,rE   z"hf repo branch delete my-model devz!The name of the branch to delete.c              	   C   sH   t |d}|j| ||jd tdt| d|j dt|   dS )z'Delete a branch from a repo on the Hub.r)   )r!   r   r"   r5   rB   rC   N)r   delete_branchr-   r.   r   r/   )r!   r   r%   r"   r0   r   r   r   branch_delete   s   
,rG   z hf repo tag create my-model v1.0z3hf repo tag create my-model v1.0 -m "First release"zThe name of the tag to create.messagez-mz	--messagez%The description of the tag to create.c           	   
   C   s
  |j }t|d}tdt| d| dt|   z|j| ||||d W nK ty@ } zt|  d|  d|d}~w t	yT } z	td	| d|d}~w t
yr } z|jjd
krmtd| d|  d| d}~ww tdt| dt|   dS )zCreate a tag for a repo.r)   zYou are about to create tag  on rC   )r!   r   tag_messagerA   r"    '' not found.Nz
Revision 'i  Tag 'z' already exists on ''.Tag z created on )r-   r   r.   r   r/   
create_tagr   r   
capitalizer   r   responsestatus_code)	r!   r   rH   rA   r%   r"   repo_type_strr0   er   r   r   
tag_create   s$   
&$rV   listzhf repo tag list my-modelc              
   C   s   |j }t|d}z	|j| |d}W n ty* } zt|  d|  d|d}~ww t|jdkr<td t	j
ddtd	| d
t|  d |jD ]}t|j qMdS )zList tags for a repo.r)   )r!   r"   rK   rL   Nr   zNo tags found)codez	Tags for rC   :)r-   r   list_repo_refsr   r   rQ   lentagsr.   typerExitr   r/   r   )r!   r%   r"   rT   r0   refsrU   tr   r   r   tag_list  s   

ra   z hf repo tag delete my-model v1.0zThe name of the tag to delete.yesz-yz--yesz"Answer Yes to prompt automaticallyc           	   
   C   s   |j }tdt| d| dt|   |s*td }|dvr*td t t|d}z
|j	| ||d W n0 t
yR } zt|  d	|  d
|d}~w tyi } ztd| d|  d|d}~ww tdt| dt|   dS )zDelete a tag for a repo.zYou are about to delete tag rI   rC   zProceed? [Y/n] ) yrb   Abortr)   )r!   r   r"   rK   rL   NrM   z' not found on 'rN   rO   z deleted on )r-   r.   r   r/   inputlowerr]   r^   r   
delete_tagr   r   rQ   r   )	r!   r   rb   r%   r"   rT   choicer0   rU   r   r   r   
tag_delete-  s$   &
$rj   )+__doc__enumtypingr   r   r]   huggingface_hub.errorsr   r   r   r   huggingface_hub.utilsr   
_cli_utilsr
   r   r   r   r   r   r   r   repo_clitag_cli
branch_cli	add_typerstrEnumr   commandmodelOptionboolr2   r7   r<   r@   ArgumentrE   rG   rV   ra   rj   r   r   r   r   <module>   s  
(


		
'
	
		
%