o
    Zi7/                     @   s  d Z ddl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jd
ddejddf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d0ed1ed!ededdf
d2d3Z'ej!d4d5d6gddddej"fded7eee  ej#d8d	f d eee$ ej#d9d	f d!ededdfd:d;Z(ej!d<g d=dej"dddddfded>ee)e ej*d?d	f ded@edAeee ej#dBd	f dCeee ej#dDd	f dEee$ej#dFd	f d!eddfdGdHZ+ej!ddIdJgdddej"dfdedeeej*dKd	f d@ed!eded"ee$ej#dLd	f ddfdMdNZ,ej!d(dOgddej"fdedeeej*dPd	f d!ededdf
dQdRZ-ej!ddSdTgddddej"fdedeeej*dUd	f dVeee ej#dWdXdYd	f d@ed!ededdfdZd[Z.ej!d\d]gddej"fded!ededdfd^d_Z/ej!d(d`gdddej"fdedeeej*dad	f dbee$ej#dcddded	f d!ededdfdfdgZ0dS )hae  Contains commands to interact with repositories on the Hugging Face Hub.

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

    # create a private model repo on the Hub
    hf repos create my-cool-model --private

    # delete files from a repo on the Hub
    hf repos delete-files my-model file.txt
    N)	AnnotatedOptional)CLIErrorHfHubHTTPErrorRepositoryNotFoundErrorRevisionNotFoundError)ANSI   )
PrivateOpt	RepoIdArgRepoTypeRepoTypeOptRevisionOptTokenOpt
get_hf_apityper_factoryzManage repos on the Hub.)helpT)Zinvoke_without_commandctxreturnc                 C   s&   | j dkrttdtjd d S d S )Nrepoz>FutureWarning: `hf repo` is deprecated in favor of `hf repos`.)file)Z	info_nameprintr   yellowsysstderr)r    r   P/home/app/Keep/.python/lib/python3.10/site-packages/huggingface_hub/cli/repos.py_repos_callback3   s   

r   z"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   r   r   r!   B   s    r!   createzhf repos create my-modelz8hf repos create my-dataset --repo-type dataset --private)Z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.c           	   	   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   Zcreate_repovaluer   r   boldr)   )	r)   r*   r+   r,   r-   r.   r/   apirepo_urlr   r   r   repo_createH   s   
 	r7   deletezhf repos 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.r0   )r)   r*   r9   Successfully deleted r2   N)r   Zdelete_repor3   r   r   r4   )r)   r*   r-   r9   r5   r   r   r   repo_deletev   s   
r;   movez;hf repos 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.r0   )r=   r>   r*   zSuccessfully moved z to r2   N)r   Z	move_repor3   r   r   r4   )r=   r>   r-   r*   r5   r   r   r   	repo_move   s   
&r?   settingsz$hf repos settings my-model --privatez'hf repos 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.r0   N)r)   rA   r,   r*   z%Successfully updated the settings of r2   )r   Zupdate_repo_settingsr3   r   r   r4   )r)   rA   r,   r-   r*   r5   r   r   r   repo_settings   s   
rB   zdelete-files)z'hf repos delete-files my-model file.txtz'hf repos delete-files my-model "*.json"z&hf repos delete-files my-model folder/patternszXGlob patterns to match files to delete. Based on fnmatch, '*' matches files recursively.revisioncommit_messagez9The summary / title / first line of the generated commit.commit_descriptionz(The description of the generated commit.	create_prz7Whether to create a new Pull Request for these changes.c           
   	   C   s8   t |d}|j|| |j||||d}	td|	 d dS )z$Delete files from a repo on the Hub.r0   )Zdelete_patternsr)   r*   rD   rE   rF   rG   z+Files correctly deleted from repo. Commit: .N)r   Zdelete_filesr3   r   )
r)   rC   r*   rD   rE   rF   rG   r-   r5   urlr   r   r   repo_delete_files   s   
'	rJ   z#hf repos branch create my-model devz5hf repos branch create my-model dev --revision abc123z!The name of the branch to create.z?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.r0   )r)   r    rD   r*   r.   r1    branch on  N)r   Zcreate_branchr3   r   r   r4   )r)   r    rD   r-   r*   r.   r5   r   r   r   branch_create   s   
,rM   z#hf repos 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.r0   )r)   r    r*   r:   rK   rL   N)r   Zdelete_branchr3   r   r   r4   )r)   r    r-   r*   r5   r   r   r   branch_delete  s   
,rN   z!hf repos tag create my-model v1.0z4hf repos 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.r0   zYou are about to create tag  on rL   )r)   r   Ztag_messagerD   r*    '' not found.Nz
Revision 'i  Tag 'z' already exists on ''.Tag z created on )r3   r   r   r   r4   Z
create_tagr   r   
capitalizer   r   responsestatus_code)	r)   r   rO   rD   r-   r*   repo_type_strr5   er   r   r   
tag_create/  s$   
&$r[   listzhf repos 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.r0   )r)   r*   rQ   rR   Nr   zNo tags found)codez	Tags for rL   :)r3   r   Zlist_repo_refsr   r   rV   lentagsr   typerExitr   r4   r   )r)   r-   r*   rY   r5   refsrZ   tr   r   r   tag_list[  s   

re   z!hf repos 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 rP   rL   zProceed? [Y/n] ) yrf   ZAbortr0   )r)   r   r*   rQ   rR   NrS   z' not found on 'rT   rU   z deleted on )r3   r   r   r4   inputlowerra   rb   r   Z
delete_tagr   r   rV   r   )	r)   r   rf   r-   r*   rY   choicer5   rZ   r   r   r   
tag_deletep  s$   &
$rl   )1__doc__enumr   typingr   r   ra   Zhuggingface_hub.errorsr   r   r   r   Zhuggingface_hub.utilsr   Z
_cli_utilsr
   r   r   r   r   r   r   r   Z	repos_clicallbackContextr   Ztag_cliZ
branch_cliZ	add_typerstrEnumr!   commandmodelOptionboolr7   r;   r?   rB   r\   ZArgumentrJ   rM   rN   r[   re   rl   r   r   r   r   <module>   s  (



		
'
	
,	
		
%