U Wz8\@sddlZddlmZddlmZmZmZmZzddlmZWne k rZe edZYnXdZ dZ dd Z d d Zd d ZddZddZddZddddddZejddZddZddZdd Zd!d"Zd#d$Zd%d&Zd+ddddd(d)d*ZdS),N) OrderedDict) _CacheInfo _make_keypartialwraps) ensure_futureasyncz1.0.2) alru_cachecCs0z |WStk r*tj|dYSXdS)Nloop) create_futureAttributeErrorasyncioZFuturer r:/opt/alt/python38/lib/python3.8/site-packages/async_lru.pyr s r cCst|dr|j}q|S)Nfunc)hasattrr)fnrrr unpartials rcCsD|r|dS|}|dk r2||dS||dSN)Z cancelledcancelZ exceptionZ set_exceptionZ set_resultresult)futtaskexcrrr_done_callbacks rcOs*t|||}||jk}|r&|j||Sr)r_cachepop)wrappedtypedargskwargskeyexistsrrr_cache_invalidate*s    r$cCs d|_|_t|_t|_dS)Nr)hitsmissesrrsettasks)rrrr _cache_clear5s r)cCs`|jstd|j|jkoDt|jkoDt|jkoDdkn}|sVtdd|_dS)Nzalru_cache is not closedrz#alru_cache was not closed correctlyF)closed RuntimeErrorr%r&lenr(r)rZ was_closedrrr_open;sr-FT)rreturn_exceptionsr cCsB|jrtdd|_|r4|jD]}|s|qt|||dS)Nzalru_cache is closedTr.r )r*r+r(doner _wait_closed)rrr.r rrrr_closeMs  r2ccsV|dkrt}tj|j||d}|tt||EdH}tjd|dEdH|S)Nr/rr )rget_event_loopZgatherr(add_done_callbackr _close_waitedsleep)rr.r Z wait_closedZretrrrr1_s r1cCs |dSr) cache_clear)r_rrrr5tsr5cCst|j|j|t|jSr)rr%r&r,r)rmaxsizerrr _cache_infoxs r:cCs*z|j|Wntk r$YnXdSr)r move_to_endKeyErrorrr"rrr __cache_touchsr>cCs|jd7_t||dSN)r%r>r=rrr _cache_hitsrAcCs|jd7_t||dSr?)r&r>r=rrr _cache_misssrBcCsvt|tr\||Astd|rRt|dd}|dkrF|s>td|d}t||}qr||}n|dkrnt}n|}|S)Nz"choose self.loop or kwargs["loop"]__self__zseems not unbound functionr) isinstancestrAssertionErrorgetattrrr3)clsr!rfn_args fn_kwargsr Z_self_looprrr _get_loops      rL)rHr!cache_exceptionsr csNfdd}|dkr"|St|s4t|dr<||Std|dS)Nc st}t|s tdtdr2ttjfddt |_ d_ t t _t t _t t_t t_t t_S)Nz&Coroutine function is required, got {}_make_unbound_methodc?s:jrtdtj||d}t||}j|}|dk r|spt |t j ||dEdHS|j }|dksrt || Sj|t|d}||}t||d}|tt|j||jj|j|<dk rtjkrjjddt|t j ||dEdHS)Nzalru_cache is closed for {}r F)Zlast)r*r+formatrL_originrrgetr0rArZshieldZ _exceptionrrr rr4rrr(addremover,popitemrB)rIrJrKr"rrcoror)rNrHrr!r r9rrrrrsD            z,alru_cache..wrapper..wrappedF)rrZiscoroutinefunctionr+rPrrOr coroutiner)rQr*rr: cache_infor7r$Z invalidater2closer-open)rrQrNrHr!r r9r)rrrwrappers&  0   zalru_cache..wrapperrOz{} decorating is not supported)callablerNotImplementedErrorrP)rr9rrHr!rNr r\rr[rr s Hr )NrMF)r collectionsr functoolsrrrrr ImportErrorrG __version____all__r rrr$r)r-r2rWr1r5r:r>rArBrLr rrrrs@