+
    –°³j—€  ã                   ó”  a € R7 tI0 t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
H
t
 ^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^RIHtHtHt ^RIHtHtHtHt ^R	IHtHt ^R
IH t H!t!H"t"H#t# ^RI$H%t% ^RI&H't' ]'       d   ^RI(H)t) ]PT                  ! ]+4      t,^
t-^t.^dt/. R8Ot0] ^ k Rt1^t2Rt3Rt4^Èt5^t6R R lt7RRRRRRRRRRRRR^</R R llt8 ! R R]Pr                  4      t:];]]3,          t< ! R R 4      t=R! R" lt>R# R$ lt?R% R& lt@R' R( ltAR) R* ltBR+ R, ltC ! R- R.]4      tDR/ R0 ltER1 R2 ltFR3 R4 ltGR5 R6 ltHR# )9é    N)Údatetime)ÚPath)ÚLock)ÚTYPE_CHECKINGÚAny)Úquote)ÚCommitOperationAddÚ
UploadInfoÚ_fetch_upload_modes)ÚLocalUploadFileMetadataÚLocalUploadFilePathsÚget_local_upload_pathsÚread_upload_metadata)ÚDEFAULT_REVISIONÚ
REPO_TYPES)ÚDEFAULT_IGNORE_PATTERNSÚ_format_sizeÚfilter_repo_objectsÚtqdm)Úis_xet_available)Úsha_fileobj)ÚHfApié   i † i'  c                ó>   € V ^8„  d   QhR\         \        ,          RR/# )é   Ú
paths_listÚreturnN)Úlistr   )Úformats   "Úe/home/luca/screen-checking/.venv/lib/python3.14/site-packages/huggingface_hub/_upload_large_folder.pyÚ__annotate__r!   9   s$   € ÷ ]/ñ ]/¬Ô-AÕ(Bð ]/Àtñ ]/ó    c                ó˜  € \         P                  R4       \        V 4      \        8”  d,   \         P	                  R\        V 4      R R\        R R24       ^ RIHp V! R 4      pV  FÂ  p\        VP                  4      pVP                  p\        VP                  4      R8w  d   \        VP                  4      MRpW&,          R	;;,          ^,          uu&   \        VR
R$ 4       F@  w  rxV^ 8X  d   RMRP                  VR
V 4      pW&,          R,          P                  V4       KB  	  KÄ  	  VP                  4        Fm  w  ršV
R	,          p\        V
R,          4      pW¼,           pV\         8”  g   K5  V	R8X  d   RMT	p\         P	                  RV RVR RVR RVR R\         R R24       Ko  	  . p. pV  F„  pVP"                  P%                  4       P&                  pVR,          pV\(        8”  d    VP+                  VP                  V34       KZ  V\,        8”  g   Kg  VP+                  VP                  V34       K†  	  V'       dv   RP                  R VR,           4       4      p\        V4      ^8”  d   R\        V4      ^,
           R2MRp\         P	                  R\        V4       R\(         RV V R24       V'       dv   RP                  R VR,           4       4      p\        V4      ^8”  d   R\        V4      ^,
           R2MRp\         P	                  R\        V4       R \,         R!V V R"24       \         P                  R#4       R
# )%aS  
Validate upload against repository limits and warn about potential issues.

Args:
    paths_list: List of file paths to be uploaded

Warns about:
    - Too many files in the repository (>100k)
    - Too many entries (files or subdirectories) in a single folder (>10k)
    - Files exceeding size limits (>20GB recommended, >200GB maximum)
z/Running validation checks on files to upload...zYou are about to upload Ú,z. files. This exceeds the recommended limit of zÍ files per repository.
Consider:
  - Splitting your data into multiple repositories
  - Using fewer, larger files (e.g., parquet files)
  - See: https://huggingface.co/docs/hub/repositories-recommendations)Údefaultdictc                  ó   € R ^ R\        4       /# )ÚfilesÚsubdirs)Úset© r"   r    Ú<lambda>Ú)_validate_upload_limits.<locals>.<lambda>V   s   € ¸gÀqÈ)ÔUXÓUZÑ=[r"   Ú.r'   NÚ/r(   ÚrootzFolder 'z' contains z
 entries (z files and z/ subdirectories). This exceeds the recommended z< entries per folder.
Consider reorganising into sub-folders.i Êš;z
  - c              3   ó8   "  € T F  w  rV R VR R2x € K  	  R# 5i©z: z.1fÚGBNr*   ©Ú.0ÚpathÚsizes   &  r    Ú	<genexpr>Ú*_validate_upload_limits.<locals>.<genexpr>„   s#   é € Ð!aÑL`¹j¸d T F¨"¨T°#¨J°bÕ"9ÓL`ùó   ‚:Né   Nz
  ... and z more filesÚ úFound z files exceeding the zGB recommended maximum:
  - z4
Consider splitting these files into smaller chunks.c              3   ó8   "  € T F  w  rV R VR R2x € K  	  R# 5ir1   r*   r3   s   &  r    r7   r8   Ž   s!   é € Ð!\ÉO¹j¸d T F¨"¨T°#¨J°bÕ"9ËOùr9   z files larger than zGB (recommended limit):
  - z2
Large files may slow down loading and processing.zValidation checks complete.éÿÿÿÿ)ÚloggerÚinfoÚlenÚMAX_FILES_PER_REPOÚwarningÚcollectionsr%   r   Úpath_in_repoÚpartsÚstrÚparentÚ	enumerateÚjoinÚaddÚitemsÚMAX_FILES_PER_FOLDERÚ	file_pathÚstatÚst_sizeÚMAX_FILE_SIZE_GBÚappendÚRECOMMENDED_FILE_SIZE_GB)r   r%   Úentries_per_folderÚpathsr5   rF   rH   ÚiÚchildÚfolderÚdataÚ
file_countÚsubdir_countÚtotal_entriesÚfolder_displayÚlarge_filesÚvery_large_filesr6   Úsize_gbÚ	files_strÚmore_strs   &                    r    Ú_validate_upload_limitsrc   9   s8  € ô ‡K�KÐAÔBô ˆ:ƒÔ+Ô+Ü�‰Ø&¤s¨:£°qÐ&9ð :5Ü5GÈÐ4Jð KTðUô	
õ (á)4Ñ5[Ó)\ÐãˆÜ�E×&Ñ&Ó'ˆØ—
‘
ˆô &)¨¯©Ó%5¸Ô%<”�T—[‘[Ô!À#ˆØÕ" 7×+¨qÕ0Ó+ô " %¨¨ *Ö-‰HˆAØ œF‘S¨¯©°°r¸°Ó(;ˆFØÕ& yÕ1×5Ñ5°eÖ<ó .ñ ð +×0Ñ0Ö2‰ˆØ˜'•]ˆ
Ü˜4 	�?Ó+ˆØ"Õ1ˆàÔ/Ö/Ø'-°¤}™V¸&ˆNÜ�N‰NØ˜>Ð*¨+°mÀAÐ5Fð GØ˜q�> ¨\¸!Ð,<ð =0Ü0DÀQÐ/Gð H:ð:öñ 3ð €KØÐãˆØ�‰×#Ñ#Ó%×-Ñ-ˆØ˜Õ&ˆàÔ%Ô%Ø×#Ñ# U×%7Ñ%7¸Ð$AÖBØÔ/Ö/Ø×Ñ × 2Ñ 2°GÐ<Ö=ñ ÷ Ø—M‘MÑ!aÐL\Ð]_ÖL`Ó!aÓaˆ	ÜLOÐP`ÓLaÐdeÔLe�\¤#Ð&6Ó"7¸!Õ";Ð!<¸KÑHÐkmˆÜ�‰Ø”SÐ)Ó*Ð+Ð+@ÔAQÐ@Rð SØ�+˜h˜Zð (BðCô	
÷ Ø—M‘MÑ!\ÈKÐXZÎOÓ!\Ó\ˆ	ÜGJÈ;ÓGWÐZ[ÔG[�\¤# kÓ"2°QÕ"6Ð!7°{ÑCÐacˆÜ�‰Ø”S˜Ó%Ð&Ð&9Ô:RÐ9Sð TØ�+˜h˜Zð (@ðAô	
ô ‡K�KÐ-Ö.r"   ÚrevisionÚprivateÚallow_patternsÚignore_patternsÚnum_workersÚprint_reportTÚprint_report_everyc                óH  € V ^8„  d   QhRRR\         R\         \        ,          R\         R\         R,          R\        R,          R	\        \         ,          \         ,          R,          R
\        \         ,          \         ,          R,          R\        R,          R\        R\        /# )r   Úapir   Úrepo_idÚfolder_pathÚ	repo_typerd   Nre   rf   rg   rh   ri   rj   )rG   r   Úboolr   Úint)r   s   "r    r!   r!   ™   s­   € ÷ L'ñ L'Ø	ðL'äðL'ô ”t•ðL'ô
 ðL'ô �D�jðL'ô �D�[ðL'ô œ•I¤•O dÕ*ðL'ô œ#•Y¤•_ tÕ+ðL'ô �t•ðL'ô ðL'ô ñL'r"   c               óÆ  a€ Vf   \        R4      hV\        9  d   \        R\         24      hVf   \        p\        S4      P	                  4       P                  4       oSP                  4       '       g   \        RS R24      hVf   . pM\        V\        4      '       d   V.pV\        ,          pVf3   \        P                  ! 4       ;'       g    ^p\        V^,          ^4      pV P                  WVRR7      p\        P                  RV 24       VP                   p V P#                  WVR	7      p\%        V4      pVR
8”  d&   \        P'                  RR& RV RV RV RR& R24       \-        4       '       d   \.        M\0        p\3        T3R lSP5                  R4       4       TTR7      pT Uu. uF  p\7        ST4      NK  	  pp\        P                  R\%        T4       R24       \9        T4       \        P                  R4       \;        TRR7       Uu. uF  pT\=        STP>                  4      3NK  	  pp\A        TT4      p\C        T4       Uu. uF)  p\D        PF                  ! \H        RTRT RTRTRT/R7      NK+  	  ppT F  pTPK                  4        K  	  T	'       d!   \M        RTPO                  4       ,           4       \P        PP                  ! 4       p \P        PR                  ! ^4       \P        PP                  ! 4       T,
          T
8¼  d7   T	'       d   \U        TPO                  4       4       \P        PP                  ! 4       pTPV                  e   \        PY                  R \Z         R!24       M.TP]                  4       '       g   K²  \        P                  R"4        T F  pTP_                  4        K  	  TPV                  e   \a        R#\Z         R$24      TPV                  h\        P                  TPO                  4       4       \        P                  R%4       R#   \(         d$   p\        P+                  RT 24        Rp?ELâRp?ii ; iu upi u upi u upi )'z„Upload a large folder to the Hub in the most resilient way possible.

See [`HfApi.upload_large_folder`] for the full documentation.
Nz For 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 directoryT)rm   ro   re   Úexist_okzRepo created: )rm   ro   rd   iô  Ú
z
WARNING: This repository has aR   commits.
Repositories with a large number of commits can experience performance issues.

Consider squashing your commit history using `super_squash_history()`.
To do so, you need to stop this process, run the snippet below and restart the upload command.  from huggingface_hub import super_squash_history
  super_squash_history(repo_id='z', repo_type='zÎ')

Note: This is a non-revertible operation. See the documentation for more details:
https://huggingface.co/docs/huggingface_hub/main/en/package_reference/hf_api#huggingface_hub.HfApi.super_squash_history
zCould not check commit count: c              3   ó�   <"  € T F;  qP                  4       '       g   K  VP                  S4      P                  4       x € K=  	  R # 5i©N)Úis_fileÚrelative_toÚas_posix)r4   r5   rn   s   & €r    r7   Ú/upload_large_folder_internal.<locals>.<genexpr>å   s6   øé € ÐiÑ>V°d×ZfÑZf×ZhÔ	1ˆ×	Ñ	˜+Ó	&×	/Ñ	/×	1Ð	1Ó>Vùs
   ƒAŸ'Az**/*)rf   rg   r<   z candidate files to uploadzStarting upload...zRecovering from metadata files)ÚdescÚstatusrl   rm   ro   rd   )ÚtargetÚkwargsz

zToo many consecutive errors (z): exiting main loopzIs done: exiting main loopzUpload aborted after zR consecutive errors. Progress is saved locally: re-run the same command to resume.zUpload is complete!zP================================================================================)1Ú
ValueErrorr   r   r   Ú
expanduserÚresolveÚis_dirÚ
isinstancerG   r   ÚosÚ	cpu_countÚmaxÚcreate_repor?   r@   rm   Úlist_repo_commitsrA   rC   Ú	ExceptionÚdebugr   ÚUPLOAD_BATCH_SIZE_XETÚUPLOAD_BATCH_SIZE_LFSr   Úglobr   rc   r   r   rE   ÚLargeUploadStatusÚrangeÚ	threadingÚThreadÚ_worker_jobÚstartÚprintÚcurrent_reportÚtimeÚsleepÚ_print_overwriteÚfatal_errorÚerrorÚMAX_CONSECUTIVE_ERRORSÚis_donerJ   ÚRuntimeError)rl   rm   rn   ro   rd   re   rf   rg   rh   ri   rj   Únb_coresÚrepo_urlÚcommitsÚcommit_countÚeÚupload_batch_sizeÚfiltered_paths_listÚrelpathr   rU   rL   r|   Ú_ÚthreadsÚthreadÚlast_report_tss   &&f$$$$$$$$                r    Úupload_large_folder_internalrª   ™   s  ø€ ð& ÒÜðIó
ð 	
ð œ
Ô"ÜÐ=¼j¸\ÐJÓKÐKØÒÜ#ˆä�{Ó#×.Ñ.Ó0×8Ñ8Ó:€KØ×Ñ×ÒÜÐ+¨K¨=Ð8LÐMÓNÐNàÒØ‰Ü	�O¤S×	)Ò	)Ø*Ð+ˆØÔ.Õ.€OàÒÜ—<’<“>×&Ð& QˆÜ˜( a�-¨Ó+ˆð �‰ wÈWÐ_cˆÓd€HÜ
‡K�K�.  
Ð+Ô,Ø×Ñ€Gð;Ø×'Ñ'°ÐW_Ð'Ó`ˆÜ˜7“|ˆØ˜#ÔÜ�N‰NØ�X�Jð 0Ø0<¨~ð >3ð 4;°)¸>È)Èð ULð �*˜Bð ôô& 2B×1CÒ1CÕ-ÔI^Ðô .Üi¸k×>NÑ>NÈvÔ>VÓiØ%Ø'ôÐñ
 ObÓbÑNaÀ7Ô(¨°gÖ>ÑNa€JÐbÜ
‡K�K�&œ˜Z›Ð)Ð)CÐDÔEô ˜JÔ'ä
‡K�KÐ$Ô%ô
 ˜*Ð+KÕLóáLˆEð 
Ô$ [°%×2DÑ2DÓEÓFÙLð 
ð ô ˜uÐ&7Ó8€Fô �{Ô#óñ $ˆAô 	×ÒÜà˜&Ø�sØ˜7Ø˜YØ˜Hð÷		
ñ $ð ð ó ˆØ�‰Žñ ÷ Üˆf�v×,Ñ,Ó.Õ.Ô/Ü—Y’Y“[€NØ
Ü�
Š
�1ŒÜ�9Š9‹;˜Õ'Ð+=Ô=ßÜ  ×!6Ñ!6Ó!8Ô9Ü!ŸYšY›[ˆNØ×ÑÒ)Ü�L‰LÐ8Ô9OÐ8PÐPdÐeÔfØØ�>‰>×ÔÜ�K‰KÐ4Ô5ØãˆØ�‰Žñ ð ×ÑÒ%ÜØ#Ô$:Ð#;ð <'ð 'ó
ð ×!Ñ!ð	"ô
 ‡K�K�×%Ñ%Ó'Ô(Ü
‡K�KÐ%Ö&øôS ô ;ä�‰Ð5°a°SÐ9×:Ò:ûð;üò cùòùòs+   Ä A
P# Æ1QÈ!QÉ/QÐ#QÐ.QÑQc                   óÀ   € ] tR tRt]P
                  ! 4       t]P
                  ! 4       t]P
                  ! 4       t]P
                  ! 4       t	]P
                  ! 4       t
RtR# )Ú	WorkerJobi-  r*   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚenumÚautoÚSHA256ÚGET_UPLOAD_MODEÚPREUPLOAD_LFSÚCOMMITÚWAITÚ__static_attributes__r*   r"   r    r¬   r¬   -  s9   † Ø�YŠY‹[€FØ—i’i“k€OØ—I’I“K€MØ�YŠY‹[€FØ�9Š9‹;„Dr"   r¬   c                   ó¦   a € ] tR tRt o RtRV 3R lR lltV 3R lR ltV 3R lR ltV 3R	 lR
 ltV 3R lR lt	V 3R lR lt
V 3R lR ltRtV tR# )rŽ   i8  zBContains information, queues and tasks for a large upload process.c                ó6   <€ V ^8„  d   QhRS[ S[,          RS[/# )r   rL   r£   )r   Ú
JOB_ITEM_Trq   )r   Ú__classdict__s   "€r    r!   ÚLargeUploadStatus.__annotate__;  s$   ø€ ÷ "eñ "e™d¡:Õ.ð "eÁ3ñ "er"   c                óÚ  € Wn         \        P                  ! 4       V n        \        P                  ! 4       V n        \        P                  ! 4       V n        \        P                  ! 4       V n        \        4       V n        ^ V n	        ^ V n
        ^ V n        W n        ^ V n        ^ V n        RV n        ^ V n        RV n        \$        P&                  ! 4       V n        ^V n        \        4       V n        V P                    Fï  pVw  rEVP.                  f   V P                  P1                  V4       K2  VP2                  f   V P                  P1                  V4       K]  VP2                  R8X  d0   VP4                  '       g   V P
                  P1                  V4       K�  VP6                  '       g   V P                  P1                  V4       KÌ  \8        P;                  RVP<                   R24       Kñ  	  R# )r   NÚlfszSkipping file z! (already uploaded and committed))rL   Ú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_lfsr£   Únb_workers_commitÚnb_workers_waitingÚlast_commit_attemptÚnb_consecutive_errorsr™   r   ÚnowÚ_started_atÚ
_chunk_idxÚ_chunk_lockÚsha256ÚputÚupload_modeÚis_uploadedÚis_committedr?   rŠ   rE   )ÚselfrL   r£   ÚitemrU   Úmetadatas   &&&   r    Ú__init__ÚLargeUploadStatus.__init__;  sl  € ØŒ
Ü7<·{²{³}ˆÔÜ@EÇÂÃˆÔ"Ü>C¿kºk»mˆÔ Ü7<·{²{³}ˆÔÜ“FˆŒ	à&'ˆÔØ/0ˆÔ'Ø-.ˆÔ%Ø&7ÔØ&'ˆÔØ'(ˆÔØ15ˆÔ Ø*+ˆÔ"Ø-1ˆÔä#Ÿ<š<›>ˆÔØ ˆŒÜ!%£ˆÔð —J”JˆDØ"‰OˆEØ�‰Ò&Ø×!Ñ!×%Ñ% dÖ+Ø×%Ñ%Ò-Ø×*Ñ*×.Ñ.¨tÖ4Ø×%Ñ%¨Ô.°x×7K×7KÐ7KØ×(Ñ(×,Ñ,¨TÖ2Ø×*×*Ð*Ø×!Ñ!×%Ñ% dÖ+ä—‘˜~¨e×.@Ñ.@Ð-AÐAbÐcÖdó r"   c                ó   <€ V ^8„  d   QhRR/# ©r   r   Nr*   )r   r¼   s   "€r    r!   r½   _  s   ø€ ÷ +ñ + ñ +r"   c                óv   € V P                   ;_uu_ 4        ^ V n        RRR4       R#   + '       g   i     R# ; i)r   N)rÆ   rÍ   ©r×   s   &r    Úreport_successÚ LargeUploadStatus.report_success_  s   € Ø�Y�Y‹YØ)*ˆDÔ&÷ �Y�YŠYús   •'§8	c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Úexcr   N)r‰   )r   r¼   s   "€r    r!   r½   c  s   ø€ ÷ 	'ñ 	'¡	ð 	'¨dñ 	'r"   c                óÐ   € V P                   ;_uu_ 4        V ;P                  ^,          un        V P                  \        8¼  d   Wn        RRR4       R#   + '       g   i     R# ; i)a  Give up on the whole upload once errors keep piling up.

Failed items are put back in their queue and retried indefinitely, which spins forever (and hammers the Hub)
when the error is permanent. Stop after `MAX_CONSECUTIVE_ERRORS` failures without a single success in between.
N)rÆ   rÍ   r›   r™   )r×   rã   s   &&r    Úreport_errorÚLargeUploadStatus.report_errorc  s?   € ð �Y�Y‹YØ×&Ò&¨!Õ+Õ&Ø×)Ñ)Ô-CÔCØ#&Ô ÷ �Y�YŠYús   •5AÁA%	c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   )rq   )r   r¼   s   "€r    r!   r½   n  s   ø€ ÷ 6ñ 6™cñ 6r"   c                ó–   € V P                   ;_uu_ 4        \        V P                  ,          uuR R R 4       #   + '       g   i     R # ; irv   )rÑ   ÚCOMMIT_SIZE_SCALErÐ   rß   s   &r    Útarget_chunkÚLargeUploadStatus.target_chunkn  s)   € Ø××ÓÜ$ T§_¡_Õ5÷ ××Óús	   •7·A	c                ó0   <€ V ^8„  d   QhRS[ RS[RS[RR/# )r   ÚsuccessÚnb_itemsÚdurationr   N)rp   rq   Úfloat)r   r¼   s   "€r    r!   r½   r  s/   ø€ ÷ 	Wñ 	W¡Dð 	W±Cð 	WÁ5ð 	WÈTñ 	Wr"   c                óú  € V P                   ;_uu_ 4        V'       g4   \        P                  R V R24       V ;P                  ^,          un        MUV\        V P                  ,          8¼  d:   V^(8  d3   \        P                  RV R24       V ;P                  ^,          un        \        ^ \        V P                  \        \        4      ^,
          4      4      V n        RRR4       R#   + '       g   i     R# ; i)zFailed to commit z9 files at once. Will retry with less files in next batch.zSuccessfully committed z. at once. Increasing the limit for next batch.N)	rÑ   r?   rC   rÐ   rê   r@   r†   ÚminrA   )r×   rî   rï   rð   s   &&&&r    Úupdate_chunkÚLargeUploadStatus.update_chunkr  s§   € Ø××ÓßÜ—‘Ð!2°8°*Ð<uÐvÔwØ—’ 1Õ$–ØÔ.¨t¯©Õ?Ô?ÀHÈrÄMÜ—‘Ð5°h°ZÐ?mÐnÔoØ—’ 1Õ$•ä! !¤S¨¯©¼#Ô>OÓ:PÐSTÕ:TÓ%UÓVˆDŒO÷ ××Òús   •C
C)Ã)C:	c                ó    <€ V ^8„  d   QhRS[ /# rè   ©rG   )r   r¼   s   "€r    r!   r½   }  s   ø€ ÷ =ñ =¡ñ =r"   c                ó´  € ^ p^ p^ p^ p^ p^ p^ p^ p^ p	^ p
^ pV P                   ;_uu_ 4        V P                   Fó  w  rÍVP                  '       d   V
^,          p
K"  W�P                  ,          p	V^,          pVP                  e   V^,          pW-P                  ,          pVP
                  R8X  d
   V^,          pVP
                  f
   V^,          pVP                  '       d   V^,          pWmP                  ,          pVP                  '       g   KØ  V^,          pW�P                  ,          pKõ  	  \        V	4      p\        P                  ! 4       pVP                  R4      pWðP                  ,
          p\        V4      P                  R4      ^ ,          pRpVRV RV R2,          pVR,          pVR	,          pVR
V RV R\        V4       RV R2	,          pVRV RV R\        V4       RV R2	,          pV^ 8”  d   VRV R2,          pVRV RV R\        V4       RV R2	,          pVRV
 R2,          pVR,          pVRV P                   R2,          pVRV P                    R2,          pVRV P"                   R2,          pVRV P$                   R2,          pVRV P&                   R2,          pVR,          pVuuRRR4       #   + '       g   i     R# ; i)z<Generate a report of the current status of the large upload.Nr¿   z%Y-%m-%d %H:%M:%Sr-   rt   Ú z (z) z	Files:   zhashed r.   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: z
----------z----------
z3---------------------------------------------------)rÆ   rL   Úshould_ignorer6   rÒ   rÔ   rÕ   rÖ   r   r   rÎ   ÚstrftimerÏ   rG   Ú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_filesr¦   rÙ   Útotal_size_strrÎ   Únow_strÚelapsedÚelapsed_strÚmessages   &                   r    r•   Ú LargeUploadStatus.current_report}  s÷  € àˆ	ØˆØˆØˆØˆØÐØˆØˆØˆ
ØˆØˆà�Y�Y‹YØ#Ÿzœz‘�Ø×)×)Ð)Ø! QÕ&�MÙØŸm™mÕ+�
Ø˜qÕ �Ø—?‘?Ò.Ø •N�IØ§=¡=Õ0�KØ×'Ñ'¨5Ô0Ø˜a•K�FØ×'Ñ'Ò/Ø! QÕ&�MØ×'×'Ð'Ø" aÕ'�NØ$¯©Õ5Ð$Ø×(×(Ò(Ø  AÕ%�LØ"§m¡mÕ3’Nñ%  *ô& *¨*Ó5ˆNä—,’,“.ˆCØ—l‘lÐ#6Ó7ˆGØ×,Ñ,Õ,ˆGÜ˜g›,×,Ñ,¨SÓ1°!Õ4ˆKà%ˆGØ˜˜7˜) 2 k ]°"Ð5Õ5ˆGØ�Õ&ˆGà�{Õ"ˆGØ˜  ¨1¨[¨M¸¼LÈÓ<UÐ;VÐVWÐXfÐWgÐgkÐlÕlˆGØ˜¨Ð'7°q¸¸ÀÄ<ÐP`ÓCaÐBbÐbcÐdrÐcsÐstÐuÕuˆGØ˜qÔ Ø˜S  ¨xÐ8Õ8�Ø˜¨ ~°Q°{°mÀ2ÄlÐSaÓFbÐEcÐcdÐesÐdtÐtuÐvÕvˆGØ˜ m _°BÐ7Õ7ˆGà�{Õ"ˆGØ˜ 4×#9Ñ#9Ð":¸#Ð>Õ>ˆGØÐ*¨4×+JÑ+JÐ*KÈ3ÐOÕOˆGØ˜¨×)FÑ)FÐ(GÀsÐKÕKˆGØ˜ d×&<Ñ&<Ð%=¸SÐAÕAˆGØ˜ 4×#:Ñ#:Ð";¸2Ð>Õ>ˆGØ�xÕˆGà÷_ �Y�Y‹Yús   «B5KÃ!*KÄF+KËK	c                ó    <€ V ^8„  d   QhRS[ /# rè   )rp   )r   r¼   s   "€r    r!   r½   ¼  s   ø€ ÷ fñ f™ñ fr"   c                óø   € V P                   ;_uu_ 4        \        ;QJ d&    R  V P                   4       F  '       d   K   RM	  RM! R  V P                   4       4      uuRRR4       #   + '       g   i     R# ; i)c              3   óf   "  € T F'  w  rVP                   ;'       g    VP                  x € K)  	  R # 5irv   ©rÖ   rû   ©r4   r¦   rÙ   s   &  r    r7   Ú,LargeUploadStatus.is_done.<locals>.<genexpr>¾  s+   é € ÐeÑZdÉ;È1�x×,Ñ,×FÐF°×0FÑ0FÔFÓZdùó   ‚1œ1FTN)rÆ   ÚallrL   rß   s   &r    rœ   ÚLargeUploadStatus.is_done¼  sC   € Ø�Y�Y‹Yß“3ÑeÐZ^×ZdÒZdÓe—3—3’3ÑeÐZ^×ZdÒZdÓeÓe÷ �Y�Y‹Yús   •'A(¿A(Á(A9	)rÐ   rÑ   rÏ   r™   rL   rÌ   rÆ   rÍ   rÊ   rÈ   rÉ   rÇ   rË   rÅ   rÃ   rÄ   rÂ   r£   N)é   )r­   r®   r¯   r°   Ú__doc__rÚ   rà   rå   rë   rô   r•   rœ   r¸   Ú__classdictcell__©r¼   s   @r    rŽ   rŽ   8  sV   ø‡ € ÙL÷"eò "e÷H+ð +÷	'ð 	'÷6ð 6÷	Wð 	W÷=ð =÷~fö fr"   rŽ   c          
      óL   € V ^8„  d   QhR\         RRR\        R\        R\        /# )r   r|   rl   r   rm   ro   rd   )rŽ   rG   )r   s   "r    r!   r!   Á  sA   € ÷ v3ñ v3Üðv3à	ðv3ô ðv3ô ð	v3ô
 ñv3r"   c                ó¾  €  V P                   e   R# Rp\        V 4      pVf   R# Vw  rgT;\        P                  8X  dz    V^ ,          p \	        V4       V P
                  P                  V4       V P                  4        T P                   ;_uu_ 4        T ;P"                  ^,          un        RRR4       K·  ;\        P$                  8X  dê     \'        WqW#VR7       V P                  4        T FŠ  pTw  r«TP(                  '       d   K  TP*                  ;R8X  d    T P,                  P                  T4       KK  R8X  d   T P.                  P                  T4       Kn   T P
                  P                  T4       KŒ  	  T P                   ;_uu_ 4        T ;P0                  ^,          un        RRR4       EKµ  ;\        P2                  8X  d~     \5        WqW#VR7       V F  pV P.                  P                  V4       K   	  V P                  4        T P                   ;_uu_ 4        T ;P6                  ^,          un        RRR4       EKG  ;\        P8                  8X  dÃ    \:        P:                  ! 4       pRp \=        WqW#VR7       V P                  4        \:        P:                  ! 4       T,
          pT P?                  T\A        T4      T4       T P                   ;_uu_ 4        \:        P:                  ! 4       T n!        T ;PD                  ^,          un"        RRR4       EK  \        PF                  8X  g   EK5  \:        PH                  ! \J        4       V P                   ;_uu_ 4        V ;PL                  ^,          un&        RRR4       EKˆ    \         d    h \         de   p	\        P                  RT	 24       \        P                  ! 4        T P                  P                  T4       T P                  T	4        Rp	?	EL~Rp	?	ii ; i  + '       g   i     EK  ; i  \         d    h \         dJ   p	\        P                  RT	 24       \        P                  ! 4        T P                  T	4        Rp	?	ELˆRp	?	ii ; i  + '       g   i     EKŽ  ; i  \         d    h \         dn   p	\        P                  RT	 24       \        P                  ! 4        T F  pT P,                  P                  T4       K   	  T P                  T	4        Rp	?	ELRp	?	ii ; i  + '       g   i     EK)  ; i  \         d    h \         dp   p	\        P                  R	T	 24       \        P                  ! 4        T F  pT P.                  P                  T4       K   	  R
pT P                  T	4        Rp	?	ELRp	?	ii ; i  + '       g   i     EKÆ  ; i  + '       g   i     EKÛ  ; i)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.
TNzFailed to compute sha256: )rl   rm   ro   rd   zFailed to get upload mode: r¿   ÚregularzFailed to preupload LFS: zFailed to commit: F)'r™   Ú_determine_next_jobr¬   r³   Ú_compute_sha256rÃ   rÓ   rà   ÚKeyboardInterruptr‰   r?   rš   Ú	tracebackÚ
format_excrÂ   rå   rÆ   rÇ   r´   Ú_get_upload_moderû   rÔ   rÄ   rÅ   rÈ   rµ   Ú_preupload_lfsrÉ   r¶   r–   Ú_commitrô   rA   rÌ   rÊ   r·   r—   ÚWAITING_TIME_IF_NO_TASKSrË   )r|   rl   rm   ro   rd   Únext_jobÚjobrL   rØ   r¢   r¦   rÙ   Ústart_tsrî   rð   s   &&&&&          r    r’   r’   Á  sR  € ð Ø×ÑÒ)ÙØ>Bˆô ' vÓ.ˆØÒÙØ‰
ˆð Ø!”×!Ö!Ù˜Q•x�ð
+Ü# DÔ)Ø×0Ñ0×4Ñ4°TÔ:Ø×)Ñ)Ô+ð —[—[“[Ø×,Ò,°Õ1Õ,÷ !‘[ð +”×*Ö*ñ+Ü$ U¸WÐdlÕmØ×)Ñ)Ô+ó "�DØ"&‘K�AØ×-×-Ð-Ù Ø"×.Ñ.Þ"Ù"×6Ñ6×:Ñ:¸4Ö@Ý&Ø"×/Ñ/×3Ñ3°DÖ9ØØ"×8Ñ8×<Ñ<¸TÖBñ "ð —[—[“[Ø×5Ò5¸Õ:Õ5÷ !’[ð )”×(Ö(ñ+Ü" 5¸7ÐbjÕkÛ %˜Ø×+Ñ+×/Ñ/°Ö5ñ !&à×)Ñ)Ô+ð —[—[“[Ø×3Ò3°qÕ8Õ3÷ !’[ð "”×!Ö!ÝŸ9š9›;�Ø�ð+Ü˜E°GÐ[cÕdØ×)Ñ)Ô+ô  Ÿ9š9›;¨Õ1�Ø×#Ñ# G¬S°«Z¸ÔBØ—[—[“[Ü15·²³�FÔ.Ø×,Ò,°Õ1Õ,÷ !’[ô ——‘Ü—
’
Ô3Ô4Ø—[—[“[Ø×-Ò-°Õ2Õ-÷ !’[øôg )ô ØÜ ô +Ü—L‘LÐ#=¸a¸SÐ!AÔBÜ×(Ò(Ô*Ø×'Ñ'×+Ñ+¨DÔ1Ø×'Ñ'¨×*Ò*ûð	+ú÷ !—[‘[ûô )ô ØÜ ô +Ü—L‘LÐ#>¸q¸cÐ!BÔCÜ×(Ò(Ô*Ø×'Ñ'¨×*Ò*ûð+ú÷, !—[‘[ûô )ô ØÜ ô +Ü—L‘LÐ#<¸Q¸CÐ!@ÔAÜ×(Ò(Ô*Û %˜Ø×2Ñ2×6Ñ6°tÖ<ñ !&à×'Ñ'¨×*Ò*ûð+ú÷ !—[‘[ûô )ô ØÜ ô +Ü—L‘LÐ#5°a°SÐ!9Ô:Ü×(Ò(Ô*Û %˜Ø×+Ñ+×/Ñ/°Ö5ñ !&à#�GØ×'Ñ'¨×*Ò*ûð+ú÷ !—[‘[ú÷ !—[‘[ús¸   Á
6N	 ÂPÃP ÆQ=ÇAR È#TÉ6T- Ë 4V5Í$W
Î	PÎPÎAO>Ï>PÐP	ÐQ:Ð0Q:Ð1>Q5Ñ5Q:Ñ=R	ÒTÒ'TÒ(A"TÔTÔT*	Ô-V2ÕV2ÕA$V-Ö-V2Ö5W	×
W	c                óv   € V ^8„  d   QhR\         R\        \        \        \        ,          3,          R,          /# )r   r|   r   N)rŽ   Útupler¬   r   r»   )r   s   "r    r!   r!   :  s4   € ÷ g(ñ g(Ô 1ð g(´e¼IÄtÌJÕGWÐ<WÕ6XÐ[_Õ6_ñ g(r"   c                 ó€  € V P                   ;_uu_ 4        V P                  ^ 8X  dÅ   V P                  P                  4       ^ 8”  d¦   V P                  e˜   \
        P
                  ! 4       V P                  ,
          R8”  dm   V ;P                  ^,          un        \        P                  R4       \        P                  \        V P                  V P                  4       4      3uuRRR4       # V P                  ^ 8X  dŒ   V P                  P                  4       ^–8¼  dm   V ;P                  ^,          un        \        P                  R4       \        P                  \        V P                  V P                  4       4      3uuRRR4       # V P                  P                  4       \        8¼  dk   V ;P                  ^,          un        \        P                  R\         R24       \        P                  \        V P                  \        4      3uuRRR4       # V P                   P                  4       V P"                  8¼  dz   V P$                  ^ 8X  di   V ;P$                  ^,          un        \        P                  R4       \        P&                  \        V P                   V P"                  4      3uuRRR4       # V P(                  P                  4       ^ 8”  do   V P*                  ^ 8X  d^   V ;P*                  ^,          un        \        P                  R4       \        P,                  \/        V P(                  4      3uuRRR4       # V P                  P                  4       ^ 8”  dt   V P                  ^ 8X  dc   V ;P                  ^,          un        \        P                  R4       \        P                  \        V P                  \        4      3uuRRR4       # V P                   P                  4       V P"                  8¼  di   V ;P$                  ^,          un        \        P                  R	4       \        P&                  \        V P                   V P"                  4      3uuRRR4       # V P(                  P                  4       ^ 8”  d^   V ;P*                  ^,          un        \        P                  R
4       \        P,                  \/        V P(                  4      3uuRRR4       # V P                  P                  4       ^ 8”  dc   V ;P                  ^,          un        \        P                  R4       \        P                  \        V P                  \        4      3uuRRR4       # V P                   P                  4       ^ 8”  di   V ;P$                  ^,          un        \        P                  R	4       \        P&                  \        V P                   V P"                  4      3uuRRR4       # V P                  ^ 8X  dÅ   V P                  P                  4       ^ 8”  d¦   V P                  e˜   \
        P
                  ! 4       V P                  ,
          ^<8”  dm   V ;P                  ^,          un        \        P                  R4       \        P                  \        V P                  V P                  4       4      3uuRRR4       # V P                  ^ 8X  Ed   V P                  P                  4       ^ 8”  dý   V P(                  P                  4       ^ 8X  dÞ   V P                  P                  4       ^ 8X  d¿   V P                   P                  4       ^ 8X  d    V P*                  ^ 8X  d�   V P                  ^ 8X  d~   V P$                  ^ 8X  dm   V ;P                  ^,          un        \        P                  R4       \        P                  \        V P                  V P                  4       4      3uuRRR4       # \0        ;QJ d&    R V P2                   4       F  '       d   K   RM	  RM! R V P2                   4       4      '       d!   \        P5                  R4        RRR4       R# V ;P6                  ^,          un        \        P                  R\8         R24       \        P:                  . 3uuRRR4       #   + '       g   i     R# ; i)r   Nz;Job: commit (more than 5 minutes since last commit attempt)zJob: commit (>100 files ready)zJob: get upload mode (>z 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 modez-Job: commit (1 min since last commit attempt)zJob: commitc              3   óf   "  € T F'  w  rVP                   ;'       g    VP                  x € K)  	  R # 5irv   r  r  s   &  r    r7   Ú&_determine_next_job.<locals>.<genexpr>™  s+   é € ÐaÑT`Á[ÀQ�×&Ñ&×@Ð@¨(×*@Ñ*@Ô@ÓT`ùr  FTz.All files have been processed! Exiting worker.zNo task available, waiting... (zs)i,  )rÆ   rÊ   rÅ   ÚqsizerÌ   r–   r?   rŠ   r¬   r¶   Ú_get_nrë   rÃ   ÚMAX_NB_FILES_FETCH_UPLOAD_MODErÈ   r´   rÄ   r£   rÉ   rµ   rÂ   rÇ   r³   Ú_get_oner  rL   r@   rË   r'  r·   )r|   s   &r    r  r  :  s?  € Ø	��‹ð ×$Ñ$¨Ô)Ø×#Ñ#×)Ñ)Ó+¨aÔ/Ø×*Ñ*Ò6Ü—	’	“˜f×8Ñ8Õ8¸6ÔAà×$Ò$¨Õ)Õ$Ü�L‰LÐVÔWÜ×$Ñ$¤f¨V×-@Ñ-@À&×BUÑBUÓBWÓ&XÐY÷ 
Šð ×%Ñ%¨Ô*¨v×/BÑ/B×/HÑ/HÓ/JÈcÔ/QØ×$Ò$¨Õ)Õ$Ü�L‰LÐ9Ô:Ü×$Ñ$¤f¨V×-@Ñ-@À&×BUÑBUÓBWÓ&XÐY÷! 
Šð& ×)Ñ)×/Ñ/Ó1Ô5SÔSØ×-Ò-°Õ2Õ-Ü�L‰LÐ2Ô3QÐ2RÐR_Ð`ÔaÜ×-Ñ-¬v°f×6RÑ6RÔTrÓ/sÐt÷- 
Šð2 ×'Ñ'×-Ñ-Ó/°6×3KÑ3KÔKÐPV×PoÑPoÐstÔPtØ×+Ò+¨qÕ0Õ+Ü�L‰LÐPÔQÜ×+Ñ+¬V°F×4NÑ4NÐPV×PhÑPhÓ-iÐj÷9 
Šð> × Ñ ×&Ñ&Ó(¨1Ô,°×1IÑ1IÈQÔ1NØ×$Ò$¨Õ)Õ$Ü�L‰LÐIÔJÜ×$Ñ$¤h¨v×/BÑ/BÓ&CÐD÷E 
ŠðJ ×)Ñ)×/Ñ/Ó1°AÔ5¸&×:[Ñ:[Ð_`Ô:`Ø×-Ò-°Õ2Õ-Ü�L‰LÐUÔVÜ×-Ñ-¬v°f×6RÑ6RÔTrÓ/sÐt÷Q 
ŠðV ×'Ñ'×-Ñ-Ó/°6×3KÑ3KÔKØ×+Ò+¨qÕ0Õ+Ü�L‰LÐ-Ô.Ü×+Ñ+¬V°F×4NÑ4NÐPV×PhÑPhÓ-iÐj÷] 
Šðb × Ñ ×&Ñ&Ó(¨1Ô,Ø×$Ò$¨Õ)Õ$Ü�L‰L˜Ô'Ü×$Ñ$¤h¨v×/BÑ/BÓ&CÐD÷i 
Šðn ×)Ñ)×/Ñ/Ó1°AÔ5Ø×-Ò-°Õ2Õ-Ü�L‰LÐ/Ô0Ü×-Ñ-¬v°f×6RÑ6RÔTrÓ/sÐt÷u 
Šðz ×'Ñ'×-Ñ-Ó/°!Ô3Ø×+Ò+¨qÕ0Õ+Ü�L‰LÐ-Ô.Ü×+Ñ+¬V°F×4NÑ4NÐPV×PhÑPhÓ-iÐj÷A 
ŠðH ×$Ñ$¨Ô)Ø×#Ñ#×)Ñ)Ó+¨aÔ/Ø×*Ñ*Ò6Ü—	’	“˜f×8Ñ8Õ8¸6ÔAà×$Ò$¨Õ)Õ$Ü�L‰LÐHÔIÜ×$Ñ$¤f¨V×-@Ñ-@À&×BUÑBUÓBWÓ&XÐY÷W 
Šð` ×$Ñ$¨Õ)Ø×#Ñ#×)Ñ)Ó+¨aÔ/Ø×#Ñ#×)Ñ)Ó+¨qÔ0Ø×,Ñ,×2Ñ2Ó4¸Ô9Ø×*Ñ*×0Ñ0Ó2°aÔ7Ø×(Ñ(¨AÔ-Ø×1Ñ1°QÔ6Ø×/Ñ/°1Ô4à×$Ò$¨Õ)Õ$Ü�L‰L˜Ô'Ü×$Ñ$¤f¨V×-@Ñ-@À&×BUÑBUÓBWÓ&XÐY÷w 
Š÷| ‹SÑaÐTZ×T`ÒT`Óa�S�SŠSÑaÐTZ×T`ÒT`Óa×aÒaÜ�K‰KÐHÔIØ÷A 
‰ðH ×%Ò%¨Õ*Õ%Ü�L‰LÐ:Ô;SÐ:TÐTVÐWÔXÜ—N‘N BÐ'÷M 
��‹úsx   •Cb,Ã+Bb,ÆBb,ÈBb,Ê6Bb,ÍBb,ÏBb,Ñ&A1b,Ó"A6b,Õ#A<b,×*C
b,Ú?D"b,ß,
b,ß7b,à$b,à:b,áAb,â,b=	c                ó(   € V ^8„  d   QhR\         RR/# )r   rØ   r   N)r»   )r   s   "r    r!   r!   ©  s   € ÷ ñ œ*ð ¨ñ r"   c                ó  € V w  rVP                   fK   VP                  P                  R4      ;_uu_ 4       p\        V4      P	                  4       Vn         RRR4       VP                  V4       R#   + '       g   i     L#; i)z1Compute sha256 of a file and save it in metadata.NÚrb)rÒ   rN   Úopenr   ÚhexÚsave)rØ   rU   rÙ   Úfs   &   r    r   r   ©  sX   € à�O€EØ‡�ÒØ�_‰_×!Ñ! $×'Ô'¨1Ü)¨!›n×0Ñ0Ó2ˆHŒO÷ (à‡M�M�%Ö÷ (×'ús   ¶A0Á0B 	c                óf   € V ^8„  d   QhR\         \        ,          RRR\        R\        R\        RR/# ©	r   rL   rl   r   rm   ro   rd   r   N©r   r»   rG   )r   s   "r    r!   r!   ²  s>   € ÷ ñ œD¤Õ,ð °7ð ÄSð ÔUXð Ôdgð Ðlpñ r"   c                ód  € V  Uu. uF  p\        V4      NK  	  pp\        VVVVP                  4       \        VRR7      VP                  R7       \        W4       FM  w  rWVw  r‰VP                  V	n        VP                  V	n	        VP                  V	n        V	P                  V4       KO  	  R# u upi )zeGet upload mode for each file and update metadata.

Also receive info if the file should be ignored.
r;   )Úsafe)Ú	additionsro   rm   Úheadersrd   ÚendpointN)Ú_build_hacky_operationr   Ú_build_hf_headersr   rB  ÚzipÚ_upload_moderÔ   Ú_should_ignorerû   Ú_remote_oidÚ
remote_oidr9  )
rL   rl   rm   ro   rd   rØ   r@  ÚadditionrU   rÙ   s
   &&&&&     r    r$  r$  ²  s£   € ñ
 ;@Ó@¹%°$Ô'¨Ö-¹%€IÐ@ÜØØØØ×%Ñ%Ó'Ü�x bÔ)Ø—‘õô ˜eÖ/‰ˆØ‰ˆØ'×4Ñ4ˆÔØ!)×!8Ñ!8ˆÔØ&×2Ñ2ˆÔØ�‰�eÖó 0ùò As   …B-c                óf   € V ^8„  d   QhR\         \        ,          RRR\        R\        R\        RR/# r<  r=  )r   s   "r    r!   r!   È  s>   € ÷ ñ œ$œzÕ*ð °ð Ä3ð ÔSVð Ôbeð Ðjnñ r"   c                ó´   € V  Uu. uF  p\        V4      NK  	  ppVP                  VVVVR7       V  F  w  rxRVn        VP                  V4       K  	  R# u upi )z(Preupload LFS files and update metadata.)rm   ro   rd   r@  TN)rC  Úpreupload_lfs_filesrÕ   r9  ©	rL   rl   rm   ro   rd   rØ   r@  rU   rÙ   s	   &&&&&    r    r%  r%  È  sc   € á:?Ó@¹%°$Ô'¨Ö-¹%€IÐ@Ø×ÑØØØØð	 ô ó !‰ˆØ#ˆÔØ�‰�eÖó !ùò As   …Ac                óf   € V ^8„  d   QhR\         \        ,          RRR\        R\        R\        RR/# r<  r=  )r   s   "r    r!   r!   ×  s=   € ÷ ñ ”4œ
Õ#ð ¨'ð ¼Cð ÌCð Ô[^ð Ðcgñ r"   c                ó¶   € V  Uu. uF  p\        V4      NK  	  ppVP                  VVVVRR7       V  F  w  rxRVn        VP                  V4       K  	  R# u upi )zCommit files to the repo.z(Add files using upload-large-folder tool)rm   ro   rd   Ú
operationsÚcommit_messageTN)rC  Úcreate_commitrÖ   r9  rN  s	   &&&&&    r    r&  r&  ×  sf   € á:?Ó@¹%°$Ô'¨Ö-¹%€IÐ@Ø×ÑØØØØØAð ô ó !‰ˆØ $ˆÔØ�‰�eÖó !ùò As   …Ac                   ó2   a € ] tR tRt o V 3R lR ltRtV tR# )ÚHackyCommitOperationAddië  c                ó   <€ V ^8„  d   QhRR/# rÝ   r*   )r   r¼   s   "€r    r!   Ú$HackyCommitOperationAdd.__annotate__ì  s   ø€ ÷ =ñ =˜tñ =r"   c                ó~   € \        V P                  \        4      '       d   \        V P                  4      V n        R # R # rv   )rƒ   Úpath_or_fileobjr   rG   rß   s   &r    Ú__post_init__Ú%HackyCommitOperationAdd.__post_init__ì  s-   € Ü�d×*Ñ*¬D×1Ò1Ü#& t×';Ñ';Ó#<ˆDÖ ñ 2r"   )rY  N)r­   r®   r¯   r°   rZ  r¸   r  r  s   @r    rU  rU  ë  s   ø‡ € ÷=ö =r"   rU  c                ó0   € V ^8„  d   QhR\         R\        /# )r   rØ   r   )r»   rU  )r   s   "r    r!   r!   ñ  s   € ÷ ñ ¤ð Ô0Gñ r"   c                 ó€  € V w  r\        VP                  VP                  R 7      pVP                  P                  R4      ;_uu_ 4       pVP	                  R4      R,          pRRR4       VP
                  f   \        R4      h\        \        P                  VP
                  4      VP                  XR7      Vn        VP                  Vn        VP                  Vn        VP                   Vn        VP$                  Vn        VP$                  '       d   VP                  R8X  d   RVn        V#   + '       g   i     LÓ; i)	)rE   rY  r6  i   :Ni   NNz&sha256 must have been computed by now!)rÒ   r6   Úsampler¿   r"   )rU  rE   rN   r7  ÚpeekrÒ   r   r
   ÚbytesÚfromhexr6   Úupload_inforÔ   rF  rû   rG  rI  rH  rÕ   Ú_is_uploadedrY  )rØ   rU   rÙ   Ú	operationÚfiler^  s   &     r    rC  rC  ñ  sô   € Ø�O€EÜ'°U×5GÑ5GÐY^×YhÑYhÔi€IØ	�‰×	Ñ	˜d×	#Ô	# tØ—‘˜3“ Õ%ˆ÷ 
$à‡�ÒÜÐAÓBÐBÜ&¬e¯m©m¸H¿O¹OÓ.LÐS[×S`ÑS`ÐioÔp€IÔØ%×1Ñ1€IÔØ'×5Ñ5€IÔØ$×/Ñ/€IÔØ%×1Ñ1€IÔØ××Ð × 4Ñ 4¸Ô =Ø$'ˆ	Ô!ØÐ÷ 
$×	#ús   Á	D-Ä-D=	c                ó>   € V ^8„  d   QhRRR\         \        ,          /# )r   rÀ   úqueue.Queue[JOB_ITEM_T]r   )r   r»   )r   s   "r    r!   r!     s    € ÷ ñ Ð-ð ´$´zÕ2Bñ r"   c                 ó&   € V P                   ! 4       .# rv   )Úget)rÀ   s   &r    r3  r3    s   € Ø�IŠI‹Kˆ=Ðr"   c                óJ   € V ^8„  d   QhRRR\         R\        \        ,          /# )r   rÀ   rg  Únr   )rq   r   r»   )r   s   "r    r!   r!     s'   € ÷ ?ñ ?Ð+ð ?´ð ?¼¼ZÕ8Hñ ?r"   c                 ó�   € \        \        V P                  ! 4       V4      4       Uu. uF  q P                  ! 4       NK  	  up# u upi rv   )r�   ró   r0  ri  )rÀ   rk  r¦   s   && r    r1  r1    s2   € Ü!&¤s¨5¯;ª;«=¸!Ó'<Ô!=Ó>Ñ!=˜A�IŠIŽKÑ!=Ñ>Ð>ùÒ>s   §Ac                ó(   € V ^8„  d   QhR\         RR/# )r   Úreportr   Nr÷   )r   s   "r    r!   r!     s   € ÷ ñ œSð  Tñ r"   c                óN  a€ V R,          p \         P                  ! 4       P                  o\        V3R lV P	                  4        4       4      p\        V4       FA  p\        P                  P                  R4       \        P                  P                  R4       KC  	  \        P                  P                  V 4       \        P                  P                  RS\        V P	                  4       R,          4      ,
          ,          4       \        P                  P                  4        R# )zçPrint 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`!
rt   c              3   óV   <"  € T F  p\        V4      S,          ^,           x € K   	  R# 5i)r  N)rA   )r4   ÚlineÚterminal_widths   & €r    r7   Ú#_print_overwrite.<locals>.<genexpr>  s$   øé € ÐSÑ?R°t”3�t“9 Õ.°×2Ò2Ó?Rùs   ƒ&)z[Kz[Frù   Nr>   )ÚshutilÚget_terminal_sizeÚcolumnsÚsumÚ
splitlinesr�   ÚsysÚstdoutÚwriterA   Úflush)rn  Únb_linesr¦   rr  s   &  @r    r˜   r˜     sÄ   ø€ ð ˆd…N€Fä×-Ò-Ó/×7Ñ7€Nô ÔS¸v×?PÑ?PÔ?RÓSÓS€Hô �8Ž_ˆÜ�
‰
×Ñ˜Ô$Ü�
‰
×Ñ˜Ö"ñ ô
 ‡J�J×Ñ�VÔÜ‡J�J×Ñ�S˜N¬S°×1BÑ1BÓ1DÀRÕ1HÓ-IÕIÕJÔKÜ‡J�J×ÑÖr"   c                óV   € V ^8„  d   Qh/ ^ \         9   d   \        \        ,          ;R&   # )r   rê   )Ú__conditional_annotations__r   rq   )r   s   "r    r!   r!      s   € ‡�÷> PÒ O”4œ•9Ñ Oò? r"   )
é   é2   éK   éd   é}   éÈ   éú   i�  iX  iè  )Jr  r±   Úloggingr„   rÀ   rt  ry  r�   r–   r"  r   Úpathlibr   r   Útypingr   r   Úurllib.parser   Ú_commit_apir	   r
   r   Ú_local_folderr   r   r   r   Ú	constantsr   r   Úutilsr   r   r   r   Úutils._runtimer   Ú	utils.shar   Úhf_apir   Ú	getLoggerr­   r?   r'  r›   r2  rê   r‹   rŒ   rB   rM   rQ   rS   rc   rª   ÚEnumr¬   r,  r»   rŽ   r’   r  r   r$  r%  r&  rU  rC  r3  r1  r˜   r!   )r  s   @r    Ú<module>r”     sx  øð÷ €Û Û 	Û Û Û 
Û Û Û Ý Ý Ý ß %Ý ç LÑ Lß vÓ vß 3ß SÓ SÝ ,Ý "÷ Ýà	×	Ò	˜8Ó	$€àÐ ØÐ Ø!$Ð ÚOÐ Ó OàÐ ØÐ ð Ð ØÐ ØÐ ØÐ õ]/ð@L'ð  ðL'ð  ðL'ð .2ðL'ð /3ðL'ð #ðL'ð ðL'ð !÷L'ôh�—	‘	ô ð Ð'Ð)@Ð@ÕA€
÷Ffñ FfõRv3õrg(õ^õõ,õô(=Ð0ô =õõ,õ?÷r"   