Ë
    F^(h¨�  ã                   ó|  — d dl Z d dlZ d dlZd dl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
 d dlmZ d dlmZmZ ddlmZ ddlmZ ddlmZmZmZ dd	lmZmZ dd
lmZmZmZ  ej>                  d«      Z dgZ!dgZ"da#e jH                  Z$d„ Z%d„ Z&d)d„Z'ddœd„Z(d)d„Z)e
d„ «       Z*d„ Z+d„ Z, e-ed«      r ej\                  e,¬«       erd dl/Z/e/j`                  Z1n	 d dl/Z/ e2e/de3«      Z1dZ5dZ6d*d„Z7de8fd„Z9dedddfd„Z:g d¢Z; G d „ d!e«      Z<d"„ Z= G d#„ d$e>«      Z?d%d%e?dfd&„Z@ G d'„ d(e«      ZAy# e4$ r dZ/e3Z1Y ŒSw xY w)+é    N)Úcontextmanager)Ú	has_magic)ÚTYPE_CHECKINGÚIterableé   )ÚDEFAULT_CALLBACK)ÚFSTimeoutError)ÚLocalFileSystemÚmake_path_posixÚtrailing_sep)ÚAbstractBufferedFileÚAbstractFileSystem)Úglob_translateÚis_exceptionÚother_pathsz_[^_]c                  óB   — t         st        j                  «       a t         S )zAllocate or return a threading lock.

    The lock is allocated on first use to allow setting one lock per forked process.
    )Ú_lockÚ	threadingÚLock© ó    úI/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fsspec/asyn.pyÚget_lockr      s   € õ Ü—‘Ó ˆÜ€Lr   c                  ó,   — dt         d<   dt        d<   day)z­Reset the global lock.

    This should be called only on the init of a forked process to reset the lock to
    None, enabling the new forked process to get a new lock.
    Nr   )ÚiothreadÚloopr   r   r   r   Ú
reset_lockr   &   s   € ð „HˆQ�KØ„Dˆ�GØ�Er   c              ƒ   óê   K  — |r|nd }|�t        j                  ||¬«      }	 |ƒ d {  –—† |d<   | j                  «        y 7 Œ# t        $ r}||d<   Y d }~Œ&d }~ww xY w# | j                  «        w xY w­w)N©Útimeoutr   )ÚasyncioÚwait_forÚ	ExceptionÚset)ÚeventÚcoroÚresultr    Úexs        r   Ú_runnerr)   3   sk   è ø€ Ù ‰g d€GØÐÜ×Ñ ¨gÔ6ˆðØ—Jˆˆq‰	ð 	�	‰	�ð	 ùÜò ØˆˆqŽ	ûðûð 	�	‰	�üsI   ‚ A3£A ¨A©A °A3ÁA Á	AÁAÁA ÁAÁA ÁA0Á0A3r   c                ó  — |r|nd}| �| j                  «       rt        d«      ‚	 t        j                  j	                  «       }|| u rt        d«      ‚	  ||i |¤Ž}dg}t        j                  «       }t        j                  t        ||||«      | «       	 |j                  d«      rn|�|dz  }|dk  rt        ‚Œ%|d   }	t        |	t        j                  «      rt        |	‚t        |	t        «      r|	‚|	S # t
        $ r ‚ t        $ r Y Œµw xY w)zÕ
    Make loop run coroutine until it returns. Runs in other thread

    Examples
    --------
    >>> fsspec.asyn.sync(fsspec.asyn.get_loop(), func, *args,
                         timeout=timeout, **kwargs)
    NzLoop is not runningz)Calling sync() from within a running loopr   r   )Ú	is_closedÚRuntimeErrorr!   ÚeventsÚget_running_loopÚNotImplementedErrorr   ÚEventÚrun_coroutine_threadsafer)   Úwaitr	   Ú
isinstanceÚTimeoutErrorÚBaseException)
r   Úfuncr    ÚargsÚkwargsÚloop0r&   r'   r%   Úreturn_results
             r   Úsyncr;   ?   s!  € ñ !‰g d€Gð €|�t—~‘~Ô'ÜÐ0Ó1Ð1ðÜ—‘×/Ñ/Ó1ˆØ�D‰=Ü%Ð&QÓRÐRð ñ �Ð ˜Ñ €DØˆV€FÜ�O‰OÓ€EÜ×$Ñ$¤W¨U°D¸&À'Ó%JÈDÔQØ
à�:‰:�aŒ=ØØÐØ�q‰LˆGØ˜Š{Ü$Ð$ð ð ˜1‘I€MÜ�-¤×!5Ñ!5Ô6ä -Ð/Ü	�M¤=Ô	1ØÐàÐøô1 ò ØÜò Ùðús   ¥-C4 Ã4D	ÄD	c                 óF   ‡ ‡— t        j                  ‰ «      ˆ ˆfd„«       }|S )zµGiven a function, make so can be called in blocking contexts

    Leave obj=None if defining within a class. Pass the instance if attaching
    as an attribute of the instance.
    c                  óJ   •— ‰xs | d   }t        |j                  ‰g| ¢­i |¤ŽS ©Nr   )r;   r   )r7   r8   Úselfr6   Úobjs      €€r   Úwrapperzsync_wrapper.<locals>.wrappers   s+   ø€ àŠ~�d˜1‘gˆÜ�D—I‘I˜tÐ5 dÒ5¨fÑ5Ð5r   )Ú	functoolsÚwraps)r6   r@   rA   s   `` r   Úsync_wrapperrD   l   s'   ù€ ô ‡_�_�TÓô6ó ð6ð €Nr   c               #   ó0  K  — t        j                  «       } 	 t        j                  dk(  r7t	        t         d«      r't        j
                  t        j                  «       «       d –— t        j
                  | «       y # t        j
                  | «       w xY w­w)NÚntÚWindowsSelectorEventLoopPolicy)r!   Úget_event_loop_policyÚosÚnameÚhasattrÚset_event_loop_policyrG   )Úoriginal_policys    r   Ú_selector_policyrN   {   sd   è ø€ ä×3Ñ3Ó5€Oð7Ü�7‰7�dŠ?œw¤wÐ0PÔQÜ×)Ñ)¬'×*PÑ*PÓ*RÔSãä×%Ñ% oÕ6øŒ×%Ñ% oÕ6üs   ‚B˜AA< Á&BÁ<BÂBc                  óœ  — t         d   €›t        «       5  t         d   €vt        «       5  t        j                  «       t         d<   ddd«       t        j                  t         d   j                  d¬«      } d| _        | j                  «        | t        d<   ddd«       t         d   S t         d   S # 1 sw Y   ŒkxY w# 1 sw Y   t         d   S xY w)zdCreate or return the default fsspec IO loop

    The loop will be running on a separate thread.
    r   NÚfsspecIO)ÚtargetrJ   T)r   r   rN   r!   Únew_event_loopr   ÚThreadÚrun_foreverÚdaemonÚstartr   )Úths    r   Úget_looprX   ‡   s­   € ô
 ˆA�w€Ü‹Zñ 		!ô �A‰wˆÜ%Ó'ñ 7Ü%×4Ñ4Ó6”D˜‘G÷7ä×%Ñ%¬T°!©W×-@Ñ-@ÀzÔR�Ø �”	Ø—‘”
Ø ”˜‘÷		!ô �‰7€NŒ4�‰7€N÷7ð 7ú÷			!ô �‰7€Nús#   ”B:¨B.ÁAB:Â.B7	Â3B:Â:Cc                  ó,   — d t         d<   d t        d<   d ay r>   )r   r   Úlockr   r   r   Úreset_after_forkr[   š   s   € à„Dˆ�GØ„HˆQ�KØ�Dr   Úregister_at_fork)Úafter_in_childÚerroré€   i   Fc                 ó  — ddl m} | r	d|v r|d   S d|v r|d   S | rt        S t        €t        S 	 t        j
                  t        j                  «      \  }}|t        j                  k(  ry|dz  S # t        t        t        f$ r	 t        cY S w xY w)Nr   )ÚconfÚnofiles_gather_batch_sizeÚgather_batch_sizeéÿÿÿÿé   )Úfsspec.configra   Ú_NOFILES_DEFAULT_BATCH_SIZEÚresourceÚ_DEFAULT_BATCH_SIZEÚ	getrlimitÚRLIMIT_NOFILEÚImportErrorÚ
ValueErrorÚResourceErrorÚRLIM_INFINITY)Únofilesra   Ú
soft_limitÚ_s       r   Ú_get_batch_sizers   ·   sŸ   € Ý"áØ&¨$Ñ.ØÐ3Ñ4Ð4à $Ñ&ØÐ+Ñ,Ð,ÙÜ*Ð*ÜÐÜ"Ð"ð#Ü ×*Ñ*¬8×+AÑ+AÓB‰ˆ
�Að ”X×+Ñ+Ò+Øà˜Q‰Ðøô œ¤]Ð3ò #Ü"Ò"ð#ús   °&A/ Á/BÂBÚreturnc                  óL   — 	 t        j                  «        y# t        $ r Y yw xY w)z Being executed by an event loop?TF)r!   r.   r,   r   r   r   Úrunning_asyncrv   Ð   s(   € ðÜ× Ñ Ô"ØøÜò Ùðús   ‚ —	#¢#c              ƒ   ó6  ‡‡‡K  — |€t        |¬«      }|dk(  rt        | «      }|dkD  sJ ‚ˆˆˆfd„}d}t        | «      }dg|z  }	t        «       }
|
s||k  r½t        |
«      |k  rL||k  rG|
j                  t	        j
                   || |   |«      «      «       |dz  }t        |
«      |k  r||k  rŒG|
s	 |	S t	        j                  |
t        j                  ¬«      ƒ d{  –—† \  }}
|r#|j                  «       ƒ d{  –—† \  }}||	|<   |rŒ#|
rŒ·||k  rŒ½|	S 7 Œ77 Œ­w)aS  Run the given coroutines in  chunks.

    Parameters
    ----------
    coros: list of coroutines to run
    batch_size: int or None
        Number of coroutines to submit/wait on simultaneously.
        If -1, then it will not be any throttling. If
        None, it will be inferred from _get_batch_size()
    callback: fsspec.callbacks.Callback instance
        Gets a relative_update when each coroutine completes
    timeout: number or None
        If given, each coroutine times out after this time. Note that, since
        there are multiple batches, the total run time of this function will in
        general be longer
    return_exceptions: bool
        Same meaning as in asyncio.gather
    nofiles: bool
        If inferring the batch_size, does this operation involve local files?
        If yes, you normally expect smaller batches.
    N)rp   rd   r   c              “   óþ   •K  — 	 t        j                  | ‰¬«      ƒ d {  –—† |f‰j                  d«       S 7 Œ# t        $ r"}‰s‚ ||fcY d }~‰j                  d«       S d }~ww xY w# ‰j                  d«       w xY w­w)Nr   r   )r!   r"   Úrelative_updater#   )r&   ÚiÚeÚcallbackÚreturn_exceptionsr    s      €€€r   Ú	_run_coroz'_run_coros_in_chunks.<locals>._run_coroÿ   sw   øè ø€ ð	(Ü ×)Ñ)¨$¸Ô@×@À!ÐCð ×$Ñ$ QÕ'ð AùÜò 	Ù$ØØ�a�4ŒKà×$Ñ$ QÕ'ûð	ûð
 ×$Ñ$ QÕ'üsO   ƒA=…9 Ÿ7 9 ¥A=·9 ¹	A$ÁAÁA$Á	A' ÁA=ÁA$Á$A' Á'A:Á:A=r   )Úreturn_when)	rs   Úlenr$   Úaddr!   Úensure_futurer2   ÚFIRST_COMPLETEDÚpop)ÚcorosÚ
batch_sizer|   r    r}   rp   r~   rz   ÚnÚresultsÚpendingÚdoner'   Úks     ```         r   Ú_run_coros_in_chunksrŒ   Ù   s$  úè ø€ ð< ÐÜ$¨WÔ5ˆ
à�RÒÜ˜“Zˆ
à˜Š>Ðˆ>ö(ð 	
€AÜˆE‹
€AØˆf�q‰j€GÜ‹e€Gá
�Q˜’UÜ�'‹l˜ZÒ'¨A°ªEØ�K‰Kœ×-Ñ-©i¸¸a¹À!Ó.DÓEÔFØ�‰FˆAô �'‹l˜ZÒ'¨A°«Eñ Øð €Nô &Ÿl™l¨7Ä×@WÑ@WÔX×X‰ˆˆgÙØ"Ÿh™h›j×(‰IˆF�AØˆG�A‰Jò ò �Q˜“Uð €Nð Yøà(ús<   …B*DÂ0-DÃDÃDÃ:DÃ;DÄ
DÄDÄDÄD)Ú_lsÚ	_cat_fileÚ	_get_fileÚ	_put_fileÚ_rm_fileÚ_cp_fileÚ
_pipe_fileÚ_expand_pathÚ_infoÚ_isfileÚ_isdirÚ_existsÚ_walkÚ_globÚ_findÚ_duÚ_sizeÚ_mkdirÚ	_makedirsc                   óB  ‡ — e Zd ZdZdZdZdZddddœˆ fd„
Zed„ «       Z	d„ Z
d&d	„Zd
„ Zd„ Z	 	 	 	 d'd„Zd(d„Zd)d„Zd„ Zd)d„Z	 d*d„Z	 	 	 d+d„Zd(d„Zdeddfd„Zd„ Zdedfd„Zd„ Zd„ Zd„ Zd,d„Zd„ Zd„ Zd-d„Z d.d„Z!d,d„Z"d/d „Z#d0d!„Z$d&d"„Z%d-d#„Z&d1d$„Z'd2d%„Z(ˆ xZ)S )3ÚAsyncFileSystemak  Async file operations, default implementations

    Passes bulk operations to asyncio.gather for concurrent operation.

    Implementations that have concurrent batch operations and/or async methods
    should inherit from this class instead of AbstractFileSystem. Docstrings are
    copied from the un-underscored method in AbstractFileSystem, if not given.
    TFN)Úasynchronousr   r†   c                ó¬   •— || _         t        j                  «       | _        |s|xs
 t	        «       | _        nd | _        || _        t        ‰| �   |i |¤Ž y ©N)	r¢   rI   ÚgetpidÚ_pidrX   Ú_loopr†   ÚsuperÚ__init__)r?   r¢   r   r†   r7   r8   Ú	__class__s         €r   r©   zAsyncFileSystem.__init__G  sI   ø€ Ø(ˆÔÜ—I‘I“KˆŒ	ÙØÒ+¤£ˆD�JàˆDŒJØ$ˆŒÜ‰Ñ˜$Ð) &Ó)r   c                 ór   — | j                   t        j                  «       k7  rt        d«      ‚| j                  S )NzThis class is not fork-safe)r¦   rI   r¥   r,   r§   ©r?   s    r   r   zAsyncFileSystem.loopQ  s*   € à�9‰9œŸ	™	›Ò#ÜÐ<Ó=Ð=Ø�z‰zÐr   c              ‹   ó   K  — t         ‚­wr¤   ©r/   ©r?   Úpathr8   s      r   r‘   zAsyncFileSystem._rm_fileW  ó   è ø€ Ü!Ð!ùó   ‚	c           
   ‹   óî   K  — |xs | j                   }| j                  ||¬«      ƒ d {  –—† }t        t        |«      D �cg c]  } | j                  |fi |¤Ž‘Œ c}|d¬«      ƒ d {  –—† S 7 ŒBc c}w 7 Œ­w)N©Ú	recursiveT©r†   rp   )r†   r”   rŒ   Úreversedr‘   )r?   r°   rµ   r†   r8   Úps         r   Ú_rmzAsyncFileSystem._rmZ  st   è ø€ àÒ2 4§?¡?ˆ
Ø×&Ñ& t°yÐ&ÓA×AˆÜ)Ü19¸$³Ö@¨Aˆ]ˆT�]‰]˜1Ñ' Ó'Ò@Ø!Øô
÷ 
ð 	
ð Búâ@ð
ús-   ‚'A5©A,ªA5Á A.ÁA5Á'A3Á(A5Á.A5c              ‹   ó   K  — t         ‚­wr¤   r®   )r?   Úpath1Úpath2r8   s       r   r’   zAsyncFileSystem._cp_filed  r±   r²   c              ƒ   óz   K  — | j                  ||«      ƒ d {  –—†  | j                  |«      ƒ d {  –—†  y 7 Œ7 Œ­wr¤   )r’   r‘   )r?   r»   r¼   s      r   Ú_mv_filezAsyncFileSystem._mv_fileg  s5   è ø€ Ø�m‰m˜E 5Ó)×)Ð)Ø�m‰m˜EÓ"×"Ñ"ð 	*øØ"ús   ‚;˜7™;±9²;¹;c           	   ‹   ó‚  K  — |€|rd}n|€d}t        |t        «      rt        |t        «      r|}|}	nót        |t        «      }
| j                  |||¬«      ƒ d {  –—† }|
r<|r|�8|D �cg c]*  }t	        |«      rŒ| j                  |«      ƒ d {  –—† rŒ)|‘Œ, }}|sy t        |«      dk(  }t        |t        «      xr& t	        |«      xs | j                  |«      ƒ d {  –—† }|
xr/ t        |«      xr |xs t        |«       xr |xr t	        |«       }t        ||||
 ¬«      }	|xs | j                  }t        ||	«      D ��cg c]  \  }} | j                  ||fi |¤Ž‘Œ }}}t        ||dd¬«      ƒ d {  –—† }t        t        |«      D ]  }|dk(  rt        |t        «      rŒ|‚ y 7 �ŒP7 �Œc c}w 7 ŒÖc c}}w 7 ŒD­w)NÚignoreÚraise)Úmaxdepthrµ   r   ©ÚexistsÚflattenT)r†   r}   rp   )r3   ÚlistÚstrr”   r   r—   r€   r   r   r†   Úzipr’   rŒ   Úfilterr   ÚFileNotFoundError)r?   r»   r¼   rµ   Úon_errorrÂ   r†   r8   Úpaths1Úpaths2Úsource_is_strr¸   Úsource_is_fileÚdest_is_dirrÄ   Úp1Úp2r…   r'   r(   s                       r   Ú_copyzAsyncFileSystem._copyk  sö  è ø€ ð Ð¡	Ø‰HØÐØˆHä�eœTÔ"¤z°%¼Ô'>ð ˆFØ‰Fä& u¬cÓ2ˆMØ×,Ñ,Ø °Ið -ó ÷ ˆFñ ¡i°8Ð3Gð  &öØ¬l¸1­oÀtÇ{Á{ÐSTÃ~×AUÑAU’Að�ð ñ Øä  ›[¨AÑ-ˆNÜ$ U¬CÓ0ò Ü˜UÓ#Ò?¨T¯[©[¸Ó-?×'?ð ð #ò Ü˜5Ó!Ò4 nò VÜ! %Ó(Ð(ÒT¨[ÒTÄÈeÓATÐ=Tð ô !ØØØØ)Ð)ô	ˆFð  Ò2 4§?¡?ˆ
Ü?BÀ6È6Ó?R×S±V°R¸��—‘˜r 2Ñ0¨Ó0ÐSˆÑSÜ+Ø˜j¸DÈ$ô
÷ 
ˆô œ vÓ.ò 	ˆBØ˜8Ò#¬
°2Ô7HÔ(IØØˆHñ	ðCùð BVûòð (@úó Tð
úsn   ‚AF?ÁF*ÁF?Á)F0Á:F0ÂF-
ÂF0ÂF0ÂAF?ÃF5ÃA&F?ÅF7Å#F?Å8F=Å92F?Æ-F0Æ0F?Æ7F?c              ‹   ó   K  — t         ‚­wr¤   r®   )r?   r°   ÚvalueÚmoder8   s        r   r“   zAsyncFileSystem._pipe_file§  r±   r²   c              ‹   óô   K  — t        |t        «      r||i}|xs | j                  }t        |j	                  «       D ��cg c]  \  }} | j
                  ||fi |¤Ž‘Œ c}}|d¬«      ƒ d {  –—† S c c}}w 7 Œ
­w)NTr¶   )r3   rÇ   r†   rŒ   Úitemsr“   )r?   r°   rÕ   r†   r8   r‹   Úvs          r   Ú_pipezAsyncFileSystem._pipeª  sq   è ø€ Ü�dœCÔ Ø˜%�=ˆDØÒ2 4§?¡?ˆ
Ü)Ø9=¿¹»×F±°°Aˆ_ˆT�_‰_˜Q Ñ, VÓ,ÓFØ!Øô
÷ 
ð 	
ùÛFð
ús   ‚=A8¿A0
ÁA8Á+A6Á,A8c              ƒ   óH  K  — d}d}|�5|dk  r0|€| }d}d}n*|xs | j                  |«      ƒ d{  –—† d   }||z   }n|€d}|sR|�-|dk  r(|�*|xs | j                  |«      ƒ d{  –—† d   }||z   }n|€d}t        |t        j                  «      r|dz  }d|› d	|› �S 7 Œm7 Œ:­w)
z"Helper for "Range"-based _cat_fileNFr   Ú TÚsizer   zbytes=ú-)r•   r3   ÚnumbersÚIntegral)r?   ÚurlrV   ÚendrÝ   Úsuffs         r   Ú_process_limitszAsyncFileSystem._process_limits´  s×   è ø€ àˆØˆØÐ ¨¢àˆ{Ø�f�Ø�Ø‘àÒ> d§j¡j°£o× 5°vÑ>�Ø˜u™‘Øˆ]ØˆEÙØˆ 3¨¢7ØÐ$ØÒB¨$¯*©*°S«/×$9¸6Ñ#B�DØ ™*‘CØ�Ø�Ü˜#œw×/Ñ/Ô0Ø�q‘�Ø˜�w˜a ˜uÐ%Ð%ð !6øð %:ús!   ‚.B"°B±4B"Á%B Á&9B"Â B"c              ‹   ó   K  — t         ‚­wr¤   r®   )r?   r°   rV   râ   r8   s        r   rŽ   zAsyncFileSystem._cat_fileÎ  r±   r²   c              ‹   ó  K  — | j                  ||¬«      ƒ d {  –—† }|D �cg c]  } | j                  |fi |¤Ž‘Œ }}|xs | j                  }t        ||dd¬«      ƒ d {  –—† }|dk(  rt	        t        t        |«      d«      }	|	r|	‚t        |«      dkD  s't        t        «      s|d   | j                  |«      k7  r0t        ||«      D �
�ci c]  \  }
}|dk7  st        |«      s|
|“Œ c}}
S |d   S 7 ŒØc c}w 7 Œ˜c c}}
w ­w)	Nr´   T©r†   rp   r}   rÁ   Fr   r   Úomit)r”   rŽ   r†   rŒ   ÚnextrÉ   r   r€   r3   rÆ   Ú_strip_protocolrÈ   )r?   r°   rµ   rË   r†   r8   Úpathsr…   Úoutr(   r‹   rÙ   s               r   Ú_catzAsyncFileSystem._catÑ  s  è ø€ ð ×'Ñ'¨¸	Ð'ÓB×BˆØ<AÖB°D��—‘ Ñ/¨Ó/ÐBˆÐBØÒ2 4§?¡?ˆ
Ü(Ø˜j°$È$ô
÷ 
ˆð �wÒÜ”fœ\¨3Ó/°Ó7ˆBÙØ�ä�‹J˜ŠNÜ˜$¤Ô%Ø�Q‰x˜4×/Ñ/°Ó5Ò5ô    s›O÷á�A�qØ˜vÒ%¬\¸!¬_ð �1‘óð ð �q‘6ˆMð+ CúÚBð
úóùs>   ‚D™C2šD¢C4¼$DÁ C9Á!A+DÃC;Ã)
DÃ4DÃ;Dc              ‹   óö  K  — |�t         ‚t        |t        «      st        ‚t        |t        «      s|gt        |«      z  }t        |t        «      s|gt        |«      z  }t        |«      t        |«      k7  st        |«      t        |«      k7  rt        ‚t        |||«      D ��	�
cg c]  \  }}	}
 | j                  |f|	|
dœ|¤Ž‘Œ }}	}}
|xs | j                  }t        ||dd¬«      ƒ d{  –—† S c c}
}	}w 7 Œ­w)aY  Get the contents of byte ranges from one or more files

        Parameters
        ----------
        paths: list
            A list of of filepaths on this filesystems
        starts, ends: int or list
            Bytes limits of the read. If using a single int, the same value will be
            used to read all the specified files.
        N)rV   râ   Trç   )r/   r3   rÆ   Ú	TypeErrorr   r€   rm   rÈ   rŽ   r†   rŒ   )r?   rë   ÚstartsÚendsÚmax_gapr†   rË   r8   r¸   Úsr{   r…   s               r   Ú_cat_rangeszAsyncFileSystem._cat_rangesë  sû   è ø€ ð* Ðä%Ð%Ü˜%¤Ô&ÜˆOÜ˜&¤(Ô+Ø�X¤ E£
Ñ*ˆFÜ˜$¤Ô)Ø�6œC ›JÑ&ˆDÜˆv‹;œ#˜e›*Ò$¬¨D«	´S¸³ZÒ(?ÜÐô ˜u f¨dÓ3÷
ð 
á��1�að ˆD�N‰N˜1Ð7 A¨1Ñ7°Ó7ð
ˆò 
ð  Ò2 4§?¡?ˆ
Ü)Ø˜j°$È$ô
÷ 
ð 	
ùô
ð

ús   ‚B"C9Â$!C0Ã&C9Ã+C7Ã,C9c              ‹   ó   K  — t         ‚­wr¤   r®   )r?   ÚlpathÚrpathrÖ   r8   s        r   r�   zAsyncFileSystem._put_file  r±   r²   c           	   ‹   ó  K  — t        |t        «      rt        |t        «      r|}|}	�nt        |t        «      }
|
rt        |«      }t	        «       }|j                  |||¬«      }	|
r4|r|�0|	D �cg c]"  }t        |«      rŒ|j                  |«      rŒ!|‘Œ$ }	}|	syt        |	«      dk(  }t        |t        «      xr& t        |«      xs | j                  |«      ƒ d{  –—† }| j                  |«      }|
xr/ t        |«      xr |xs t        |«       xr |xr t        |«       }t        |	|||
 ¬«      }|	D �ci c]"  }|t        j                  j                  |«      “Œ$ }}t        |	|«      D ��cg c]  \  }}||   sŒ|‘Œ }}}t        |	|«      D ��cg c]  \  }}||   rŒ||f‘Œ }}}t!        j"                  |D �cg c]  }| j%                  |d¬«      ‘Œ c}Ž ƒ d{  –—†  |xs | j&                  }g }|j)                  t        |«      «       |D ]9  \  }}|j+                  | j,                  «      }|j/                   |||fi |¤Ž«       Œ; t1        |||¬«      ƒ d{  –—† S c c}w 7 �ŒŽc c}w c c}}w c c}}w c c}w 7 Œ¢7 Œ$­w)aÆ  Copy file(s) from local.

        Copies a specific file or tree of files (if recursive=True). If rpath
        ends with a "/", it will be assumed to be a directory, and target files
        will go within.

        The put_file method will be called concurrently on a batch of files. The
        batch_size option can configure the amount of futures that can be executed
        at the same time. If it is -1, then all the files will be uploaded concurrently.
        The default can be set for this instance by passing "batch_size" in the
        constructor, or for all instances by setting the "gather_batch_size" key
        in ``fsspec.config.conf``, falling back to 1/8th of the system limit .
        ©rµ   rÂ   Nr   rÃ   T©Úexist_ok©r†   r|   )r3   rÆ   rÇ   r   r
   Úexpand_pathr   Úisdirr€   r—   rê   r   r   rI   r°   rÈ   r!   ÚgatherrŸ   r†   Úset_sizeÚbranch_coror�   ÚappendrŒ   )r?   rö   r÷   rµ   r|   r†   rÂ   r8   ÚrpathsÚlpathsrÎ   Úfsr¸   rÏ   rÐ   rÄ   ÚlÚis_dirÚrÚrdirsÚ
file_pairsÚdr…   ÚlfileÚrfileÚput_files                             r   Ú_putzAsyncFileSystem._put  su  è ø€ ô. �eœTÔ"¤z°%¼Ô'>ð ˆFØŠFä& u¬cÓ2ˆMÙÜ'¨Ó.�Ü Ó"ˆBØ—^‘^ E°YÈ�^ÓRˆFÙ¡i°8Ð3Gà%+ÖT ´LÀµOÀrÇxÁxÐPQÅ{š!ÐT�ÐTÙØä  ›[¨AÑ-ˆNÜ$ U¬CÓ0ò Ü˜UÓ#Ò?¨T¯[©[¸Ó-?×'?ð ð ×(Ñ(¨Ó/ˆEØ"ò Ü˜5Ó!Ò4 nò VÜ! %Ó(Ð(ÒT¨[ÒTÄÈeÓATÐ=Tð ô !ØØØØ)Ð)ô	ˆFð 06Ö6¨!�!”R—W‘W—]‘] 1Ó%Ñ%Ð6ˆÐ6Ü" 6¨6Ó2×@‘t�q˜!°f¸Q³i’Ð@ˆÑ@Ü),¨V°VÓ)<×N¡  AÀFÈ1ÃI�q˜!’fÐNˆ
ÑNä�n‰nÈÖOÀA˜tŸ~™~¨a¸$˜~Õ?ÒOÐP×PÐPØÒ2 4§?¡?ˆ
àˆØ×Ñœ#˜j›/Ô*Ø&ò 	;‰LˆE�5Ø×+Ñ+¨D¯N©NÓ;ˆHØ�L‰L™ %¨Ñ9°&Ñ9Õ:ð	;ô *Ø˜j°8ô
÷ 
ð 	
ùòE Uð (@ûò 7ùÛ@ùÛNùâOÐPøð
ús�   ‚A,JÁ.I$Á?I$ÂI$ÂAJÃI)ÃAJÄ8'I,ÅJÅ0I1Å>I1ÆJÆI7Æ"I7Æ(JÆ>I=ÇJÇJÇ A?JÉJÉ 
JÉ,JÊJc              ‹   ó   K  — t         ‚­wr¤   r®   )r?   r÷   rö   r8   s       r   r�   zAsyncFileSystem._get_filea  r±   r²   c              ‹   óT  K  — t        |t        «      rt        |t        «      r|}|}�nt        |t        «      }	|	xr t        |«       }
| j	                  |«      }| j                  |||¬«      ƒ d{  –—† }|	r<|r|�8|D �cg c]*  }t        |«      rŒ| j                  |«      ƒ d{  –—† rŒ)|‘Œ, }}|syt        |«      }t        |«      dk(  }t        |t        «      xr& t        |«      xs t        «       j                  |«      }|	xr% t        |«      xr |xs t        |«       xr |xr |
}t        ||||	 ¬«      }|D �cg c]6  }t        j                  t        j                  j!                  |«      d¬«      ‘Œ8 c} |j#                  d| j$                  «      }g }|j'                  t        |«      «       t)        ||«      D ]9  \  }}|j+                  | j,                  «      }|j/                   |||fi |¤Ž«       Œ; t1        |||¬«      ƒ d{  –—† S 7 �Œ¥7 �Œtc c}w c c}w 7 Œ­w)	a  Copy file(s) to local.

        Copies a specific file or tree of files (if recursive=True). If lpath
        ends with a "/", it will be assumed to be a directory, and target files
        will go within. Can submit a list of paths, which may be glob-patterns
        and will be expanded.

        The get_file method will be called concurrently on a batch of files. The
        batch_size option can configure the amount of futures that can be executed
        at the same time. If it is -1, then all the files will be uploaded concurrently.
        The default can be set for this instance by passing "batch_size" in the
        constructor, or for all instances by setting the "gather_batch_size" key
        in ``fsspec.config.conf``, falling back to 1/8th of the system limit .
        rù   Nr   rÃ   Trú   r†   rü   )r3   rÆ   rÇ   r   rê   r”   r—   r   r€   r
   rþ   r   r   rI   Úmakedirsr°   Údirnamer„   r†   r   rÈ   r  r�   r  rŒ   )r?   r÷   rö   rµ   r|   rÂ   r8   r  r  rÎ   Úsource_not_trailing_sepr¸   rÏ   rÐ   rÄ   Úlpr†   r…   Úget_files                      r   Ú_getzAsyncFileSystem._getd  s,  è ø€ ô. �eœTÔ"¤z°%¼Ô'>ð ˆFØŠFä& u¬cÓ2ˆMà&3Ò&O¼LÈÓ<OÐ8OÐ#Ø×(Ñ(¨Ó/ˆEØ×,Ñ,Ø °Xð -ó ÷ ˆFñ ¡i°8Ð3Gð  &öØ¬l¸1­oÀtÇ{Á{ÐSTÃ~×AUÑAU’Að�ð ñ Øä# EÓ*ˆEÜ  ›[¨AÑ-ˆNÜ$ U¬CÓ0ò Ü˜UÓ#ÒE¤Ó'8×'>Ñ'>¸uÓ'Eð ð #ò Ü˜5Ó!Ò4 nò VÜ! %Ó(Ð(ÒT¨[ÒTÐ=Tð ô !ØØØØ)Ð)ô	ˆFð DJÖJ¸RŒ�‰”R—W‘W—_‘_ RÓ(°4Ö	8ÓJØ—Z‘Z ¨d¯o©oÓ>ˆ
àˆØ×Ñœ#˜f›+Ô&Ü ¨Ó/ò 	;‰LˆE�5Ø×+Ñ+¨D¯N©NÓ;ˆHØ�L‰L™ %¨Ñ9°&Ñ9Õ:ð	;ô *Ø˜j°8ô
÷ 
ð 	
ðIùð BVûòùò. 	Kð
ús\   ‚A/H(Á1HÁ2H(Â HÂHÂ%H
Â&HÂ+HÂ/BH(Å;H!Å=BH(ÈH&ÈH(ÈHÈH(c              ƒ   ó\   K  — 	 | j                  |«      ƒ d {  –—† d   dk(  S 7 Œ
#  Y yxY w­w)NÚtypeÚfileF)r•   ©r?   r°   s     r   r–   zAsyncFileSystem._isfile­  s3   è ø€ ð	ØŸ*™* TÓ*×*¨FÑ3°vÑ=Ð=Ð*ùð	Ùüs    ‚,„% ˜#™	% ¢,£% ¥)§,c              ƒ   ól   K  — 	 | j                  |«      ƒ d {  –—† d   dk(  S 7 Œ
# t        $ r Y yw xY w­w)Nr  Ú	directoryF)r•   ÚOSErrorr  s     r   r—   zAsyncFileSystem._isdir³  s;   è ø€ ð	ØŸ*™* TÓ*×*¨FÑ3°{ÑBÐBÐ*ùÜò 	Ùð	üs(   ‚4„% ˜#™	% ¢4£% ¥	1®4°1±4c              ƒ   ó`   K  — | j                  |«      ƒ d {  –—† j                  dd «      S 7 Œ­w)NrÝ   )r•   Úgetr  s     r   r�   zAsyncFileSystem._size¹  s(   è ø€ Ø—j‘j Ó&×&×+Ñ+¨F°DÓ9Ð9Ð&ús   ‚.—,˜.c              ƒ   óœ   K  — |xs | j                   }t        |D �cg c]  }| j                  |«      ‘Œ c}|¬«      ƒ d {  –—† S c c}w 7 Œ	­w)N)r†   )r†   rŒ   r�   )r?   rë   r†   r¸   s       r   Ú_sizeszAsyncFileSystem._sizes¼  sF   è ø€ ØÒ2 4§?¡?ˆ
Ü)Ø$)Ö*˜qˆT�Z‰Z˜�]Ò*°zô
÷ 
ð 	
ùÚ*ð
ús   ‚AœA´AÁ A
Á
Ac              ‹   óf   K  — 	  | j                   |fi |¤Žƒ d {  –—†  y7 Œ# t        $ r Y yw xY w­w)NTF)r•   rÊ   r¯   s      r   r˜   zAsyncFileSystem._existsÂ  s=   è ø€ ð	Ø�$—*‘*˜TÑ, VÑ,×,Ð,Øð -ùä ò 	Ùð	üs(   ‚1„" š ›" Ÿ1 " ¢	.«1­.®1c              ‹   ó   K  — t         ‚­wr¤   r®   r¯   s      r   r•   zAsyncFileSystem._infoÉ  r±   r²   c              ‹   ó   K  — t         ‚­wr¤   r®   )r?   r°   Údetailr8   s       r   r�   zAsyncFileSystem._lsÌ  r±   r²   c                óÊ  K  — |�|dk  rt        d«      ‚| j                  |«      }i }i }i }|j                  dd«      }	  | j                  |fddi|¤Žƒ d {  –—† }	|	D ]S  }|d   j                  d«      }|j                  dd«      d	   }|d
   dk(  r||k7  r|||<   |||<   ŒD||k(  r||d<   ŒO|||<   ŒU |r	|||f­–— n|t        |«      t        |«      f­–— |�|dz  }|dk  ry |D ])  } | j                  ||   f||dœ|¤Ž2 3 d {  –—† }|­–— Œ y 7 Œ½# t        t
        f$ r6}
|dk(  r‚ t        |«      r ||
«       |r	|i i f­–— n|g g f­–— Y d }
~
y d }
~
ww xY w7 ŒV6 Œ{­w)Nr   úmaxdepth must be at least 1r&  FTrÁ   rJ   ú/rd   r  r  rÜ   )rÂ   r&  )rm   rê   r„   r�   rÊ   r  ÚcallableÚrstripÚrsplitrÆ   r™   )r?   r°   rÂ   rË   r8   Ú	full_dirsÚdirsÚfilesr&  Úlistingr{   ÚinfoÚpathnamerJ   r  rr   s                   r   r™   zAsyncFileSystem._walkÏ  sÓ  è ø€ ØÐ H¨q¢LÜÐ:Ó;Ð;à×#Ñ# DÓ)ˆØˆ	ØˆØˆà—‘˜H eÓ,ˆð	Ø$˜DŸH™H TÑA°$ÐA¸&ÑA×AˆGð ò 	#ˆDð ˜F‘|×*Ñ*¨3Ó/ˆHØ—?‘? 3¨Ó*¨2Ñ.ˆDØ�F‰|˜{Ò*¨x¸4Ò/?à"*�	˜$‘Ø!��T’
Ø˜TÒ!à ��b’	à"��d’ð	#ñ Ø˜˜eÐ#Ô#àœ˜T›
¤D¨£KÐ/Ó/àÐØ˜‰MˆHØ˜!Š|Øàò 	ˆAØ%˜4Ÿ:™:Ø˜!‘ðØ'/¸ñØBHñ÷ ð �að ”ñ		ðK BùÜ!¤7Ð+ò 		Ø˜7Ò"ØÜ˜(Ô#Ù˜”ÙØ˜B �lÔ"à˜B �lÓ"Üûð		úðJøñ ùse   ‚<E#¿D ÁDÁD ÁB(E#ÄE!ÄEÄ	E!Ä	E#ÄD ÄEÄ&,EÅE#ÅEÅE#ÅE!Å!E#c              ‹   ó  K  — |�|dk  rt        d«      ‚dd l}t        j                  j                  r4t        j                  j
                  t        j                  j                  fnt        j                  j
                  f}|j                  |«      }| j                  |«      }|xs! |j                  t        d„ |D «       «      «      }|j                  d«      dk\  r|j                  d«      n
t        |«      }|j                  d«      dk\  r|j                  d«      n
t        |«      }	|j                  d«      dk\  r|j                  d«      n
t        |«      }
t        ||	|
«      }|j                  dd	«      }t        |«      sC | j                  |fi |¤Žƒ d {  –—† r"|s|gS | | j                  |fi |¤Žƒ d {  –—† iS |sg S i S d
|d | v r7|d | j!                  d
«      }|d |dz    }||dz   d  j#                  d
«      dz   }nd}||dz   d  j#                  d
«      dz   }d|v r5|�1|j                  d«      }||d  j#                  d
«      dz   }||z
  |z   }nd } | j$                  |f|dddœ|¤Žƒ d {  –—† }t'        ||rd
ndz   «      } |j(                  |«      }t+        |j-                  «       «      D ��ci c](  \  }}|j/                  |r|d   dk(  r|d
z   n|«      r||“Œ* }}}|r|S t1        |«      S 7 �Œ^7 �Œ@7 Œ‰c c}}w ­w)Nr   r(  r   c              3   ó&   K  — | ]	  }|d z   –— Œ y­w)ú**Nr   )Ú.0Úseps     r   ú	<genexpr>z(AsyncFileSystem._glob.<locals>.<genexpr>  s   è ø€ Ò- �#˜•*Ñ-ùs   ‚Ú*ú?ú[r&  Fr)  rÜ   r5  T)rÂ   Úwithdirsr&  r  r  )rm   ÚrerI   r°   Úaltsepr7  Úendswithrê   ÚtupleÚfindr€   Úminr„   r   r˜   r•   ÚrindexÚcountr›   r   ÚcompileÚsortedrØ   ÚmatchrÆ   )r?   r°   rÂ   r8   r=  ÚsepsÚends_with_sepÚappend_slash_to_dirnameÚidx_starÚ	idx_qmarkÚ	idx_braceÚmin_idxr&  ÚrootÚdepthÚidx_double_starsÚdepth_double_starsÚallpathsÚpatternr¸   r1  rì   s                         r   rš   zAsyncFileSystem._glob  s  è ø€ ØÐ H¨q¢LÜÐ:Ó;Ð;ãä02·±·²”—‘—‘œRŸW™WŸ^™^Ñ,ÄRÇWÁWÇ[Á[ÀNˆØŸ™ dÓ+ˆØ×#Ñ# DÓ)ˆØ"/ò #
°4·=±=ÜÑ-¨Ô-Ó-ó4
Ðð &*§Y¡Y¨s£^°qÒ%8�4—9‘9˜S”>¼cÀ$»iˆØ&*§i¡i°£n¸Ò&9�D—I‘I˜c”N¼sÀ4»yˆ	Ø&*§i¡i°£n¸Ò&9�D—I‘I˜c”N¼sÀ4»yˆ	ä�h 	¨9Ó5ˆà—‘˜H eÓ,ˆä˜ŒØ!�T—\‘\ $Ñ1¨&Ñ1×1Ð1ÙØ ˜6�Mà ¨
¨¯
©
°4Ñ(B¸6Ñ(B×"BÐCÐCáØ�Ià�IØ�D˜˜'�NÑ"Ø˜8˜G�n×+Ñ+¨CÓ0ˆGØ˜˜' A™+Ð&ˆDØ˜ 1™˜Ð'×-Ñ-¨cÓ2°QÑ6‰EàˆDØ˜ 1™˜Ð'×-Ñ-¨cÓ2°QÑ6ˆEà�4‰<ØÐ#Ø#'§9¡9¨T£?Ð Ø%)Ð*:Ð*;Ð%<×%BÑ%BÀ3Ó%GÈ!Ñ%KÐ"ØÐ 2Ñ2°XÑ=‘à�à#˜Ÿ™Øð
Ø ¨4¸ñ
Ø@Fñ
÷ 
ˆô ! ±©À2Ñ!FÓGˆØ�"—*‘*˜WÓ%ˆô " (§.¡.Ó"2Ó3÷
á��4Ø�}‰}á*¨t°F©|¸{Ò/Jð �C’àôð ˆt‰Gð
ˆñ 
ñ ØˆJä˜“9Ðð] 2ùð #Cùð,
úó
ùsJ   ‚FLÆK7Æ LÆ:K:Æ;B8LÉ3K=É4ALÊ8-K?Ë%LË:LË=LË?Lc              ‹   óÜ   K  — i } | j                   |fd|i|¤Žƒ d {  –—† D ]&  }| j                  |«      ƒ d {  –—† }|d   ||d   <   Œ( |rt        |j                  «       «      S |S 7 ŒJ7 Œ0­w)NrÂ   rÝ   rJ   )r›   r•   ÚsumÚvalues)r?   r°   ÚtotalrÂ   r8   ÚsizesÚfr1  s           r   rœ   zAsyncFileSystem._duJ  sy   è ø€ Øˆà!�t—z‘z $ÑD°ÐD¸VÑD×Dò 	/ˆAØŸ™ A›×&ˆDØ"& v¡,ˆE�$�v‘,Òð	/ñ Ü�u—|‘|“~Ó&Ð&àˆLð EøØ&ús   ‚A,�A(žA,¹A*º/A,Á*A,c           	   ‹   óR  K  — | j                  |«      }i }|j                  dd«      }|r:|dk7  r5| j                  |«      ƒ d {  –—† r| j                  |«      ƒ d {  –—† ||<    | j                  ||fddi|¤Ž2 3 d {  –—† \  }}}	|r|	j                  |«       |j                  |	j                  «       D �
�ci c]  \  }
}|d   |“Œ c}}
«       ŒW7 Œ�7 Œv7 ŒVc c}}
w 6 |s| j                  |«      ƒ d {  –—†7  ri ||<   t        |«      }|s|S |D �
ci c]  }
|
||
   “Œ
 c}
S c c}
w ­w)Nr&  FrÜ   TrJ   )	rê   r„   r—   r•   r™   ÚupdaterØ   r–   rF  )r?   r°   rÂ   r<  r8   rì   r&  rr   r.  r/  rJ   r1  Únamess                r   r›   zAsyncFileSystem._findU  s/  è ø€ Ø×#Ñ# DÓ)ˆØˆØ—‘˜H eÓ,ˆñ ˜ š
¨T¯[©[¸Ó->×'>Ð'>Ø"Ÿj™j¨Ó.×.ˆC�‰Ið %/ D§J¡J¨t°XÑ$UÀdÐ$UÈfÑ$U÷ 	Mð 	M‘.�!�T˜5ÙØ—‘˜TÔ"Ø�J‰J¸U¿[¹[»]×K©z¨t°T˜˜V™ dÑ*ÓKÕLð (?øØ.øð	Múó Lð %Vñ ˜dŸl™l¨4Ó0×0Ñ0ð ˆC�‰IÜ�s“ˆÙØˆLà05Ö6¨�D˜#˜d™)‘OÒ6Ð6ùÒ6ùsl   ‚AD'ÁCÁD'ÁCÁD'Á:CÁ>CÁ?CÂ6D'Â8CÃ
D'ÃD'ÃCÃD'Ã4C7Ã5D'ÄD"ÄD'c           
   ƒ   óæ  K  — |�|dk  rt        d«      ‚t        |t        «      r| j                  |g||«      ƒ d {  –—† }�nt	        «       }|D �cg c]  }| j                  |«      ‘Œ }}|D ]Ù  }t        |«      rlt	        | j                  ||¬«      ƒ d {  –—† «      }||z  }|r@|�|dk  rŒA|t	        | j                  t        |«      ||�|dz
  nd ¬«      ƒ d {  –—† «      z  }Œz|r*t	        | j                  ||d¬«      ƒ d {  –—† «      }||z  }||vsŒ«|du s| j                  |«      ƒ d {  –—† sŒÉ|j                  |«       ŒÛ |st        |«      ‚t        |«      S 7 �Œ%c c}w 7 ŒÒ7 Œ�7 Œg7 Œ>­w)Nr   r(  )rÂ   rù   T)rÂ   r<  F)rm   r3   rÇ   r”   r$   rê   r   rš   rÆ   r›   r˜   r�   rÊ   rF  )r?   r°   rµ   rÂ   rì   r¸   ÚbitÚrecs           r   r”   zAsyncFileSystem._expand_pathn  s‡  è ø€ ØÐ H¨q¢LÜÐ:Ó;Ð;ä�dœCÔ Ø×)Ñ)¨4¨&°)¸XÓF×FŠCä“%ˆCØ59Ö:°�D×(Ñ(¨Õ+Ð:ˆDÐ:Øò �Ü˜Q”<Ü D§J¡J¨q¸8 JÓ$D×DÓE�CØ˜3‘J�CÙ ð $Ð/°HÀ²MØ$ØœsØ"&×"3Ñ"3Ü $ S£	Ø*3Ø9AÐ9M¨°AªÐSWð #4ó #÷ ó ñ ˜ð ÙÜ D§J¡J¨q¸8Èd JÓ$S×SÓT�CØ˜3‘J�CØ˜C’< Y°%Ñ%7À$Ç,Á,ÈqÃ/×<QÑ<Qà—G‘G˜A•Jð/ñ0 Ü# DÓ)Ð)Ü�c‹{Ðð= Gûò ;ð Eøðøð Tøà<Qúsp   ‚:E1¼E!½E1ÁE$Á)-E1ÂE)
ÂAE1ÃE+Ã)E1ÄE-
ÄE1ÄE1Ä0E/Ä1E1Ä6,E1Å$E1Å+E1Å-E1Å/E1c              ‹   ó   K  — y ­wr¤   r   )r?   r°   Úcreate_parentsr8   s       r   rž   zAsyncFileSystem._mkdir“  ó	   è ø€ Øùó   ‚c              ƒ   ó   K  — y ­wr¤   r   )r?   r°   rû   s      r   rŸ   zAsyncFileSystem._makedirs–  rc  rd  c              ‹   óL   K  — d|vs|j                  d«      rt        ‚t        ‚­w)NÚbÚcompression)r   rm   r/   )r?   r°   rÖ   r8   s       r   Ú
open_asynczAsyncFileSystem.open_async™  s$   è ø€ Ø�d‰?˜fŸj™j¨Ô7ÜÐÜ!Ð!ùs   ‚"$)FN)FNNN)Ú	overwrite)NN)FrÁ   N)NNrt   r¤   )T)Nrè   )TN)NF©F)Úrb)*Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
async_implÚmirror_sync_methodsÚdisable_throttlingr©   Úpropertyr   r‘   r¹   r’   r¾   rÓ   r“   rÚ   rä   rŽ   rí   rô   r�   r   r  r�   r  r–   r—   r�   r"  r˜   r•   r�   r™   rš   rœ   r›   r”   rž   rŸ   ri  Ú__classcell__)rª   s   @r   r¡   r¡   6  s  ø„ ñð €JØÐØÐà+0°tÈö *ð ñó ðò
"ó
ò"ò#ð ØØØó:óx"ó
ò&ó4"ð CGóð> ØØó'
óR"ð Ø!ØØóH
òT"ð Ø!ØóG
òRòò:ó
òò"ó"ó4ólCóJ	ó7ó2#óJó÷"r   r¡   c                 óÖ  — ddl m} t        t        t        «      z   D ]Ê  }|j                  d«      sŒ|dd }t        j                  |«      sŒ0t        j                  t        | |d«      «      }t        t        | |d«      dd«      }|t        ||d«      u }|sŒz|sŒ}t        t        | |«      | ¬	«      }t        | ||«       |j                  rŒ®t        t        ||d«      d
d«      |_        ŒÌ y)a,  Populate sync and async methods for obj

    For each method will create a sync version if the name refers to an async method
    (coroutine) and there is no override in the child class; will create an async
    method for the corresponding sync method if there is no implementation.

    Uses the methods specified in
    - async_methods: the set that an implementation is expected to provide
    - default_async_methods: that can be derived from their sync version in
      AbstractFileSystem
    - AsyncFileSystem: async-specific default coroutines
    r   )r   rr   r   NFÚ__func__rÜ   )r@   rp  )Úfsspecr   Úasync_methodsÚdirr¡   Ú
startswithÚprivaterG  ÚinspectÚiscoroutinefunctionÚgetattrrD   Úsetattrrp  )r@   r   ÚmethodÚsmethodÚiscoÚunsyncÚ
is_defaultÚmths           r   rr  rr  Ÿ  sÔ   € õ *ä¤#¤oÓ"6Ñ6ò ˆØ× Ñ  Ô%ØØ˜˜�*ˆÜ�=‰=˜Õ Ü×.Ñ.¬w°s¸FÀDÓ/IÓJˆDÜœW S¨'°5Ó9¸:ÀtÓLˆFØ¤7Ð+=¸wÈÓ#KÐKˆJÚš
Ü"¤7¨3°Ó#7¸SÔA�Ü˜˜W cÔ*Ø—{“{Ü")ÜÐ 2°G¸TÓBÀIÈró#�C•Kñr   c                   ó   — e Zd Zy)ÚFSSpecCoroutineCancelN)rm  rn  ro  r   r   r   rˆ  rˆ  ¿  s   „ Ør   rˆ  Tc           
      ó   — dd l }t        j                  j                  t        d   «      D �cg c]  }|j                  «       rŒ|‘Œ }}| r|D �cg c]  }|j                  «       ‘Œ c} |D �cg c]¾  }|j                  j                  j                  |j                  j                  j                  j                  |j                  j                  j                  j                  |j                  j                  j                  |j                  |j                  j                  «      |r|nd dœ‘ŒÀ }}|r«|D ]¦  }|j                  }	|j!                  «        t        j"                  j$                  j'                  ||«       t        j"                  j$                  j!                  |«       |	D �
cg c]  }
 |
d   |«      ‘Œ c}
 	 |j                  j)                  |«       Œ¨ |S c c}w c c}w c c}w c c}
w # |$ r Y ŒÆw xY w)Nr   )Úlocalsr  Ú	firstlineÚlineloÚstackÚtask)Ú	tracebackr!   ÚtasksÚ	all_tasksr   rŠ   Úprint_stackÚ_coroÚcr_frameÚf_localsÚf_codeÚco_filenameÚco_firstlinenoÚf_linenoÚformat_stackÚ
_callbacksÚcancelÚfuturesÚFutureÚset_exceptionÚthrow)Úprintoutrœ  ÚexcÚ	with_taskr�  Útr�  rŽ  rì   ÚcbsÚcbs              r   Ú_dump_running_tasksr§  Ã  sœ  € ó äŸ™×/Ñ/´°Q±Ó8ÖI�1ÀÇÁÅŠQÐI€EÐIÙØ(-Ö. ˆ×	Ñ	Õ	Ó.ð ö
ð ð —j‘j×)Ñ)×2Ñ2Ø—J‘J×'Ñ'×.Ñ.×:Ñ:ØŸ™×,Ñ,×3Ñ3×BÑBØ—j‘j×)Ñ)×2Ñ2Ø×+Ñ+¨D¯J©J×,?Ñ,?Ó@Ù%‘D¨4ó	
ð
€Cð 
ñ Øò 		ˆAØ—,‘,ˆCØ�H‰HŒJÜ�O‰O×"Ñ"×0Ñ0°°CÔ8Ü�O‰O×"Ñ"×)Ñ)¨!Ô,Ø #Ö$˜"ˆUˆR�‰U�1�XÓ$ðØ—‘—‘˜cÕ"ð		ð €Jùò3 Jùâ.ùò
ùò" %øð ò Ùðús0   ­G!ÁG!ÁG&Á-CG+Æ,G0ÇG5Ç5G=Ç<G=c                   óH   — e Zd Zdd„Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Z	d„ Z
dd	„Zy
)ÚAbstractAsyncStreamedFilec              ƒ   óx  K  — |€dn
t        |«      }| j                  dk7  rt        d«      ‚|dk  r| j                  | j                  z
  }| j
                  rt        d«      ‚|dk(  ry| j                  | j                  | j                  |z   «      ƒ d{  –—† }| xj                  t        |«      z  c_        |S 7 Œ$­w)zÇ
        Return data from cache, or fetch pieces as necessary

        Parameters
        ----------
        length: int (-1)
            Number of bytes to read; if <0, all remaining bytes.
        Nrd   rl  zFile not in read moder   úI/O operation on closed file.r   )ÚintrÖ   rm   rÝ   ÚlocÚclosedÚ_fetch_ranger€   )r?   Úlengthrì   s      r   ÚreadzAbstractAsyncStreamedFile.readè  s¤   è ø€ ð �~‘¬3¨v«;ˆØ�9‰9˜ÒÜÐ4Ó5Ð5Ø�AŠ:Ø—Y‘Y §¡Ñ)ˆFØ�;Š;ÜÐ<Ó=Ð=Ø�QŠ;àØ×%Ñ% d§h¡h°·±¸6Ñ0AÓB×BˆØ�Š”C˜“HÑ�Øˆ
ð Cús   ‚BB:ÂB8Â%B:c              ƒ   ó~  K  — | j                   dvrt        d«      ‚| j                  rt        d«      ‚| j                  rt        d«      ‚| j                  j                  |«      }| xj                  |z  c_        | j                  j                  «       | j                  k\  r| j                  «       ƒ d{  –—†  |S 7 Œ­w)zë
        Write data to buffer.

        Buffer only sent on flush() or if buffer is greater than
        or equal to blocksize.

        Parameters
        ----------
        data: bytes
            Set of bytes to be written.
        >   ÚabÚwbzFile not in write moder«  z0This file has been force-flushed, can only closeN)
rÖ   rm   r®  ÚforcedÚbufferÚwriter­  ÚtellÚ	blocksizeÚflush)r?   Údatarì   s      r   r·  zAbstractAsyncStreamedFile.writeÿ  s™   è ø€ ð �9‰9˜LÑ(ÜÐ5Ó6Ð6Ø�;Š;ÜÐ<Ó=Ð=Ø�;Š;ÜÐOÓPÐPØ�k‰k×Ñ Ó%ˆØ�Š�C‰�Ø�;‰;×ÑÓ §¡Ò/Ø—*‘*“,×ÐØˆ
ð ús   ‚B2B=Â4B;Â5B=c              ƒ   óº  K  — t        | dd«      ry| j                  ry| j                  dk(  rd| _        d| _        y| j                  s| j                  d¬«      ƒ d{  –—†  | j                  �c| j                  j                  | j                  «       | j                  j                  | j                  j                  | j                  «      «       d| _        y7 Œ{­w)z=Close file

        Finalizes writes, discards cache
        Ú_unclosableFNrl  T)Úforce)
r  r®  rÖ   Úcacherµ  rº  r  Úinvalidate_cacher°   Ú_parentr¬   s    r   ÚclosezAbstractAsyncStreamedFile.close  s©   è ø€ ô
 �4˜¨Ô.ØØ�;Š;ØØ�9‰9˜ÒØˆDŒJð ˆ�ð —;’;Ø—j‘j t�jÓ,×,Ð,à�w‰wÐ"Ø—‘×(Ñ(¨¯©Ô3Ø—‘×(Ñ(¨¯©¯©¸¿¹Ó)CÔDàˆ�ð -ús   ‚ACÁCÁA<Cc              ƒ   ó4  K  — | j                   rt        d«      ‚|r| j                  rt        d«      ‚|rd| _        | j                  dvry |s(| j                  j                  «       | j                  k  ry | j                  € d| _        	 | j                  «       ƒ d {  –—†  | j                  |¬«      ƒ d {  –—† durI| xj                  | j                  j                  dd«      z  c_        t        j                  «       | _        y y 7 Œj#  d| _         ‚ xY w7 Œ_­w)	NzFlush on closed filez+Force flush cannot be called more than onceT>   r³  r´  r   )ÚfinalFé   )r®  rm   rµ  rÖ   r¶  r¸  r¹  ÚoffsetÚ_initiate_uploadÚ_upload_chunkÚseekÚioÚBytesIO)r?   r¾  s     r   rº  zAbstractAsyncStreamedFile.flush,  sò   è ø€ Ø�;Š;ÜÐ3Ó4Ð4Ù�T—[’[ÜÐJÓKÐKÙØˆDŒKà�9‰9˜LÑ(àá˜Ÿ™×)Ñ)Ó+¨d¯n©nÒ<àà�;‰;ÐàˆDŒKðØ×+Ñ+Ó-×-Ð-ð
 ×#Ñ#¨%Ð#Ó0×0¸Ñ=Ø�KŠK˜4Ÿ;™;×+Ñ+¨A¨qÓ1Ñ1�KÜŸ*™*›,ˆD�Kð >ð .ùðØ"�”Øúà0ús=   ‚BDÂ	D	 ÂDÂD	 Â!DÂ6DÂ7ADÄD	 Ä	
DÄDc              ƒ   ó   K  — | S ­wr¤   r   r¬   s    r   Ú
__aenter__z$AbstractAsyncStreamedFile.__aenter__I  s   è ø€ Øˆùs   ‚c              ƒ   ó@   K  — | j                  «       ƒ d {  –—†  y 7 Œ­wr¤   )rÂ  )r?   Úexc_typeÚexc_valÚexc_tbs       r   Ú	__aexit__z#AbstractAsyncStreamedFile.__aexit__L  s   è ø€ Ø�j‰j‹l×Òús   ‚–—c              ƒ   ó   K  — t         ‚­wr¤   r®   )r?   rV   râ   s      r   r¯  z&AbstractAsyncStreamedFile._fetch_rangeO  r±   r²   c              ƒ   ó   K  — y ­wr¤   r   r¬   s    r   rÇ  z*AbstractAsyncStreamedFile._initiate_uploadR  rc  rd  c              ƒ   ó   K  — t         ‚­wr¤   r®   )r?   rÄ  s     r   rÈ  z'AbstractAsyncStreamedFile._upload_chunkU  r±   r²   N)rd   rk  )rm  rn  ro  r±  r·  rÂ  rº  rÍ  rÒ  r¯  rÇ  rÈ  r   r   r   r©  r©  ä  s/   „ óò.ò0ó*'ò:òò"òô"r   r©  r¤   rk  )Br!   Úasyncio.eventsrB   r}  rÊ  rß   rI   r=  r   Ú
contextlibr   Úglobr   Útypingr   r   Ú	callbacksr   Ú
exceptionsr	   Úimplementations.localr
   r   r   Úspecr   r   Úutilsr   r   r   rE  r|  r   r   r   r.   r   r   r)   r;   rD   rN   rX   r[   rK   r\   rh   r^   rn   r  r  rl   ri   rg   rs   Úboolrv   rŒ   ry  r¡   rr  r#   rˆ  r§  r©  r   r   r   ú<module>rà     sŒ  ðÛ Û Û Û Û 	Û Û 	Û 	Û Ý %Ý ß *å 'Ý &ß QÑ Qß :ß <Ñ <à
ˆ"�*‰*�WÓ
€Øˆ6€Ø€v€Ø€Ø×+Ñ+Ð òò
ó	ð %)ô *óZð ñ7ó ð7òò&ñ ˆ2Ð!Ô"à€B×ÑÐ'7Õ8ñ Ûà—N‘N�Mð<Ûñ
   ¨'°7Ó;ˆàÐ Ø"Ð óð2�tó ð ØØØØóBòL€ô.f	"Ð(ô f	"òRô@	˜Iô 	ð
 ˜$Ð$9ÀUóôBr"Ð 4õ r"øðo ò  ØˆØŠð ús   ÃD/ Ä/	D;Ä:D;