o
    2jJN                  (   @   sR  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	 ddl
mZmZmZmZ ddl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#m$Z$m%Z%m&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z,m-Z- e&ddZ.e.j/dddej0ddfddZ1G dd de2ej3Z4G dd de2ej3Z5ee6dB ej7dddf Z8ee6dB ej7dddf Z9ee2dB ej7dde	ed f Z:eedB ej7d!d"df Z;ee<dB ej7d#d$df Z=e&d%dZ>e&d&dZ?e.j@e>d'd( e.j@e?d)d( e.jAd*g d+d,ddded-dfd.ee2dB ej7d/df d0ee4dB ej7d1d2d3df d4ed5ed6ee6ej7d7d8df d9e ddfd:d;ZBe.jAd<g d=d,ejCdddddd-ddddddddddfd>ed0ed?ee2dB ej7d@df dAedBe8dCe9d9e dDee6ej7dEdf dFee2dB ej7dGdf dHeedB ej7dIdJdf dKe:dLe;dMe=dNedOedPedQedRe!ddf&dSdTZDe.jAdUg dVd,dejCddddd-ddddddddfdWedXee2dB ejEdYdf d0edAedBe8dCe9d9e dDee6ej7dEdf dKe:dLe;dMe=dNedOedPedQedRe!ddf"dZd[ZFe.jAd\d]gd,ejCdd-d-fd>ed0ed9e d^ee6ej7d_df d`ee6ej7dadbdcdf ddfdddeZGe.jAdfdggd,dejCfdWedXed9e d0eddf
dhdiZHe.jAdjg dkd,dddddejCfd>edlee5dB ej7dmdf dAedBe8dCe9d9e d0eddfdndoZIe.jAdpg dqd,ejCdddd-dfd>edreeJe2 ejEdsdf d0edteduee2dB ej7dvdf dwee2dB ej7dxdf dyee6ej7dzdf d9e ddfd{d|ZKe.jAd}g d~de(d e?jAd<ddgd,ddejCd-fd>ed)ee2ejEddf dted9e d0edDee6ej7ddf ddfddZLe?jAd\dgd,dejCfd>ed)ee2ejEddf d9e d0eddf
ddZMe>jAd<ddgd,dddejCfd>ed'ee2ejEddf dee2dB ej7ddddf dted9e d0eddfddZNe>jAd*dgd,dejCfd>ed9e d0eddfddZOe>jAd\dgd,d-dejCfd>ed'ee2ejEddf d`ee6ej7dadbddf d9e d0eddfddZPd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)
SoftChoice)CLIErrorHfHubHTTPErrorRepositoryNotFoundErrorRevisionNotFoundError)REPO_REGIONS   )run_city_game)REPO_LIST_DEFAULT_LIMIT
EnvFileOptEnvOptLimitOpt
PrivateOpt	RepoIdArgRepoTypeRepoTypeOptRevisionOpt	SearchOptSecretsFileOpt
SecretsOptTokenOpt
VolumesOptenv_map_to_key_value_list
get_hf_apiparse_env_mapparse_volumestyper_factory)make_cp)format_size)OutputFormat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+   T/var/www/html/whisper/venv/lib/python3.10/site-packages/huggingface_hub/cli/repos.py_repos_callbackC   s   
r-   c                   @   s   e Zd ZdZdZdZdZdS )RepoTypeAllmodeldatasetspacebucketN)__name__
__module____qualname__r/   r0   r1   r2   r+   r+   r+   r,   r.   I   s
    r.   c                   @   s   e Zd ZdZdZdZdS )GatedChoicesautomanualfalseN)r3   r4   r5   r7   r8   r9   r+   r+   r+   r,   r6   P   s    r6   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.)r$   
click_typez	--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.z"Manage tags for a repo on the Hub.z&Manage branches for a repo on the Hub.tag)namebranchz	list | ls)zhf repos lszhf repos ls --explorez,hf repos ls --namespace my-org --search bert)examplesF	namespacezKOrganization name. If not provided, lists repos for the authenticated user.	repo_typez--typez--repo-typez=Filter by repository type (model, dataset, space, or bucket).searchlimitexplorez	--explorez-Explore your repos as an interactive 3D city.tokenc           
         s   t |d}t|j| d} dur fdd|D }|dur+| fdd|D }t|}|rAtjtjkr=t	| dS t
d|dkrK|d| }d	d |D }	tj|	d
dddd |dkrs||krutd| d| d dS dS dS )zEList all repos (models, datasets, spaces, buckets) with storage info.rD   )r?   Nc                    s   g | ]
}|j  jkr|qS r+   )typevalue.0r)r@   r+   r,   
<listcomp>   s    zrepo_list.<locals>.<listcomp>c                    s   g | ]} |j  v r|qS r+   )idlowerrH   )search_lowerr+   r,   rK          z5Repository exploration is only available in terminal.r   c              
   S   s@   g | ]}|j |j|jd |jt|jdd|jdddqS )z%Y-%m-%dT)human_readablez.1f%)rL   rF   updated
visibilitystorage
%_of_total)rL   rF   
updated_atstrftimerS   r!   rT   storage_percentrH   r+   r+   r,   rK      s    	
rL   right)rT   rU   )id_key
alignmentszShowing z of z$ repos. Use `--limit 0` to list all.)r   listlist_user_reposrM   lenr#   moder"   humanr   r   tablehint)
r?   r@   rA   rB   rC   rD   apirepostotalitemsr+   )r@   rN   r,   	repo_list   s,   
 	rg   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 --protectedzqhf repos create my-space --type space --space-sdk gradio -v hf://org/my-model:/models -v hf://buckets/org/b:/dataz$hf repos create my-model --region usrepo_id	space_sdkzEHugging Face Spaces SDK type. Required when --type is set to 'space'.privatepublic	protected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.hardwarerT   
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.rE   rk   rl   rm   N)ri   r@   rS   rD   rn   ro   rp   rj   space_hardwarespace_storagespace_sleep_timespace_secretsspace_variablesspace_volumeszRepo created)ri   url)
r   create_reporG   r   r   r   r#   resultri   str)ri   r@   rj   rk   rl   rm   rD   rn   ro   rp   rq   rT   rr   rs   rt   ru   rv   rw   rc   repo_urlr+   r+   r,   repo_create   s$   
4r   	duplicate)z/hf repos duplicate openai/gdpval --type datasetzzhf repos duplicate multimodalart/dreambooth-training my-dreambooth --type space --flavor l4x4 --secrets HF_TOKEN --privateznhf repos duplicate org/my-space my-space --type space -v hf://org/my-model:/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).rE   rk   rl   rm   N)r   r   r@   rS   rD   rn   rx   ry   rz   r{   r|   r}   zRepo duplicated)r   r   r~   )
r   duplicate_reporG   r   r   r   r#   r   ri   r   )r   r   r@   rk   rl   rm   rD   rn   rq   rT   rr   rs   rt   ru   rv   rw   rc   r   r+   r+   r,   repo_duplicate  s    
%r   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   rE   )ri   r@   r   zRepo deletedri   N)r#   confirmrG   r   delete_repor   )ri   r@   rD   r   r   rc   r+   r+   r,   repo_deleteE  s   
r   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.rE   )r   r   r@   z
Repo moved)r   r   N)r   	move_reporG   r#   r   )r   r   rD   r@   rc   r+   r+   r,   	repo_moved  s   
r   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.rE   NFrk   rl   rm   )ri   r   rS   r@   zRepo settings updatedr   )r   update_repo_settingsr6   r9   rG   r#   r   )ri   r   rk   rl   rm   rD   r@   rc   r+   r+   r,   repo_settingsu  s   
r   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.rE   )delete_patternsri   r@   r   r   r   r   zFiles deleted)ri   
commit_urlN)r   delete_filesrG   r#   r   )
ri   r   r@   r   r   r   r   rD   rc   r~   r+   r+   r,   repo_delete_files  s   
'	r   cp)	z:hf repos cp hf://username/my-model/config.json config.jsonz<hf repos cp hf://datasets/username/my-dataset/data.csv data/z0hf repos cp hf://username/my-model/config.json -zFhf repos cp model.safetensors hf://username/my-model/model.safetensorsz4hf repos cp config.json hf://username/my-model/logs/z0hf repos cp - hf://username/my-model/config.jsonzWhf repos cp hf://username/source-model/config.json hf://username/dest-model/config.jsonzghf repos cp hf://datasets/username/my-dataset/processed/ hf://datasets/username/dest-dataset/processed/zJhf repos cp hf://username/my-model/logs/ hf://username/archive-model/logs/)r<   r>   rd   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.rE   )ri   r=   r   r@   rn   zBranch createdr=   r@   ri   N)r   create_branchrG   r#   r   )ri   r=   r   rD   r@   rn   rc   r+   r+   r,   branch_create  s   
r   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.rE   )ri   r=   r@   zBranch deletedr   N)r   delete_branchrG   r#   r   )ri   r=   rD   r@   rc   r+   r+   r,   branch_delete  s   
r   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.rE   )ri   r;   tag_messager   r@   r   ' not found.Nz
Revision 'i  Tag 'z' already exists on ''.zTag createdr;   r@   ri   )rG   r   
create_tagr   r   
capitalizer	   r   responsestatus_coder#   r   )	ri   r;   r   r   rD   r@   repo_type_strrc   er+   r+   r,   
tag_create  s"   
r   z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.rE   )ri   r@   r   r   Nc                 S   s   g | ]}|j |j|jd qS )r<   target_commitrefr   )rI   tr+   r+   r,   rK   Q  rO   ztag_list.<locals>.<listcomp>)	rG   r   list_repo_refsr   r   r   tagsr#   ra   )ri   rD   r@   r   rc   refsr   rf   r+   r+   r,   tag_listD  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   rE   )ri   r;   r@   r   r   Nr   z' not found on 'r   zTag deletedr   )rG   r#   textr   r   
delete_tagr   r   r   r	   r   )ri   r;   r   rD   r@   r   rc   r   r+   r+   r,   
tag_deleteU  s   
r   )Q__doc__enumtypingr   typerhuggingface_hubr   r   huggingface_hub.cli._cli_utilsr   huggingface_hub.errorsr   r   r   r	   huggingface_hub.hf_apir
   
_city_gamer   
_cli_utilsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _cpr    _file_listingr!   _outputr"   r#   	repos_clicallbackContextr-   r   Enumr.   r6   boolOption	PublicOptProtectedOptSpaceHardwareOptSpaceStorageOptintSpaceSleepTimeOpttag_cli
branch_cli	add_typercommandrg   r/   r   Argumentr   r   r   r   r\   r   r   r   r   r   r   r+   r+   r+   r,   <module>   s,  T

	
	
9	
 !"#$%&'(>	
/
	
	
-	
		
$