§
    «˜ºhð8  ã                   óî   — d Z ddlZddlZddlZddlmZmZ ddlmZm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZ ddlmZ  ej        e¦  «        Z G d„ de¦  «        Z dS )aa  Contains command to upload a repo or file with the CLI.

Usage:
    # Upload file (implicit)
    huggingface-cli upload my-cool-model ./my-cool-model.safetensors

    # Upload file (explicit)
    huggingface-cli upload my-cool-model ./my-cool-model.safetensors  model.safetensors

    # Upload directory (implicit). If `my-cool-model/` is a directory it will be uploaded, otherwise an exception is raised.
    huggingface-cli upload my-cool-model

    # Upload directory (explicit)
    huggingface-cli upload my-cool-model ./models/my-cool-model .

    # Upload filtered directory (example: tensorboard logs except for the last run)
    huggingface-cli upload my-cool-model ./model/training /logs --include "*.tfevents.*" --exclude "*20230905*"

    # Upload with wildcard
    huggingface-cli upload my-cool-model "./model/training/*.safetensors"

    # Upload private dataset
    huggingface-cli upload Wauplin/my-cool-dataset ./data . --repo-type=dataset --private

    # Upload with token
    huggingface-cli upload Wauplin/my-cool-model --token=hf_****

    # Sync local Space with Hub (upload new files, delete removed files)
    huggingface-cli upload Wauplin/space-example --repo-type=space --exclude="/logs/*" --delete="*" --commit-message="Sync local Space with Hub"

    # Schedule commits every 30 minutes
    huggingface-cli upload Wauplin/my-cool-model --every=30
é    N)Ú	NamespaceÚ_SubParsersAction)ÚListÚOptional)Úlogging)ÚCommitScheduler)ÚBaseHuggingfaceCLICommand)ÚHF_HUB_ENABLE_HF_TRANSFER)ÚRevisionNotFoundError)ÚHfApi)Údisable_progress_barsÚenable_progress_bars)Úis_xet_availableé   )Úshow_deprecation_warningc                   óN   — e Zd Zedefd„¦   «         Zdeddfd„Zd	d„Zde	fd„Z
dS )
ÚUploadCommandÚparserc                 ó   — |                       dd¬¦  «        }|                     dt          d¬¦  «         |                     ddd	¬
¦  «         |                     ddd¬
¦  «         |                     dg d¢dd¬¦  «         |                     dt          d¬¦  «         |                     ddd¬¦  «         |                     ddt          d¬¦  «         |                     ddt          d¬¦  «         |                     ddt          d¬¦  «         |                     d t          d!¬¦  «         |                     d"t          d#¬¦  «         |                     d$dd%¬¦  «         |                     d&t          d'¬¦  «         |                     d(t          d)¬¦  «         |                     d*dd+¬¦  «         |                     t
          ¬,¦  «         d S )-NÚuploadz.Upload a file or a folder to a repo on the Hub)ÚhelpÚrepo_idz<The ID of the repo to upload to (e.g. `username/repo-name`).)Útyper   Ú
local_pathú?zkLocal path to the file or folder to upload. Wildcard patterns are supported. Defaults to current directory.)Únargsr   Úpath_in_repoz\Path of the file or folder in the repo. Defaults to the relative path of the file or folder.z--repo-type)ÚmodelÚdatasetÚspacer   z/Type of the repo to upload to (e.g. `dataset`).)ÚchoicesÚdefaultr   z
--revisionz°An optional Git revision to push to. It can be a branch name or a PR reference. If revision does not exist and `--create-pr` is not set, a branch will be automatically created.z	--privateÚ
store_truezfWhether to create a private repo if repo doesn't exist on the Hub. Ignored if the repo already exists.)Úactionr   z	--includeÚ*z'Glob patterns to match files to upload.)r   r   r   z	--excludez.Glob patterns to exclude from files to upload.z--deletezDGlob patterns for file to be deleted from the repo while committing.z--commit-messagez9The summary / title / first line of the generated commit.z--commit-descriptionz(The description of the generated commit.z--create-prz0Whether to upload content as a new Pull Request.z--everyzNIf set, a background job is scheduled to create commits every `every` minutes.z--tokenzIA User Access Token generated from https://huggingface.co/settings/tokensz--quietzWIf True, progress bars are disabled and only the path to the uploaded files is printed.)Úfunc)Ú
add_parserÚadd_argumentÚstrÚfloatÚset_defaultsr   )r   Úupload_parsers     úg/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/huggingface_hub/commands/upload.pyÚregister_subcommandz!UploadCommand.register_subcommandG   s‰  € à×)Ò)¨(Ð9iÐ)ÑjÔjˆØ×"Ò"Ø�CÐ&dð 	#ñ 	
ô 	
ð 	
ð 	×"Ò"ØØØ~ð 	#ñ 	
ô 	
ð 	
ð
 	×"Ò"ØØØoð 	#ñ 	
ô 	
ð 	
ð
 	×"Ò"ØØ1Ð1Ð1ØØBð	 	#ñ 	
ô 	
ð 	
ð 	×"Ò"ØÝð_ð	 	#ñ 	
ô 	
ð 	
ð 	×"Ò"ØØðð	 	#ñ 	
ô 	
ð 	
ð 	×"Ò" ;°cÅÐJsÐ"ÑtÔtÐtØ×"Ò"Ø˜s­Ð3cð 	#ñ 	
ô 	
ð 	
ð 	×"Ò"ØØÝØWð	 	#ñ 	
ô 	
ð 	
ð 	×"Ò"Ø¥SÐ/jð 	#ñ 	
ô 	
ð 	
ð 	×"Ò"Ð#9ÅÐJtÐ"ÑuÔuÐuØ×"Ò"Ø ,Ð5gð 	#ñ 	
ô 	
ð 	
ð 	×"Ò"ØÝØað 	#ñ 	
ô 	
ð 	
ð
 	×"Ò"Ø�CÐ&qð 	#ñ 	
ô 	
ð 	
ð 	×"Ò"ØØØjð 	#ñ 	
ô 	
ð 	
ð
 	×"Ò"­Ð"Ñ6Ô6Ð6Ð6Ð6ó    ÚargsÚreturnNc                 ó  ‡— ‰j         | _         ‰j        | _        ‰j        | _        ‰j        | _        ‰j        | _        ‰j        | _        ‰j        | _        ‰j        | _        ‰j        | _        ‰j	        | _	        t          ‰j        d¬¦  «        | _        ‰j        | _        ‰j        �#‰j        dk    rt          d‰j        › d�¦  «        ‚‰j        | _        ‰j                              d¦  «        d         }|  |  ‰j        �nt%          ˆfd„d	D ¦   «         ¦  «        rS‰j        �t          d
¦  «        ‚‰j        �‰j        dk    rt          d¦  «        ‚d| _        ‰j        | _        d| _        d S ‰j        €/t(          j                             |¦  «        r|| _        || _        d S ‰j        €/t(          j                             |¦  «        r|| _        d| _        d S ‰j        €t          d|› d�¦  «        ‚‰j        €[t(          j                             ‰j        ¦  «        r7‰j        | _        t(          j                             ‰j        ¦  «        | _        d S ‰j        €‰j        | _        d| _        d S ‰j        | _        ‰j        | _        d S )Nzhuggingface-cli)ÚtokenÚlibrary_namer   z'`every` must be a positive value (got 'z')ú/éÿÿÿÿc              3   ó*   •K  — | ]}|‰j         v V — Œd S )N)r   )Ú.0Úcr0   s     €r-   ú	<genexpr>z)UploadCommand.__init__.<locals>.<genexpr>§   s*   øè è € Ð.]Ð.]È¨q°D´OÐ/CÐ.]Ð.]Ð.]Ð.]Ð.]Ð.]r/   )r%   r   ú[zICannot set `--include` when passing a `local_path` containing a wildcard.ú.zLCannot set `path_in_repo` when passing a `local_path` containing a wildcard.ú'zD' is not a local file or folder. Please set `local_path` explicitly.)r   Ú	repo_typeÚrevisionÚprivateÚincludeÚexcludeÚdeleteÚcommit_messageÚcommit_descriptionÚ	create_prr   r3   ÚapiÚquietÚeveryÚ
ValueErrorÚsplitr   Úanyr   ÚosÚpathÚisfileÚisdirÚbasename)Úselfr0   Ú	repo_names    ` r-   Ú__init__zUploadCommand.__init__�   sm  ø€ Ø œLˆŒØ(,¬ˆŒØ'+¤}ˆŒØ!œ\ˆŒà,0¬LˆŒØ,0¬LˆŒØ+/¬;ˆŒà-1Ô-@ˆÔØ15Ô1HˆÔØ#œ~ˆŒÝ d¤jÐ?PÐQÑQÔQˆŒØœ:ˆŒ
ð Œ:Ð! d¤j°A¢o oÝÐUÀtÄzÐUÐUÐUÑVÔVÐVØ&*¤jˆŒ
ð œ×+Ò+¨CÑ0Ô0°Ô4ˆ	ØÐØÐàŒ?Ð&­3Ð.]Ð.]Ð.]Ð.]È_Ð.]Ñ.]Ô.]Ñ+]Ô+]Ð&ØŒ|Ð'Ý Ð!lÑmÔmÐmØÔ Ð,°Ô1BÀcÒ1IÐ1IÝ Ð!oÑpÔpÐpØ!ˆDŒOØœ?ˆDŒLØ #ˆDÔÐÐØŒ_Ð$­¬¯ª¸	Ñ)BÔ)BÐ$à'ˆDŒOØ )ˆDÔÐÐØŒ_Ð$­¬¯ª°yÑ)AÔ)AÐ$à'ˆDŒOØ #ˆDÔÐÐØŒ_Ð$õ Ðp ÐpÐpÐpÑqÔqÐqØÔÐ&­2¬7¯>ª>¸$¼/Ñ+JÔ+JÐ&à"œoˆDŒOÝ "¤× 0Ò 0°´Ñ AÔ AˆDÔÐÐØÔÐ&à"œoˆDŒOØ #ˆDÔÐÐð #œoˆDŒOØ $Ô 1ˆDÔÐÐr/   c                 ó¾  — t          dd¦  «         | j        r~t          ¦   «          t          j        ¦   «         5  t          j        d¦  «         t          |                      ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          ¦   «          d S t          j
        ¦   «          t          |                      ¦   «         ¦  «         t          j        ¦   «          d S )Nzhuggingface-cli uploadz	hf uploadÚignore)r   rH   r   ÚwarningsÚcatch_warningsÚsimplefilterÚprintÚ_uploadr   r   Úset_verbosity_infoÚset_verbosity_warning)rR   s    r-   ÚrunzUploadCommand.runÈ   s  € Ý Ð!9¸;ÑGÔGÐGàŒ:ð 		,Ý!Ñ#Ô#Ð#ÝÔ(Ñ*Ô*ð &ð &ÝÔ% hÑ/Ô/Ð/Ý�d—l’l‘n”nÑ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &õ !Ñ"Ô"Ð"Ð"Ð"åÔ&Ñ(Ô(Ð(Ý�$—,’,‘.”.Ñ!Ô!Ð!ÝÔ)Ñ+Ô+Ð+Ð+Ð+s   ¹6A;Á;A?ÂA?c                 óÐ  — t           j                             | j        ¦  «        r™| j        �,t          | j        ¦  «        dk    rt          j        d¦  «         | j        �,t          | j        ¦  «        dk    rt          j        d¦  «         | j	        �,t          | j	        ¦  «        dk    rt          j        d¦  «         t          ¦   «         s!t          st                               d¦  «         | j        ���t           j                             | j        ¦  «        rwt           j                             | j        ¦  «        }| j                             | j        ¦  «        r"| j        d t          | j        ¦  «         …         n| j        }| j        g}g }nS| j        }| j        }| j        pg }| j        pg }| j	        �,t          | j	        ¦  «        dk    rt          j        d¦  «         t%          || j        | j        | j        |||| j        | j        | j        ¬¦
  «
        }t1          d| j        › d	|j        › d
�¦  «         	 	 t3          j        d¦  «         Œ# t6          $ r |                     ¦   «          Y dS w xY wt           j                             | j        ¦  «        s<t           j                             | j        ¦  «        st=          d| j        › d�¦  «        ‚| j                             | j        | j        d| j        | j        dk    rdnd ¬¦  «        j        }| j        �‹| j         s„	 | j         !                    || j        | j        ¬¦  «         n[# tD          $ rN t                               d| j        › d�¦  «         | j         #                    || j        | j        d¬¦  «         Y nw xY wt           j                             | j        ¦  «        rE| j         $                    | j        | j        || j        | j        | j%        | j&        | j         ¬¦  «        S | j         '                    | j        | j        || j        | j        | j%        | j&        | j         | j        | j        | j	        ¬¦  «        S )Nr   z5Ignoring `--include` since a single file is uploaded.z5Ignoring `--exclude` since a single file is uploaded.z4Ignoring `--delete` since a single file is uploaded.z©Consider using `hf_transfer` for faster uploads. This solution comes with some limitations. See https://huggingface.co/docs/huggingface_hub/hf_transfer for more details.z:Ignoring `--delete` when uploading with scheduled commits.)
Úfolder_pathr   r>   r?   Úallow_patternsÚignore_patternsr   r@   rI   Úhf_apizScheduling commits every z minutes to r<   Téd   zStopped scheduled commits.zNo such file or directory: 'z'.r    Úgradio)r   r>   Úexist_okr@   Ú	space_sdk)r   r>   r?   zBranch 'z' not found. Creating it...)r   r>   Úbranchrf   )Úpath_or_fileobjr   r   r>   r?   rD   rE   rF   )r`   r   r   r>   r?   rD   rE   rF   ra   rb   Údelete_patterns)(rM   rN   rO   r   rA   ÚlenrW   ÚwarnrB   rC   r   r
   ÚloggerÚinforI   Údirnamer   Úendswithr   r   r>   r?   r@   rG   rZ   ÚtimeÚsleepÚKeyboardInterruptÚstoprP   ÚFileNotFoundErrorÚcreate_reporF   Ú	repo_infor   Úcreate_branchÚupload_filerD   rE   Úupload_folder)rR   r`   r   ra   rb   Ú	schedulerr   s          r-   r[   zUploadCommand._uploadÖ   sm  € ÝŒ7�>Š>˜$œ/Ñ*Ô*ð 	VØŒ|Ð'­C°´Ñ,=Ô,=ÀÒ,AÐ,AÝ”ÐUÑVÔVÐVØŒ|Ð'­C°´Ñ,=Ô,=ÀÒ,AÐ,AÝ”ÐUÑVÔVÐVØŒ{Ð&­3¨t¬{Ñ+;Ô+;¸aÒ+?Ð+?Ý”ÐTÑUÔUÐUåÑ!Ô!ð 	Õ*Cð 	Ý�KŠKð]ñô ð ð Œ:Ñ!ÝŒw�~Š~˜dœoÑ.Ô.ð `å œgŸošo¨d¬oÑ>Ô>�ð Ô(×1Ò1°$´/ÑBÔBð+�DÔ%Ð&=­¨T¬_Ñ)=Ô)=Ð(=Ð&=Ô>Ð>àÔ*ð ð
 #'¤/Ð!2�Ø"$��à"œo�Ø#Ô0�Ø!%¤Ð!3°�Ø"&¤,Ð"4°"�Ø”;Ð*­s°4´;Ñ/?Ô/?À!Ò/CÐ/CÝ”MÐ"^Ñ_Ô_Ð_å'Ø'ØœØœ.ØœØ-Ø /Ø)ØœØ”jØ”xðñ ô ˆIõ ÐZ¨d¬jÐZÐZÀiÔFWÐZÐZÐZÑ[Ô[Ð[ð4ð$Ý”J˜s‘O”O�Oð$øå$ð 4ð 4ð 4Ø—’Ñ Ô Ð Ø3Ð3Ð3ð4øøøõ
 Œw�~Š~˜dœoÑ.Ô.ð 	Xµr´w·}²}ÀTÄ_Ñ7UÔ7Uð 	XÝ#Ð$VÀ4Ä?Ð$VÐ$VÐ$VÑWÔWÐWØ”(×&Ò&Ø”LØ”nØØ”LØ"&¤.°GÒ";Ð";�h�hÀð 'ñ 
ô 
ô ð 	ð Œ=Ð$¨T¬^Ð$ðwØ”×"Ò"¨7¸d¼nÐW[ÔWdÐ"ÑeÔeÐeÐeøÝ(ð wð wð wÝ—’ÐQ t¤}ÐQÐQÐQÑRÔRÐRØ”×&Ò&¨wÀ$Ä.ÐY]ÔYfÐquÐ&ÑvÔvÐvÐvÐvðwøøøõ Œ7�>Š>˜$œ/Ñ*Ô*ð 	Ø”8×'Ò'Ø $¤Ø!Ô.ØØœ.ØœØ#Ô2Ø#'Ô#:Øœ.ð (ñ 	ô 	ð 	ð ”8×)Ò)Ø œOØ!Ô.ØØœ.ØœØ#Ô2Ø#'Ô#:Øœ.Ø#œ|Ø $¤Ø $¤ð *ñ ô ð s%   È;I ÉI3É2I3Ì%'M ÍAN%Î$N%)r1   N)Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r.   r   rT   r^   r)   r[   © r/   r-   r   r   F   s™   € € € € € ØðC7Ð$5ð C7ð C7ð C7ñ „\ðC7ðJ92˜Yð 92¨4ð 92ð 92ð 92ð 92ðv,ð ,ð ,ð ,ðh˜ð hð hð hð hð hð hr/   r   )!Ú__doc__rM   rq   rW   Úargparser   r   Útypingr   r   Úhuggingface_hubr   Ú!huggingface_hub._commit_schedulerr   Úhuggingface_hub.commandsr	   Úhuggingface_hub.constantsr
   Úhuggingface_hub.errorsr   Úhuggingface_hub.hf_apir   Úhuggingface_hub.utilsr   r   Úhuggingface_hub.utils._runtimer   Ú
_cli_utilsr   Ú
get_loggerr|   rm   r   r€   r/   r-   ú<module>rŽ      sX  ðð ð  ðD 
€	€	€	Ø €€€Ø €€€Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !à #Ð #Ð #Ð #Ð #Ð #Ø =Ð =Ð =Ð =Ð =Ð =Ø >Ð >Ð >Ð >Ð >Ð >Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø (Ð (Ð (Ð (Ð (Ð (Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ ;Ð ;Ð ;Ð ;Ð ;Ð ;à 0Ð 0Ð 0Ð 0Ð 0Ð 0ð 
ˆÔ	˜HÑ	%Ô	%€ðxð xð xð xð xÐ-ñ xô xð xð xð xr/   