L i hddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl mZddlmZddlmZddlmZmZmZdd lmZmZdd lmZmZmZej<d ZdgZ dgZ!da"ejFZ#d Z$d Z%d(dZ&dddZ'd(dZ(dZ)dZ*e+edrejXe*erddl-Z-e-j\Z/n ddl-Z-e0e-de1Z/dZ3dZ4d)dZ5de6fdZ7dedddfdZ8gdZ9Gdd eZ:d!Z;Gd"d#e<Z=d$d$e=dfd%Z>Gd&d'eZ?y#e2$rdZ-e1Z/YSwxYw)*N)Iterable) has_magic) TYPE_CHECKING)DEFAULT_CALLBACK)FSTimeoutError)LocalFileSystemmake_path_posix trailing_sep)AbstractBufferedFileAbstractFileSystem)glob_translate is_exception other_pathsz_[^_]cBtstjatS)zAllocate or return a threading lock. The lock is allocated on first use to allow setting one lock per forked process. )_lock threadingLockQ/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/fsspec/asyn.pyget_lockrs   Lrc,dtd<dtd<day)zReset 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)iothreadlooprrrr reset_lockr&sHQKDG ErcK|r|nd}|tj||} |d{|d<|jy7#t$r}||d<Yd}~&d}~wwxYw#|jwxYww)Ntimeoutr)asynciowait_for Exceptionset)eventcororesultrexs r_runnerr(3sk gdGg6Jq    q   sI A3AAAA3A A AAAAA00A3rc|r|nd}||jr td tjj }||ur t d ||i|}dg}t j}tjt||||| |jdrn||dz}|dkrt%|d} t| tjrt| t| tr| | S#t $rt$rYwxYw)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) NzLoop is not runningz)Calling sync() from within a running looprr) is_closed RuntimeErrorr eventsget_running_loopNotImplementedErrorrEventrun_coroutine_threadsafer(waitr isinstance TimeoutError BaseException) rfuncrargskwargsloop0r%r&r$ return_results rsyncr:?s!!gdG |t~~'011 //1 D=%&QR R    DVF OO E $$WUD&'%JDQ  ::a=    qLG{$$ 1IM-!5!56-/ M= 11     s-C44D D cFtjfd}|S)zGiven 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. cJxs|d}t|jg|i|SNr)r:r)r6r7selfr5objs rwrapperzsync_wrapper..wrapperss+~d1gDIIt5d5f55r) functoolswraps)r5r?r@s`` r sync_wrapperrCls'__T66 Nrc^tdt5tdctjtd<t j tdj d}d|_|j|td<dddtdStdS#1swYtdSxYw)zdCreate or return the default fsspec IO loop The loop will be running on a separate thread. rNfsspecIO)targetnameT) rrr new_event_looprThread run_foreverdaemonstartr)ths rget_looprN{s  Aw Z !Aw!002Q%%T!W-@-@zR      ! 7N47N ! 7Ns A-BB,c,dtd<dtd<dayr=)rrlockrrrreset_after_forkrQsDGHQK Drregister_at_fork)after_in_childerroriFcddlm}|r d|vr|dSd|vr|dS|rtSttS tj tj \}}|tjk(ry|dzS#tttf$r tcYSwxYw)Nr)confnofiles_gather_batch_sizegather_batch_size) fsspec.configrW_NOFILES_DEFAULT_BATCH_SIZEresource_DEFAULT_BATCH_SIZE getrlimit RLIMIT_NOFILE ImportError ValueError ResourceError RLIM_INFINITY)nofilesrW soft_limit_s r_get_batch_sizeris" &$ .34 4 $ &+, ,**""# **8+A+AB AX+++Q ] 3#""#s&A//B  B returncL tjy#t$rYywxYw)z Being executed by an event loop?TF)r r-r+rrr running_asyncrls(  " s  ##c6K| t|}|dk(r t|}|dkDsJfd}d}t|}dg|z} t} | s||krt| |krL||krG| jt j |||||dz }t| |kr||krG| s | St j | tjd{\} } | r#| jd{\} } | | | <| r#| r||kr| S777w)aSRun 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)rfrZrcK tj|d{|fjdS7#t$r"}s||fcYd}~jdSd}~wwxYw#jdwxYww)Nrr)r r!relative_updater")r%iecallbackreturn_exceptionsrs r _run_coroz'_run_coros_in_chunks.._run_corosw ( ))$@@!C  $ $Q ' A $a4K  $ $Q '    $ $Q 'sOA=979A=9 A$AA$ A' A=A$$A''A::A=r) return_when) rilenr#addr ensure_futurer1FIRST_COMPLETEDpop)coros batch_sizerrrrsrfrtrpnresultspendingdoner&ks ``` r_run_coros_in_chunksrs$<$W5 RZ >>( A E AfqjGeG QU'lZ'AE KK--ia!.DE F FA'lZ'AE  N &ll7@W@WXX g"hhj(IFAGAJ QU N Y(s<B*D0-DDD:D;D D DDD)_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 _makedirscBeZdZdZdZdZdZddddfd ZedZ dZ d&d Z d Z d Z d'd Zd(d Zd)dZdZd)dZ d*dZ d+dZd(dZdeddfdZdZdedfdZdZdZdZd,dZdZdZd-dZ d.dZ!d,dZ"d/d Z#d0d!Z$d&d"Z%d-d#Z&d1d$Z'd2d%Z(xZ)S)3AsyncFileSystemakAsync 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) asynchronousrr|c||_tj|_|s|xs t |_nd|_||_t| |i|yN) rosgetpid_pidrN_loopr|super__init__)r>rrr|r6r7 __class__s rrzAsyncFileSystem.__init__:sI(IIK +DJDJ$ $)&)rcr|jtjk7r td|jS)NzThis class is not fork-safe)rrrr+rr>s rrzAsyncFileSystem.loopDs* 99 #<= =zzrcKtwrr.r>pathr7s rrzAsyncFileSystem._rm_fileJ !! c K|xs |j}|j||d{}tt|Dcgc]}|j|fi|c}|dd{S7Bcc}w7 w)N recursiveTr|rf)r|rrreversedr)r>rrr|r7ps r_rmzAsyncFileSystem._rmMst24?? &&ty&AA)19$ @A]T]]1 ' ' @!   B @ s-'A5A,A5A. A5'A3(A5.A5cKtwrr)r>path1path2r7s rrzAsyncFileSystem._cp_fileWrrczK|j||d{|j|d{y77wr)rr)r>rrs r_mv_filezAsyncFileSystem._mv_fileZs5mmE5)))mmE""" *"s;7;9;;c K||rd}n|d}t|trt|tr|}|} nt|t} |j|||d{}| r<|r|8|D cgc]*} t | r|j | d{r)| ,}} |syt |dk(} t|txr&t |xs|j |d{} | xr/t|xr| xst| xr| xr t | }t|||| } |xs |j}t|| Dcgc]\}}|j||fi|}}}t||ddd{}tt|D]}|dk(rt|tr|y7P7cc} w7cc}}w7Dw)Nignoreraise)maxdepthrrexistsflattenT)r|rsrf)r2liststrrr rrvrrr|ziprrfilterrFileNotFoundError)r>rrron_errorrr|r7paths1paths2 source_is_strrsource_is_file dest_is_dirrp1p2r{r&r's r_copyzAsyncFileSystem._copy^s   H  H eT "z%'>FF&uc2M,,I-Fi83G &l1ot{{ST~AUAUA [A-N$UC0U#?T[[-?'? #5!4nV!%((T[TeAT=T !)) F 24?? ?B66?RSVRr200SS+ jD$  v. B8# 27H(IH C BV(@T snAF?F*F?)F0:F0F- F0F0AF?F5A&F?F7#F?8F=92F?-F00F?7F?cKtwrr)r>rvaluemoder7s rrzAsyncFileSystem._pipe_filerrc Kt|tr||i}|xs |j}t|j Dcgc]\}}|j ||fi|c}}|dd{Scc}}w7 w)NTr)r2rr|ritemsr)r>rrr|r7rvs r_pipezAsyncFileSystem._pipesq dC %=D24?? )9= FA_T__Q ,V , F!   F s=A8A0 A8+A6, A8cHKd}d}|5|dkr0|| }d}d}n*|xs|j|d{d}||z}n|d}|sR|-|dkr(|*|xs|j|d{d}||z}n|d}t|tjr|dz}d|d |S7m7:w) z"Helper for "Range"-based _cat_fileNFrTsizerzbytes=-)rr2numbersIntegral)r>urlrLendrsuffs r_process_limitszAsyncFileSystem._process_limitss  {f>djjo 5v>u  ]E37$B$**S/$96#BD*C#w//0qwau%%!6%:s!.B"B4B"%B &9B" B"cKtwrr)r>rrLrr7s rrzAsyncFileSystem._cat_filerrcK|j||d{}|Dcgc]}|j|fi|}}|xs |j}t||ddd{}|dk(rt t t |d} | r| t|dkDs'tts|d|j|k7r0t||D cic]\} } |dk7s t | s| | c} } S|dS7cc}w7cc} } ww) NrTr|rfrsrFrromit) rrr|rnextrrrvr2r_strip_protocolr) r>rrrr|r7pathsr{outr'rrs r_catzAsyncFileSystem._cats'' 'BBDC2DC4$D C9!A+D C;) D4D;Dc K|tt|tstt|ts|gt |z}t|ts|gt |z}t |t |k7st |t |k7rt t|||D cgc]\}} } |j|f| | d|} } }} |xs |j}t| |ddd{Scc} } }w7 w)aYGet 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)rLrTr) r.r2r TypeErrorrrvrcrrr|r) r>rstartsendsmax_gapr|rr7rsrqr{s r _cat_rangeszAsyncFileSystem._cat_rangess*  % %%&O&(+XE *F$)6CJ&D v;#e* $D SZ(? ufd3  1a DNN1 7A1 7 7   24?? ) j$$     sB"C9$!C0&C9+C7, C9cKtwrr)r>lpathrpathrr7s rrzAsyncFileSystem._put_filerrc Kt|trt|tr|}|} n t|t} | r t|}t } | j |||} | r4|r|0| D cgc]"} t | r| j| r!| $} } | syt| dk(} t|txr&t |xs|j|d{}|j|}| xr/t|xr| xst| xr|xr t | }t| ||| }| Dcic]"}|tjj|$}}t| |Dcgc] \}}||s |}}}t| |Dcgc]\}}||r ||f}}}t!j"|Dcgc]}|j%|dc}d{|xs |j&}g}|j)t||D]9\}}|j+|j,}|j/|||fi|;t1|||d{Scc} w7cc}wcc}}wcc}}wcc}w77$w)aCopy 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 . rrNrrTexist_okr|rr)r2rrr r expand_pathr isdirrvrrrrrrrr gatherrr|set_size branch_cororappendr)r>rrrrrr|rr7rpathslpathsrfsrrrrlis_dirrrdirs file_pairsdr{lfilerfileput_files r_putzAsyncFileSystem._put su. eT "z%'>FF&uc2M'. "B^^EY^RFi83G%+TLOrxxPQ{!TT [A-N$UC0U#?T[[-?'? ((/E"5!4nV!%((T[TeAT=T !)) F066!!RWW]]1%%66"662@tq!fQi@@),VV)<NAF1Iq!fN NnnOAt~~a$~?OPPP24?? #j/*& ;LE5++DNN;H LL%9&9 : ;* j8   EU (@7@NOP sA,J.I$?I$I$AJI)AJ8'I,J0 I1>I1J I7"I7(J>I=JJ A?JJ J,JJcKtwrr)r>rrr7s rrzAsyncFileSystem._get_fileTrrcTKt|trt|tr|}|}nt|t} | xr t| } |j |}|j |||d{}| r<|r|8|D cgc]*} t| r|j | d{r)| ,}} |syt|}t|dk(} t|txr&t|xstj|} | xr%t|xr| xst| xr| xr| }t|||| }|Dcgc]6}tjtjj!|d8c}|j#d|j$}g}|j't|t)||D]9\}}|j+|j,}|j/|||fi|;t1|||d{S77tcc} wcc}w7w) aCopy 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 . rNrrTrr|r)r2rrr rrrr rvr rrrrmakedirsrdirnamerzr|rrrrrr)r>rrrrrrr7rrrsource_not_trailing_seprrrrlpr|r{get_files r_getzAsyncFileSystem._getWs,. eT "z%'>FF&uc2M&3&OL'>u'E #5!4nV!%((T[T=T !)) FDJJRRWW__R(4 8JZZ doo> #f+&/ ;LE5++DNN;H LL%9&9 : ;* j8   I BV. K s\A/H(1H2H(HH%H &H+H/BH(;H!=BH(H&H(H H(c\K |j|d{ddk(S7 #YyxYww)NtypefileF)rr>rs rrzAsyncFileSystem._isfiles3 **T**F3v= =* s ,%# %,%),clK |j|d{ddk(S7 #t$rYywxYww)Nr directoryF)rOSErrorrs rrzAsyncFileSystem._isdirs; **T**F3{B B*  s(4%# %4% 1414c`K|j|d{jddS7w)Nr)rgetrs rrzAsyncFileSystem._sizes(jj&&++FD99&s .,.cK|xs |j}t|Dcgc]}|j|c}|d{Scc}w7 w)N)r|)r|rr)r>rr|rs r_sizeszAsyncFileSystem._sizessF24?? )$) *qTZZ] *z   * sA A A A  A cfK |j|fi|d{y7#t$rYywxYww)NTF)rrrs rrzAsyncFileSystem._existss= $**T,V, , , -   s(1" "1" .1.1cKtwrrrs rrzAsyncFileSystem._inforrcKtwrr)r>rdetailr7s rrzAsyncFileSystem._lsrrc K||dkr td|j|}i}i}i}|jdd} |j|fddi|d{} | D]S} | djd} | jddd } | d d k(r| |k7r | || <| || <D| |k(r| |d <O| || <U|r |||fn|t|t|f| |dz}|dkry|D])}|j||f||d |23d{}|y7#tt f$r6} |dk(rt |r|| |r |iifn|ggfYd} ~ yd} ~ wwxYw7V6{w)Nrmaxdepth must be at least 1rFTrrG/rZrrr)rr) rcrrzrrrcallablerstriprsplitrr)r>rrrr7 full_dirsdirsfilesrlistingrqinfopathnamerGrrhs rrzAsyncFileSystem._walks  HqL:; ;##D) He, $DHHTA$A&AAG #DF|**3/H??3*2.DF|{*x4/?"* $!T T! b "d  # e# #T DK/ /   MH!| A%4::! '/BH  a  KB!7+ 7"(# Bl"Bl"  J sez(AsyncFileSystem._glob..s-#*-s*?[rFr rr,T)rwithdirsrrr)rcrerraltsepr.endswithrtuplefindrvminrzrrrrindexcountrrcompilesortedrmatchr)r>rrr7r4seps ends_with_sepappend_slash_to_dirnameidx_star idx_qmark idx_bracemin_idxrrootdepthidx_double_starsdepth_double_starsallpathspatternrr(rs rrzAsyncFileSystem._globs   HqL:; ;02 RWW^^,RWW[[N d+ ##D)"/# 4== -- -4 &*YYs^q%8499S>c$i&*iin&9DIIcNs4y &*iin&9DIIcNs4y h 95He,!T\\$1&111 6M  4(B6(B"BCCII D'N "8Gn++C0G 'A+&D1'--c2Q6ED1'--c2Q6E 4<##'99T? %)*:*;%<%B%B3%G!%K" 22X=#   4 @F  ! 2!FG"**W%"(.."23 4}}*tF|{/JC tG   J9 ]2#C,  sJFLK7 L:K:;B8L3K=4AL8-K?%L:L=L?LcKi}|j|fd|i|d{D]&}|j|d{}|d||d<(|rt|jS|S7J70w)NrrrG)rrsumvalues)r>rtotalrr7sizesfr(s rrzAsyncFileSystem._du=sy!tzz$DDVDD /AA&D"&v,E$v,  / u||~& &L E&sA,A(A,A*/A,*A,c RK|j|}i}|jdd}|r:|dk7r5|j|d{r|j|d{||<|j||fddi|23d{\}}} |r| j ||j | j D cic] \} } | d|  c} } W77v7Vcc} } w6|s|j|d{7ri||<t|} |s| S| D cic]} | ||  c} Scc} ww)NrFrTrG) rrzrrrupdaterrr=) r>rrr3r7rrrhr%r&rGr(namess rrzAsyncFileSystem._findHs/##D)He,  T[[->'>'>"jj..CI%/DJJtX$Ud$Uf$U M M.!T5 T" JJU[[]KztTV d*K L(?. ML%Vdll4000CIs L056D#d)O6 66slAD'CD'CD':C>C?C6D'8C  D'D'CD'4C75D' D"D'c K||dkr tdt|tr|j|g||d{}nt }|Dcgc]}|j |}}|D]}t |rlt |j||d{}||z}|r@||dkrA|t |jt||||dz ndd{z}z|r*t |j||dd{}||z}||vs|dus|j|d{s|j||s t|t|S7%cc}w777g7>w)Nrr)rrT)rr3F)rcr2rrr#rrrrrrrwrr=)r>rrrrrbitrecs rrzAsyncFileSystem._expand_pathas  HqL:; ; dC ))4&)XFFC%C59:D((+:D: Q<DJJq8J$DDEC3JC $/HM$s"&"3"3 $S *39A9MASW#4# DJJq8dJ$SSTC3JCCrcreate_parentsr7s rrzAsyncFileSystem._mkdir  c Kywrr)r>rrs rrzAsyncFileSystem._makedirsrZr[cLKd|vs|jdrttw)Nb compression)rrcr.)r>rrr7s r open_asynczAsyncFileSystem.open_asyncs$ d?fjj7 !!s"$)FN)FNNN) overwrite)NN)FrN)NNrjr)T)Nr)TN)NFF)rb)*__name__ __module__ __qualname____doc__ async_implmirror_sync_methodsdisable_throttlingrpropertyrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr` __classcell__)rs@rrr)sJ+0t* " "#:x" &4"CG>' R"!H T"! G R  : ""4lCJ 72#J  "rrcddlm}tttzD]}|j ds|dd}t j|s0tjt||d}tt||ddd}|t||du}|sz|s}tt||| }t||||jrtt||dd 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 rhrNF__func__r)r?rg)fsspecr async_methodsdirr startswithprivater>inspectiscoroutinefunctiongetattrrCsetattrrg)r?r methodsmethodiscounsync is_defaultmths rriris*#o"66  % * == ..wsFD/IJDWS'59:tLF7+=w#KKJ "73#7SAWc*{{") 2GTBIr#CKrc eZdZy)FSSpecCoroutineCancelN)rdrerfrrrrrsrrTc ddl}tjjtdDcgc]}|j r|}}|r|Dcgc]}|j c}|Dcgc]}|jjj|jjjj|jjjj|jjj|j|jj|r|ndd}}|r|D]}|j} |j!tj"j$j'||tj"j$j!|| D cgc] } | d|c}  |jj)||Scc}wcc}wcc}wcc} w#|$rYwxYw)Nr)localsr firstlinelinelostacktask) tracebackr tasks all_tasksrr print_stack_corocr_framef_localsf_code co_filenameco_firstlinenof_lineno format_stack _callbackscancelfuturesFuture set_exceptionthrow) printoutrexc with_taskrtrrrcbscbs r_dump_running_tasksrs //Q8 I1Q IE I(-.   .  jj))22JJ''..::,,33BBjj))22++DJJ,?,?@%D4   C  A,,C HHJ OO " " 0 0C 8 OO " " ) )! , # $"URU1X $  c"  J3 J. " %  s0G!G!G&-CG+,G0G55G=<G=cHeZdZd dZdZdZd dZdZdZdZ dZ d d Z y ) AbstractAsyncStreamedFilecxK|dn t|}|jdk7r td|dkr|j|jz }|j r td|dk(ry|j |j|j|zd{}|xjt|z c_|S7$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. NrZrczFile not in read moderI/O operation on closed file.r)intrrcrlocclosed _fetch_rangerv)r>lengthrs rreadzAbstractAsyncStreamedFile.reads~3v; 99 45 5 A:YY)F ;;<= = Q;%%dhh60ABB CH CsBB:B8%B:c~K|jdvr td|jr td|jr td|jj |}|xj |z c_|jj|jk\r|jd{|S7w)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. >abwbzFile not in write moderz0This file has been force-flushed, can only closeN) rrcrforcedbufferwritertell blocksizeflush)r>datars rrzAbstractAsyncStreamedFile.writes 99L (56 6 ;;<= = ;;OP Pkk% C ;;    /**,    sB2B=4B;5B=cKt|ddry|jry|jdk(rd|_d|_y|js|j dd{|j c|j j|j|j j|j j|jd|_y7{w)z=Close file Finalizes writes, discards cache _unclosableFNrcT)force) rvrrcacherrrinvalidate_cacher_parentrs rclosezAbstractAsyncStreamedFile.close s 4 .  ;;  99 DJ ;;jjtj,,,ww"((3(()CD -sACCArrr)finalF) rrcrrrrroffset_initiate_upload _upload_chunkseekioBytesIO)r>rs rrzAbstractAsyncStreamedFile.flushs ;;34 4 T[[JK K DK 99L ( ))+dnn<  ;; DK ++--- ##%#0 0 = KK4;;++Aq1 1K**,DK > . "  0s=BD D DD !D6D7ADD DDcK|Swrrrs r __aenter__z$AbstractAsyncStreamedFile.__aenter__<s  sc@K|jd{y7wr)r)r>exc_typeexc_valexc_tbs r __aexit__z#AbstractAsyncStreamedFile.__aexit__?sjjls cKtwrr)r>rLrs rrz&AbstractAsyncStreamedFile._fetch_rangeBrrc Kywrrrs rrz*AbstractAsyncStreamedFile._initiate_uploadErZr[cKtwrr)r>rs rrz'AbstractAsyncStreamedFile._upload_chunkHrrN)rZrb) rdrerfrrrrrrrrrrrrrrs/.0*':" "rrrrb)@r asyncio.eventsrArtrrrr4rcollections.abcrglobrtypingr callbacksr exceptionsrimplementations.localr r r specr r utilsrrrr<rsrrrr-rrr(r:rCrNrQhasattrrRr^rTrdrvrrbr_r]riboolrlrrprrir"rrrrrrrsx  $ '&QQ:<< "**W  6 v ++  %)*Z $ 2!"B'78NNM<  '7; "2t    BL .f "(f "R@ I $$9UBr" 4r"o    sD%% D10D1