§
    ÎÐjU*  ã                   ó  — d Z ddl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
  G d„ de¦  «        Zd	„ Z ed
d¬¦  «        Z edd¬¦  «        Zdd„Zed„ ¦   «         Z G d„ d¦  «        Zedd„¦   «         Zddddddddœd„Zddddœd„Zd„ ZdS )zQOpt-in HTTP/Xet download cancellation and progress, scoped to the calling thread.é    N)ÚThreadPoolExecutor)Úcontextmanager)Ú
ContextVar)Úwrapsc                   ó   — e Zd ZdS )ÚDownloadCancelledN)Ú__name__Ú
__module__Ú__qualname__© ó    úFC:\Users\johnn\OneDrive\Documents\AI\shared\utils\download_progress.pyr   r      s   € € € € € Ø€Dr   r   c                 ó  — ddl m}  |¦   «         }|�|j        | u r|                     d¬¦  «         | �J|                      dd¦  «        s%|                      d¦  «        �! | d         ¦   «         rt          d¦  «        ‚d S d S d S )Nr   )Úcurrent_controlF)ÚunloadÚabortÚabort_callbackzDownload cancelled)Úshared.utils.media_controlr   ÚgenÚ
checkpointÚgetr   )r   r   Úcontrols      r   Úcheck_download_cancelledr      sª   € Ø:Ð:Ð:Ð:Ð:Ð:ØˆoÑÔ€GØÐ˜wœ{¨cÐ1Ð1Ø×Ò %ÐÑ(Ô(Ð(Ø
€˜CŸGšG G¨UÑ3Ô3€¸¿ºÐ@PÑ8QÔ8QÐ8]ÐbwÐbeÐfvÔbwÑbyÔbyÐ8]ÝÐ 4Ñ5Ô5Ð5ð €Ð8]Ð8]Ð8]Ð8]r   Úwangp_download)ÚdefaultÚwangp_download_genc                 ó<   — | €t                                ¦   «         n| S ©N)Ú_operation_download_genr   )r   s    r   Úresolve_download_genr       s   € Ø,/¨KÕ"×&Ò&Ñ(Ô(Ð(¸SÐ@r   c              #   óº   K  — t                                | ¦  «        }	 dV — t                                |¦  «         dS # t                                |¦  «         w xY w)zKShare progress and cancellation with nested asset consumers in this worker.N)r   ÚsetÚreset)r   Útokens     r   Údownload_operationr%   !   s^   è è € õ $×'Ò'¨Ñ,Ô,€Eð-Øˆˆˆå×%Ò% eÑ,Ô,Ð,Ð,Ð,øÕ×%Ò% eÑ,Ô,Ð,Ð,øøøs	   ž> ¾Ac                   ó   — e Zd Zd„ Zdd„ZdS )Ú_DownloadProgressc                 óÎ   — || _         |rt          j                             |¦  «        nd | _        ||c| _        | _        t          j        ¦   «         x| _	        | _
        d | _        d S r   )r   ÚosÚpathÚbasenameÚfilenameÚ
file_indexÚ
file_countÚtimeÚ	monotonicÚstartedÚupdatedÚinitial)Úselfr   r,   Úshow_filenamer-   r.   s         r   Ú__init__z_DownloadProgress.__init__,   s[   € ØˆŒØ6CÐM�œ×(Ò(¨Ñ2Ô2Ð2ÈˆŒØ+5°zÐ(ˆŒ˜œÝ&*¤nÑ&6Ô&6Ð6ˆŒ�t”|ØˆŒˆˆr   Fc                 óˆ  — t          | j        ¦  «         t          j        ¦   «         }| j        €|| _        |s|| j        z
  dk    r|| j        |||| j        z
  t          || j        z
  d¦  «        z  | j	        | j
        dœ| j        d<   | j                             d¦  «        }|� || j        d         ¦  «         || _        d S d S )Nçš™™™™™¹?gü©ñÒMbP?)r,   Ú	completedÚtotalÚspeedr-   r.   Údownload_progressÚdownload_progress_callback)r   r   r/   r0   r3   r2   r,   Úmaxr1   r-   r.   r   )r4   r9   r:   ÚforceÚnowÚcallbacks         r   Úupdatez_DownloadProgress.update3   s$  € Ý  ¤Ñ*Ô*Ð*ÝŒnÑÔˆØŒ<ÐØ$ˆDŒLØð 	�C˜$œ,Ñ&¨#Ò-Ð-Ø9=¼ÐU^Ðinð  {Dð  GKô  GSñ  {Sõ  WZð  [^ð  aeô  amñ  [mð  otñ  Wuô  Wuñ  zuð  EIô  ETð  dhô  dsð  -tð  -tˆDŒHÐ(Ñ)Ø”x—|’|Ð$@ÑAÔAˆHØÐ#Ø�˜œÐ"5Ô6Ñ7Ô7Ð7ØˆDŒLˆLˆLð .Ð-r   N)F)r	   r
   r   r6   rB   r   r   r   r'   r'   +   s7   € € € € € ðð ð ð
ð 
ð 
ð 
ð 
ð 
r   r'   Té   c              #   ód  K  — t          | ¦  «         | €d nt          | ||||¦  «        }t                               |¦  «        }	 |�|                     dd d¬¦  «         d V — t          | ¦  «         |�Š| d         }|d         �|d         |d         k    s|d         €`|d         dk    rTt          ||d         t          j        ¦   «         ¬¦  «        | d<   |                      d	¦  «        }|� || d         ¦  «         t           	                    |¦  «         |�:|  
                    dd ¦  «         |                      d	¦  «        }|� |d ¦  «         d S d S d S # t           	                    |¦  «         |�9|  
                    dd ¦  «         |                      d	¦  «        }|� |d ¦  «         w w w xY w)
Nr   T©r?   r<   r:   r9   )r:   Úfinished_atÚdownload_progress_completedr=   )r   r'   Ú_current_downloadr"   rB   Údictr/   r0   r   r#   Úpop)	r   r,   r5   r-   r.   Úprogressr$   ÚreportrA   s	            r   Údownload_contextrM   @   s  è è € å˜SÑ!Ô!Ð!Ø�{ˆtˆtÕ(9¸#¸xÈÐXbÐdnÑ(oÔ(o€HÝ×!Ò! (Ñ+Ô+€EðØÐØ�OŠO˜A˜t¨4ˆOÑ0Ô0Ð0ØˆˆˆÝ  Ñ%Ô%Ð%ØÐØÐ,Ô-ˆFØ�w”Ð+°°{Ô0CÀvÈgÄÒ0VÐ0VÐ\bÐcjÔ\kÐ\sÐx~ð  @Kô  yLð  OPò  yPð  yPÝ59¸&ÈÈ{ÔH[ÕimÔiwÑiyÔiyÐ5zÑ5zÔ5z�Ð1Ñ2ØŸ7š7Ð#?Ñ@Ô@�ØÐ'Ø�H˜SÐ!>Ô?Ñ@Ô@Ð@å×Ò Ñ&Ô&Ð&ØÐØ�GŠGÐ'¨Ñ.Ô.Ð.Ø—w’wÐ;Ñ<Ô<ˆHØÐ#Ø�˜‘”���ð	  Ðð $Ð#øõ	 	×Ò Ñ&Ô&Ð&ØÐØ�GŠGÐ'¨Ñ.Ô.Ð.Ø—w’wÐ;Ñ<Ô<ˆHØÐ#Ø�˜‘”��ð	  ð $øøøs   ÁB9E ÅAF/é   )ÚproxiesÚresume_sizeÚheadersÚexpected_sizeÚdisplayed_filenameÚ_nb_retriesÚ	_tqdm_barc          	      ór  — dd l }	ddlm}
 t                               ¦   «         }|}||_        |                     ||d¬¦  «         	 t          |j        ¦  «         |�||k    rd S t          |pi ¦  «        }|r,|
 
                    |                     d¦  «        |¦  «        |d<   	 |
                     d| d|||
j        j        ¬¦  «        5 }t          |j        ¦  «         |r=|j        dk    r2|                     d¦  «         |                     ¦   «          dx}|_        |
                     |¦  «        }|�|n|}|                     ||d¬¦  «         |
                     |p|j        pd	|
j                             ¦   «         ||d
|¬¦  «        5 }|                     d¬¦  «        D ]y}t          |j        ¦  «         |ra|                     |¦  «         |t1          |¦  «        z  }|                     t1          |¦  «        ¦  «         |                     ||¦  «         d}Œz	 d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «         d d d ¦  «         n# 1 swxY w Y   n¢# |	j        |	j        f$ rŒ t          |j        ¦  «         |dk    r‚ |dz  }|
j                             d|¦  «         t9          d¦  «        D ]*}t;          j        d¦  «         t          |j        ¦  «         Œ+|
                     ¦   «          Y nw xY w�Œ¼|�||k    rtA          d|› d|› �¦  «        ‚|                     ||d¬¦  «         d S )Nr   ©Úfile_downloadTrE   ÚRangeÚGET)ÚmethodÚurlÚstreamrO   rQ   ÚtimeoutéÈ   ÚDownloadingzhuggingface_hub.http_get©ÚdescÚ	log_levelr:   r3   ÚnamerU   i   )Ú
chunk_sizerN   rC   z6Download connection interrupted; retrying from byte %sé
   r8   ú!Download size mismatch: expected ú bytes, received )!ÚrequestsÚhuggingface_hubrX   rH   r   r3   rB   r   r   rI   Ú_adjust_range_headerÚ_request_wrapperÚ	constantsÚHF_HUB_DOWNLOAD_TIMEOUTÚstatus_codeÚseekÚtruncateÚ#_get_file_length_from_http_responseÚ_get_progress_bar_contextr,   ÚloggerÚgetEffectiveLevelÚiter_contentÚwriteÚlenÚConnectionErrorÚReadTimeoutÚwarningÚranger/   ÚsleepÚreset_sessionsÚOSError)r\   Ú	temp_filerO   rP   rQ   rR   rS   rT   rU   ri   ÚhfrK   r9   Úrequest_headersÚresponseÚcontent_lengthr:   ÚbarÚchunkÚ_s                       r   Ú	_http_getrˆ   Z   s\  € Ø€O€O€OØ3Ð3Ð3Ð3Ð3Ð3å ×$Ò$Ñ&Ô&€HØ€IØ €HÔØ‡O‚O�I˜}°D€OÑ9Ô9Ð9ð% Ý  ¤Ñ.Ô.Ð.ØÐ$¨°mÒ)CÐ)CØˆFÝ˜w˜}¨"Ñ-Ô-ˆØð 	hØ')×'>Ò'>¸×?RÒ?RÐSZÑ?[Ô?[Ð]fÑ'gÔ'gˆO˜GÑ$ð	 Ø×$Ò$¨E°sÀ4ÐQXÐbqÐ{}ô  |Hô  |`Ð$ñ  aô  að 7ð  emÝ(¨¬Ñ6Ô6Ð6Øð 5 Ô!5¸Ò!<Ð!<Ø—N’N 1Ñ%Ô%Ð%Ø×&Ò&Ñ(Ô(Ð(Ø34Ð4�I Ô 0Ø!#×!GÒ!GÈÑ!QÔ!Q�Ø)6Ð)B˜˜È�Ø—’ 	¨5¸�Ñ=Ô=Ð=Ø×1Ò1Ð7IÐ7oÈXÔM^Ð7oÐboÐ{}ô  |E÷  |Wò  |Wñ  |Yô  |Yð  afð  pyð  @Zð  foÐ1ñ  pô  pð ,ð  twØ!)×!6Ò!6À*Ð!6Ñ!MÔ!Mð ,ð ,˜Ý0°´Ñ>Ô>Ð>Ø ð ,Ø%ŸOšO¨EÑ2Ô2Ð2Ø%­¨U©¬Ñ3˜IØŸJšJ¥s¨5¡z¤zÑ2Ô2Ð2Ø$ŸOšO¨I°uÑ=Ô=Ð=Ø*+˜Køð,ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,õ )¨¬Ñ6Ô6Ð6ð%7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð& øØÔ(¨(Ô*>Ð?ð 		 ð 		 ð 		 Ý$ X¤\Ñ2Ô2Ð2Ø˜aÒÐØØ˜1ÑˆKØŒI×ÒÐVÐXaÑbÔbÐbÝ˜2‘Y”Yð 7ð 7�Ý”
˜3‘”�Ý(¨¬Ñ6Ô6Ð6Ð6Ø×ÒÑÔÐÐÐð		 øøøñ9% ðL Ð  Y°-Ò%?Ð%?ÝÐe¸-ÐeÐeÐZcÐeÐeÑfÔfÐfØ‡O‚O�I˜u¨D€OÑ1Ô1Ð1Ð1Ð1s]   Â$%I  Ã	CIÆBH)ÈIÈ)H-	È-IÈ0H-	È1IÉI  ÉIÉI  ÉIÉI  É BK=Ë<K=)rR   rS   rU   c                 ó˜  — 	 ddl m}m} n"# t          $ r}t	          d¦  «        |‚d }~ww xY wddlm}	 t                               ¦   «         }
t          |
j
        ¦  «          |¦   «         }t          dd¬¦  «        }	 |	                     ||¬¦  «        }t          |
j
        ¦  «         |                     |j        |j        |j        |j        |¬	¦  «        }t          |
j
        ¦  «         |                      ||j        |¦  «        t)          |                      ¦   «         ¦  «        ¦  «        }|                     |j        ¦  «        }|	                     |p|
j        pd
|	j                             ¦   «         |dd|¬¦  «        5 }d}	 t          |
j
        ¦  «         |                     ¦   «         }|�:|                     |j        |z
  ¦  «         |j        }|
                     ||¦  «         |                     ¦   «         r|                      ¦   «          ntC          j"        d¦  «         Œ¢t          |
j
        ¦  «         |  #                    ¦   «         j$        }|�||k    rtK          d|› d|› �¦  «        ‚|                     ||z
  ¦  «         |
                     ||d¬¦  «         d d d ¦  «         n# 1 swxY w Y   	 | &                    ¦   «          | '                    d¬¦  «         d S # | '                    d¬¦  «         w xY w# 	 | &                    ¦   «          | '                    d¬¦  «         w # | '                    d¬¦  «         w xY wxY w)Nr   )ÚXetFileInfoÚ
XetSessionzQCancellable Xet downloads require hf_xet>=1.5.2. Run: pip install "hf_xet>=1.5.2"rW   rC   zwangp-xet-download)Úmax_workersÚthread_name_prefix)Ú	file_datarQ   )Úendpointr$   Útoken_expiry_unix_secsÚtoken_refresh_urlÚtoken_refresh_headersr`   zhuggingface_hub.xet_getra   Tr8   rg   rh   rE   )Úwait)(Úhf_xetrŠ   r‹   ÚImportErrorÚRuntimeErrorrj   rX   rH   r   r   r   r   Úrefresh_xet_connection_infoÚnew_file_download_groupr�   Úaccess_tokenÚexpiration_unix_epochÚrefresh_routeÚstart_download_fileÚ	file_hashÚstrÚabsoluteÚsubmitÚwait_to_finishrs   r,   rt   ru   rK   rB   Úbytes_completedÚdoneÚresultr/   r}   ÚstatÚst_sizer   Úsigint_abortÚshutdown)Úincomplete_pathÚxet_file_datarQ   rR   rS   rU   rŠ   r‹   Úerrorr�   rK   ÚsessionÚwaiterÚ
connectionÚgroupÚhandleÚfinishedr…   r9   rL   Úsizes                        r   Ú_xet_getr³   �   sû  € ð{Ø2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2øÝð {ð {ð {ÝÐnÑoÔoÐuzÐzøøøøð{øøøà3Ð3Ð3Ð3Ð3Ð3å ×$Ò$Ñ&Ô&€HÝ˜Xœ\Ñ*Ô*Ð*Øˆj‰lŒl€GÝ¨AÐBVÐWÑWÔW€Fð"'Ø×3Ò3¸mÐU\Ð3Ñ]Ô]ˆ
Ý  ¤Ñ.Ô.Ð.Ø×/Ò/¸Ô9LÐT^ÔTkð  EOô  Eeð  yFô  yTð  lsÐ/ñ  tô  tˆÝ  ¤Ñ.Ô.Ð.Ø×*Ò*¨;¨;°}Ô7NÐP]Ñ+^Ô+^Õ`cÐds×d|Òd|Ñd~Ôd~Ñ`Ô`ñ  Aô  Aˆà—=’= Ô!5Ñ6Ô6ˆØ×)Ò)Ð/AÐ/gÀXÔEVÐ/gÐZgÐsuÔs|÷  tOò  tOñ  tQô  tQð  Yfð  pqð  xQð  ]fÐ)ñ  gô  gð 	=ð  knØˆIð
 Ý(¨¬Ñ6Ô6Ð6ØŸšÑ*Ô*�ØÐ%Ø—J’J˜vÔ5¸	ÑAÑBÔBÐBØ &Ô 6�IØ—O’O I¨}Ñ=Ô=Ð=Ø—=’=‘?”?ð Ø—O’OÑ%Ô%Ð%ØÝ”
˜3‘”�ð
 õ % X¤\Ñ2Ô2Ð2Ø"×'Ò'Ñ)Ô)Ô1ˆDØÐ(¨T°]Ò-BÐ-BÝÐhÀ-ÐhÐhÐbfÐhÐhÑiÔiÐiØ�JŠJ�t˜iÑ'Ñ(Ô(Ð(Ø�OŠO˜D -°tˆOÑ<Ô<Ð<ð%	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð.	'Ø× Ò Ñ"Ô"Ð"à�OŠO ˆOÑ&Ô&Ð&Ð&Ð&øˆF�OŠO ˆOÑ&Ô&Ð&Ð&øøøøð	'Ø× Ò Ñ"Ô"Ð"à�OŠO ˆOÑ&Ô&Ð&Ð&øˆF�OŠO ˆOÑ&Ô&Ð&Ð&øøøøøøsf   ‚ ‹
*•%¥*Á<DL ÆD J.Ê"L Ê.J2Ê2L Ê5J2Ê6L Ê:K& Ë&K>ÌM	ÌL.ÌM	Ì.MÍM	c                  óF  ‡‡‡— ddl m}  t          | j        dd¦  «        rd S | j        Š| j        Š| j        Št          ‰¦  «        ˆfd„¦   «         }t          ‰¦  «        ˆfd„¦   «         }t          ‰¦  «        ˆfd„¦   «         }d|_        || _        || _        || _        d S )	Nr   rW   Ú_wangp_download_patchFc                  ó^   •— t                                ¦   «         € ‰| i |¤ŽS t          | i |¤ŽS r   )rH   r   rˆ   )ÚargsÚkwargsÚoriginal_http_gets     €r   Úhttp_getz+install_hf_download_patch.<locals>.http_getÆ   s>   ø€ å× Ò Ñ"Ô"Ð*Ø$Ð$ dÐ5¨fÐ5Ð5Ð5Ý˜$Ð) &Ð)Ð)Ð)r   c                  ó^   •— t                                ¦   «         € ‰| i |¤ŽS t          | i |¤ŽS r   )rH   r   r³   )r·   r¸   Úoriginal_xet_gets     €r   Úxet_getz*install_hf_download_patch.<locals>.xet_getÌ   s>   ø€ å× Ò Ñ"Ô"Ð*Ø#Ð# TÐ4¨VÐ4Ð4Ð4Ý˜Ð( Ð(Ð(Ð(r   c                 óâ   •— t                                ¦   «         }|€ ‰| |g|¢R i |¤ŽS t          |j        ¦  «         	  ‰| |g|¢R i |¤ŽS # t          $ r |                      d¬¦  «         ‚ w xY w)NT)Ú
missing_ok)rH   r   r   r   r   Úunlink)r©   Údestination_pathr·   r¸   rK   Úoriginal_downloads        €r   Údownload_to_tmp_and_movez;install_hf_download_patch.<locals>.download_to_tmp_and_moveÒ   s®   ø€ å$×(Ò(Ñ*Ô*ˆØÐØ$Ð$ _Ð6FÐXÈÐXÐXÐXÐQWÐXÐXÐXÝ  ¤Ñ.Ô.Ð.ð	Ø$Ð$ _Ð6FÐXÈÐXÐXÐXÐQWÐXÐXÐXøÝ ð 	ð 	ð 	à×"Ò"¨dÐ"Ñ3Ô3Ð3Øð	øøøs   ¿A Á"A.T)rj   rX   Úgetattrrº   r½   Ú_download_to_tmp_and_mover   rµ   )r�   rº   r½   rÃ   rÂ   r¹   r¼   s       @@@r   Úinstall_hf_download_patchrÆ   ½   sý   øøø€ Ø3Ð3Ð3Ð3Ð3Ð3åˆrŒ{Ð3°UÑ;Ô;ð ØˆØœÐØ”zÐØÔ4Ðå
ÐÑÔð*ð *ð *ð *ñ Ôð*õ
 ÐÑÔð)ð )ð )ð )ñ Ôð)õ
 ÐÑÔð
ð 
ð 
ð 
ñ Ôð
ð &*€HÔ"Ø€B„KØ€B„JØ#;€BÔ Ð Ð r   r   )TrC   rC   )Ú__doc__r)   r/   Úconcurrent.futuresr   Ú
contextlibr   Úcontextvarsr   Ú	functoolsr   Ú	Exceptionr   r   rH   r   r    r%   r'   rM   rˆ   r³   rÆ   r   r   r   ú<module>rÍ      s¾  ðà WÐ Wà 	€	€	€	Ø €€€Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø %Ð %Ð %Ð %Ð %Ð %Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð ð	ð 	ð 	ð 	ð 	˜	ñ 	ô 	ð 	ð6ð 6ð 6ð �JÐ/¸Ð>Ñ>Ô>Ð Ø$˜*Ð%9À4ÐHÑHÔHÐ ðAð Að Að Að ð-ð -ñ „ð-ðð ð ð ð ñ ô ð ð* ðð ð ñ „ðð2 *.¸1ÀdÐZ^Ðswð  FGð  SWð 02ð 02ð 02ð 02ð 02ðf HLÐ`dÐptð -'ð -'ð -'ð -'ð -'ð`%<ð %<ð %<ð %<ð %<r   