o
    ei7/                     @   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)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)	info_nameprintr   yellowsysstderr)r    r   W/home/ubuntu/transcripts/venv/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)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.r0   )r,   r-   r/   r0   r1   r2   r.   Successfully created  on the Hub.zYour repo is now available at N)r   create_repovaluer   r   boldr,   )	r,   r-   r.   r/   r0   r1   r2   apirepo_urlr   r   r   repo_createH   s   
 	r;   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.r3   )r,   r-   r=   Successfully deleted r5   N)r   delete_repor7   r   r   r8   )r,   r-   r0   r=   r9   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.r3   )rB   rC   r-   zSuccessfully moved z to r5   N)r   	move_repor7   r   r   r8   )rB   rC   r0   r-   r9   r   r   r   	repo_move   s   
&rE   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.r3   N)r,   rG   r/   r-   z%Successfully updated the settings of r5   )r   update_repo_settingsr7   r   r   r8   )r,   rG   r/   r0   r-   r9   r   r   r   repo_settings   s   
rI   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.r3   )delete_patternsr,   r-   rK   rL   rM   rN   z+Files correctly deleted from repo. Commit: .N)r   delete_filesr7   r   )
r,   rJ   r-   rK   rL   rM   rN   r0   r9   urlr   r   r   repo_delete_files   s   
'	rS   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.r3   )r,   r"   rK   r-   r1   r4    branch on  N)r   create_branchr7   r   r   r8   )r,   r"   rK   r0   r-   r1   r9   r   r   r   branch_create   s   
,rW   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.r3   )r,   r"   r-   r>   rT   rU   N)r   delete_branchr7   r   r   r8   )r,   r"   r0   r-   r9   r   r   r   branch_delete  s   
,rY   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.r3   zYou are about to create tag  on rU   )r,   r    tag_messagerK   r-    '' not found.Nz
Revision 'i  Tag 'z' already exists on ''.Tag z created on )r7   r   r   r   r8   
create_tagr   r   
capitalizer   r   responsestatus_code)	r,   r    rZ   rK   r0   r-   repo_type_strr9   er   r   r   
tag_create/  s$   
&$rh   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.r3   )r,   r-   r]   r^   Nr   zNo tags found)codez	Tags for rU   :)r7   r   list_repo_refsr   r   rc   lentagsr   typerExitr   r8   r!   )r,   r0   r-   rf   r9   refsrg   tr   r   r   tag_list[  s   

rs   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 r[   rU   zProceed? [Y/n] ) yrt   Abortr3   )r,   r    r-   r]   r^   Nr_   z' not found on 'r`   ra   z deleted on )r7   r   r   r8   inputlowerro   rp   r   
delete_tagr   r   rc   r   )	r,   r    rt   r0   r-   rf   choicer9   rg   r   r   r   
tag_deletep  s$   &
$r|   )1__doc__enumr   typingr   r   ro   huggingface_hub.errorsr   r   r   r   huggingface_hub.utilsr   
_cli_utilsr
   r   r   r   r   r   r   r   	repos_clicallbackContextr   tag_cli
branch_cli	add_typerstrEnumr#   commandmodelOptionboolr;   r@   rE   rI   ri   ArgumentrS   rW   rY   rh   rs   r|   r   r   r   r   <module>   s  (



		
'
	
,	
		
%