bgbdZddlmZddlmZddlmZddlmZddl m Z m Z m Z m Z mZmZddlmZddlmZmZdd lmZdd lmZdd lmZdd lmZmZmZmZdd l m!Z!ddl"m#Z#dZ$Gddej%Z&d!d"dZ' d!d#dZ(d$dZ)d$dZ*ee*d Z+e,e!e'e)e,eee(e+dS)%z9Astroid hooks for understanding functools library module.) annotations)Iterator)partial)chain) BoundMethod arguments extract_nodehelpersnodesobjects)InferenceContext)InferenceErrorUseInferenceDefault) inference_tip) objectmodel)AstroidManager) AssignName AttributeCallName) FunctionDef)UninferableBasezfunctools.lru_cachecTeZdZdZedZedZedZdS)LruWrappedModelzSpecial attribute model for functions decorated with functools.lru_cache. The said decorators patches at decoration time some functions onto the decorated function. c|jSN) _instance)selfs n/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/astroid/brain/brain_functools.pyattr___wrapped__z LruWrappedModel.attr___wrapped__!s ~cztdGfddt}||j|jS)NzQ from functools import _CacheInfo _CacheInfo(0, 0, 0, 0) c eZdZ ddfd ZdS)=LruWrappedModel.attr_cache_info..CacheInfoBoundMethodNcontextInferenceContext | Nonec38KtjVdSr)r safe_infer)rcallerr% cache_infos rinfer_call_resultzOLruWrappedModel.attr_cache_info..CacheInfoBoundMethod.infer_call_result/s&(4444444r!r)r%r&)__name__ __module__ __qualname__r+)r*srCacheInfoBoundMethodr$.s;AE 5 5 5 5 5 5 5 5 5r!r/proxybound)r rr)rr/r*s @rattr_cache_infozLruWrappedModel.attr_cache_info%sg!    5 5 5 5 5 5 5; 5 5 5 $#$.OOOOr!cztd}t||jjS)Nzdef cache_clear(self): passr0)r rrparentscope)rnodes rattr_cache_clearz LruWrappedModel.attr_cache_clear6s4=>>T^-B-H-H-J-JKKKKr!N)r,r-r.__doc__propertyr r3r8r!rrrsw XPPXP LLXLLLr!rNr%r&returnNonec>t||_dSr)rspecial_attributes)r7r%s r_transform_lru_cacher@<s"0o//55Dr!r7 nodes.Call!Iterator[objects.PartialFunction]c tj||}t|j}|dkrt d|dkr|jst d|jd} t||}n!#ttf$r }t |d}~wwxYwt|trt dt|tst d|jsg}n5t|jjpd|jjpd|jjpd}d |D}t%|j|z rt d t'j||j|j|j|j }||j|j|j|j|j|j|j tA|fS) N)r%z-functools.partial takes at least one argumentz>functools.partial needs at least to have some filled argumentsrz!Cannot infer the wrapped functionz&The wrapped function is not a functionr;cFh|]}t|t|jSr;) isinstancername).0params r z/_functools_partial_inference..fs9z%7T7T r!z,wrapped function received unknown parameters)rGlineno col_offsetr5)argsbody decoratorsreturnstype_comment_returnstype_comment_argsdoc_node)!rCallSite from_calllenpositional_argumentsrkeyword_argumentsnextinferr StopIterationrFrrrMr posonlyargs kwonlyargssetr PartialFunctionrGrKrLr5postinitrNrOrPrQrRrSiter) r7r%callnumber_of_positionalpartial_functioninferred_wrapped_functionexcfunction_parametersparameter_namess r_functools_partial_inferenceriFsC   ' 'g ' > >Dt899a!"QRRRq  )? ! L   03+$()9)?)?)?)P)P$Q$Q!! M *+++!s*++_==G!"EFFF / = =L!"JKKK % )  # % * / 52 % * 6 <" % * 5 ;    3O 4 !""_4R!"PQQQ. & +(/,7{  & + & +,7)16K3E*3 !# $ $$s5#BB7*B22B7boolc|jsdS|jjD]+}t|tst |drdS,dS)z=Check if the given function node is decorated with lru_cache.F lru_cacheT)rOr rFr_looks_like_functools_member)r7 decorators r_looks_like_lru_cacheros] ?u_* )T**   ' ; ? ? 44  5r!ct|jtr|jj|kSt|jtrD|jj|ko3t|jjto|jjjdkSdS)z9Check if the given Call node is a functools.partial call. functoolsF)rFfuncrrGrattrnameexpr)r7members rrmrms|$)T""(y~''$)Y'' I & ( 349>400 3 #{2 5r!r)rur)r%r&r<r=)r7rAr%r&r<rB)r<rj)-r9 __future__rcollections.abcrrqr itertoolsrastroidrrr r r r astroid.contextr astroid.exceptionsrrastroid.inference_tiprastroid.interpreterrastroid.managerrastroid.nodes.node_classesrrrrastroid.nodes.scoped_nodesr astroid.utilr LRU_CACHE FunctionModelrr@rirorm_looks_like_partialregister_transformr;r!rrsL @?""""""$$$$$$QQQQQQQQQQQQQQQQ,,,,,,BBBBBBBB//////++++++******HHHHHHHHHHHH222222(((((( ! LLLLLk/LLLD66666:>6%6%6%6%6%r        g:9MMM##%'< ##M.//r!