
    HThm`                        % S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J	r	  S SK
Jr  S SKJr  S SKJrJrJrJrJr  S SKJr  SSKJr  SS	KJrJrJr  SS
KJrJrJrJr  SSKJ r J!r!  SSK"J#r#J$r$J%r%  SSK&J'r'  SSK(J)r)  \(       a  SSK*J+r+  \RX                  " \-5      r.Sr/Sr0Sr1/ SQr2\\3   \4S'   SSSSSSSS.SSS\5S\\5\4   S\5S\\5   S\\6   S\\\\5   \54      S \\\\5   \54      S!\\3   S"\6S#\34S$ jjr7 " S% S&\ Rp                  5      r9\\\4   r: " S' S(5      r;S)\;SSS\5S\5S\54
S* jr<S)\;S+\\\9\\:   4      4S, jr=S-\:S+S4S. jr>S/\\:   SSS\5S\5S\5S+S4S0 jr?S-\:SSS\5S\5S\5S+S4S1 jr@S/\\:   SSS\5S\5S\5S+S4S2 jrA " S3 S4\5      rBS-\:S+\B4S5 jrCS6S7S+\\:   4S8 jrDS6S7S9\3S+\\:   4S: jrES6S7S+\\:   4S; jrFS<\5S+S4S= jrGg)>    N)datetime)Path)Lock)TYPE_CHECKINGListOptionalTupleUnion)quote   )	constants)CommitOperationAdd
UploadInfo_fetch_upload_modes)LocalUploadFileMetadataLocalUploadFilePathsget_local_upload_pathsread_upload_metadata)DEFAULT_REVISION
REPO_TYPES)DEFAULT_IGNORE_PATTERNSfilter_repo_objectstqdm)_format_size)sha_fileobj)HfApi
   K      )
   2   r   d   }         i  iX  i  COMMIT_SIZE_SCALET<   )revisionprivateallow_patternsignore_patternsnum_workersprint_reportprint_report_everyapir   repo_idfolder_path	repo_typer(   r)   r*   r+   r,   r-   r.   c                T  ^ Uc  [        S5      eU[        ;  a  [        S[         35      eUc  [        n[        T5      R	                  5       R                  5       mTR                  5       (       d  [        ST S35      eUc  / nO[        U[        5      (       a  U/nU[        -  nUc-  [        R                  " 5       =(       d    Sn[        US-
  S5      nU R                  XUSS	9n[        R                  S
U 35        UR                   n[#        U4S jTR%                  S5       5       UUS9nU Vs/ s H  n['        TU5      PM     nn[        R                  S[)        U5       S35        [+        USS9 Vs/ s H  nU[-        TUR.                  5      4PM     nn[1        U5      n[3        U5       Vs/ s H"  n[4        R6                  " [8        UU UUUS.S9PM$     nnU H  nUR;                  5         M     U	(       a  [=        SUR?                  5       -   5        [@        R@                  " 5       n [@        RB                  " S5        [@        R@                  " 5       U-
  U
:  a5  U	(       a  [E        UR?                  5       5        [@        R@                  " 5       nURG                  5       (       a  [H        R                  " S5        OM  U H  nURK                  5         M     [        R                  UR?                  5       5        [H        R                  " S5        gs  snf s  snf s  snf )zUpload a large folder to the Hub in the most resilient way possible.

See [`HfApi.upload_large_folder`] for the full documentation.
NzFor large uploads, `repo_type` is explicitly required. Please set it to `model`, `dataset` or `space`. If you are using the CLI, pass it as `--repo-type=model`.z"Invalid repo type, must be one of zProvided path: 'z' is not a directoryr      T)r0   r2   r)   exist_okzRepo created: c              3      >#    U  H:  oR                  5       (       d  M  UR                  T5      R                  5       v   M<     g 7fN)is_filerelative_toas_posix).0pathr1   s     \/var/www/auris/envauris/lib/python3.13/site-packages/huggingface_hub/_upload_large_folder.py	<genexpr>/upload_large_folder_internal.<locals>.<genexpr>d   s6     i>VdZfZfZh	1		+	&	/	/	1	1>Vs
   A&Az**/*)r*   r+   zFound z candidate files to uploadzRecovering from metadata files)desc)statusr/   r0   r2   r(   )targetkwargsz

zIs done: exiting main loopzUpload is complete!)&
ValueErrorr   r   r   
expanduserresolveis_dir
isinstancestrr   os	cpu_countmaxcreate_repologgerinfor0   r   globr   lenr   r   path_in_repoLargeUploadStatusrange	threadingThread_worker_jobstartprintcurrent_reporttimesleep_print_overwriteis_doneloggingjoin)r/   r0   r1   r2   r(   r)   r*   r+   r,   r-   r.   nb_coresrepo_urlfiltered_paths_listrelpath
paths_listpathsitemsrA   _threadsthreadlast_report_tss     `                    r=   upload_large_folder_internalrl   2   s   & I
 	
 
"=j\JKK#{#..088:K+K=8LMNN	OS	)	)*+..O<<>&Q(Q,* wW_cdH
KK.
+,G .ik>N>Nv>Vi%'
 ObbNa7(g>NaJb
KK&Z))CDE
 *+KLLE 
$[%2D2DEFL 
  u%F {# $A 	 "&$		
 $     fv,,../YY[N


199;'+== !6!6!89!YY[N>>LL56    KK%%'(LL&'] cs   4L:"L 6)L%c                       \ rS rSr\R
                  " 5       r\R
                  " 5       r\R
                  " 5       r\R
                  " 5       r	\R
                  " 5       r
Srg)	WorkerJob    N)__name__
__module____qualname____firstlineno__enumautoSHA256GET_UPLOAD_MODEPREUPLOAD_LFSCOMMITWAIT__static_attributes__rp       r=   rn   rn      s9    YY[FiikOIIKMYY[F99;Dr}   rn   c                   p    \ rS rSrSrS\\   4S jrS\4S jr	S\
S\S	\SS
4S jrS\4S jrS\
4S jrSrg
)rS      zBContains information, queues and tasks for a large upload process.rg   c                    Xl         [        R                  " 5       U l        [        R                  " 5       U l        [        R                  " 5       U l        [        R                  " 5       U l        [        5       U l        SU l	        SU l
        SU l        SU l        SU l        S U l        [        R                   " 5       U l        SU l        [        5       U l        U R                    H  nUu  p4UR(                  c  U R                  R+                  U5        M1  UR,                  c  U R                  R+                  U5        M[  UR,                  S:X  a.  UR.                  (       d  U R
                  R+                  U5        M  UR0                  (       d  U R                  R+                  U5        M  [2        R5                  SUR6                   S35        M     g )Nr   r   lfszSkipping file z! (already uploaded and committed))rg   queueQueuequeue_sha256queue_get_upload_modequeue_preupload_lfsqueue_commitr   locknb_workers_sha256nb_workers_get_upload_modenb_workers_preupload_lfsnb_workers_commitnb_workers_waitinglast_commit_attemptr   now_started_at
_chunk_idx_chunk_locksha256putupload_modeis_uploadedis_committedrN   debugrR   )selfrg   itemrf   metadatas        r=   __init__LargeUploadStatus.__init__   sP   
7<{{}@E">Ckkm 7<{{}F	&'/0'-.%&''(48 #<<> !% JJD"OE&!!%%d+%%-**..t4%%.x7K7K((,,T2**!!%%d+~e.@.@-AAbcd r}   returnc                 v    U R                      [        U R                     sS S S 5        $ ! , (       d  f       g = fr7   )r   r&   r   r   s    r=   target_chunkLargeUploadStatus.target_chunk   s#    $T__5 s   *
8successnb_itemsdurationNc           
         U R                      U(       d/  [        R                  SU S35        U =R                  S-  sl        OKU[        U R                     :  a4  US:  a.  [        R                  SU S35        U =R                  S-  sl        [        S[        U R                  [        [        5      S-
  5      5      U l        S S S 5        g ! , (       d  f       g = f)NzFailed to commit z9 files at once. Will retry with less files in next batch.r   (   zSuccessfully committed z. at once. Increasing the limit for next batch.r   )	r   rN   warningr   r&   rO   rL   minrQ   )r   r   r   r   s       r=   update_chunkLargeUploadStatus.update_chunk   s    !28*<uvw1$.t??HrM5hZ?mno1$!!S#>O:PST:T%UVDO s   B7C
Cc                    SnSnSnSnSnSnSnSnSn	Sn
SnU R                      U R                   H  u  pUR                  (       a  U
S-  n
M  XR                  -  n	US-  nUR                  b  US-  nX-R                  -  nUR
                  S:X  a  US-  nUR
                  c  US-  nUR                  (       a  US-  nXmR                  -  nUR                  (       d  M  US-  nXR                  -  nM     [        U	5      n[        R                  " 5       nUR                  S5      nXR                  -
  n[        U5      R                  S5      S   nSnUSU S	U S
3-  nUS-  nUS-  nUSU SU S	[        U5       SU S3	-  nUSU SU S	[        U5       SU S3	-  nUS:  a	  USU S3-  nUSU SU S	[        U5       SU S3	-  nUSU
 S3-  nUS-  nUSU R                   S3-  nUSU R                    S3-  nUSU R"                   S3-  nUSU R$                   S3-  nUSU R&                   S3-  nUS-  nUsSSS5        $ ! , (       d  f       g= f)z<Generate a report of the current status of the large upload.r   r   Nr   z%Y-%m-%d %H:%M:%S.z
---------- z (z) z----------
z	Files:   zhashed /z) | zpre-uploaded: )z (+z unsure)z | committed: z | ignored: 
z	Workers: z	hashing: z | zget upload mode: zpre-uploading: zcommitting: z	waiting: z3---------------------------------------------------)r   rg   should_ignoresizer   r   r   r   r   r   r   strftimer   rI   splitr   r   r   r   r   )r   	nb_hashedsize_hashednb_preuploadednb_lfsnb_lfs_unsuresize_preuploadednb_committedsize_committed
total_sizeignored_filestotal_filesrh   r   total_size_strr   now_strelapsedelapsed_strmessages                       r=   rZ    LargeUploadStatus.current_report   s   	
YY#zz))!Q&Mmm+
q ??.NI==0K''50aKF''/!Q&M''"a'N$5$((( A%L"mm3N%  *& **5N,,.Cll#67G,,,Gg,,,S1!4K%G7)2k]"55G&G{"G1[ML<U;VVWXfWggkllG'7q<P`CaBbbcdrcsstuuGq Sx88~Q{m2lSaFbEccdesdttuvvGm_B77G{"G4#9#9":#>>G*4+J+J*K3OOG)F)F(GsKKGd&<&<%=SAAG4#:#:";2>>GxG_ YYs   B7IEI
Ic                     U R                      [        S U R                   5       5      sS S S 5        $ ! , (       d  f       g = f)Nc              3   d   #    U  H&  u  pUR                   =(       d    UR                  v   M(     g 7fr7   r   r   r;   rh   r   s      r=   r>   ,LargeUploadStatus.is_done.<locals>.<genexpr>  s(     eZd;1x,,F0F0FFZd   .0)r   allrg   r   s    r=   r^   LargeUploadStatus.is_done  s(    YYeZ^ZdZdee YYs	   3
A)r   r   r   rg   r   r   r   r   r   r   r   r   r   r   r   )rq   rr   rs   rt   __doc__r   
JOB_ITEM_Tr   intr   boolfloatr   rI   rZ   r^   r|   rp   r}   r=   rS   rS      sf    Led:. eB6c 6	WD 	WC 	W5 	WT 	W= =~f fr}   rS   rA   c                 	    Sn[        U 5      nUc  gUu  pgU[        R                  :X  aX  US   n [        U5        U R                  R                  U5        U R                     U =R                  S-  sl        SSS5        GOUU[        R                  :X  a   [!        XqX#US9  U H  nUu  pUR"                  (       a  M  UR$                  S:X  a  U R&                  R                  U5        MG  UR$                  S	:X  a  U R(                  R                  U5        Mt  U R                  R                  U5        M     U R                     U =R*                  S-  sl        SSS5        GOtU[        R,                  :X  aX  US   n [/        XX#US9  U R(                  R                  U5        U R                     U =R0                  S-  sl        SSS5        GOU[        R2                  :X  a  [4        R4                  " 5       nSn [7        XqX#US9  [4        R4                  " 5       U-
  nU R9                  U[;        U5      U5        U R                     [4        R4                  " 5       U l        U =R>                  S-  sl        SSS5        OXU[        R@                  :X  aD  [4        RB                  " [D        5        U R                     U =RF                  S-  sl#        SSS5        GM  ! [         a    e [         aS  n	[        R                  SU	 35        [        R                  " 5         U R                  R                  U5         Sn	A	GNSn	A	ff = f! , (       d  f       N{= f! [         a    e [         a8  n	[        R                  SU	 35        [        R                  " 5          Sn	A	GNSn	A	ff = f! , (       d  f       N= f! [         a    e [         aS  n	[        R                  S
U	 35        [        R                  " 5         U R&                  R                  U5         Sn	A	GNtSn	A	ff = f! , (       d  f       GNW= f! [         a    e [         a^  n	[        R                  SU	 35        [        R                  " 5         U H  nU R(                  R                  U5        M      Sn Sn	A	GNSn	A	ff = f! , (       d  f       GN= f! , (       d  f       GN= f)a  
Main process for a worker. The worker will perform tasks based on the priority list until all files are uploaded
and committed. If no tasks are available, the worker will wait for 10 seconds before checking again.

If a task fails for any reason, the item(s) are put back in the queue for another worker to pick up.

Read `upload_large_folder` docstring for more information on how tasks are prioritized.
TNr   zFailed to compute sha256: r   )r/   r0   r2   r(   zFailed to get upload mode: r   regularzFailed to preupload LFS: zFailed to commit: F)$_determine_next_jobrn   rw   _compute_sha256r   r   KeyboardInterrupt	ExceptionrN   error	traceback
format_excr   r   r   rx   _get_upload_moder   r   r   r   r   ry   _preupload_lfsr   rz   r[   _commitr   rQ   r   r   r{   r\   WAITING_TIME_IF_NO_TASKSr   )rA   r/   r0   r2   r(   next_jobjobrg   r   erh   r   start_tsr   r   s                  r=   rW   rW      s    AE 'v.
 )"""8D.%,,006 ((A-(  I---' `hi "))''50..2248))Y6''++D10044T:  11Q61  I+++8D5tg]ef##''- //14/  I$$$yy{HG	 W_` yy{X-HUX>-1YY[*((A-(  INN"JJ/0))Q.) s  %  .9!=>$$&##''--.
  %  ':1#>?$$&&'(  %  58<=$$&**..t445
  %   1!56$$&!D''++D1 "   s   &K #MM N%>&N6 0P <P2 0R':R9M/AL==M
MN"*-NN"%
N36P
APP 
P/2R$ARR$'
R69
Sr   c                    U R                      U R                  S:X  a  U R                  R                  5       S:  a  U R                  b~  [
        R
                  " 5       U R                  -
  S:  aX  U =R                  S-  sl        [        R                  S5        [        R                  [        U R                  5      4sS S S 5        $ U R                  S:X  av  U R                  R                  5       S:  aX  U =R                  S-  sl        [        R                  S5        [        R                  [        U R                  5      4sS S S 5        $ U R                  R                  5       S:  ag  U =R                  S-  sl        [        R                  S5        [        R                  [        U R                  U R                  5       5      4sS S S 5        $ U R                   R                  5       S:  ah  U R"                  S:X  aX  U =R"                  S-  sl        [        R                  S	5        [        R$                  ['        U R                   5      4sS S S 5        $ U R(                  R                  5       S:  ah  U R*                  S:X  aX  U =R*                  S-  sl        [        R                  S
5        [        R,                  ['        U R(                  5      4sS S S 5        $ U R                  R                  5       S:  aw  U R                  S:X  ag  U =R                  S-  sl        [        R                  S5        [        R                  [        U R                  U R                  5       5      4sS S S 5        $ U R                   R                  5       S:  a}  U R"                  S:X  d  [.        R0                  (       dX  U =R"                  S-  sl        [        R                  S5        [        R$                  ['        U R                   5      4sS S S 5        $ U R(                  R                  5       S:  aX  U =R*                  S-  sl        [        R                  S5        [        R,                  ['        U R(                  5      4sS S S 5        $ U R                  R                  5       S:  ag  U =R                  S-  sl        [        R                  S5        [        R                  [        U R                  U R                  5       5      4sS S S 5        $ U R                  S:X  a  U R                  R                  5       S:  a  U R                  b~  [
        R
                  " 5       U R                  -
  S:  aX  U =R                  S-  sl        [        R                  S5        [        R                  [        U R                  5      4sS S S 5        $ U R                  S:X  Ga   U R                  R                  5       S:  a  U R(                  R                  5       S:X  a  U R                  R                  5       S:X  a  U R                   R                  5       S:X  a  U R*                  S:X  ax  U R                  S:X  ah  U R"                  S:X  aX  U =R                  S-  sl        [        R                  S5        [        R                  [        U R                  5      4sS S S 5        $ [3        S U R4                   5       5      (       a  [        R7                  S5         S S S 5        g U =R8                  S-  sl        [        R                  S[:         S35        [        R<                  / 4sS S S 5        $ ! , (       d  f       g = f)Nr   i,  r   z;Job: commit (more than 5 minutes since last commit attempt)r   zJob: commit (>100 files ready)r   z&Job: get upload mode (>10 files ready)z5Job: preupload LFS (no other worker preuploading LFS)z.Job: sha256 (no other worker computing sha256)z:Job: get upload mode (no other worker getting upload mode)zJob: preupload LFSzJob: sha256zJob: get upload moder'   z-Job: commit (1 min since last commit attempt)zJob: commitc              3   d   #    U  H&  u  pUR                   =(       d    UR                  v   M(     g 7fr7   r   r   s      r=   r>   &_determine_next_job.<locals>.<genexpr>  s(     aT`[Q&&@(*@*@@T`r   z.All files have been processed! Exiting worker.zNo task available, waiting... (zs))r   r   r   qsizer   r[   rN   r   rn   rz   _get_items_to_commitr   r   rx   _get_nr   r   r   ry   _get_oner   r   rw   r   HF_HUB_ENABLE_HF_TRANSFERr   rg   rO   r   r   r{   )rA   s    r=   r   r     s   	 $$)##))+a/**6		f8886A$$)$LLVW$$&:6;N;N&OP 
 %%*v/B/B/H/H/Jc/Q$$)$LL9:$$&:6;N;N&OP! 
& ))//1R7--2-LLAB--vf6R6RTZTgTgTi/jk- 
2 ''--/!38W8W[\8\++q0+LLPQ++Xf6P6P-QR9 
>   &&(1,1I1IQ1N$$)$LLIJ$$hv/B/B&CDE 
J ))//1A5&:[:[_`:`--2-LLUV--vf6R6RTZTgTgTi/jkQ 
X ''--/!3++q0	8[8[++q0+LL-.++Xf6P6P-QRc 
h   &&(1,$$)$LL'$$hv/B/B&CDo 
t ))//1A5--2-LL/0--vf6R6RTZTgTgTi/jk{ 
B $$)##))+a/**6		f8886A$$)$LLHI$$&:6;N;N&OPQ 
Z $$)##))+a/##))+q0,,2249**002a7((A-11Q6//14$$)$LL'$$&:6;N;N&OPq 
v aTZT`T`aaaKKHI{ 
B %%*%LL:;S:TTVWXNNB'G 
s_   B0] A<] A;] A<] A<] B] 3B] A,] A;] 	B/] D] 7] A]  
].r   c                     U u  pUR                   cB  UR                  R                  S5       n[        U5      R	                  5       Ul         SSS5        UR                  U5        g! , (       d  f       N = f)z1Compute sha256 of a file and save it in metadata.Nrb)r   	file_pathopenr   hexsave)r   rf   r   fs       r=   r   r     sU    OE__!!$'1)!n002HO (MM% ('s   A&&
A4rg   c                     U  Vs/ s H  n[        U5      PM     nn[        UUUUR                  5       [        USS9S9  [	        X5       H<  u  pWUu  pUR
                  U	l        UR                  U	l        U	R                  U5        M>     gs  snf )zeGet upload mode for each file and update metadata.

Also receive info if the file should be ignored.
 )safe)	additionsr2   r0   headersr(   N)
_build_hacky_operationr   _build_hf_headersr   zip_upload_moder   _should_ignorer   r   )
rg   r/   r0   r2   r(   r   r   additionrf   r   s
             r=   r   r     s    
 ;@@%$'-%I@%%'xb) e/'44!)!8!8e	 0 As   Bc                 x    U u  pV[        U 5      nUR                  UUUU/S9  SUl        UR                  U5        g)z'Preupload LFS file and update metadata.)r0   r2   r(   r   TN)r   preupload_lfs_filesr   r   )r   r/   r0   r2   r(   rf   r   r   s           r=   r   r     sJ    OE%d+H*	    HMM%r}   c                     U  Vs/ s H  n[        U5      PM     nnUR                  UUUUSS9  U  H  u  pxSUl        UR                  U5        M     gs  snf )zCommit files to the repo.z(Add files using upload-large-folder tool)r0   r2   r(   
operationscommit_messageTN)r   create_commitr   r   )	rg   r/   r0   r2   r(   r   r   rf   r   s	            r=   r   r   $  sf    :?@%$'-%I@A   ! $e ! As   Ac                       \ rS rSrSS jrSrg)HackyCommitOperationAddi8  Nc                 x    [        U R                  [        5      (       a  [        U R                  5      U l        g g r7   )rH   path_or_fileobjr   rI   r   s    r=   __post_init__%HackyCommitOperationAdd.__post_init__9  s-    d**D11#&t';';#<D  2r}   )r  )r   N)rq   rr   rs   rt   r	  r|   rp   r}   r=   r  r  8  s    =r}   r  c                 z   U u  p[        UR                  UR                  S9nUR                  R                  S5       nUR	                  S5      S S nS S S 5        UR
                  c  [        S5      e[        [        R                  UR
                  5      UR                  WS9Ul        U$ ! , (       d  f       N_= f)N)rR   r  r   i   z&sha256 must have been computed by now!)r   r   sample)r  rR   r   r   peekr   rD   r   bytesfromhexr   upload_info)r   rf   r   	operationfiler  s         r=   r   r   >  s    OE'U5G5GY^YhYhiI			d	#t3% 
$ABB&emmHOO.LS[S`S`iopI 
$	#s   B,,
B:r   zqueue.Queue[JOB_ITEM_T]c                 &    U R                   " 5       /$ r7   )get)r   s    r=   r   r   N  s    IIK=r}   nc                     [        [        U R                  " 5       U5      5       Vs/ s H  o R                  " 5       PM     sn$ s  snf r7   )rT   r   r   r  )r   r  rh   s      r=   r   r   R  s2    !&s5;;=!'<!=>!=AIIK!=>>>s   Ac                     / nSu  p# U R                   " 5       S:X  a  U$ U[        :  d
  U[        :  a  U$ U R                  " 5       nUR	                  U5        Uu  pVUR
                  S:X  a  US-  nOUS-  nMp  )zXSpecial case for commit job: the number of items to commit depends on the type of files.)r   r   r   r   r   )r   MAX_NB_LFS_FILES_PER_COMMITMAX_NB_REGULAR_FILES_PER_COMMITr  appendr   )r   rg   r   
nb_regularr   rh   r   s          r=   r   r   V  s     !EF
;;=AL 00JBa4aL yy{T5(aKF!OJ! r}   reportc                 ,  ^ U S-  n [         R                  " 5       R                  m[        U4S jU R	                  5        5       5      n[        U5       HA  n[        R                  R                  S5        [        R                  R                  S5        MC     [        R                  R                  U 5        [        R                  R                  ST[        U R	                  5       S   5      -
  -  5        [        R                  R                  5         g)zPrint a report, overwriting the previous lines.

Since tqdm in using `sys.stderr` to (re-)write progress bars, we need to use `sys.stdout`
to print the report.

Note: works well only if no other process is writing to `sys.stdout`!
r   c              3   F   >#    U  H  n[        U5      T-  S -   v   M     g7f)r   N)rQ   )r;   lineterminal_widths     r=   r>   #_print_overwrite.<locals>.<genexpr>{  s!     S?Rt3t9.2?Rs   !z[Kz[Fr   N)shutilget_terminal_sizecolumnssum
splitlinesrT   sysstdoutwriterQ   flush)r  nb_linesrh   r   s      @r=   r]   r]   n  s     dNF--/77N Sv?P?P?RSSH 8_

$

" 
 JJVJJSNS1B1B1DR1H-IIJKJJr}   )Hru   r_   rJ   r   r#  r(  rU   r[   r   r   pathlibr   r   typingr   r   r   r	   r
   urllib.parser   r   r   _commit_apir   r   r   _local_folderr   r   r   r   r   r   utilsr   r   r   utils._cache_managerr   	utils.shar   hf_apir   	getLoggerrq   rN   r   r  r  r&   r   __annotations__rI   r   rl   Enumrn   r   rS   rW   r   r   r   r   r   r  r   r   r   r   r]   rp   r}   r=   <module>r9     s(     	   
       > >   L L v v 3 E E . " 			8	$ "$ ! O 49 O #"6:7;!% d(	d(d( sDy!d(
 d( smd( d^d( U49c>23d( eDIsN34d( #d( d( d(X		  ')@@A
tf tfni/i/	i/ i/ 	i/
 i/Xd( 1 d(huYPTU_P`E`?a6b d(X*  D, 7 S UX dg lp ( ' C C [^ cg 4
# ' C C [^ cg (=0 = 0G  - $z2B ?+ ? ?Z8H ? 9 d:>N 0S T r}   