o
     
j@                  (   @   sZ  d Z ddlZddlmZ ddlZddlmZm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mZmZmZmZmZmZmZmZ dd	l 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e,dB ej-dddf Z.ee,dB ej-dddf Z/eedB ej-dddf Z0eedB ej-dd df Z1ee2dB ej-d!d"df Z3e"j4d#g d$d%ej5dddddd&ddddddddddfd'ed(ed)ee)dB ej-d*df d+ed,e.d-e/d.ed/ee,ej-d0df d1ee)dB ej-d2df d3eedB ej-d4d5df d6e0d7e1d8e3d9ed:ed;ed<ed=eddf&d>d?Z6e"j4d@g dAd%dej5ddddd&ddddddddfdBedCee)dB ej7dDdf d(ed+ed,e.d-e/d.ed/ee,ej-d0df d6e0d7e1d8e3d9ed:ed;ed<ed=eddf"dEdFZ8e"j4dGdHgd%ej5dd&d&fd'ed(ed.edIee,ej-dJdf dKee,ej-dLdMdNdf ddfdOdPZ9e"j4dQdRgd%dej5fdBedCed.ed(eddf
dSdTZ:e"j4dUg dVd%dddddej5fd'edWee+dB ej-dXdf d+ed,e.d-e/d.ed(eddfdYdZZ;e"j4d[g d\d%ej5dddd&dfd'ed]ee<e) ej7d^df d(ed_ed`ee)dB ej-dadf dbee)dB ej-dcdf ddee,ej-dedf d.eddfdfdgZ=e'j4d#dhdigd%ddej5d&fd'edee)ej7djdf d_ed.ed(ed/ee,ej-dkdf ddfdldmZ>e'j4dGdngd%dej5fd'edee)ej7dodf d.ed(eddf
dpdqZ?e&j4d#drdsgd%dddej5fd'edee)ej7dtdf duee)dB ej-dvdwdxdf d_ed.ed(eddfdydzZ@e&j4d{d|gd%dej5fd'ed.ed(eddfd}d~ZAe&j4dGdgd%d&dej5fd'edee)ej7ddf dKee,ej-dLdMddf d.ed(eddfddZBdS )ae  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)SpaceHardwareSpaceStorage)CLIErrorHfHubHTTPErrorRepositoryNotFoundErrorRevisionNotFoundError)REPO_REGIONS   )
EnvFileOptEnvOpt
PrivateOpt	RepoIdArgRepoTypeRepoTypeOptRevisionOptSecretsFileOpt
SecretsOptTokenOpt
VolumesOptenv_map_to_key_value_list
get_hf_apiparse_env_mapparse_volumestyper_factory)outzManage repos on the Hub.)helpT)invoke_without_commandctxreturnc                 C   s   | j dkrtd d S d S )Nrepoz/`hf repo` is deprecated in favor of `hf repos`.)	info_namer   warning)r    r#   L/home/kuhnn/.local/lib/python3.10/site-packages/huggingface_hub/cli/repos.py_repos_callback<   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)   H   s    r)   z--publiczDWhether to make the repo public. Ignored if the repo already exists.z--protectedzVWhether to make the Space protected (Spaces only). Ignored if the repo already exists.z--flavorzOSpace hardware flavor (e.g. 'cpu-basic', 't4-medium', 'l4x4'). Only for Spaces.z	--storagezq(Deprecated, use volumes instead) Space persistent storage tier ('small', 'medium', or 'large'). Only for Spaces.z--sleep-timez[Seconds of inactivity before the Space is put to sleep. Use -1 to disable. Only for Spaces.create)zhf repos create my-modelz8hf repos create my-dataset --repo-type dataset --privatezxhf repos create my-space --type space --space-sdk gradio --flavor t4-medium --secrets HF_TOKEN -e THEME=dark --protectedzihf repos create my-space --type space --space-sdk gradio -v hf://gpt2:/models -v hf://buckets/org/b:/dataz$hf repos create my-model --region us)examplesFrepo_id	repo_type	space_sdkzEHugging Face Spaces SDK type. Required when --type is set to 'space'.privatepublic	protected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.regionz--regionzbCloud region in which to create the repo. Can be one of 'us' or 'eu'. Requires Team plan or above.hardwarestorage
sleep_timesecretssecrets_fileenvenv_filevolumec                 C   s|   t |d}|j| |j|rdn	|rdn|rdnd||||	||
||tt||tt||t|d}tjd|jt	|d dS )	zCreate a new repo on the Hub.r8   r5   r6   r7   N)r2   r3   
visibilityr8   r9   r:   r;   r4   space_hardwarespace_storagespace_sleep_timespace_secretsspace_variablesspace_volumeszRepo created)r2   url)
r   create_repovaluer   r   r   r   resultr2   str)r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   apirepo_urlr#   r#   r$   repo_createv   s$   
4rS   	duplicate)z/hf repos duplicate openai/gdpval --type datasetzzhf repos duplicate multimodalart/dreambooth-training my-dreambooth --type space --flavor l4x4 --secrets HF_TOKEN --privatezfhf repos duplicate org/my-space my-space --type space -v hf://gpt2:/models -v hf://buckets/org/b:/datafrom_idto_idz_Destination repo ID (e.g. `myorg/my-copy`). Defaults to your namespace with the same repo name.c                 C   sz   t |d}|j| ||j|rdn	|rdn|rdnd||||	|
tt||tt||t|d}tjd| |jt	|d dS )	z7Duplicate a repo on the Hub (model, dataset, or Space).rD   r5   r6   r7   N)rU   rV   r3   rE   r8   r9   rF   rG   rH   rI   rJ   rK   zRepo duplicated)rU   rV   rL   )
r   duplicate_reporN   r   r   r   r   rO   r2   rP   )rU   rV   r3   r5   r6   r7   r8   r9   r<   r=   r>   r?   r@   rA   rB   rC   rQ   rR   r#   r#   r$   repo_duplicate   s    
%rX   deletezhf repos delete my-model
missing_okz=If set to True, do not raise an error if repo does not exist.yesz-yz--yesz#Answer Yes to prompt automatically.c                 C   sL   t jd|j d|  d|d t|d}|j| |j|d t jd| d d	S )
z>Delete a repo from the Hub. This is an irreversible operation.z$You are about to permanently delete  'z'. Proceed?r[   rD   )r2   r3   rZ   zRepo deletedr2   N)r   confirmrN   r   delete_reporO   )r2   r3   r8   rZ   r[   rQ   r#   r#   r$   repo_delete   s   
ra   movez;hf repos move old-namespace/my-model new-namespace/my-modelc                 C   s0   t |d}|j| ||jd tjd| |d dS )z8Move a repository from a namespace to another namespace.rD   )rU   rV   r3   z
Repo moved)rU   rV   N)r   	move_reporN   r   rO   )rU   rV   r8   r3   rQ   r#   r#   r$   	repo_move  s   
rd   settings)z$hf repos settings my-model --privatez'hf repos settings my-model --gated autoz8hf repos settings my-space --repo-type space --protectedgatedz$The gated status for the repository.c                 C   sd   t |d}|j| |du rdn	|tju rdn|j|rdn	|rdn|r#dnd|jd tjd| d	 dS )
z$Update the settings of a repository.rD   NFr5   r6   r7   )r2   rf   rE   r3   zRepo settings updatedr^   )r   update_repo_settingsr)   r,   rN   r   rO   )r2   rf   r5   r6   r7   r8   r3   rQ   r#   r#   r$   repo_settings%  s   
rh   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jd| |	d dS )z$Delete files from a repo on the Hub.rD   )delete_patternsr2   r3   rj   rk   rl   rm   zFiles deleted)r2   
commit_urlN)r   delete_filesrN   r   rO   )
r2   ri   r3   rj   rk   rl   rm   r8   rQ   rL   r#   r#   r$   repo_delete_filesF  s   
'	rq   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   s8   t |d}|j| |||j|d tjd||j| d dS )z*Create a new branch for a repo on the Hub.rD   )r2   r(   rj   r3   r9   zBranch createdr(   r3   r2   N)r   create_branchrN   r   rO   )r2   r(   rj   r8   r3   r9   rQ   r#   r#   r$   branch_createz  s   
rt   z#hf repos branch delete my-model devz!The name of the branch to delete.c                 C   s4   t |d}|j| ||jd tjd||j| d dS )z'Delete a branch from a repo on the Hub.rD   )r2   r(   r3   zBranch deletedrr   N)r   delete_branchrN   r   rO   )r2   r(   r8   r3   rQ   r#   r#   r$   branch_delete  s   
rv   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}z|j| ||||d W nK ty- } zt|  d|  d|d}~w tyA } z	td| d|d}~w ty_ } z|jj	dkrZtd| d	|  d
| d}~ww t
jd||| d dS )zCreate a tag for a repo.rD   )r2   r&   tag_messagerj   r3   r\   ' not found.Nz
Revision 'i  Tag 'z' already exists on ''.zTag createdr&   r3   r2   )rN   r   
create_tagr   r   
capitalizer   r   responsestatus_coder   rO   )	r2   r&   rw   rj   r8   r3   repo_type_strrQ   er#   r#   r$   
tag_create  s"   
r   z	list | lszhf repos tag list my-modelc              
   C   st   |j }t|d}z	|j| |d}W n ty* } zt|  d|  d|d}~ww dd |jD }t| dS )zList tags for a repo.rD   )r2   r3   r\   ry   Nc                 S   s   g | ]}|j |j|jd qS )r'   target_commitrefr   ).0tr#   r#   r$   
<listcomp>  s    ztag_list.<locals>.<listcomp>)	rN   r   list_repo_refsr   r   r~   tagsr   table)r2   r8   r3   r   rQ   refsr   itemsr#   r#   r$   tag_list  s   
r   z!hf repos tag delete my-model v1.0zThe name of the tag to delete.z"Answer Yes to prompt automaticallyc              
   C   s   |j }td| d| d|   tjd|d t|d}z
|j| ||d W n0 ty@ } zt|  d|  d	|d
}~w t	yW } ztd| d|  d|d
}~ww tj
d||| d d
S )zDelete a tag for a repo.zYou are about to delete tag z on  zProceed?r]   rD   )r2   r&   r3   r\   ry   Nrz   z' not found on 'r{   zTag deletedr|   )rN   r   textr_   r   
delete_tagr   r   r~   r   rO   )r2   r&   r[   r8   r3   r   rQ   r   r#   r#   r$   
tag_delete  s   
r   )C__doc__enumtypingr   typerhuggingface_hubr   r   huggingface_hub.errorsr   r   r   r   huggingface_hub.hf_apir	   
_cli_utilsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _outputr   	repos_clicallbackContextr%   tag_cli
branch_cli	add_typerrP   Enumr)   boolOption	PublicOptProtectedOptSpaceHardwareOptSpaceStorageOptintSpaceSleepTimeOptcommandmodelrS   ArgumentrX   ra   rd   rh   listrq   rt   rv   r   r   r   r#   r#   r#   r$   <module>   s  H



		
 !"#$%&'(>	
/
	
	
,	
		
$