
    qi,              #       |   d Z ddl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	 ddl
mZ ddlmZ ddlmZmZ dd	lmZmZmZmZmZmZmZ  e	j2                  e      Zg d
Zddej:                  dddddddddddfdedeee    ej>                  d      f   deee    ej>                  d      f   dedededeee e       ejB                  d      f   deee e       ejB                  d      f   deee e       ejB                  d      f   deee    ejB                  d      f   deee    ejB                  d      f   dee" ejB                  d       f   d!eee#    ejB                  d"      f   d#ed$ee" ejB                  d%      f   d&df d'Z$dedee   dee   dee e      d&e%eeee e      f   f
d(Z&y))a  Contains command to upload a repo or file with the CLI.

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

    # Upload file (explicit)
    hf 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.
    hf upload my-cool-model

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

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

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

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

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

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

    # Schedule commits every 30 minutes
    hf upload Wauplin/my-cool-model --every=30
    N)	AnnotatedOptional)logging)CommitScheduler)RevisionNotFoundError)disable_progress_barsenable_progress_bars   )
PrivateOpt	RepoIdArgRepoTypeRepoTypeOptRevisionOptTokenOpt
get_hf_api)zhf upload my-cool-model . .z:hf upload Wauplin/my-cool-model ./models/model.safetensorszChf upload Wauplin/my-cool-dataset ./data /train --repo-type=datasetzrhf upload Wauplin/my-cool-model ./models . --commit-message="Epoch 34/50" --commit-description="Val accuracy: 68%"z?hf upload bigcode/the-stack . . --repo-type dataset --create-prFrepo_id
local_pathzkLocal path to the file or folder to upload. Wildcard patterns are supported. Defaults to current directory.)helppath_in_repoz\Path of the file or folder in the repo. Defaults to the relative path of the file or folder.	repo_typerevisionprivateincludez'Glob patterns to match files to upload.excludez.Glob patterns to exclude from files to upload.deletezDGlob patterns for file to be deleted from the repo while committing.commit_messagez9The summary / title / first line of the generated commit.commit_descriptionz(The description of the generated commit.	create_prz0Whether to upload content as a new Pull Request.everyzMf set, a background job is scheduled to create commits every `every` minutes.tokenquietzADisable progress bars and warnings; print only the returned path.returnc                 
   	
 dk  rt        j                  dd      |j                  t        |      t	         |||      \  dt
        f
	 fd	}|rWt                t        j                         5  t        j                  d
       t         |              ddd       t                yt         |              t        j                          y# 1 sw Y   t                yxY w)zLUpload a file or a folder to the Hub. Recommended for single-commit uploads.Nr   z --every must be a positive valuer   )
param_hint)r    )r   r   r   r   r"   c                  v   t         j                  j                        r3t              dkD  r%t	        t
              rt        j                  d       #t              dkD  rt        j                  d       
#t        
      dkD  rt        j                  d       t         j                  j                        rGt         j                  j                        } j                        rd t                n}g}g }n-} }}}
#t        
      dkD  rt        j                  d       t        | |||
      }t        d d|j                   d	       	 	 t        j                  d       t         j                  j                        s.t         j                  j#                        st%        d d      j'                  d
dk(  rdnd       j                  }	s	 j)                  |       t         j                  j                        rj3                  |	      S j5                  |	
      S # t        $ r |j!                          Y yw xY w# t*        $ r1 t,        j/                  d d       j1                  |d
       Y w xY w)Nr   z3Ignoring --include since a single file is uploaded.z3Ignoring --exclude since a single file is uploaded.z2Ignoring --delete since a single file is uploaded.z8Ignoring --delete when uploading with scheduled commits.)
folder_pathr   r   r   allow_patternsignore_patternsr   r   r   hf_apizScheduling commits every z minutes to .Td   zStopped scheduled commits.zNo such file or directory: 'z'.spacegradio)r   r   exist_okr   	space_sdk)r   r   r   zBranch 'z' not found. Creating it...)r   r   branchr.   )path_or_fileobjr   r   r   r   r   r   r   )r&   r   r   r   r   r   r   r   r'   r(   delete_patterns)ospathisfilelen
isinstancelistwarningswarndirnameendswithr   printr   timesleepKeyboardInterruptstopisdirFileNotFoundErrorcreate_repo	repo_infor   loggerinfocreate_branchupload_fileupload_folder)r&   pir'   r(   	schedulercreatedapir   r   r   r   r   r   r   r   repo_type_strresolved_includeresolved_local_pathresolved_path_in_repor   s         L/opt/pipecat/venv/lib/python3.12/site-packages/huggingface_hub/cli/upload.py
run_uploadzupload.<locals>.run_upload   s   77>>-.+4D0E0IjYikoNpST"s7|a'7ST!c&kAoRS  ww~~12 ggoo.AB -556IJ **ES1D-E,EF. 
 #6!6"$1*!1")%#f+/MM"\]'''!- /I -eWLARAR@SSTUV4JJsO  ww~~12277==I\;]#&BCVBWWY$Z[[//#"/7":h " 
 ' 	 	lgQYZ 77>>-.?? 32'!-#5# # 	 	   +.#)1+#" ! 
 	
Q % 4 34* ) lhxj0KLM!!']S[fj!kls$   'I 7I> I;:I;>7J87J8ignore)typerBadParametervaluer   _resolve_upload_pathsstrr   r9   catch_warningssimplefilterr=   r	   r   set_verbosity_warning)r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   rT   rN   rO   rP   rQ   rR   s   `   `` ``````   @@@@@rS   uploadr^   T   s    J UaZ  !CPWXXOOM
5
!C DYJ\SZD@.0@c
 c
 c
 c
J $$& 	 !!(+*,	  	jl%%'	  	s   &C//Dc                    | j                  d      d   }|}9t        fddD              r%|t        d      ||dk7  rt        d      ddgfS $t        j                  j                  |      r|||fS $t        j                  j                  |      r|d|fS t        d| d	      |At        j                  j                        r"t        j                  j                        |fS |d|fS ||fS )
N/c              3   &   K   | ]  }|v  
 y w)N ).0cr   s     rS   	<genexpr>z(_resolve_upload_paths.<locals>.<genexpr>  s     %O!a:o%Os   )*?[z9Cannot set --include when local_path contains a wildcard.r*   z<Cannot set path_in_repo when local_path contains a wildcard.'zB' is not a local file or folder. Please set local_path explicitly.)splitany
ValueErrorr3   r4   r5   rB   basename)r   r   r   r   	repo_namerP   s    `    rS   rY   rY     s     c"2&I#%O%O"OXYY#(;[\\J%%bggnnY7)%555bggmmI6#///1YK'ijkkz :277++J79III3 000|%555    )'__doc__r3   r>   r9   typingr   r   rV   huggingface_hubr   !huggingface_hub._commit_schedulerr   huggingface_hub.errorsr   huggingface_hub.utilsr   r	   
_cli_utilsr   r   r   r   r   r   r   
get_logger__name__rF   UPLOAD_EXAMPLESmodelrZ   Argumentr8   Optionboolfloatr^   tuplerY   rc   rp   rS   <module>r      s   D 
   &  # = 8 M   
		H	%  	 	%^^  	 	 	 	 	 	 	 	C~(~(~	
	~( o	
	~( ~( ~(  !~(" c:	
	#~(. cA	
	/~(: cW	
	;~(F L	
	G~(R ";	
	S~(^ C	
	_~(j `	
	k~(v w~(x T	
	y~(D 
E~(B66!)#6>Fsm6V^_cdg_hVi6
3Xd3i(()6rp   