+
    LV-jµD  ã                   óÒ   € ^ 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t^RIHtHt ^RIHtHt ] P$                  ! R4      t ! R R	]4      t ! R
 R]4      tR# )é    N)Úsuppress)Údatetime)Úquote)ÚAbstractBufferedFileÚAbstractFileSystem)Úinfer_storage_optionsÚtokenizeÚwebhdfsc                   óR  a a€ ] tR t^t oRt]! ]P                  ! 4       4      tRt	R V 3R llt
]R 4       tR tR!R ltR"R lt]R 4       t]R 4       t]R	 4       tR
 tR tR tR#R ltR tR tR tR$R ltR tR tR tR%R lt R t!R t"R#R lt#R t$R#R lt%R t&R t'R t(Rt)Vt*V ;t+# )&ÚWebHDFSa   
Interface to HDFS over HTTP using the WebHDFS API. Supports also HttpFS gateways.

Four auth mechanisms are supported:

insecure: no auth is done, and the user is assumed to be whoever they
    say they are (parameter ``user``), or a predefined value such as
    "dr.who" if not given
spnego: when kerberos authentication is enabled, auth is negotiated by
    requests_kerberos https://github.com/requests/requests-kerberos .
    This establishes a session based on existing kinit login and/or
    specified principal/password; parameters are passed with ``kerb_kwargs``
token: uses an existing Hadoop delegation token from another secured
    service. Indeed, this client can also generate such tokens when
    not insecure. Note that tokens expire, but can be renewed (by a
    previously specified user) and may allow for proxying.
basic-auth: used when both parameter ``user`` and parameter ``password``
    are provided.

c                ó@  <€ V P                   '       d   R# \        SV `  ! R/ VB  V
'       d   RMR RV RV R2V n        W0n        T;'       g    / V n        / V n        T	;'       g    / V n        Ve"   Vf   Ve   \        R4      hW@P                  R&   WPn	        W`n
        Ve   Vf   \        R	4      hMVe   WPP                  R
&   Ve   WpP                  R&   V'       d   Ve   \        R4      hW°n        WÀn        V P                  4        R\        W4       2V n        R# )ab  
Parameters
----------
host: str
    Name-node address
port: int
    Port for webHDFS
kerberos: bool
    Whether to authenticate with kerberos for this connection
token: str or None
    If given, use this token on every call to authenticate. A user
    and user-proxy may be encoded in the token and should not be also
    given
user: str or None
    If given, assert the user name to connect with
password: str or None
    If given, assert the password to use for basic auth. If password
    is provided, user must be provided also
proxy_to: str or None
    If given, the user has the authority to proxy, and this value is
    the user in who's name actions are taken
kerb_kwargs: dict
    Any extra arguments for HTTPKerberosAuth, see
    `<https://github.com/requests/requests-kerberos/blob/master/requests_kerberos/kerberos_.py>`_
data_proxy: dict, callable or None
    If given, map data-node addresses. This can be necessary if the
    HDFS cluster is behind a proxy, running on Docker or otherwise has
    a mismatch between the host-names given by the name-node and the
    address by which to refer to them from the client. If a dict,
    maps host names ``host->data_proxy[host]``; if a callable, full
    URLs are passed, and function must conform to
    ``url->data_proxy(url)``.
use_https: bool
    Whether to connect to the Name-node using HTTPS instead of HTTP
session_cert: str or Tuple[str, str] or None
    Path to a certificate file, or tuple of (cert, key) files to use
    for the requests.Session
session_verify: str, bool or None
    Path to a certificate file to use for verifying the requests.Session.
kwargs
NÚhttpsÚhttpz://Ú:z/webhdfs/v1z_If passing a delegation token, must not set user or proxy_to, as these are encoded in the tokenÚ
delegationzQIf passing a password, the user must also beset in order to set up the basic-authz	user.nameÚdoaszJIf using Kerberos auth, do not specify the user, this is handled by kinit.Úwebhdfs_© )Ú_cachedÚsuperÚ__init__ÚurlÚkerbÚkerb_kwargsÚparsÚproxyÚ
ValueErrorÚuserÚpasswordÚsession_certÚsession_verifyÚ_connectr	   Ú_fsid)ÚselfÚhostÚportÚkerberosÚtokenr   r   Úproxy_tor   Ú
data_proxyÚ	use_httpsr    r!   ÚkwargsÚ	__class__s   &&&&&&&&&&&&&,€Úo/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/fsspec/implementations/webhdfs.pyr   ÚWebHDFS.__init__.   s4  ø€ ðr �<�<ˆ<ÙÜ‰ÒÑ"˜6Ò"ß!*‘g°Ð7°s¸4¸&ÀÀ$ÀÀ{ÐSˆŒØŒ	Ø&×,Ð,¨"ˆÔØˆŒ	Ø×%Ð% 2ˆŒ
ØÒØÒ 8Ò#7Ü ðóð ð
 ',�I‰I�lÑ#ØŒ	Ø ŒàÒØŠ|Ü ð<óð ð ð ÒØ)-—	‘	˜+Ñ&àÒØ (�I‰I�fÑß˜Ò(Üð2óð ð
 )ÔØ,Ôà�‰Œà¤¨Ó 4Ð5Ð6ˆŽ
ó    c                ó   € V P                   # ©N)r#   ©r$   s   &r.   ÚfsidÚWebHDFS.fsid“   s   € à�z‰zÐr0   c                óà  € \         P                  ! 4       V n        V P                  '       d   V P                  V P                  n        V P
                  V P                  n        V P                  '       d(   ^ RIH	p V! R/ V P                  B V P                  n        V P                  eE   V P                  e5   ^ RIHp V! V P                  V P                  4      V P                  n        R# R# R# )r   )ÚHTTPKerberosAuthN)ÚHTTPBasicAuthr   )ÚrequestsÚSessionÚsessionr    Úcertr!   Úverifyr   Úrequests_kerberosr7   r   Úauthr   r   Úrequests.authr8   )r$   r7   r8   s   &  r.   r"   ÚWebHDFS._connect—   s¡   € Ü×'Ò'Ó)ˆŒà××ÐØ $× 1Ñ 1ˆD�L‰LÔà"×1Ñ1ˆ�‰Ôà�9�9ˆ9Ý:á 0Ñ D°4×3CÑ3CÑ DˆD�L‰LÔà�9‰9Ò  T§]¡]Ò%>Ý3á -¨d¯i©i¸¿¹Ó GˆD�L‰LÖñ &?Ñ r0   c                óæ  € Ve   V P                  V4      MRpV P                  V P                  \        VRR7      ,           4      pVP	                  4       pVP                  V P                  4       VP                  4       VR&   \        P                  RWr4       V P                  P                  VP                  4       VVVVR7      p	V	P                  R
9   ds    V	P                  4       p
V
R,          R,          pV
R,          R	,          pVR9   d   \        V4      hVR9   d   \        V4      hVR9   d   \!        V4      h\#        V4      hV	P'                  4        V	#   \        \$        3 d     L%i ; i)NÚ z/=)ÚsafeÚopzsending %s with %s)Úmethodr   ÚparamsÚdataÚallow_redirectsÚRemoteExceptionÚmessageÚ	exception)i�  i‘  i“  i”  iô  )ÚIllegalArgumentExceptionÚUnsupportedOperationException)ÚSecurityExceptionÚAccessControlException)ÚFileNotFoundException)Ú_strip_protocolÚ_apply_proxyr   r   ÚcopyÚupdater   ÚupperÚloggerÚdebugr;   ÚrequestÚstatus_codeÚjsonr   ÚPermissionErrorÚFileNotFoundErrorÚRuntimeErrorÚKeyErrorÚraise_for_status)r$   rE   rF   ÚpathrH   Úredirectr,   r   ÚargsÚoutÚerrÚmsgÚexps   &&&&&&,      r.   Ú_callÚWebHDFS._call©   sQ  € Ø-1Ò-=ˆt×#Ñ# DÔ)À2ˆØ×Ñ §¡¬5°¸DÔ+AÕ AÓBˆØ�{‰{‹}ˆØ�‰�D—I‘IÔØ—X‘X“ZˆˆT‰
Ü�‰Ð)¨3Ô7Ø�l‰l×"Ñ"Ø—<‘<“>ØØØØ$ð #ó 
ˆð �?‰?Ð7Ô7ð,Ø—h‘h“j�ØÐ+Õ,¨YÕ7�ØÐ+Õ,¨[Õ9�ð ÐWÔWÜ$ S›/Ð)ØÐKÔKÜ)¨#Ó.Ð.ØÐ5Ô5Ü+¨CÓ0Ð0ä& sÓ+Ð+Ø×ÑÔØˆ
øô ¤Ð)ô Ùðús   Ã0E ÅE0Å/E0c                óh   € T;'       g    V P                   p\        V VVVV P                  VVVR7      # )a¾  

Parameters
----------
path: str
    File location
mode: str
    'rb', 'wb', etc.
block_size: int
    Client buffer size for read-ahead or write buffer
autocommit: bool
    If False, writes to temporary file that only gets put in final
    location upon commit
replication: int
    Number of copies of file on the cluster, write mode only
permissions: str or int
    posix permissions, write mode only
kwargs

Returns
-------
WebHDFile instance
)ÚmodeÚ
block_sizeÚtempdirÚ
autocommitÚreplicationÚpermissions)Ú	blocksizeÚ	WebHDFilerm   )r$   ra   rk   rl   rn   ro   rp   r,   s   &&&&&&&,r.   Ú_openÚWebHDFS._openÊ   s?   € ðB  ×1Ð1 4§>¡>ˆ
ÜØØØØ!Ø—L‘LØ!Ø#Ø#ô	
ð 		
r0   c                óR   € V R ,          P                  4       V R &   V R,          V R&   V # )ÚtypeÚlengthÚsize)Úlower)Úinfos   &r.   Ú_process_infoÚWebHDFS._process_info÷   s*   € à˜F•|×)Ñ)Ó+ˆˆV‰Ø˜H•~ˆˆV‰Øˆr0   c                ó&   € \        V4      R ,          # ©ra   )r   )Úclsra   s   &&r.   rR   ÚWebHDFS._strip_protocolý   s   € ä$ TÓ*¨6Õ2Ð2r0   c                óš   € \        V 4      pVP                  R R4       VP                  RR4       RV9   d   VP                  R4      VR&   V# )ra   NÚprotocolÚusernamer   )r   Úpop)Úurlpathrd   s   & r.   Ú_get_kwargs_from_urlsÚWebHDFS._get_kwargs_from_urls  sG   € ä# GÓ,ˆØ�‰�˜ÔØ�‰�
˜DÔ!Ø˜ÔØŸ'™' *Ó-ˆC�‰KØˆ
r0   c                ó€   € V P                  R VR7      pVP                  4       R,          pWR&   V P                  V4      # )ÚGETFILESTATUSr~   Ú
FileStatusÚname)rh   r[   r{   )r$   ra   rd   rz   s   &&  r.   rz   ÚWebHDFS.info
  s<   € Ø�j‰j˜¨tˆjÓ4ˆØ�x‰x‹z˜,Õ'ˆØˆV‰Ø×!Ñ! $Ó'Ð'r0   c                ó    € V P                  V4      pVP                  RR4      pVe   \        P                  ! VR,          4      # \	        R4      h)z=Return the created timestamp of a file as a datetime.datetimeÚmodificationTimeNéè  z5Could not retrieve creation time (modification time).©rz   Úgetr   Úfromtimestampr^   ©r$   ra   rz   Úmtimes   &&  r.   ÚcreatedÚWebHDFS.created  sI   € ð �y‰y˜‹ˆØ—‘Ð+¨TÓ2ˆØÒÜ×)Ò)¨%°$­,Ó7Ð7ÜÐRÓSÐSr0   c                ó    € V P                  V4      pVP                  RR4      pVe   \        P                  ! VR,          4      # \	        R4      h)z>Return the modified timestamp of a file as a datetime.datetimerŽ   Nr�   z%Could not retrieve modification time.r�   r“   s   &&  r.   ÚmodifiedÚWebHDFS.modified  sG   € à�y‰y˜‹ˆØ—‘Ð+¨TÓ2ˆØÒÜ×)Ò)¨%°$­,Ó7Ð7ÜÐBÓCÐCr0   c                ó:  € V P                  R VR7      pVP                  4       R,          R,          pV F=  pV P                  V4       VP                  R4      R,           VR,          ,           VR&   K?  	  V'       d   \	        VR R7      # \	        R	 V 4       4      # )
Ú
LISTSTATUSr~   ÚFileStatusesrŠ   Ú/Ú
pathSuffixr‹   c                 ó   € V R ,          # )r‹   r   )Úis   &r.   Ú<lambda>ÚWebHDFS.ls.<locals>.<lambda>(  s   € ¨q°®yr0   )Úkeyc              3   ó2   "  € T F  qR ,          x € K  	  R# 5i)r‹   Nr   )Ú.0rz   s   & r.   Ú	<genexpr>ÚWebHDFS.ls.<locals>.<genexpr>*  s   é € Ð9±5¨4˜vŸ,š,³5ùs   ‚)rh   r[   r{   ÚrstripÚsorted)r$   ra   Údetailr,   rd   Úinfosrz   s   &&&,   r.   ÚlsÚ
WebHDFS.ls!  s†   € Ø�j‰j˜¨DˆjÓ1ˆØ—‘“
˜>Õ*¨<Õ8ˆÛˆDØ×Ñ˜tÔ$ØŸ;™; sÓ+¨cÕ1°D¸Õ4FÕFˆD�‹Lñ ÷ Ü˜%Ñ%8Ô9Ð9äÑ9±5Ó9Ó9Ð9r0   c                óV   € V P                  RVR7      pVP                  4       R,          # )z8Total numbers of files, directories and bytes under pathÚGETCONTENTSUMMARYr~   ÚContentSummary©rh   r[   )r$   ra   rd   s   && r.   Úcontent_summaryÚWebHDFS.content_summary,  s'   € à�j‰jÐ,°4ˆjÓ8ˆØ�x‰x‹zÐ*Õ+Ð+r0   c                ób  € V P                  RVRR7      pRVP                  9   de   V P                  VP                  R,          4      pV P                  P	                  V4      pVP                  4        VP                  4       R,          # VP                  4        VP                  4       R,          # )z/Checksum info of file, giving method and resultÚGETFILECHECKSUMF)ra   rb   ÚLocationÚFileChecksum)rh   ÚheadersrS   r;   r‘   r`   r[   )r$   ra   rd   ÚlocationÚout2s   &&   r.   ÚukeyÚWebHDFS.ukey1  sŠ   € à�j‰jÐ*°ÀˆjÓFˆØ˜Ÿ™Ô$Ø×(Ñ(¨¯©°ZÕ)@ÓAˆHØ—<‘<×#Ñ# HÓ-ˆDØ×!Ñ!Ô#Ø—9‘9“;˜~Õ.Ð.à× Ñ Ô"Ø—8‘8“:˜nÕ-Ð-r0   c                óR   € V P                  R4      pVP                  4       R,          # )zGet user's home directoryÚGETHOMEDIRECTORYÚPathr±   )r$   rd   s   & r.   Úhome_directoryÚWebHDFS.home_directory=  s"   € à�j‰jÐ+Ó,ˆØ�x‰x‹z˜&Õ!Ð!r0   c                óº   € V'       d   V P                  RVR7      pMV P                  R4      pVP                  4       R,          pVf   \        R4      hVR,          # )zªRetrieve token which can give the same authority to other uses

Parameters
----------
renewer: str or None
    User who may use this token; if None, will be current user
ÚGETDELEGATIONTOKEN)ÚrenewerÚTokenz1No token available for this user/security contextÚ	urlString)rh   r[   r   )r$   rÄ   rd   Úts   &&  r.   Úget_delegation_tokenÚWebHDFS.get_delegation_tokenB  sT   € ÷ Ø—*‘*Ð1¸7�*ÓC‰Cà—*‘*Ð1Ó2ˆCØ�H‰H‹J�wÕˆØŠ9ÜÐPÓQÐQØ��~Ðr0   c                óX   € V P                  RRVR7      pVP                  4       R,          # )z/Make token live longer. Returns new expiry timeÚRENEWDELEGATIONTOKENÚput©rF   r(   Úlongr±   )r$   r(   rd   s   && r.   Úrenew_delegation_tokenÚWebHDFS.renew_delegation_tokenS  s(   € à�j‰jÐ/¸ÀUˆjÓKˆØ�x‰x‹z˜&Õ!Ð!r0   c                ó.   € V P                  RRVR7       R# )z Stop the token from being usefulÚCANCELDELEGATIONTOKENrÌ   rÍ   N©rh   )r$   r(   s   &&r.   Úcancel_delegation_tokenÚWebHDFS.cancel_delegation_tokenX  s   € à�
‰
Ð*°5Àˆ
ÖFr0   c                ó.   € V P                  RRWR7       R# )zÇSet the permission at path

Parameters
----------
path: str
    location to set (file or directory)
mod: str or int
    posix epresentation or permission, give as oct string, e.g, '777'
    or 0o777
ÚSETPERMISSIONrÌ   )rF   ra   Ú
permissionNrÓ   )r$   ra   Úmods   &&&r.   ÚchmodÚWebHDFS.chmod\  s   € ð 	�
‰
�?¨5°tˆ
ÖLr0   c                óV   € / pVe   W$R&   Ve   W4R&   V P                   ! RRRRV/VB  R# )zChange owning user and/or groupNÚownerÚgrouprF   rÌ   ra   )ÚSETOWNERrÓ   )r$   ra   rÝ   rÞ   r,   s   &&&& r.   ÚchownÚWebHDFS.chowni  s:   € àˆØÒØ#�7‰OØÒØ#�7‰OØ�
Š
ÑA eÐA°$ÐA¸&ÔAr0   c                ó0   € V P                  RVRVR7       R# )zñ
Set file replication factor

Parameters
----------
path: str
    File location (not for directories)
replication: int
    Number of copies of file on the cluster. Should be smaller than
    number of data nodes; normally 3 on most systems.
ÚSETREPLICATIONrÌ   )ra   rF   ro   NrÓ   )r$   ra   ro   s   &&&r.   Úset_replicationÚWebHDFS.set_replicationr  s   € ð 	�
‰
Ð#¨$°uÈ+ˆ
ÖVr0   c                ó.   € V P                  R RVR7       R# )ÚMKDIRSrÌ   )rF   ra   NrÓ   ©r$   ra   r,   s   &&,r.   ÚmkdirÚWebHDFS.mkdir€  s   € Ø�
‰
�8 E°ˆ
Ö5r0   c                óx   € VR J d#   V P                  V4      '       d   \        V4      hV P                  V4       R# )FN)ÚexistsÚFileExistsErrorré   )r$   ra   Úexist_oks   &&&r.   ÚmakedirsÚWebHDFS.makedirsƒ  s/   € Ø�uÓ §¡¨T×!2Ò!2Ü! $Ó'Ð'Ø�
‰
�4Ör0   c                ó.   € V P                  R RWR7       R# )ÚRENAMErÌ   )rF   ra   ÚdestinationNrÓ   )r$   Úpath1Úpath2r,   s   &&&,r.   ÚmvÚ
WebHDFS.mvˆ  s   € Ø�
‰
�8 E°ˆ
ÖIr0   c                óD   € T P                  R RTV'       d   RMRR7       R# )ÚDELETEÚdeleteÚtrueÚfalse)rF   ra   Ú	recursiveNrÓ   )r$   ra   rý   r,   s   &&&,r.   ÚrmÚ
WebHDFS.rm‹  s#   € Ø�
‰
ØØØß )‘f¨wð	 	ö 	
r0   c                ó(   € V P                  V4       R # r2   )rþ   rè   s   &&,r.   Úrm_fileÚWebHDFS.rm_file“  s   € Ø�‰�Žr0   c           
     óJ  € V P                  V4      ;_uu_ 4       pR P                  V P                  V4      R\        P                  ! ^4       2.4      p V P                  VR4      ;_uu_ 4       p\
        P                  ! WF4       RRR4       V P                  WR4        RRR4       R#   + '       g   i     L,; i  \         dG    \        \        4      ;_uu_ 4        T P                  T4       RRR4       h   + '       g   i     h ; ii ; i  + '       g   i     R# ; i)r�   z.tmp.ÚwbN)ÚopenÚjoinÚ_parentÚsecretsÚ	token_hexÚshutilÚcopyfileobjrö   ÚBaseExceptionr   r]   rþ   )r$   ÚlpathÚrpathr,   ÚlstreamÚ	tmp_fnameÚrstreams   &&&,   r.   Úcp_fileÚWebHDFS.cp_file–  sÓ   € Ø�Y‰Y�u×Ô ØŸ™ $§,¡,¨uÓ"5¸¼w×?PÒ?PÐQSÓ?TÐ>UÐ7VÐ!WÓXˆIðØ—Y‘Y˜y¨$×/Ô/°7Ü×&Ò& wÔ8÷ 0à—‘˜	Õ)÷ Ñ÷
 0×/ûô !ô ÜÔ/×0Õ0Ø—G‘G˜IÔ&÷ 1à÷ 1Ö0àúðú÷ ×ÐúsM   š:DÁB=Á/B*	ÂB=Â*B:Â5B=Â="DÃC:Ã1	DÃ:D
Ä	DÄDÄD"	c                ó  € V P                   '       d/   \        V P                   4      '       d   V P                  V4      pV# V P                   '       d6   V P                   P                  4        F  w  r#VP                  W#^4      pK  	  V# )é   )r   ÚcallableÚitemsÚreplace)r$   r¹   ÚkÚvs   &&  r.   rS   ÚWebHDFS._apply_proxy¤  si   € Ø�:�:ˆ:œ( 4§:¡:×.Ò.Ø—z‘z (Ó+ˆHð
 ˆð	 �Z�ZˆZàŸ
™
×(Ñ(Ö*‘�Ø#×+Ñ+¨A°!Ó4’ñ +àˆr0   )r#   r   r   r   r   r   r;   r    r!   r   r   )r
   ÚwebHDFS)i–Ã  FNNNNNNFNT)r‘   NNT)ÚrbNTNN©Fr2   )NN),Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚstrÚtempfileÚ
gettempdirrm   r‚   r   Úpropertyr4   r"   rh   rs   Ústaticmethodr{   ÚclassmethodrR   r†   rz   r•   r˜   r¬   r²   r»   rÀ   rÈ   rÏ   rÔ   rÚ   rà   rä   ré   rï   rö   rþ   r  r  rS   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r-   Ú__classdict__s   @@r.   r   r      sý   ù‡ € ññ* �(×%Ò%Ó'Ó(€GØ#€H÷c7ðJ ñó ðòHô$ôB+
ðZ ñó ðð
 ñ3ó ð3ð ñó ðò(òTòDô	:ò,ò

.ò"ô
ò""ò
GòMôBòWò6ôò
Jô
òò÷ò r0   r   c                   óX   a a€ ] tR tRt oRtV 3R ltR
R ltR tR tR t	R t
R	tVtV ;t# )rr   i®  z"A file living in HDFS over webHDFSc                ó  <€ \         SV `  ! W3/ VB  VP                  4       pVP                  R R4      f   VP	                  R R4       VP                  RR4      f   VP	                  RR4       VP	                  R R4      V n        VP	                  R4      pVP	                  RR4      RJ dU   V P                  V n        \        P                  P                  V\        \        P                  ! 4       4      4      V n        R# R# )rp   Nro   iÿ  rm   rn   F)r   r   rT   r‘   r„   rp   ra   ÚtargetÚosr  r$  ÚuuidÚuuid4)r$   Úfsra   r,   rm   r-   s   &&&, €r.   r   ÚWebHDFile.__init__±  sÃ   ø€ Ü‰Ò˜Ñ, VÒ,Ø—‘“ˆØ�:‰:�m TÓ*Ò2Ø�J‰J�} dÔ+Ø�:‰:�m TÓ*Ò2Ø�J‰J�} dÔ+Ø!Ÿ:™: m°SÓ9ˆÔØ—*‘*˜YÓ'ˆØ�:‰:�l EÓ*¨eÓ3ØŸ)™)ˆDŒKÜŸ™Ÿ™ W¬c´$·*²*³,Ó.?Ó@ˆDŽIñ 4r0   c                ó¾   € V P                   P                  P                  V P                  V P                  P                  4       RR/R7      pVP                  4        R# )z¤Write one part of a multi-block file upload

Parameters
==========
final: bool
    This is the last block, so should complete file, if
    self.autocommit is True.
úcontent-typeúapplication/octet-stream)rH   r¸   T)r5  r;   Úpostr¹   ÚbufferÚgetvaluer`   )r$   Úfinalrd   s   && r.   Ú_upload_chunkÚWebHDFile._upload_chunk¾  sR   € ð �g‰g�o‰o×"Ñ"Ø�M‰MØ—‘×%Ñ%Ó'Ø#Ð%?Ð@ð #ó 
ˆð
 	×ÑÔÙr0   c                óp  € V P                   P                  4       pRV P                  9   d   RRr2MRRr2RVR&   V P                  P                  ! W#V P
                  3RR	/VB pV P                  P                  VP                  R
,          4      pRV P                  9   d˜   V P                  P                  P                  VRR/R7      pVP                  4        V P                  P                  ! RRV P
                  3RR	/VB pV P                  P                  VP                  R
,          4      V n        R# R# )zCreate remote file/uploadÚaÚAPPENDÚPOSTÚCREATEÚPUTrû   Ú	overwriterb   Fr¶   Úwr8  r9  )r¸   N)r,   rT   rk   r5  rh   ra   rS   r¸   r;   rÌ   r`   r¹   )r$   r,   rE   rF   rd   r¹   rº   s   &      r.   Ú_initiate_uploadÚWebHDFile._initiate_uploadÏ  s  € à—‘×!Ñ!Ó#ˆØ�$—)‘)ÔØ! 6‘à! 5�Ø"(ˆF�;ÑØ�g‰g�mŠm˜B¨¯	©	ÑL¸EÐLÀVÑLˆØ—7‘7×'Ñ'¨¯©°JÕ(?Ó@ˆØ�$—)‘)Ôà—7‘7—?‘?×&Ñ&Ø >Ð3MÐ"Nð 'ó ˆDð ×!Ñ!Ô#à—7‘7—=’= ¨6°4·9±9ÑWÀuÐWÐPVÑWˆDØ ŸG™G×0Ñ0°·±¸jÕ1IÓJˆDŽMñ r0   c                óê  € \        V^ 4      p\        V P                  V4      pW8¼  g   WP                  8¼  d   R# V P                  P	                  RV P
                  WV,
          RR7      pVP                  4        RVP                  9   d^   VP                  R,          pV P                  P                  P                  V P                  P                  V4      4      pVP                  # VP                  # )r   r0   ÚOPENF)ra   Úoffsetrw   rb   r¶   )ÚmaxÚminrx   r5  rh   ra   r`   r¸   r;   r‘   rS   Úcontent)r$   ÚstartÚendrd   r¹   rº   s   &&&   r.   Ú_fetch_rangeÚWebHDFile._fetch_rangeã  s¹   € Ü�E˜1“ˆÜ�$—)‘)˜SÓ!ˆØŒ<˜5§I¡IÔ-ÙØ�g‰g�m‰mØ˜Ÿ™¨5¸u½Èuð ó 
ˆð 	×ÑÔØ˜Ÿ™Ô$Ø—{‘{ :Õ.ˆHØ—7‘7—?‘?×&Ñ& t§w¡w×';Ñ';¸HÓ'EÓFˆDØ—<‘<Ðà—;‘;Ðr0   c                óf   € V P                   P                  V P                  V P                  4       R # r2   )r5  rö   ra   r1  r3   s   &r.   ÚcommitÚWebHDFile.commitó  s   € Ø�‰�
‰
�4—9‘9˜dŸk™kÖ*r0   c                óP   € V P                   P                  V P                  4       R # r2   )r5  rþ   ra   r3   s   &r.   ÚdiscardÚWebHDFile.discardö  s   € Ø�‰�
‰
�4—9‘9Ör0   )r¹   ra   rp   r1  r  )r  r   r!  r"  r#  r   r>  rH  rR  rU  rX  r*  r+  r,  r-  s   @@r.   rr   rr   ®  s-   ù‡ € Ù,õAôò"Kò(ò +÷ò r0   rr   )Úloggingr2  r  r
  r%  r3  Ú
contextlibr   r   Úurllib.parser   r9   Úspecr   r   Úutilsr   r	   Ú	getLoggerrW   r   rr   r   r0   r.   Ú<module>r`     sZ   ðó Û 	Û Û Û Û Ý Ý Ý ã ç ;ß 3à	×	Ò	˜9Ó	%€ôVÐ ô VôrIÐ$ö Ir0   