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 cancelledcancel 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  r3ccsV|dkrt}tj|j||d}|tt||EdH}tjd|dEdH|S)Nr0rr )rget_event_loopZgatherr)add_done_callbackr _close_waitedsleep)rr/r Z wait_closedretrrrr2_s r2cCs |dSr) cache_clear)r_rrrr6tsr6cCst|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_hitsrCcCs|jd7_t||dSrA)r'r@r?rrr _cache_misssrDcCsvt|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) isinstancestrAssertionErrorgetattrrr4)clsr"rfn_args fn_kwargsr _self_looprrr _get_loops      rO)rJr"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)last)r+r,formatrO_originrrgetr1rCrZshieldZ _exceptionrrr rr5rrr)addremover-popitemrD)rKrLrNr#rrcoror)rQrJrr"r r;r rrrrsD            z,alru_cache..wrapper..wrappedF)rriscoroutinefunctionr,rTrrRr coroutiner*rUr+rr< cache_infor9r%Z invalidater3closer.open)rrUrQrJr"r r;r )rrrwrappers&  0   zalru_cache..wrapperrRz{} decorating is not supported)callablerNotImplementedErrorrT)rr;r rJr"rQr rarr`rr s Hr )NrPF)r collectionsr functoolsrrrrr ImportErrorrI __version____all__r rrr%r*r.r3r\r2r6r<r@rCrDrOr rrrrs@