bg78UdZddlmZddlZddlZddlmZddlmZddl m Z m Z m Z ddl mZddlmZmZdd lmZmZmZdd lmZdd lmZmZmZmZmZmZmZm Z m!Z!m"Z"dd l#m$Z$m%Z%ej&d krddlm'Z'nddl(m'Z'ddhZ)hdZ*de+d<ddhZ,de+d<dZ-e.e/edgZ0e1dZ2dZ3d6dZ4d7dZ5d6dZ6 d7d8d%Z7d9d'Z8 d7d:d)Z9 d7d;d+Z:dd0Z=d d7d>d2Z?ddS)@z$Astroid hooks for typing.py support.) annotationsN)Iterator)partial)context extract_node inference_tip)_extract_single_node) PY38_PLUS PY39_PLUS)AttributeInferenceErrorInferenceErrorUseInferenceDefault)AstroidManager) Assign AssignName AttributeCallConst JoinedStrNameNodeNG SubscriptTuple)ClassDef FunctionDef))FinalTypeVarNewType>typing.NewTypetyping.TypeVartyping_extensions.TypeVarrTYPING_TYPEVARS_QUALIFIEDztyping.TypedDictztyping_extensions.TypedDictTYPING_TYPEDDICT_QUALIFIEDz class Meta(type): def __getitem__(self, item): return self @property def __args__(self): return () class {0}(metaclass=Meta): pass __all__)(ztyping.Hashableztyping.Awaitableztyping.Coroutineztyping.AsyncIterableztyping.AsyncIteratorztyping.Iterableztyping.Iteratorztyping.Reversiblez typing.Sizedztyping.Containerztyping.Collectionztyping.Callableztyping.AbstractSetztyping.MutableSetztyping.Mappingztyping.MutableMappingztyping.Sequenceztyping.MutableSequenceztyping.ByteStringz typing.Tuplez typing.Listz typing.Dequez typing.Setztyping.FrozenSetztyping.MappingViewztyping.KeysViewztyping.ItemsViewztyping.ValuesViewztyping.ContextManagerztyping.AsyncContextManagerz typing.Dictztyping.DefaultDictztyping.OrderedDictztyping.Counterztyping.ChainMapztyping.Generatorztyping.AsyncGeneratorz typing.Typeztyping.Patternz typing.Matchz? @classmethod def __class_getitem__(cls, item): return cls returnboolc|j}t|tr|jtvSt|t r|jtvSdS)NF)func isinstancerattrnameTYPING_TYPEVARSrname)noder*s k/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/astroid/brain/brain_typing.py$looks_like_typing_typevar_or_newtyper1ssL 9D$ ""0}//$,yO++ 5c$ t|j|}n!#ttf$r }t |d}~wwxYw|tvrt |jst t|jdtrt |jd d}tt|}||S)z8Infer a typing.TypeVar(...) or typing.NewType(...) call.rNr')nextr*inferr StopIterationrqnamer$argsr+r as_stringstriprTYPING_TYPE_TEMPLATEformat)r/ context_ittonr*exctypenames r0infer_typing_typevar_or_newtyperB|s+DIOOMO::;; M *+++!s*+ zz||444!! 9"!!$)A, **"!!y|%%''--c22H ,33H== > >D ::m: , ,,s(+A AA ct|tr|jtvSt|tr|jtvSt|t rt|jSdS)zLTry to figure out if a Subscript node *might* be a typing-related subscript.F) r+rr.TYPING_MEMBERSrr,r_looks_like_typing_subscriptvaluer/s r0rErEsg$+yN**$ ""/}..$ ""8+DJ777 5r2r/rctxcontext.InferenceContext | NoneIterator[ClassDef]c t|j}n!#ttf$r }t |d}~wwxYw|dr|tvrt t|tr|dvrtt}|g|j d<t|jtr\||jjvrNt!|jddr8|jj}||jj ||jj=t)|gSt+t,|dd}||S) z Infer a typing.X[...] subscript.Nztyping.>typing.Generictyping.Annotatedtyping_extensions.Annotated__class_getitem____cache.r4)r6rFr7r r8rr9 startswith TYPING_ALIASr+rr CLASS_GETITEM_TEMPLATElocalsparentbasesgetattrrPgetslotsiterrr=r>split)r/rHrFr@ func_to_addcaches r0infer_typing_attrr`s+TZ%%''(( M *+++!s*+ ;;== # #I . ."%++--<2O2O!!%""u{{}}9((++ABB -8M () t{H - - - ))) Y55* K'Eyy*++7$++,UG}} ,33EKKMM4G4G4L4LR4PQQ R RD ::c: " ""s&)AAAFunctionDef | ClassDefc8|tvS)z'Check if node is TypedDict FunctionDef.)r9r%rGs r0_looks_like_typedDictrcs ::<<5 55r2rcVtd}|g|jd<t|gS)Ndict__call__)r rVr\)r/rHr^s r0infer_old_typedDictrgs-'v..K*mDK  <<r2rctd|j|j|j}|t dggdt d}|g|jd<t|gS)z,Replace TypedDict FunctionDef with ClassDef. TypedDictr.lineno col_offsetrWreNrXbody decoratorsrf) rrkrlrWpostinitrr rVr\)r/rH class_defr^s r0infer_typedDictrrs~ {?{ I l6223"NNN&v..K$/=IZ   r2rct|jto6|jjdko&t|jdt tfS)z Returns True if the node corresponds to a call to _alias function. For example : MutableSet = _alias(collections.abc.MutableSet, T) :param node: call node _aliasr)r+r*rr.r:rrGs r0_looks_like_typing_aliasrusH 49d## INh &  ty|i%6 7 7 r2Nonecd} |dt||j}||_dS#t$rYdSwxYw)zJDisable the access to __class_getitem__ method for the node in parameters.cD|dkrtd||g|Ri|S)z Raises an AttributeInferenceError in case of access to __class_getitem__ method. Otherwise, just call origin_func. rOz'__class_getitem__ access is not allowed)r ) origin_funcattrr:kwargss r0 full_raiserz1_forbid_class_getitem_access..full_raisers? & & &)*STT T{41$111&111r2rON)rYrr )r/r|partial_raisers r0_forbid_class_getitem_accessr~si222   ())) !dl;;% "     s18 AAct|jtrBt|jjdkr%t|jjdt st  t|jd |}n/#t$r"}t|jd||d}~wwxYw|jjd}t|j |j|j|j}t|tr||ggd|jd}t"st|t$r.|js't"r@t|t(r+|jdkr t-t.}|g|jd<nt3|t5|gS) z Infers the call to _alias function Insert ClassDef, with same name as aliased class, in mro to simulate _GenericAlias. :param node: call node :param context: inference context rr4r/rNrjrmrO)r+rWrlentargetsrrr6r:r7r8r rr.rkrlrpr reltsrrFr rUrVr~r\)r/rHrese assign_namerqmaybe_type_varr^s r0infer_typing_aliasr s t{F + +"4;&''1,,$+-a0*==-"!D49Q<%%c%2233 DDD$)A,<<>K-8MI()   rct|toSt|jtr|jjdkp)t|jt o|jjdkS)Ncast)r+rr*rr.rr,rGs r0_looks_like_typing_castr~s_ dD ! ! 49d## % INf $ ) di + + ) I & ( r2Iterator[NodeNG]ct|jttfst t |j|}n!#ttf$r }t|d}~wwxYwt|tr0| dkst|j dkrt|j d|S)z>Q  !! 9Q<  c  * **s(AA1$A,,A1)r'r()N)r/rrHrIr'rJ)r/rar'r()r/rrHrIr'rJ)r/rrHrIr'rJ)r/rr'r()r/rr'rv)r/rrHrIr'rJ)r/rrHrIr'r)C__doc__ __future__rsystypingcollections.abcr functoolsrastroidrrrastroid.builderr astroid.constr r astroid.exceptionsr r rastroid.managerrastroid.nodes.node_classesrrrrrrrrrrastroid.nodes.scoped_nodesrr version_infortyping_extensionsr-r$__annotations__r%r=setrYrD frozensetrTrUr1rBrEr`rcrgrrrur~rrrrrregister_transformr2r0rs) +**"""""" $$$$$$8888888888000000........ +*****                        =<<<<<<<v''''''i($$$ &89V$WWWWW WWVY3344y)++ Z----(=A$#$#$#$#$#N6666<@?C      (    28<33333lD8<48<+++++*##M122( ## }}.//1M##--) * *,C N'']]?335JN''-- 3446K##--* + +-E##--+ , ,.Gr2