Ë
    rPêjT}  ã                   ó
  — d Z ddlZddlZddlZddlZddlZddlmZmZm	Z	 ddl
mZ ddlmZ ddlmZmZmZmZ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 erddlm Z m!Z!  ejD                  e#«      Z$dZ%g d¢Z&dZ'dZ(dZ)dZ* e+«       Z,dZ-dZ.dZ/e-fde0de0de1de2fd„Z3de0de2fd„Z4 G d„ d«      Z5 G d„ d«      Z6 G d „ d!«      Z7 G d"„ d#«      Z8dddd$dd%œd&d'd(e2d)e2d*e9e   d+e9e   d,e2d-e2dz  d.e2e:z  dz  d/e2dz  d0e:d1e2dz  dd2fd3„Z;y)4ac  Streamed, multi-commit upload of a folder on top of the Xet upload protocol.

How it works:

- The **coordinator** (caller's thread) walks the list of files and asks the Hub, 256 files at a
  time, what each file is (regular git blob, xet file, ignored). Regular files are accumulated
  directly; xet files are registered into a `XetSession` upload-commit, which chunks, deduplicates,
  retries and uploads them in the background while the coordinator keeps going. No Python-side
  sha256 computation: `hf_xet` computes it during chunking (single read pass over each file).
- Whenever enough files have accumulated (adaptive batch size), the batch is handed over to the
  **committer** thread which joins the xet uploads, drops unchanged files, and creates a git
  commit for the batch. While a batch is being committed, the coordinator is already uploading
  the next one.
- Interrupted uploads are resumable by simply re-running the same call: already-committed files
  are dropped (no-op detection against the remote oid) and already-uploaded chunks are
  deduplicated by the xet storage backend, transferring ~0 bytes.
é    N)ÚTYPE_CHECKINGÚAnyÚCallable)Úquoteé   )Ú	constants)ÚCommitOperationAddÚCommitOperationDeleteÚ_fetch_upload_modesÚ_send_commitÚ_warn_on_overwriting_operations)ÚRepositoryNotFoundError)Úare_progress_bars_disabledÚlogging)ÚXetTokenTypeÚabort_xet_sessionÚget_xet_sessionÚxet_connection_info_refresh_urlÚxet_headers_without_auth)Ú
CommitInfoÚHfApié   )
é   é2   éK   éd   é}   éÈ   éú   i�  iX  éè  é   g      D@g     Àr@i  @r   ç      à?g      >@ÚcurrentÚtotalÚwidthÚreturnc                 óh   — |dk  rd|z  S t        t        | |z  d«      |z  «      }d|z  d||z
  z  z   S )Nr   u   â–‘ç      ð?u   â–ˆ)ÚintÚmin)r#   r$   r%   Úfilleds       úe/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/huggingface_hub/_upload_pipeline.pyÚ_barr-   U   sE   € Ø�‚zØ�u‰}ÐÜ”�W˜u‘_ cÓ*¨UÑ2Ó3€FØ�6‰>˜E U¨V¡^Ñ4Ñ4Ð4ó    Únc                 óŒ   — dD ]:  }t        | «      dk  r%| dk  r	| d›|› �c S | dk  r	| d›|› �c S | d›|› �c S | dz  } Œ< | d›d�S )	N)ÚBÚkBÚMBÚGBÚTBr    é
   z.2fr   ú.1fz.0fÚPB)Úabs)r/   Úunits     r,   Ú_format_bytesr;   \   sv   € Ø-ò ˆÜˆq‹6�DŠ=Ø�2ŠvØ˜C˜  Ð'Ò'Ø�S’Ø˜C˜  Ð'Ò'Ø˜�W˜T˜FÐ#Ò#Ø	ˆT‰	‰ðð �ˆW�Bˆ<Ðr.   c                   óø   — e Zd ZdZddededdfd„Zdd„Zdd„Zd	eddfd
„Z	d	eddfd„Z
d	eddfd„Zdee   ddfd„Zd	eddfd„Zdeddfd„Zdd„Zdd„Zdd„Zdd„Zdefd„Zdefd„Zdefd„Zdefd„Zdefd„Zy)Ú_LiveDisplayuº  Live progress display on stderr::

        Preparing   â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆ  11,100 / 11,100 âœ“
        Uploading   â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–‘â–‘â–‘â–‘â–‘â–‘  580 / 603 files  3.8GB Â· 19.7MB/s
        Validating  â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–‘â–‘â–‘â–‘â–‘â–‘â–‘â–‘â–‘â–‘â–‘â–‘  43%
        Committing  â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–‘â–‘  10,800 / 11,100  14 commits

    The Validating line appears once the v2 shard finalization API starts reporting
    progress. Shard upload / validation / sync are folded into this single bar so
    users are not exposed to Xet-internal "shard" jargon (and so there is only one
    Committing line â€” the git commit).

    A small renderer thread redraws all lines in-place every ~0.5 s on a TTY
    (worker threads only update counters under a lock). When stderr is not a TTY,
    it falls back to a periodic ``logger.info`` summary instead.

    Disabling progress bars (e.g. agent output mode) only turns off the TTY renderer:
    the non-TTY log summaries are gated by the logger verbosity alone, so consumers
    tailing stderr during a long upload still see periodic progress.
    Útotal_filesÚenabledr&   Nc                 ó.  — || _         |xr t        j                  j                  «       | _        | j                  xs# t
        j                  t        j                  «      | _	        t        j                  «       | _        d| _        t        j                  «       | _        d | _        d| _        d| _        d| _        t)        «       | _        d| _        d| _        d| _        d| _        d| _        d | _        d| _        d| _        d| _        d| _        d| _         y )Nr   ç        F)!Ú_totalÚsysÚstderrÚisattyÚ_ttyÚloggerÚisEnabledForr   ÚINFOÚ_activeÚ	threadingÚLockÚ_lockÚ_drawn_linesÚEventÚ_stop_eventÚ_threadÚ	_preparedÚ_ignoredÚ
_xet_totalÚsetÚ	_xet_doneÚ
_committedÚ_nb_commitsÚ
_xet_bytesÚ
_speed_emaÚ_prev_bytesÚ
_prev_timeÚ_shard_activeÚ_shard_val_totalÚ_shard_val_doneÚ_shards_totalÚ_shards_done)Úselfr>   r?   s      r,   Ú__init__z_LiveDisplay.__init__~   så   € Ø!ˆŒØÒ3¤§
¡
× 1Ñ 1Ó 3ˆŒ	Ø—y‘yÒE¤F×$7Ñ$7¼¿¹Ó$EˆŒÜ—^‘^Ó%ˆŒ
ØˆÔÜ$Ÿ?™?Ó,ˆÔØ04ˆŒð ˆŒØˆŒØˆŒÜ#&£5ˆŒØˆŒØˆÔð ˆŒØˆŒØˆÔØ(,ˆŒð #ˆÔØ !ˆÔØ ˆÔØˆÔØˆÕr.   c                 óš  — | j                   sy | j                  rMt        j                  j	                  d| j
                  d›d�«       t        j                  j                  «        n$t        j                  d| j
                  d›d�«       t        j                  | j                  dd¬«      | _        | j                  j                  «        y )NzFound ú,z files to upload
z files to uploadzhf-upload-displayT©ÚtargetÚnameÚdaemon)rJ   rF   rC   rD   ÚwriterB   ÚflushrG   ÚinforK   ÚThreadÚ_render_looprQ   Ústart©rb   s    r,   ro   z_LiveDisplay.startž   s�   € Ø�|Š|ØØ�9Š9Ü�J‰J×Ñ˜v d§k¡k°! _Ð4FÐGÔHÜ�J‰J×ÑÕä�K‰K˜& §¡¨Q Ð/?Ð@ÔAÜ ×'Ñ'¨t×/@Ñ/@ÐGZÐcgÔhˆŒØ�‰×ÑÕr.   c                 ó   — | j                   �4| j                  j                  «        | j                   j                  «        | j                  r&| j
                  5  | j                  «        d d d «       y y # 1 sw Y   y xY w©N)rQ   rP   rU   ÚjoinrF   rM   Ú_redrawrp   s    r,   Úclosez_LiveDisplay.close©   sd   € Ø�<‰<Ð#Ø×Ñ× Ñ Ô"Ø�L‰L×ÑÔØ�9Š9Ø—‘ñ Ø—‘”÷ð ð ÷ð ús   ÁA4Á4A=r/   c                 óp   — | j                   5  | xj                  |z  c_        d d d «       y # 1 sw Y   y xY wrr   )rM   rR   ©rb   r/   s     r,   Únotify_preparedz_LiveDisplay.notify_prepared³   s,   € Ø�Z‰Zñ 	 Ø�NŠN˜aÑ�N÷	 ÷ 	 ñ 	 úó   �,¬5c                 óp   — | j                   5  | xj                  |z  c_        d d d «       y # 1 sw Y   y xY wrr   )rM   rS   rw   s     r,   Únotify_ignoredz_LiveDisplay.notify_ignored·   s,   € Ø�Z‰Zñ 	Ø�MŠM˜QÑ�M÷	÷ 	ñ 	úry   c                 óp   — | j                   5  | xj                  |z  c_        d d d «       y # 1 sw Y   y xY wrr   )rM   rT   rw   s     r,   Únotify_xet_registeredz"_LiveDisplay.notify_xet_registered»   ó,   € Ø�Z‰Zñ 	!Ø�OŠO˜qÑ �O÷	!÷ 	!ñ 	!úry   Únamesc                 ó|   — | j                   5  | j                  j                  |«       d d d «       y # 1 sw Y   y xY wrr   )rM   rV   Úupdate)rb   r   s     r,   Únotify_xet_uploadedz _LiveDisplay.notify_xet_uploaded¿   s0   € Ø�Z‰Zñ 	)Ø�N‰N×!Ñ! %Ô(÷	)÷ 	)ñ 	)ús   �2²;c                 óp   — | j                   5  | xj                  |z  c_        d d d «       y # 1 sw Y   y xY wrr   )rM   rW   rw   s     r,   Únotify_skippedz_LiveDisplay.notify_skippedÃ   r~   ry   Ún_filesc                 óš   — | j                   5  | xj                  |z  c_        | xj                  dz  c_        d d d «       y # 1 sw Y   y xY w)Nr   )rM   rW   rX   )rb   r…   s     r,   Únotify_commitz_LiveDisplay.notify_commitÇ   s=   € Ø�Z‰Zñ 	"Ø�OŠO˜wÑ&�OØ×Ò Ñ!Õ÷	"÷ 	"ñ 	"ús   �+AÁA
c                 ór   ‡ ‡‡‡‡‡— ‰ j                   sydŠdŠdŠdŠdŠdt        dt        ddfˆˆˆˆˆˆ fd„}|S )aS  Progress callback for one ``new_upload_commit``.

        The byte counters in ``group_report`` are cumulative *per upload-commit* and several
        upload-commits can be in flight at once (one finalizing, one filling), so each commit
        gets its own closure tracking its own previous value; increments are summed globally.
        Nr   Úgroup_reportÚitem_reportsr&   c                 ó:  •— ‰j                   5  | j                  }‰xj                  t        d|‰
z
  «      z  c_        |Š
|j	                  «       D ]Q  }|j
                  dkD  sŒ|j                  |j
                  k(  sŒ-‰j                  j                  |j                  «       ŒS t        | dd «      }|�Ö|j                  dkD  rÇd‰_        |j                  }‰xj                  t        d|‰z
  «      z  c_        |Š|j                  }‰xj                   t        d|‰z
  «      z  c_        |Š|j"                  }‰xj$                  t        d|‰z
  «      z  c_        |Š|j                  }‰xj&                  t        d|‰	z
  «      z  c_        |Š	d d d «       y # 1 sw Y   y xY w)Nr   ÚshardT)rM   Útotal_transfer_bytes_completedrY   ÚmaxÚvaluesÚtotal_bytesÚbytes_completedrV   ÚaddÚ	item_nameÚgetattrÚtotal_shardsr]   Ú(total_shard_validation_entries_completedr_   Útotal_shard_validation_entriesr^   Útotal_shards_completedra   r`   )r‰   rŠ   Ú	completedÚitemrŒ   ÚvÚprev_shard_val_doneÚprev_shard_val_totalÚprev_shards_doneÚprev_shards_totalÚprev_transferrb   s         €€€€€€r,   Úcallbackz/_LiveDisplay.new_xet_callback.<locals>.callbackÛ   s�  ø€ ð —‘ñ *Ø(×GÑG�	Ø—’¤3 q¨)°mÑ*CÓ#DÑD•Ø )�Ø(×/Ñ/Ó1ò ;�DØ×'Ñ'¨!Ó+°×0DÑ0DÈ×HXÑHXÓ0XØŸ™×*Ñ*¨4¯>©>Õ:ð;ô   ¨g°tÓ<�ØÐ$¨×);Ñ);¸aÒ)?Ø)-�DÔ&à×FÑF�AØ×(Ò(¬C°°1Ð7JÑ3JÓ,KÑKÕ(Ø*+Ð'à×<Ñ<�AØ×)Ò)¬S°°AÐ8LÑ4LÓ-MÑMÕ)Ø+,Ð(à×4Ñ4�AØ×%Ò%¬¨Q°Ð4DÑ0DÓ)EÑEÕ%Ø'(Ð$à×*Ñ*�AØ×&Ò&¬#¨a°Ð5FÑ1FÓ*GÑGÕ&Ø()Ð%÷5*÷ *ñ *ús   ŽAFÁ"FÁ<DFÆF)rJ   r   )rb   r¡   rœ   r�   rž   rŸ   r    s   ` @@@@@r,   Únew_xet_callbackz_LiveDisplay.new_xet_callbackÌ   sS   ý€ ð �|Š|ØØˆØÐØ ÐØÐØÐð	*¤3ð 	*´cð 	*¸d÷ 	*ò 	*ð@ ˆr.   c                 óÎ  — d}| j                   j                  t        «      s¸| j                  5  | j	                  «        | j
                  r| j                  «        nUt        j                  «       |z
  t        k\  r7t        j                  | j                  «       «       t        j                  «       }d d d «       | j                   j                  t        «      sŒ·y y # 1 sw Y   Œ+xY w)NrA   )rP   ÚwaitÚ_REFRESH_INTERVALrM   Ú_update_speedrF   rt   ÚtimeÚ	monotonicÚ_NON_TTY_LOG_INTERVALrG   rl   Ú_summary)rb   Úlast_logs     r,   rn   z_LiveDisplay._render_loopÿ   sž   € ØˆØ×"Ñ"×'Ñ'Ô(9Ô:Ø—‘ñ 0Ø×"Ñ"Ô$Ø—9’9Ø—L‘L•NÜ—^‘^Ó%¨Ñ0Ô4IÒIÜ—K‘K §¡£Ô0Ü#Ÿ~™~Ó/�H÷0ð ×"Ñ"×'Ñ'Ô(9×:÷0ð 0ús   ®BCÃC$c                 ó:  — t        j                  «       }| j                  �c|| j                  kD  rT| j                  | j                  z
  || j                  z
  z  }| j
                  dk(  r|nd|z  d| j
                  z  z   | _        || _        | j                  | _        y )Nr   g333333Ó?gffffffæ?)r§   r¨   r\   rY   r[   rZ   )rb   ÚnowÚrates      r,   r¦   z_LiveDisplay._update_speed
  s�   € Ü�n‰nÓˆØ�?‰?Ð&¨3°·±Ò+@Ø—O‘O d×&6Ñ&6Ñ6¸3ÀÇÁÑ;PÑQˆDØ&*§o¡o¸Ò&:™dÀÀdÁ
ÈSÐSW×SbÑSbÑMbÑ@bˆDŒOØˆŒØŸ?™?ˆÕr.   c                 óx  — | j                   dkD  r-t        j                  j                  d| j                   › d�«       | j	                  «       | j                  «       g}| j                  r|j                  | j                  «       «       |j                  | j                  «       «       t        j                  «       j                  }|D ]C  }t        |«      |dz
  kD  r|d |dz
   dz   n|}t        j                  j                  d|› d�«       ŒE t        j                  j                  «        t        |«      | _         y )	Nr   z[ÚAr   é   z...z[Kú
)rN   rC   rD   rj   Ú_line_preparingÚ_line_uploadingr]   ÚappendÚ_line_validatingÚ_line_committingÚshutilÚget_terminal_sizeÚcolumnsÚlenrk   )rb   Úlinesr%   ÚlineÚ	truncateds        r,   rt   z_LiveDisplay._redraw  s  € Ø×Ñ˜qÒ Ü�J‰J×Ñ˜u T×%6Ñ%6Ð$7°qÐ9Ô:à×%Ñ%Ó'¨×)=Ñ)=Ó)?Ð@ˆØ×ÒØ�L‰L˜×.Ñ.Ó0Ô1Ø�‰�T×*Ñ*Ó,Ô-Ü×(Ñ(Ó*×2Ñ2ˆØò 	7ˆDÜ58¸³YÀÈÁÒ5J˜˜[˜u q™yÐ)¨EÒ1ÐPTˆIÜ�J‰J×Ñ˜x¨	 {°"Ð5Õ6ð	7ô 	�
‰
×ÑÔÜ ›JˆÕr.   c                 ó¾   — | j                   | j                  k\  rdnd}dt        | j                   | j                  «      › d| j                   d›d| j                  d›|› �S )Nõ    âœ“Ú z  Preparing   ú  re   ú / )rR   rB   r-   )rb   Údones     r,   r³   z_LiveDisplay._line_preparing!  s[   € ØŸ™¨4¯;©;Ò6‰v¸BˆØ¤ T§^¡^°T·[±[Ó AÐBÀ"ÀTÇ^Á^ÐTUÐDVÐVYÐZ^×ZeÑZeÐfgÐYhÐimÐhnÐoÐor.   c           	      óv  — | j                   dk(  r7| j                  | j                  k\  rt        dd«      nt        dd«      }d|› d�S t	        | j
                  «      }g }| j                  dkD  r$|j                  t        | j                  «      «       | j                  dkD  r'|j                  t        | j                  «      › d�«       |rddj                  |«      › �nd}| j                  | j                  k\  r|| j                   k\  rd	nd}dt        || j                   «      › d|d
›d| j                   d
›d|› |› �	S )Nr   r   z  Uploading   z  -z/srÂ   u    Â· rÁ   rÀ   re   rÃ   z files)rT   rR   rB   r-   r»   rV   rY   rµ   r;   rZ   rs   )rb   ÚbarÚn_doneÚpartsÚextrarÄ   s         r,   r´   z_LiveDisplay._line_uploading%  s  € Ø�?‰?˜aÒØ $§¡°$·+±+Ò =”$�q˜!”*Ä4ÈÈ1Ã:ˆCØ# C 5¨Ð,Ð,Ü�T—^‘^Ó$ˆØˆØ�?‰?˜QÒØ�L‰Lœ t§¡Ó7Ô8Ø�?‰?˜QÒØ�L‰LœM¨$¯/©/Ó:Ð;¸2Ð>Ô?Ù-2�"�V—[‘[ Ó'Ð(Ñ)¸ˆØŸ™¨4¯;©;Ò6¸6ÀTÇ_Á_Ò;T‰vÐZ\ˆØ¤ V¨T¯_©_Ó =Ð>¸bÀÈÀ
È#ÈdÏoÉoÐ^_ÐM`Ð`fÐglÐfmÐnrÐmsÐtÐtr.   c                 óì   — | j                   dkD  r| j                  | j                   }}n| j                  | j                  }}|dkD  rt	        dt        d|z  |z  «      «      nd}dt        ||«      › d|› d�S )Nr   r   z  Validating  rÂ   ú%)r^   r_   ra   r`   r*   Úroundr-   )rb   Údone_nÚtotal_nÚpcts       r,   r¶   z_LiveDisplay._line_validating3  s{   € ð × Ñ  1Ò$Ø"×2Ñ2°D×4IÑ4I�G‰Fà"×/Ñ/°×1CÑ1C�GˆFØ9@À1ºŒc�#”u˜S 6™\¨GÑ3Ó4Ô5È!ˆØ¤ V¨WÓ 5Ð6°b¸¸¸QÐ?Ð?r.   c                 ó  — | j                   | j                  z
  }| j                  dkD  rd| j                  › d�nd}| j                  |cxk\  rdkD  rn ndnd}dt	        | j                  |«      › d| j                  d›d	|d›|› |› �S )
Nr   rÂ   z commitsrÁ   r   rÀ   z  Committing  re   rÃ   )rB   rS   rX   rW   r-   )rb   Ú	effectiveÚcommits_strrÄ   s       r,   r·   z_LiveDisplay._line_committing>  s‘   € Ø—K‘K $§-¡-Ñ/ˆ	Ø9=×9IÑ9IÈAÒ9M˜˜4×+Ñ+Ð,¨HÑ5ÐSUˆØŸ™¨IÔ9¸Õ9‰v¸rˆàœT $§/¡/°9Ó=Ð>¸bÀÇÁÐQRÐ@SÐSVÐW`ÐabÐVcÐdoÐcpÐquÐpvÐwð	
r.   c                 ó(  — d| j                   d›d| j                  d›dt        | j                  «      d›d| j                  d›dt        | j                  «      › d| j                  d›d| j                  › d�}| j                  r�| j                  d	kD  r:t        d
t        d
| j                  z  | j                  z  «      «      }|d|› d�z  }|S | j                  d	kD  r8t        d
t        d
| j                  z  | j                  z  «      «      }|d|› d�z  }|S )NzUploading... re   ú/z files checked, z uploaded (z transferred), z committed in z
 commit(s)r   r   z, validating rË   )rR   rB   r»   rV   rT   r;   rY   rW   rX   r]   r^   r*   rÌ   r_   r`   ra   )rb   ÚsummaryrÏ   s      r,   rª   z_LiveDisplay._summaryF  s"  € à˜DŸN™N¨1Ð-¨Q¨t¯{©{¸1¨oÐ=MÜ�4—>‘>Ó" 1Ð% Q t§¡°qÐ&9¸Ä]ÐSW×SbÑSbÓEcÐDdÐdsØ�‰˜qÐ! °×0@Ñ0@Ð/AÀðMð 	ð
 ×ÒØ×$Ñ$ qÒ(Ü˜#œu S¨4×+?Ñ+?Ñ%?À$×BWÑBWÑ%WÓXÓY�Ø˜]¨3¨%¨qÐ1Ñ1�ð ˆð ×#Ñ# aÒ'Ü˜#œu S¨4×+<Ñ+<Ñ%<¸t×?QÑ?QÑ%QÓRÓS�Ø˜]¨3¨%¨qÐ1Ñ1�Øˆr.   )T©r&   N)r&   zCallable | None)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r)   Úboolrc   ro   ru   rx   r{   r}   ÚlistÚstrr‚   r„   r‡   r¢   rn   r¦   rt   r³   r´   r¶   r·   rª   © r.   r,   r=   r=   h   sù   „ ññ* Cð °$ð À$ó ó@	óð  ð  ¨ó  ð ð ¨ó ð! sð !¨tó !ð)¨¨c©ð )°tó )ð! ð !¨ó !ð" Sð "¨Tó "ó
/óf	0ó+ó'ðp ó pðu ó uð	@ #ó 	@ð
 #ó 
ð˜#ô r.   r=   c                   óJ   — e Zd ZdZd
d„Zedefd„«       Zdededdfd„Z	d
d	„Z
y)Ú_CommitPacerzOAdaptive number of files per commit, to stay below server-side commit timeouts.r&   Nc                 ó   — t         | _        y rr   )ÚINITIAL_COMMIT_SIZE_INDEXÚ_indexrp   s    r,   rc   z_CommitPacer.__init__Y  s	   € Ü/ˆ�r.   c                 ó(   — t         | j                     S rr   )ÚCOMMIT_SIZE_SCALErã   rp   s    r,   rg   z_CommitPacer.target\  s   € ä  §¡Ñ-Ð-r.   ÚdurationÚnb_filesc                 óâ   — |t         k  r>|| j                  k\  r/t        | j                  dz   t	        t
        «      dz
  «      | _        y |t         kD  rt        | j                  dz
  d«      | _        y y ©Nr   r   )ÚTARGET_COMMIT_DURATIONrg   r*   rã   r»   rå   rŽ   )rb   ræ   rç   s      r,   Úrecord_successz_CommitPacer.record_success`  s[   € ØÔ,Ò,°¸T¿[¹[Ò1HÜ˜dŸk™k¨A™o¬sÔ3DÓ/EÈÑ/IÓJˆD�KØÔ.Ò.Ü˜dŸk™k¨A™o¨qÓ1ˆD�Kð /r.   c                 ó@   — t        | j                  dz
  d«      | _        y ré   )rŽ   rã   rp   s    r,   Úrecord_failurez_CommitPacer.record_failuref  s   € Ü˜$Ÿ+™+¨™/¨1Ó-ˆ�r.   rÖ   )r×   rØ   rÙ   rÚ   rc   Úpropertyr)   rg   Úfloatrë   rí   rÞ   r.   r,   rà   rà   V  sD   „ ÙYó0ð ð.˜ò .ó ð.ð2 uð 2¸ð 2Àó 2ô.r.   rà   c                   ó   — e Zd ZdZdd„Zy)Ú_BatchzSA group of files destined to a single git commit, with their in-flight xet uploads.Nc                 ón   — g | _         d| _        d | _        g | _        t	        j
                  «       | _        y )Nr   )ÚopsÚregular_bytesÚ
xet_commitÚhandlesr§   r¨   Ú
created_atrp   s    r,   rc   z_Batch.__init__m  s-   € Ø-/ˆŒØ"#ˆÔØ#ˆŒØ=?ˆŒÜ!%§¡Ó!1ˆ�r.   rÖ   )r×   rØ   rÙ   rÚ   rc   rÞ   r.   r,   rñ   rñ   j  s
   „ Ù]ô2r.   rñ   c                   óê   — e Zd Zdddededee   dee   deded	z  d
eez  d	z  ded	z  deded	z  dd	fd„Zdd„Z	dd„Z
dedd	fd„Zdedd	fd„Zdd„Zdedd	fd„Zdee   dd	fd„Zdee   dd	fd„Zdd„Zy	)Ú_UploadPipelineÚapir   Úrepo_idÚ	repo_typeÚadd_operationsÚdelete_operationsÚcommit_messageÚcommit_descriptionNÚtokenÚrevisionÚ	create_prÚparent_commitr&   c       
         ó  — || _         || _        || _        || _        || _        || _        || _        || _        |j                  |¬«      | _	        |	xs t        j                  | _        |
| _        || _        t        | j                  d¬«      | _        | j                   | _        d | _        d | _        d| _        d | _        t-        «       | _        t1        j2                  d¬«      | _        g | _        t9        j:                  «       | _        t?        tA        |«      tC        «        ¬«      | _"        tG        tH        jJ                  ||| j                   |jL                  ¬«      }|
r|d	z  }tO        «       | _(        || j                  tS        | j                  «      d
œ| _*        d | _+        |D ]O  }|jX                  dk(  sŒ|j[                  «       5 }|j]                  «       j_                  «       | _+        d d d «        y  y # 1 sw Y    y xY w)N)r  rÁ   ©Úsafer   r   )Úmaxsize)r>   r?   )Ú
token_typerû   rü   r  Úendpointz?create_pr=1)Útoken_refresh_urlÚtoken_refresh_headersÚcustom_headersz
.gitignore)0rú   rû   rü   rý   rþ   rÿ   r   r  Ú_build_hf_headersÚheadersr   ÚDEFAULT_REVISIONr  r  r  r   Úbase_revision_quotedÚcommit_revision_quotedÚpr_urlÚpr_revisionÚ
nb_commitsÚlast_commit_inforà   ÚpacerÚqueueÚQueueÚbatch_queueÚerrorsrK   rO   Úabort_eventr=   r»   r   Údisplayr   r   ÚWRITEr
  r   Úxet_sessionr   Úxet_commit_kwargsÚgitignore_contentÚpath_in_repoÚas_fileÚreadÚdecode)rb   rú   rû   rü   rý   rþ   rÿ   r   r  r  r  r  Úrefresh_urlÚopÚfs                  r,   rc   z_UploadPipeline.__init__v  sÅ  € ð ˆŒØˆŒØ"ˆŒØ,ˆÔØ!2ˆÔØ,ˆÔØ"4ˆÔØˆŒ
Ø×,Ñ,°5Ð,Ó9ˆŒØ Ò>¤I×$>Ñ$>ˆŒØ"ˆŒØ*ˆÔô
 %*¨$¯-©-¸bÔ$AˆÔ!ð '+×&?Ñ&?ˆÔ#Ø"&ˆŒØ'+ˆÔØˆŒØ59ˆÔÜ!“^ˆŒ
ô ).¯©¸AÔ(>ˆÔØ+-ˆŒÜ$Ÿ?™?Ó,ˆÔÜ#´°NÓ0CÔQkÓQmÐMmÔnˆŒô 6Ü#×)Ñ)ØØØ×.Ñ.Ø—\‘\ô
ˆñ Ø˜>Ñ)ˆKÜ*Ó,ˆÔà!,Ø%)§\¡\Ü6°t·|±|ÓDñ"
ˆÔð .2ˆÔØ ò 	ˆBØ�‰ ,Ó.Ø—Z‘Z“\ð ? QØ-.¯V©V«X¯_©_Ó->�DÔ*÷?áñ		÷?áús   Ç
$G:Ç:H	c           	      óþ  — t        g | j                  ¢| j                  ¢«       t        j                  | j
                  dd¬«      }|j                  «        | j                  j                  «        	 | j                  «        	 | j                  j                  «       r|j                  d¬«       n/| j                  j!                  t"        «       |j                  «        | j                  j%                  «        | j                  j                  «       r=| j&                  �1t(        j+                  d| j,                  › d| j&                  › d�«       	 | j.                  r| j.                  d	   ‚| j1                  «       S # t        $ r& | j                  j                  «        t        «        ‚ w xY w# | j                  j                  «       r|j                  d¬«       n/| j                  j!                  t"        «       |j                  «        | j                  j%                  «        | j                  j                  «       r>| j&                  �1t(        j+                  d| j,                  › d| j&                  › d�«       w w w xY w)
Nzhf-upload-committerTrf   r6   ©ÚtimeoutzUpload to pull request zF did not complete. To resume into the same PR, re-run with `revision="z^"` (without `create_pr=True`). Re-running with `create_pr=True` would open a new pull request.r   )r   rþ   rý   rK   rm   Ú_committer_loopro   r  Ú_coordinator_loopÚBaseExceptionr  rU   r   Úis_setrs   r  ÚputÚ	_SENTINELru   r  rG   Úwarningr  r  Ú_final_commit_info)rb   Ú	committers     r,   Úrunz_UploadPipeline.run¿  s  € Ü'Ð(W¨$×*@Ñ*@Ð(WÀ4×CVÑCVÐ(WÔXÜ×$Ñ$¨D×,@Ñ,@ÐG\ÐeiÔjˆ	Ø�‰ÔØ�‰×ÑÔð	Ø×"Ñ"Õ$ð ×Ñ×&Ñ&Ô(ð —‘ r�Õ*à× Ñ ×$Ñ$¤YÔ/Ø—‘Ô Ø�L‰L×ÑÔ Ø×Ñ×&Ñ&Ô(¨T×-=Ñ-=Ð-IÜ—‘Ø-¨d¯k©k¨]ð ;8Ø8<×8HÑ8HÐ7Ið JLðLõð
 �;Š;Ø—+‘+˜a‘.Ð Ø×&Ñ&Ó(Ð(øô- ò 	Ø×Ñ× Ñ Ô"ÜÔØð	ûð
 ×Ñ×&Ñ&Ô(ð —‘ r�Õ*à× Ñ ×$Ñ$¤YÔ/Ø—‘Ô Ø�L‰L×ÑÔ Ø×Ñ×&Ñ&Ô(¨T×-=Ñ-=Ð-IÜ—‘Ø-¨d¯k©k¨]ð ;8Ø8<×8HÑ8HÐ7Ið JLðLõð .JÐ(ús   Á1E: Å:/F)Æ)F, Æ,CI<c                 ó¦  — dd l }t        «       }t        dt        | j                  «      t
        «      D �]a  }| j                  j                  «       r| j                  |«        y | j                  ||t
        z    }	 t        || j                  | j                  | j                  | j                  | j                  j                  | j                   | j"                  ¬«       | j,                  j/                  t        |«      «       |D �]�  }|j0                  r?t2        j5                  d|j6                  › d�«       | j,                  j9                  d«       ŒO|j:                  dk(  r+|xj<                  |j>                  j@                  z  c_        �nL|jB                  €E | jD                  jF                  dd| j,                  jI                  «       i| jJ                  ¤Ž|_!        |j>                  jL                  r$|j>                  jN                  jQ                  «       n|jR                  }tU        |jV                  tX        «      r3|jB                  j[                  |jV                  ||j6                  ¬	«      }	n0|jB                  j]                  t_        |jV                  «      |¬
«      }	|j`                  jc                  ||	f«       | j,                  je                  d«       |jf                  jc                  |«       t        |jf                  «      | jh                  jj                  k\  sW|j<                  tl        k\  sDto        jp                  «       |jr                  z
  tt        kD  s�ŒYt        |jf                  «      dkD  s�Œs| jw                  |«       t        «       }�Œ� �Œd | jw                  |«       y # t$        $ r}ddlm} |j+                  |«       ‚ d }~ww xY w)Nr   )Ú	additionsrü   rû   r  r  r
  r  r!  r   )Ú$_CREATE_COMMIT_NO_REPO_ERROR_MESSAGEzSkipping upload for 'z' (ignored by gitignore rules).ÚregularÚprogress_callback)Úsha256rh   )r;  rÞ   )<Úhf_xetrñ   Úranger»   rý   ÚPREUPLOAD_BATCH_SIZEr  r/  Ú_abort_batchr   rü   rû   r  r  rú   r
  r  r!  r   Úhf_apir8  Úappend_to_messager  rx   Ú_should_ignorerG   Údebugr"  r{   Ú_upload_moderô   Úupload_infoÚsizerõ   r  Únew_upload_commitr¢   r   Ú	is_hashedr;  ÚhexÚCOMPUTE_SHA256Ú
isinstanceÚpath_or_fileobjÚbytesÚstart_upload_bytesÚstart_upload_filerÝ   rö   rµ   r}   ró   r  rg   ÚREGULAR_CONTENT_BYTES_BUDGETr§   r¨   r÷   ÚMAX_COMMIT_INTERVALÚ_enqueue)
rb   r<  Úbatchro   ÚchunkÚer8  r'  Úsha_argÚhandles
             r,   r-  z!_UploadPipeline._coordinator_loopà  sý  € Ûä“ˆÜ˜1œc $×"5Ñ"5Ó6Ô8LÓMó 5	%ˆEØ×Ñ×&Ñ&Ô(Ø×!Ñ! %Ô(ÙØ×'Ñ'¨°Ô8LÑ0LÐMˆEðÜ#Ø#Ø"Ÿn™nØ ŸL™LØ ŸL™LØ!×6Ñ6Ø!ŸX™X×.Ñ.Ø"Ÿn™nØ&*×&<Ñ&<õ	ð �L‰L×(Ñ(¬¨U«Ô4Øó %�Ø×$Ò$Ü—L‘LÐ#8¸¿¹Ð8IÐIhÐ!iÔjØ—L‘L×/Ñ/°Ô2ØØ—?‘? iÒ/Ø×'Ò'¨2¯>©>×+>Ñ+>Ñ>×'à×'Ñ'Ð/Ø+M¨4×+;Ñ+;×+MÑ+Mñ ,Ø.2¯l©l×.KÑ.KÓ.Mð,ØQU×QgÑQgñ,˜Ô(ð
 >@¿^¹^×=UÒ=U˜bŸn™n×3Ñ3×7Ñ7Ô9Ð[a×[pÑ[p�GÜ! "×"4Ñ"4´eÔ<Ø!&×!1Ñ!1×!DÑ!DØ×.Ñ.°wÀRÇ_Á_ð "Eó "™ð "'×!1Ñ!1×!CÑ!CÄCÈ×HZÑHZÓD[ÐdkÐ!CÓ!l˜Ø—M‘M×(Ñ(¨"¨f¨Ô6Ø—L‘L×6Ñ6°qÔ9Ø—	‘	× Ñ  Ô$ô ˜Ÿ	™	“N d§j¡j×&7Ñ&7Ò7Ø×*Ñ*Ô.JÒJÜŸ™Ó(¨5×+;Ñ+;Ñ;Ô>QÔQÔVYÐZ_×ZcÑZcÓVdÐghÔVhà—M‘M %Ô(Ü"›H’Eò?%ð-5	%ðl 	�‰�eÕøôM +ò ÝHà×#Ñ#Ð$HÔIØûð	ús   Á;A#N*Î*	OÎ3OÏOrS  c                 óJ  — t        |j                  «      dk(  r(| j                  dk(  rt        | j                  «      dkD  sy | j                  j                  «       s	 | j                  j                  |d¬«       y | j                  |«       y # t        j                  $ r Y Œ`w xY w)Nr   r(   r*  )r»   ró   r  rþ   r  r/  r  r0  r  ÚFullr?  ©rb   rS  s     r,   rR  z_UploadPipeline._enqueue  sŽ   € Üˆu�y‰y‹>˜QÒ¨¯©¸1Ò(<ÄÀT×E[ÑE[ÓA\Ð_`ÒA`Øà×"Ñ"×)Ñ)Ô+ðØ× Ñ ×$Ñ$ U°CÐ$Ô8Øð 	×Ñ˜%Õ øô —:‘:ò Ùðús   ÁB ÂB"Â!B"c                 ór   — |j                   �	 |j                   j                  «        y y # t        $ r Y y w xY wrr   )rõ   ÚabortÚ	ExceptionrZ  s     r,   r?  z_UploadPipeline._abort_batch(  s>   € Ø×ÑÐ'ðØ× Ñ ×&Ñ&Õ(ð (øô ò Ùðús   Ž* ª	6µ6c                 óð  — 	 	 | j                   j                  d¬«      }|t        u ry 	 | j                  j                  «       s| j                  |«       n| j                  |«       Œe# t        j                  $ r | j                  j                  «       rY y Y Œ—w xY w# t        $ rP}| j                  |«       | j                  j                  |«       | j                  j                  «        Y d }~ŒŠd }~ww xY w)Nr"   r*  )r  Úgetr  ÚEmptyr  r/  r1  Ú_process_batchr?  r.  r  rµ   rU   )rb   rS  rU  s      r,   r,  z_UploadPipeline._committer_loop1  sÛ   € ØðØ×(Ñ(×,Ñ,°SÐ,Ó9�ð
 œ	Ñ!Øð'Ø×'Ñ'×.Ñ.Ô0Ø×'Ñ'¨Õ.à×%Ñ% eÔ,ð øô —;‘;ò Ø×#Ñ#×*Ñ*Ô,ÙÙðûô !ò 'Ø×!Ñ! %Ô(Ø—‘×"Ñ" 1Ô%Ø× Ñ ×$Ñ$×&Ñ&ûð'ús)   ƒA' ©=B Á'-BÂBÂ	C5Â%AC0Ã0C5c           
      óÎ  — |j                   ��|j                   j                  «        |j                  D ]h  \  }}|j                  j                  sFt
        j                  |j                  «       j                  j                  «      |j                  _	        d|_
        Œj | j                  j                  |j                  D ��cg c]@  \  }}t        |j                  t
        «      st        |j                  «      n|j                   ‘ŒB c}}«       g }|j"                  D ]w  }|j$                  �X|j$                  |j&                  k(  r?t(        j+                  d|j                   › d�«       | j                  j-                  d«       Œg|j/                  |«       Œy t1        |«      dkD  s'| j2                  dk(  r+t1        | j4                  «      dkD  r| j7                  |«       y y y c c}}w )NTzSkipping commit for 'z' (file unchanged).r   r   )rõ   Úwait_to_finishrö   rE  rH  rM  ÚfromhexÚresultÚxet_infor;  Ú_is_uploadedr  r‚   rK  rL  rÝ   r"  ró   Ú_remote_oidÚ
_local_oidrG   rC  r„   rµ   r»   r  rþ   Ú_commit_with_split)rb   rS  r'  rW  Ú_Úops_to_commits         r,   ra  z_UploadPipeline._process_batchE  s‹  € ð ×ÑÑ'Ø×Ñ×+Ñ+Ô-Ø#Ÿm™mò '‘
��FØ—~‘~×/Ò/Ü,1¯M©M¸&¿-¹-»/×:RÑ:R×:YÑ:YÓ,Z�B—N‘NÔ)Ø"&�•ð'ð
 �L‰L×,Ñ,ð "'§¡÷á˜˜Aô 4>¸b×>PÑ>PÔRWÔ3X”C˜×*Ñ*Ô+Ð^`×^mÑ^mÑmóôð ˆØ—)‘)ò 	%ˆBØ�~‰~Ð)¨b¯n©nÀÇÁÒ.MÜ—‘Ð4°R·_±_Ð4EÐEXÐYÔZØ—‘×+Ñ+¨AÔ.ØØ× Ñ  Õ$ð	%ô ˆ}Ó Ò! d§o¡o¸Ò&:¼sÀ4×CYÑCYÓ?ZÐ]^Ò?^Ø×#Ñ# MÕ2ð @_Ð&:ùó#s   ÃAG!
ró   c                 óŽ  — 	 | j                  |«       y # t        $ r§}| j                  j                  «        t	        |«      t
        d   k  r‚ t        j                  dt	        |«      › d|›d�«       | j                  j                  }t        dt	        |«      |«      D ]  }| j                  ||||z    «       Œ Y d }~y d }~ww xY w)Nr   z
Commit of z files failed (z). Retrying in smaller chunks.)Ú
_do_commitr]  r  rí   r»   rå   rG   r2  rg   r=  rj  )rb   ró   rU  rg   ro   s        r,   rj  z"_UploadPipeline._commit_with_splitd  s±   € ð		EØ�O‰O˜CÕ øÜò 	EØ�J‰J×%Ñ%Ô'Ü�3‹xÔ,¨QÑ/Ò/ØÜ�N‰N˜Z¬¨C« z°ÀÀÐEcÐdÔeØ—Z‘Z×&Ñ&ˆFÜ˜q¤# c£(¨FÓ3ò E�Ø×'Ñ'¨¨E°E¸F±NÐ(CÕDõEûð	Eús   ‚ ”	C�BB?Â?Cc                 ó   — | j                   r³| j                  €§| j                  j                  | j                  | j
                  | j                  | j                  | j                  ¬«      }|j                  €t        d«      ‚|j                  | _        |j                  | _        t        |j                  d¬«      | _        t        |«      }| j                   dk(  rt        | j"                  «      |z   }| j                   dk(  r| j
                  n| j
                  › d| j                   dz   › d�}t%        j&                  «       }t)        |i || j                  xs d| j                  | j                  | j*                  | j                  | j                  j,                  | j                   dk(  r| j.                  nd d	¬
«      | _        t%        j&                  «       |z
  }| j2                  j5                  |t7        |«      «       | xj                   dz  c_        |D ]	  }d	|_        Œ | j:                  j=                  t7        |«      «       t>        jA                  dt7        |«      › d|d›d| j0                  jB                  › �«       y )N)rû   Útitler  Údescriptionrü   zCServer did not return a git reference for the created pull request.rÁ   r  r   z (part r   ú)T)Ú
operationsÚfiles_to_copyrÿ   r   rü   rû   r  r  r
  r  Úretry_on_errorz
Committed z file(s) in r7   zs: )"r  r  rú   Úcreate_pull_requestrû   rÿ   r  r   rü   Úgit_referenceÚ
ValueErrorÚurlr  r   r  rÜ   r  rþ   r§   r¨   r   r  r
  r  r  r  rë   r»   Ú_is_committedr  r‡   rG   rC  Ú
commit_url)rb   ró   Úprrs  rÿ   Út0ræ   r'  s           r,   rn  z_UploadPipeline._do_commitp  s  € Ø�>Š>˜d×.Ñ.Ð6ð —‘×-Ñ-ØŸ™Ø×)Ñ)Ø—j‘jØ ×3Ñ3ØŸ.™.ð .ó ˆBð ×ÑÐ'Ü Ð!fÓgÐgØŸ&™&ˆDŒKØ!×/Ñ/ˆDÔÜ*/°×0@Ñ0@ÀrÔ*JˆDÔ'ä $ S£	ˆ
Ø�?‰?˜aÒä˜d×4Ñ4Ó5¸
ÑBˆJð $(§?¡?°aÒ#7ˆD×ÒÀ×@SÑ@SÐ?TÐT[Ð\`×\kÑ\kÐnoÑ\oÐ[pÐpqÐ=rð 	ô �^‰^Óˆô !-Ø!ØØ)Ø#×6Ñ6Ò<¸"Ø—n‘nØ—L‘LØ—L‘LØ×0Ñ0Ø—X‘X×&Ñ&Ø04·±À1Ò0D˜$×,Ò,È$Øô!
ˆÔô —>‘>Ó# bÑ(ˆØ�
‰
×!Ñ! (¬C°«HÔ5Ø�Š˜1Ñ�àò 	$ˆBØ#ˆBÕð	$à�‰×"Ñ"¤3 s£8Ô,Ü�‰�z¤# c£( ¨<¸À°~ÀSÈ×I^ÑI^×IiÑIiÐHjÐkÕlr.   c                 ó´  — ddl m} | j                  �€ t        j	                  d«       | j
                  j                  | j                  | j                  | j                  | j                  ¬«      }| j
                  j                  }| j                  t        j                  k7  r|› d| j                  › d�} ||› d| j                  › d|j                  › �| j                  | j                   xs d|j                  | j
                  j                  ¬	«      S | j"                  dkD  r#t        j%                  d
| j"                  › d�«       | j&                  �| || j                  j(                  | j                  j                  | j                  j                   | j                  j*                  | j&                  | j
                  j                  ¬«      S | j                  S )Nr   )r   zPNo files have been modified since last commit. Skipping to prevent empty commit.)rû   rü   r  r  rÔ   Úsz/commit/rÁ   )r{  rÿ   r   ÚoidÚ	_endpointzUpload completed in z	 commits.)r{  rÿ   r   r€  r  r�  )r@  r   r  rG   r2  rú   Ú	repo_inforû   rü   r  r  r
  r   ÚREPO_TYPE_MODELÚsharÿ   r   r  rl   r  r{  r€  )rb   r   rl   Ú
url_prefixs       r,   r3  z"_UploadPipeline._final_commit_info§  s�  € Ý&à× Ñ Ñ(ô �N‰NÐmÔnØ—8‘8×%Ñ%ØŸ™°·±ÈÏÉÐ^b×^hÑ^hð &ó ˆDð Ÿ™×*Ñ*ˆJØ�~‰~¤×!:Ñ!:Ò:Ø *˜|¨1¨T¯^©^Ð,<¸AÐ>�
ÙØ(˜\¨¨4¯<©<¨.¸ÀÇÁÀ
ÐKØ#×2Ñ2Ø#'×#:Ñ#:Ò#@¸bØ—H‘HØŸ(™(×+Ñ+ôð ð �?‰?˜QÒÜ�K‰KÐ.¨t¯©Ð.?¸yÐIÔJØ�;‰;Ð"áØ×0Ñ0×;Ñ;Ø#×4Ñ4×CÑCØ#'×#8Ñ#8×#KÑ#KØ×)Ñ)×-Ñ-Ø—{‘{ØŸ(™(×+Ñ+ôð ð ×$Ñ$Ð$r.   )r&   r   rÖ   )r×   rØ   rÙ   rÝ   rÜ   r	   r
   rÛ   rc   r5  r-  rñ   rR  r?  r,  ra  rj  rn  r3  rÞ   r.   r,   rù   rù   u  s4  „ ðGàðGð ð	Gð
 ðGð Ð/Ñ0ðGð  Ð 5Ñ6ðGð ðGð   $™JðGð �T‰z˜DÑ ðGð ˜‘*ðGð ðGð ˜T‘zðGð 
óGóR)óB:ðx
!˜fð 
!¨ó 
!ð &ð ¨Tó ó'ð(3 Fð 3¨tó 3ð>
E dÐ+=Ñ&>ð 
EÀ4ó 
Eð3m˜dÐ#5Ñ6ð 3m¸4ó 3môn %r.   rù   F)r   r  r  r  r  rú   r   rû   rü   rý   rþ   rÿ   r   r  r  r  r  r   c       
         óJ   — t        | |||||||||	|
¬«      j                  «       S )z¨Upload a prepared list of operations through the streamed multi-commit pipeline.

    Requires `hf_xet` to be installed. See module docstring for the architecture.
    )
rû   rü   rý   rþ   rÿ   r   r  r  r  r  )rù   r5  )rú   rû   rü   rý   rþ   rÿ   r   r  r  r  r  s              r,   Úpipelined_uploadr‡  Ê  s;   € ô& ØØØØ%Ø+Ø%Ø-ØØØØ#ô÷ 
�cƒeðr.   )<rÚ   r  r¸   rC   rK   r§   Útypingr   r   r   Úurllib.parser   rÁ   r   Ú_commit_apir	   r
   r   r   r   r  r   Úutilsr   r   Ú
utils._xetr   r   r   r   r   r@  r   r   Ú
get_loggerr×   rG   r>  rå   râ   rê   rQ  rP  Úobjectr1  Ú
_BAR_WIDTHr¥   r©   rï   r)   rÝ   r-   r;   r=   rà   rñ   rù   rÜ   rÛ   r‡  rÞ   r.   r,   ú<module>r�     s¶  ðñó$ Û Û 
Û Û ß /Ñ /Ý å ÷õ õ ,ß 6÷õ ñ ß)à	ˆ×	Ñ	˜HÓ	%€ð Ð ò EÐ ØÐ ØÐ ØÐ ð  1Ð á‹H€	ð €
ØÐ ØÐ ð 5?ñ 5�%ð 5 ð 5¨cð 5À3ó 5ð	�Uð 	˜só 	÷kñ k÷\.ñ .÷(2ñ 2÷R%ñ R%ðz
 &*Ø#ØØØ $òØ	ðð ðð ð	ð
 Ð+Ñ,ðð Ð1Ñ2ðð ðð ˜d™
ðð �‰:˜Ñðð �D‰jðð ðð ˜‘:ðð ôr.   