§ |<ˆj¢ãó —UdZddlmZddlZddlZddlZddlZddlZddlm Z m Z m Z ddl m Z ddlmZmZmZmZmZmZmZddlmZmZddlmZmZdd lmZmZdd lmZdd l m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&dd l'm(Z(dd l)m*Z*ddl+m,Z,ddl-m.Z.ddl/m0Z0m1Z1m2Z2m3Z3m4Z4ej5dkrddlm6Z6nddl7m6Z6er ddlm8Z8ddl)m9Z9ej5dkrddl m:Z:nddl;medej?¬¦«Z@edZAee>eAeeeejBeCgefZDee>eegej ee3e@fddffZEee>eegej e3dee2ffZFee>eGge0fZHejIdÕdÖd „¦«ZJdÕd×d#„ZKeL¦«ZMdÕdÖd$„ZNdÕdÖd%„ZOdÕdÖd&„ZPGd'„d(e*jQeejR¬)¦«ZSGd*„d+e.¦«ZTGd,„d-e*jUeTe*jQ¦«ZVGd.„d/e*jUeTe*jQ¦«ZWGd0„d1e*jUeT¦«ZXGd2„d3e*jY¦«ZZdØd5„Z[ dÙdÚd9„Z\Gd:„d;e*jQ¦«Z]Gd<„d=e*j^¦«Z_Gd>„d?e*jYe*j^¦«Z`Gd@„dAe*jYe*j^¦«ZaGdB„dCe*jYe*j^¦«ZbGdD„dEe.¦«ZcGdF„dGe.¦«ZdGdH„dIe*jUe*j^¦«ZeGdJ„dKe.¦«ZfGdL„dMe.¦«ZgGdN„dOe.¦«ZhGdP„dQe*jUe¦«ZiGdR„dSe*jUe*j^¦«ZjGdT„dUe.¦«ZkGdV„dWe*jQ¦«ZlGdX„dYe*jYe*j^¦«ZmGdZ„d[e.e¦«ZnGd\„d]e*j^¦«ZoGd^„d_e*jU¦«ZpGd`„dae*jU¦«ZqGdb„dce*jre*jYe*j^¦«ZsGdd„dee.¦«ZtGdf„dge*jue*jYe*j^¦«ZvGdh„diev¦«ZwGdj„dke.¦«ZxGdl„dme*jy¦«ZzGdn„doe.¦«Z{Gdp„dqe*jUe*j^¦«Z|Gdr„dse*jue*j^¦«Z}Gdt„due.¦«Z~Gdv„dwe*jy¦«ZGdx„dye.¦«Z€Gdz„d{e.¦«Z�Gd|„d}eS¦«ZBGd~„de*jUe*j^¦«Z‚Gd€„d�e*jUe*j^¦«ZƒGd‚„dƒe*j^¦«Z„Gd„„d…e*j^¦«Z…Gd†„d‡eS¦«Z†Gdˆ„d‰e.¦«Z‡GdŠ„d‹e*jQ¦«ZˆGdŒ„d�e.¦«Z‰GdŽ„d�e*jue*j^¦«ZŠGd�„d‘e*jue*j^¦«Z‹Gd’„d“e*jue*j^¦«ZŒGd”„d•eS¦«Z�Gd–„d—e.¦«ZŽGd˜„d™e*jue*j^¦«Z�Gdš„d›e*jue*jYe*j^¦«Z�Gdœ„d�e�¦«Z‘Gdž„dŸe.¦«Z’Gd „d¡e’¦«Z“Gd¢„d£e*jU¦«Z”Gd¤„d¥e.¦«Z•Gd¦„d§e.¦«Z–Gd¨„d©e*jY¦«Z—Gdª„d«e*jY¦«Z˜Gd¬„d­e.¦«Z™Gd®„d¯e*j^e*jr¦«ZšGd°„d±e.¦«Z›Gd²„d³e*jr¦«ZœGd´„dµe›¦«Z�Gd¶„d·e›¦«ZžGd¸„d¹e›¦«ZŸGdº„d»e*jYe›¦«Z Gd¼„d½e›¦«Z¡Gd¾„d¿e*jYe›¦«Z¢GdÀ„dÁe*jYe›¦«Z£Gd„dÃe›¦«Z¤e¥eBe¦e�e§ene¨e†e©d¦«eie©eª¦«eie©dĦ«eie«eieCeie¬eie­eieGeie®eii Z¯dÅe°dÆ<dÛdÌ„Z±dÜdЄZ²dÝdÓ„Z³dS)Þz;Module for some node classes. More nodes in scoped_nodes.pyé)Ú annotationsN)Ú GeneratorÚIterableÚMapping)Ú lru_cache)Ú TYPE_CHECKINGÚAnyÚCallableÚClassVarÚOptionalÚTypeVarÚUnion)Ú decoratorsÚutil)ÚInstanceÚ _infer_stmts)Ú_EMPTY_OBJECT_MARKERÚContext)ÚInferenceContext)ÚAstroidIndexErrorÚAstroidTypeErrorÚAstroidValueErrorÚInferenceErrorÚ NoDefaultÚParentMissingError)ÚAstroidManager)Ú _base_nodes)Ú OP_PRECEDENCE)ÚNodeNG)ÚConstFactoryResultÚ InferBinaryOpÚInferenceErrorInfoÚInferenceResultÚSuccessfulInferenceResult)éé)ÚLiteral©Únodes)ÚLocalsDictNodeNG)Úcached_property)ÚcachedpropertyÚreturnÚboolcóF—t|tt¦«¦«S©N)Ú isinstanceÚtupleÚ CONST_CLS©Úvalues úl/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/astroid/nodes/node_classes.pyÚ _is_constr79s€Ý �e�U¥9Ñ-Ô-Ñ .Ô .Ð.óÚ_NodesT)ÚboundÚ_BadOpMessageT)ÚListÚTupleÚ AssignNameÚ AssignAttrNÚcontextúInferenceContext | Nonec#óÆK—t|ttf¦«r8|jD]+}|tjur|V—Œt ||¦«Ed{V—†Œ,||dœSt| |¦«tj¦«}||ur |V—||dœS| |¦«D]7}t|tj ¦«r|V—Œ!t ||¦«Ed{V—†Œ8||dœS)zˆrecursively generate nodes inferred by the given statement. If the inferred value is a list or a tuple, recurse on the elements N)Únoder@) r1r<r=ÚeltsrÚ UninferableÚ unpack_inferÚnextÚinferÚUninferableBase)Ústmtr@ÚeltÚinferreds r6rFrFUs*èè€õ �$��u˜ Ñ&Ô&ð2Ø”9ð 2ð 2ˆCØ•dÔ&Ð&Ð&Ø� � � ØÝ# C¨Ñ1Ô1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1بÐ1Ð1Ð1å�D—J’J˜wÑ'Ô'­Ô)9Ñ:Ô:€HØ�4ÐÐØˆˆˆØ¨Ð1Ð1Ð1à—J’J˜wÑ'Ô'ð7ð7ˆÝ �h¥Ô 4Ñ 5Ô 5ð 7؈NˆNˆNˆNå# H¨gÑ6Ô6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6à WÐ -Ð -Ð-r8Ú exceptionsúlist[str] | Nonecó—i}i}|}| ¦«D]}d||<|||<|}Œ|}| ¦«D�]K}||v�rAt|t¦«rK|€I| |¦«\}}| ||¦«\} } d| |fvrdS| |krdSnÞt|t¦«rÉ| |¦«\}}| ||¦«\} } | |urw|dko| dko| |¦«} |dko | dko|| |¦«} |dko| dk} |dko| dk}t | | | |f¦«rdSn|dkr| dkr |||ucSdS|}�ŒMdS) aßreturn true if the two given statements are mutually exclusive `exceptions` may be a list of exception names. If specified, discard If branches and check one of the statement is in an exception handler catching one of the given exceptions. algorithm : 1) index stmt1's parents 2) climb among stmt2's parents until we find a common parent 3) if the common parent is a If or TryExcept statement, look if nodes are in exclusive branches éNÚtestFTÚhandlersÚbodyÚorelse)Únode_ancestorsr1ÚIfÚ locate_childÚ TryExceptÚcatchÚany)Ústmt1Ústmt2rMÚ stmt1_parentsÚchildrenÚpreviousrCÚc2attrÚc2nodeÚc1attrÚc1nodeÚ first_in_body_caught_by_handlersÚ!second_in_body_caught_by_handlersÚfirst_in_else_other_in_handlersÚ second_in_else_other_in_handlerss r6Ú are_exclusiverhpsG€ð€MØ€HØ€HØ×$Ò$Ñ&Ô&ððˆØˆ �dÑØ!ˆ�‰Øˆˆà€HØ×$Ò$Ñ&Ô&ð.ñ.ˆØ �=Ð Ñ õ˜$¥Ñ#Ô#ð( :¨ Ð(:Ø!%×!2Ò!2°8Ñ!<Ô!<‘�˜Ø!%×!2Ò!2°8¸D´>Ñ!BÔ!B‘�˜Ø˜f fÐ-Ð-Ð-ð!˜5˜5ؘVÒ#Ð#à˜4˜4ð$õ˜D¥)Ñ,Ô,ð :Ø!%×!2Ò!2°8Ñ!<Ô!<‘�˜Ø!%×!2Ò!2°8¸D´>Ñ!BÔ!B‘�˜Ø Ð'Ð'à *Ò,ð7Ø" fÒ,ð7à$ŸNšN¨:Ñ6Ô6ð5ð  &Ò(ð=Ø" jÒ0ð=à$ TœN×0Ò0°Ñ<Ô<ð6ð  *Ò,ÐC°¸8Ò1Cð4ð (Ò*ÐC¨v¸Ò/Cð5õà<Ø=Ø;Ø<ð ñôð$ð $˜t˜tð$ð˜zÒ)Ð)¨f¸ Ò.BÐ.BØ#¨8°D¬>Ð9Ð9Ð9Ð9Ø�5�5؈‰Ø ˆ5r8có¦—t|t¦«r1t|jtt d¦«f¦«r|jSn…|€dS t | |¬¦«¦«}t|t¦«r0t|jtt d¦«f¦«r|jSn#ttf$rYnwxYwtS)z'Get the value of the given slice index.N©r@) r1ÚConstr5ÚintÚtyperGrHrÚ StopIterationÚ_SLICE_SENTINEL)Úindexr@rLs r6Ú _slice_valuerq¾s×€õ�%�ÑÔð*Ý �e”k¥C­¨d©¬Ð#4Ñ 5Ô 5ð Ø”;Ð ð à ˆØˆtð  *ݘEŸKšK°˜KÑ8Ô8Ñ9Ô9ˆHõ˜(¥EÑ*Ô*ð *ݘhœn­sµD¸±J´JÐ.?Ñ@Ô@ð*Ø#œ>Ð)øøõ ¥ Ð.ð ð ð Ø ˆDð øøøõ ÐsÁ #B5Â5C ÃC có —t|j|¦«}t|j|¦«}t|j|¦«}t d„|||fD¦«¦«rt |||¦«St d||j|¬¦«‚)Nc3ó(K—|] }|tuV—ŒdSr0)ro©Ú.0Úelems r6ú z_infer_slice..Ýs'èè€Ð HÐ H¨4ˆ4•Ð &Ð HÐ HÐ HÐ HÐ HÐ Hr8z'Could not infer slice used in subscript©ÚmessagerCrpr@)rqÚlowerÚupperÚstepÚallÚslicerÚparent)rCr@rzr{r|s r6Ú _infer_slicer€Ùs’€Ý ˜œ WÑ -Ô -€EÝ ˜œ WÑ -Ô -€EÝ ˜œ  7Ñ +Ô +€DÝ Ð HÐ H°E¸5À$Ð3GÐ HÑ HÔ HÑHÔHð)Ý�U˜E 4Ñ(Ô(Ð(å Ø9Ø ØŒkØð  ñ ô ðr8cóê— t|t¦«r@t||¬¦«}| ¦«}|||_|j|_|St|t ¦«r ||jSnh#t$r}td|||¬¦«|‚d}~wt$r}td|||¬¦«|‚d}~wt$r}td|||¬¦«|‚d}~wwxYwtd|›d�¦«‚) zHGet a slice or an item, using the given *index*, for the given sequence.rjz&Slice {index!r} cannot index containerrxNzIndex {index!s} out of rangeúType error {error!r}zCould not use ú as subscript index)r1ÚSlicer€Ú __class__rDrrkr5Ú ValueErrorrÚ IndexErrorrÚ TypeErrorr)ÚinstancerDrpr@Ú index_sliceÚnew_clsÚexcs r6Ú_container_getitemr�èsY€ðÝ �e�UÑ #Ô #ð Ý& u°gÐ>Ñ>Ô>ˆKØ×(Ò(Ñ*Ô*ˆGØ  Ô,ˆGŒLØ%œ_ˆGŒN؈NÝ �e�UÑ #Ô #ð %ؘœ Ô$Ð $ð %øå ðððÝØ<ØØØð  ñ ô ð ð  øøøøõ ðððÝØ2ØØØð  ñ ô ð ð  øøøøõ ðððÝØ*°ÀÐPWð ñ ô àð øøøøðøøøõ ÐF¨EÐFÐFÐFÑ GÔ GÐGs6‚AA:Á!A:Á: CÂB CÂ%B9Â9 CÃCÃCcó�‡—eZdZdZdZ ddddœdˆfd„Zdd„Zedd„¦«Zd„Z ddd„Z e j d d„¦«Z d„ZˆxZS)!Ú BaseContainerz.Base class for Set, FrozenSet, Tuple and List.©rDN©Ú end_linenoÚend_col_offsetÚlinenoú int | NoneÚ col_offsetrú NodeNG | Noner’r“r-ÚNonecód•—g|_ t¦« |||||¬¦«dS©áÐ :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. ©r”r–r’r“rN)rDÚsuperÚ__init__©Úselfr”r–rr’r“r…s €r6ržzBaseContainer.__init__sIø€ð,#%ˆŒ Ø'å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rDú list[NodeNG]có—||_dS)zoDo some setup after initialisation. :param elts: The list of elements the that node contains. Nr�)r rDs r6ÚpostinitzBaseContainer.postinit/ó€ð ˆŒ ˆ ˆ r8cóP—|¦«}|€g|_nd„|D¦«|_|S)aCreate a node of this type from the given list of elements. :param elts: The list of elements that the node should contain. :type elts: list(NodeNG) :returns: A new node containing the given elements. :rtype: NodeNG NcóN—g|]"}t|¦«rt|¦«n|‘Œ#S©©r7Ú const_factory)ruÚes r6ú z/BaseContainer.from_elements..Ds0€ÐOÐOÐOÀQ­Y°q©\¬\Ð@� qÑ)Ô)Ð)¸qÐOÐOÐOr8r�)ÚclsrDrCs r6Ú from_elementszBaseContainer.from_elements6s7€ðˆs‰uŒuˆØ ˆ<؈DŒIˆIàOÐOÈ$ÐOÑOÔOˆDŒI؈ r8có—|jS)z‰An iterator over the elements this node contains. :returns: The contents of this node. :rtype: iterable(NodeNG) r�©r s r6ÚiteredzBaseContainer.iteredGs €ð ŒyÐr8r@rAr.có*—t|j¦«S)zeDetermine the boolean value of this node. :returns: The boolean value of this node. )r.rD©r r@s r6Ú bool_valuezBaseContainer.bool_valueOs€õ �D”I‰ŒÐr8Ústrcó—dS)úeGet the name of the type that this node represents. :returns: The name of the type. Nr§r¯s r6ÚpytypezBaseContainer.pytypeVs€€€r8c#ó$K—|jEd{V—†dSr0r�r¯s r6Ú get_childrenzBaseContainer.get_children]s&èè€Ø”9ÐÐÐÐÐÐÐÐÐr8©NNN© r”r•r–r•rr—r’r•r“r•r-r˜)rDr¡r-r˜r0)r@rAr-r.©r-r´)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú_astroid_fieldsržr£Ú classmethodr­r°r³ÚabcÚabstractmethodr·r¹Ú __classcell__©r…s@r6r�r� súø€€€€€Ø8Ð8à€Oð"Ø!%Ø $ð  ð "&Ø%)ð ð ð ð ð ð ð ð ðBðððððððñ„[ðð ðððððððð Ôð ð ð ñÔð ð ððððððr8r�)Ú metaclasscó@—eZdZdZe¦«d d„¦«Zd„ZdS) Ú LookupMixInz+Mixin to look up a name in the right scope.Únamer´r-ú%tuple[LocalsDictNodeNG, list[NodeNG]]cóR—| ¦« ||¦«S)a#Lookup where the given variable is assigned. The lookup starts from self's scope. If self is not a frame itself and the name is found in the inner frame locals, statements will be filtered to remove ignorable statements according to self's location. :param name: The name of the variable to find assignments for. :returns: The scope node and the list of assignments associated to the given name according to the scope where it has been found (locals, globals or builtin). )ÚscopeÚ scope_lookup©r rÊs r6ÚlookupzLookupMixIn.lookupes"€ð�zŠz‰|Œ|×(Ò(¨¨tÑ4Ô4Ð4r8cóp—| |¦«\}}t¦«}t|||¦«S)a Lookup the inferred values of the given variable. :param name: The variable name to find values for. :type name: str :returns: The inferred values of the statements returned from :meth:`lookup`. :rtype: iterable )rÐrr)r rÊÚframeÚstmtsr@s r6ÚilookupzLookupMixIn.ilookupus6€ð—{’{ 4Ñ(Ô(‰ ˆˆuÝ"Ñ$Ô$ˆÝ˜E 7¨EÑ2Ô2Ð2r8N)rÊr´r-rË)r½r¾r¿rÀrrÐrÔr§r8r6rÉrÉbsM€€€€€Ø5Ð5à€Y�[„[ð 5ð 5ð 5ñ„[ð 5ð 3ð 3ð 3ð 3ð 3r8rÉcó~‡—eZdZUdZdZded<ejd¬¦« ddddœdˆfd„¦«Zded<ˆxZ S)r>aVariation of :class:`ast.Assign` representing assignment to a name. An :class:`AssignName` is the name of something that is assigned to. This includes variables defined in a function signature or in a loop. >>> import astroid >>> node = astroid.extract_node('variable = range(10)') >>> node >>> list(node.get_children()) [, ] >>> list(node.get_children())[0].as_string() 'variable' ©rÊzClassVar[InferLHS[AssignName]]Ú infer_lhsr´Nr‘rÊú str | Noner”r•r–rr—r’r“r-r˜cód•—||_ t¦« |||||¬¦«dS)a :param name: The name that is assigned to. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. rœN©rÊr�rž©r rÊr”r–rr’r“r…s €r6ržzAssignName.__init__›sIø€ð4!%ˆŒ Ø+å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8z'ClassVar[AssignedStmtsCall[AssignName]]Úassigned_stmts©NNNN©rÊrØr”r•r–r•rr—r’r•r“r•r-r˜) r½r¾r¿rÀÚ _other_fieldsÚ__annotations__rÚ!deprecate_default_argument_valuesržrÅrÆs@r6r>r>‡s«ø€€€€€€ð ð ð€Mà-Ð-Ð-Ñ-à1€ZÔ1°uÐ=Ñ=Ô=ð Ø!Ø!%Ø $ð " ð"&Ø%)ð" ð" ð" ð" ð" ð" ð" ñ>Ô=ð" ðH<Ð;Ð;Ñ;ððððr8r>cóh‡—eZdZdZdZejd¬¦« ddddœdˆfd„¦«ZˆxZS)ÚDelNameahVariation of :class:`ast.Delete` representing deletion of a name. A :class:`DelName` is the name of something that is deleted. >>> import astroid >>> node = astroid.extract_node("del variable #@") >>> list(node.get_children()) [] >>> list(node.get_children())[0].as_string() 'variable' rÖr´Nr‘rÊrØr”r•r–rr—r’r“r-r˜cód•—||_ t¦« |||||¬¦«dS)a :param name: The name that is being deleted. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. rœNrÚrÛs €r6ržzDelName.__init__ÕsIø€ð4!%ˆŒ Ø-å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rÝrÞ© r½r¾r¿rÀrßrráržrÅrÆs@r6rãrãÆsŽø€€€€€ð ð ð€Mà1€ZÔ1°uÐ=Ñ=Ô=ð Ø!Ø!%Ø $ð " ð"&Ø%)ð" ð" ð" ð" ð" ð" ð" ñ>Ô=ð" ð" ð" ð" ð" r8rãcón‡—eZdZdZdZejd¬¦« ddddœdˆfd„¦«Zd„ZˆxZ S)ÚNameaÊClass representing an :class:`ast.Name` node. A :class:`Name` node is something that is named, but not covered by :class:`AssignName` or :class:`DelName`. >>> import astroid >>> node = astroid.extract_node('range(10)') >>> node >>> list(node.get_children()) [, ] >>> list(node.get_children())[0].as_string() 'range' rÖr´Nr‘rÊrØr”r•r–rr—r’r“r-r˜cód•—||_ t¦« |||||¬¦«dS)a  :param name: The name that this node refers to. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. rœNrÚrÛs €r6ržz Name.__init__ sIø€ð4!%ˆŒ Ø0å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8c#ótK—|V—| ¦«D]}| ¦«Ed{V—†ŒdSr0)r¹Ú_get_name_nodes)r Ú child_nodes r6rêzName._get_name_nodes2s[èè€Øˆ ˆ ˆ à×+Ò+Ñ-Ô-ð 4ð 4ˆJØ!×1Ò1Ñ3Ô3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3ð 4ð 4r8rÝrÞ) r½r¾r¿rÀrßrráržrêrÅrÆs@r6rçrçûsžø€€€€€ð ð ð€Mà1€ZÔ1°uÐ=Ñ=Ô=ð Ø!Ø!%Ø $ð " ð"&Ø%)ð" ð" ð" ð" ð" ð" ð" ñ>Ô=ð" ðH4ð4ð4ð4ð4ð4ð4r8rçcó쇗eZdZUdZdZdZded<ded<ded<ded< d6d7ˆfd„ Z d8d9d#„Zd$ed%< d&„Z e ˆfd'„¦«Z e d(„¦«Z d d)œd:d-„Z d;d/„Zd0„ZdÚ ArgumentsaRClass representing an :class:`ast.arguments` node. An :class:`Arguments` node represents that arguments in a function definition. >>> import astroid >>> node = astroid.extract_node('def foo(bar): pass') >>> node >>> node.args ) ÚargsÚdefaultsÚ kwonlyargsÚ posonlyargsÚposonlyargs_annotationsÚ kw_defaultsrÚvarargannotationÚkwargannotationÚkwonlyargs_annotationsÚtype_comment_argsÚtype_comment_kwonlyargsÚtype_comment_posonlyargs)ÚvarargÚkwargr˜r”r–r’r“NrúrØrûrr—r-có•—t¦« |¬¦«||_ ||_ | | | g|_ | | g|_ g|_ g|_ g|_ g|_ d|_ d|_ dS)zÑ :param vararg: The name of the variable length arguments. :param kwarg: The name of the variable length keyword arguments. :param parent: The parent node in the syntax tree. ©rN) r�ržrúrûrñròrör÷rørùrôrõ)r rúrûrr…s €r6ržzArguments.__init__hsÑø€õ ‰Œ×Ò ÐÑ'Ô'Ð'à"(ˆŒ Ø8à!&ˆŒ Ø@à Ð*ð ð Ð*ØOà Ð)ØGà-/ˆÔØAà Ð4ð ð Ð-ØPà<>ˆÔ$ØUà;=ˆÔ#ØSà68ˆÔð ð =?ˆÔ$ð ð >@ˆÔ%ð ð 04ˆÔØDà.2ˆÔØLÐLr8rîúlist[AssignName] | Nonerïúlist[NodeNG] | Nonerðúlist[AssignName]róúlist[NodeNG | None] | Nonerúlist[NodeNG | None]rñröròrôrõr÷rørùcóØ—||_||_||_|�||_||_||_|�||_|�||_| |_| |_ | �| |_ | �| |_ | � | |_ dSdS)a Do some setup after initialisation. :param args: The names of the required arguments. :param defaults: The default values for arguments that can be passed positionally. :param kwonlyargs: The keyword arguments that cannot be passed positionally. :param posonlyargs: The arguments that can only be passed positionally. :param kw_defaults: The default values for keyword arguments that cannot be passed positionally. :param annotations: The type annotations of arguments that can be passed positionally. :param kwonlyargs_annotations: The type annotations of arguments that cannot be passed positionally. This should always be passed in Python 3. :param posonlyargs_annotations: The type annotations of arguments that can only be passed positionally. This should always be passed in Python 3. :param varargannotation: The type annotation for the variable length arguments. :param kwargannotation: The type annotation for the variable length keyword arguments. :param type_comment_args: The type annotation, passed by a type comment, of each argument. :param type_comment_args: The type annotation, passed by a type comment, of each keyword only argument. :param type_comment_args: The type annotation, passed by a type comment, of each positional argument. N) rîrïrðrñrórröròrôrõr÷rørù)r rîrïrðrórrñröròrôrõr÷rørùs r6r£zArguments.postinit½sœ€ðtˆŒ Ø ˆŒ Ø$ˆŒØ Ð "Ø*ˆDÔ Ø&ˆÔØ&ˆÔØ !Ð -Ø*@ˆDÔ 'Ø "Ð .Ø+BˆDÔ (Ø 0ˆÔØ.ˆÔØ Ð (Ø%6ˆDÔ "Ø "Ð .Ø+BˆDÔ (Ø #Ð /Ø,DˆDÔ )Ð )Ð )ð 0Ð /r8z&ClassVar[AssignedStmtsCall[Arguments]]rÜcó—|j|ur|SdSr0rý©r rÒrÊs r6Ú _infer_namezArguments._infer_names€Ø Œ;˜%РР؈K؈tr8cób•—t¦«j}t||jjpd¦«S)zaThe first line that this node appears on in the source code. :type: int or None r)r�Ú fromlinenoÚmaxr)r r”r…s €r6rzArguments.fromlinenos+ø€õ ‘”Ô#ˆÝ�6˜4œ;Ô1Ð6°QÑ7Ô7Ð7r8cób—ttj|jpd|jpd¦«¦«S)zYGet all the arguments for this node, including positional only and positional and keywordr§)ÚlistÚ itertoolsÚchainrñrîr¯s r6Ú argumentszArguments.argumentss,€õ•I”O TÔ%5Ð%;¸¸d¼i¸oÈ2ÑNÔNÑOÔOÐOr8©Úskippable_namesrúset[str] | Noner´c óX—g}g}|j}|jrW|jpg}|jt|¦« d…}|jdt|j¦«t|¦«z …}|jrE| t |j||j|¬¦«¦«| d¦«|jr:| t |j|t|dd¦«|¬¦«¦«|jr| d|j›�¦«|j rQ|js| d¦«| t |j |j |j |¬¦«¦«|j r| d|j ›�¦«d  |¦«S)zoGet the arguments formatted as string. :returns: The formatted arguments. :rtype: str Nrú/rÚ*ú**ú, )rïrîÚlenrñÚappendÚ _format_argsròÚgetattrrúrðrórörûÚjoin)r rÚresultÚpositional_only_defaultsÚpositional_or_keyword_defaultsrîs r6Ú format_argszArguments.format_args#sÚ€ð ˆØ#%Ð Ø)-¬Ð&Ø Œ=ð WØ”9�? ˆDØ-1¬]½CÀ¹I¼I¸:¸<¸<Ô-HÐ *Ø'+¤}Ð5Uµs¸4¼=Ñ7IÔ7IÍCÐPTÉIÌIÑ7UÐ5UÔ'VÐ $à Ô ð Ø �MŠMÝØÔ$Ø,ØÔ0Ø$3ð ñôñ ô ð ð �MŠM˜#Ñ Ô Ð Ø Œ9ð Ø �MŠMÝØ”IØ2ݘD -°Ñ6Ô6Ø$3ð ñôñ ô ð ð Œ;ð -Ø �MŠMÐ+˜dœkÐ+Ð+Ñ ,Ô ,Ð ,Ø Œ?ð Ø”;ð #Ø— ’ ˜cÑ"Ô"Ð"Ø �MŠMÝØ”OØÔ$ØÔ/Ø$3ð ñôñ ô ð ð Œ:ð -Ø �MŠMÐ+˜tœzÐ+Ð+Ñ ,Ô ,Ð ,Ø�yŠy˜Ñ Ô Ð r8úYtuple[dict[str, tuple[str | None, str | None]], dict[str, tuple[str | None, str | None]]]có‚—i}i}g}|j}|jrW|jpg}|jt|¦« d…}|jdt|j¦«t|¦«z …}t|j¦«D]R\}}|j|d} }|�| ¦«}|r|| ¦«} || f||j<ŒSt|j¦«D]‰\}} |j|d} }|�| ¦«}|rQt|j¦«t|¦«z } || z } | dkr"|| �||  ¦«} || f|| j<ŒŠ|j r)|j }|�| ¦«}|df||j <t|j ¦«D]W\}} |j |}|�| ¦«}|j |} | �|  ¦«} || f|| j<ŒX|jr)|j}|�| ¦«}|df||j<||fS)ayGet the arguments as dictionary with information about typing and defaults. The return tuple contains a dictionary for positional and keyword arguments with their typing and their default value, if any. The method follows a similar order as format_args but instead of formatting into a string it returns the data that is used to do so. Néÿÿÿÿ)rïrîrÚ enumeraterñròÚ as_stringrÊrrúrôrðrörórûrõ)r Úpos_onlyÚkw_onlyrrrîrpÚposonlyÚ annotationÚdefaultÚargÚdefaults_offsetÚ default_indexrûs r6Ú_get_arguments_datazArguments._get_arguments_dataUs›€ð>@ˆØ<>ˆð$&Ð Ø)-¬Ð&Ø Œ=ð WØ”9�? ˆDØ-1¬]½CÀ¹I¼I¸:¸<¸<Ô-HÐ *Ø'+¤}Ð5Uµs¸4¼=Ñ7IÔ7IÍCÐPTÉIÌIÑ7UÐ5UÔ'VÐ $å'¨Ô(8Ñ9Ô9ð ;ð ;‰NˆE�7Ø"&Ô">¸uÔ"EÀt˜ˆJØÐ%Ø'×1Ò1Ñ3Ô3� Ø'ð FØ2°5Ô9×CÒCÑEÔE�Ø&0°'Ð%:ˆH�W”\Ñ "Ð "å# D¤IÑ.Ô.ð 7ð 7‰JˆE�3Ø"&Ô"2°5Ô"9¸4˜ˆJØÐ%Ø'×1Ò1Ñ3Ô3� Ø-ð XÝ"% d¤i¡.¤.µ3Ð7UÑ3VÔ3VÑ"V�Ø %¨Ñ 7� à! BÒ&Ð&Ø6°}ÔEÐQà<¸]ÔK×UÒUÑWÔW�GØ",¨gÐ!6ˆH�S”XÑ Ð à Œ;ð 7ØÔ.ˆJØÐ%Ø'×1Ò1Ñ3Ô3� Ø%/°Ð$6ˆH�T”[Ñ !å% d¤oÑ6Ô6ð 8ð 8‰LˆE�5ØÔ4°UÔ;ˆJØÐ%Ø'×1Ò1Ñ3Ô3� ØÔ& uÔ-ˆGØÐ"Ø!×+Ò+Ñ-Ô-�Ø#-¨wÐ"7ˆG�E”JÑ Ð à Œ:ð 5ØÔ-ˆJØÐ%Ø'×1Ò1Ñ3Ô3� Ø#-¨tÐ"4ˆG�D”JÑ à˜Ð Ð r8cóN—|j}t||¦«d}|�:|t|¦«t|j¦«z z }|dkr |j|St||j¦«d}|�|j|� |j|St |j|¬¦«‚)zÿGet the default value for an argument. :param argname: The name of the argument to get the default value for. :type argname: str :raises NoDefault: If there is no default value defined for the given argument. rN)ÚfuncrÊ)rÚ _find_argrrïrðrórr)r ÚargnamerîrpÚidxs r6Ú default_valuezArguments.default_valuešs¦€ðŒ~ˆÝ˜' 4Ñ(Ô(¨Ô+ˆØ Ð Ø�3˜t™9œ9¥s¨4¬=Ñ'9Ô'9Ñ9Ñ:ˆCØ�aŠxˆxØ”} SÔ)Ð)ݘ' 4¤?Ñ3Ô3°AÔ6ˆØ Ð  Ô!1°%Ô!8Ð!DØÔ# EÔ*Ð *ݘTœ[¨wÐ7Ñ7Ô7Ð7r8r.cóÀ—||jkrdS||jkrdS| |d¬¦«ddup%|jot ||jd¬¦«dduS)zÉCheck if the given name is defined in the arguments. :param name: The name to check for. :type name: str :returns: Whether the given name is defined in the arguments, T)ÚrecrPN)rúrûÚ find_argnamerðr0rÏs r6Ú is_argumentzArguments.is_argument®s|€ð �4”;Ò Ð Ø�4Ø �4”:Ò Ð Ø�4à × Ò ˜d¨Ð Ñ -Ô -¨aÔ 0¸Ð <ð JØŒðJݘ$ ¤°TÐ:Ñ:Ô:¸1Ô=ÀTÐIð r8Fcó@—|jrt||j|¦«SdS)a�Get the index and :class:`AssignName` node for given name. :param argname: The name of the argument to search for. :type argname: str :param rec: Whether or not to include arguments in unpacked tuples in the search. :type rec: bool :returns: The index and node for the argument. :rtype: tuple(str or None, AssignName or None) ©NN)rr0)r r1r5s r6r6zArguments.find_argnameÀs'€ð Œ>ð ;ݘW d¤n°cÑ:Ô:Ð :؈zr8c#óLK—|jpdEd{V—†|jD]}|�|V—Œ |jpdEd{V—†|j� |jEd{V—†|jEd{V—†|jpdD]}|�|V—Œ |jD]}|�|V—Œ |j� |jV—|j� |jV—|j D]}|�|V—Œ dS©Nr§) rñròrîrïrðrórrôrõrö)r rKs r6r¹zArguments.get_childrenÑsCèè€ØÔ#Ð) rÐ)Ð)Ð)Ð)Ð)Ð)Ð)àÔ/ð ð ˆC؈Ø� � � øà”9�? Ð"Ð"Ð"Ð"Ð"Ð"Ð"à Œ=Ð $Ø”}Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø”?Ð"Ð"Ð"Ð"Ð"Ð"Ð"àÔ#Ð) rð ð ˆC؈Ø� � � øàÔ#ð ð ˆC؈Ø� � � øà Ô Ð ,ØÔ'Ð 'Ð 'Ð 'à Ô Ð +ØÔ&Ð &Ð &Ð &àÔ.ð ð ˆC؈Ø� � � øð ð r8rº)rúrØrûrØrr—r-r˜)NNNNNNNN)rîrþrïrÿrðrrórrrrñrþrörròrrôr—rõr—r÷rrørrùrr-r˜©rrr-r´)r-r ©r-r.©F)r½r¾r¿rÀrÁrßràržr£rr+rrrr-r3r7r6r¹rÅrÆs@r6rírí9sËø€€€€€€ð ð ð.€Oð (€Mà€L€L�LØÐÐÑØÐÐÑØÐÐÑð"Ø Ø $ð RMðRMðRMðRMðRMðRMðRMðx04Ø=AØ>BØ*.Ø)-Ø8<Ø>BØ?CðLEðLEðLEðLEðLEð\;Ð:Ð:Ñ:ððððð ð8ð8ð8ð8ñ„_ð8ððPðPñ„_ðPðAEð0!ð0!ð0!ð0!ð0!ð0!ðdC!ðC!ðC!ðC!ðJ8ð8ð8ð( ð ð ð ð$ðððð"ððððððr8ríFcóÄ—t|¦«D]O\}}t|t¦«r$|r!t||j¦«}|d�|cSŒ>|j|kr||fcSŒPdS)Nrr9)r#r1r=r0rDrÊ)r1rîr5Úir*Úfounds r6r0r0ñs~€Ý˜D‘/”/ðð‰ˆˆ3Ý �c�5Ñ !Ô !ð Øð !Ý! '¨3¬8Ñ4Ô4�ؘ”8Ð'Ø �L�L�LøØ ŒX˜Ò Ð Ø�c�6ˆMˆMˆMð!à ˆ:r8rrr´cóŒ—|€t¦«}g}|€dS|€g}|�t|¦«t|¦«z }tj||¦«}t |¦«D]Ð\}\}} |j|vrŒt |t¦«r,| dt|j ¦«›d�¦«ŒS|j} d} | �| d|   ¦«zz } d} | | ¦«|�?||kr9|||z �.|dxx| |||z   ¦«zz cc<ŒÑd  |¦«S) NÚú(ú)ú=z: z = r"r) Úsetrr Ú zip_longestr#rÊr1r=rrrDr$r) rîrïrrÚvaluesÚdefault_offsetÚpackedr@r*r(r1Ú default_seps r6rrýst€ðÐÝ™%œ%ˆØ €FØ €|؈rØÐ؈ ØÐݘT™œ¥S¨¡]¤]Ñ2ˆÝ Ô " 4¨Ñ 5Ô 5€FÝ )¨&Ñ 1Ô 1ðYðYÑˆÑ ˆC�Ø Œ8�Ð &Ð &Ø Ý �c�5Ñ !Ô !ð YØ �MŠMÐ7�l¨3¬8Ñ4Ô4Ð7Ð7Ð7Ñ 8Ô 8Ð 8Ð 8à”hˆG؈KØÐ%ؘ4 *×"6Ò"6Ñ"8Ô"8Ñ8Ñ8�Ø#� Ø �MŠM˜'Ñ "Ô "Ð "àÐ#¨¨^Ò(;Ð(;ؘA Ñ.Ô/Ð;ؘ2�J�J”J +°¸¸^Ñ9KÔ0L×0VÒ0VÑ0XÔ0XÑ"XÑX�J�J‘JøØ �9Š9�VÑ Ô Ðr8c󔇗eZdZUdZdZdZded<ejd¬¦« ddddœdˆfd„¦«Z ddd„Z ded< d„Z ˆxZ S)r?a‘Variation of :class:`ast.Assign` representing assignment to an attribute. >>> import astroid >>> node = astroid.extract_node('self.attribute = range(10)') >>> node >>> list(node.get_children()) [, ] >>> list(node.get_children())[0].as_string() 'self.attribute' ©Úexpr©ÚattrnamezClassVar[InferLHS[AssignAttr]]r×r´Nr‘rQrØr”r•r–rr—r’r“r-r˜cót•—d|_ ||_ t¦« |||||¬¦«dS)a :param attrname: The name of the attribute being assigned to. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. Nrœ©rOrQr�rž©r rQr”r–rr’r“r…s €r6ržzAssignAttr.__init__/sSø€ð4$(ˆŒ Ø?à$,ˆŒ Ø:å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rOcó—||_dS)ztDo some setup after initialisation. :param expr: What has the attribute that is being assigned to. NrN©r rOs r6r£zAssignAttr.postinitWr¤r8z'ClassVar[AssignedStmtsCall[AssignAttr]]rÜc#óK—|jV—dSr0rNr¯s r6r¹zAssignAttr.get_childrencóèè€ØŒiˆˆˆˆˆr8rÝ©rQrØr”r•r–r•rr—r’r•r“r•r-r˜r0©rOr—r-r˜) r½r¾r¿rÀrÁrßràrráržr£r¹rÅrÆs@r6r?r?sÞø€€€€€€ð ð ð €OØ!€Mà-Ð-Ð-Ñ-à1€ZÔ1¸5ÐAÑAÔAð $Ø!Ø!%Ø $ð % ð"&Ø%)ð% ð% ð% ð% ð% ð% ð% ñBÔAð% ðNððððð<Ð;Ð;Ñ;ððððððððr8r?cóH‡—eZdZdZdZ ddddœdˆfd„Zddd„Zd„ZˆxZS)ÚAssertaClass representing an :class:`ast.Assert` node. An :class:`Assert` node represents an assert statement. >>> import astroid >>> node = astroid.extract_node('assert len(things) == 10, "Not enough things"') >>> node ©rQÚfailNr‘r”r•r–rr—r’r“r-r˜cót•—d|_ d|_ t¦« |||||¬¦«dS©r›Nrœ)rQr^r�ržrŸs €r6ržzAssert.__init__tsSø€ð,$(ˆŒ Ø:à#'ˆŒ Ø9å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rQr^có"—||_||_dS)z±Do some setup after initialisation. :param test: The test that passes or fails the assertion. :param fail: The message shown when the assertion fails. N)r^rQ)r rQr^s r6r£zAssert.postinit˜s€ðˆŒ ؈Œ ˆ ˆ r8c#ó@K—|jV—|j� |jV—dSdSr0r]r¯s r6r¹zAssert.get_children¢s0èè€ØŒiˆˆˆà Œ9Ð Ø”)ˆOˆOˆOˆOˆOð !Ð r8rºr»r9)rQr—r^r—r-r˜© r½r¾r¿rÀrÁržr£r¹rÅrÆs@r6r\r\gs™ø€€€€€ððð'€Oð"Ø!%Ø $ð " ð "&Ø%)ð" ð" ð" ð" ð" ð" ð" ð" ðHðððððððððððr8r\c󆇗eZdZUdZdZdZ ddddœdˆfd„Z ddd„Zded< d„Z e j d„¦«Z d„Z ˆxZS)ÚAssignaClass representing an :class:`ast.Assign` node. An :class:`Assign` is a statement where something is explicitly asssigned to. >>> import astroid >>> node = astroid.extract_node('variable = range(10)') >>> node ©Útargetsr5©Útype_annotationNr‘r”r•r–rr—r’r“r-r˜có„•—g|_ d|_ d|_ t¦« |||||¬¦«dSr`)rgr5rir�ržrŸs €r6ržzAssign.__init__¸s^ø€ð,&(ˆŒ Ø(à$(ˆŒ Ø8à.2ˆÔØXå ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rgrÿr5ricó4—|�||_||_||_dS)zÁDo some setup after initialisation. :param targets: What is being assigned to. :param value: The value being assigned to the variables. :param type_annotation: N)rgr5ri)r rgr5ris r6r£zAssign.postinitßs&€ð Ð Ø"ˆDŒL؈Œ Ø.ˆÔÐÐr8z#ClassVar[AssignedStmtsCall[Assign]]rÜc#ó6K—|jEd{V—†|jV—dSr0rfr¯s r6r¹zAssign.get_childrenõs4èè€Ø”<ÐÐÐÐÐÐÐàŒjÐÐÐÐÐr8cóV—|gt|j ¦«¦«zSr0)r r5Ú_get_assign_nodesr¯s r6rnzAssign._get_assign_nodesús%€àˆv�˜TœZ×9Ò9Ñ;Ô;Ñ<Ô<Ñ<Ðð>ð>ð>ð>ð>ð>r8recó\‡—eZdZUdZdZdZ ddddœdˆfd„Z ddd„Zded< d„Z ˆxZ S)Ú AnnAssigna Class representing an :class:`ast.AnnAssign` node. An :class:`AnnAssign` is an assignment with a type annotation. >>> import astroid >>> node = astroid.extract_node('variable: List[int] = range(10)') >>> node ©Útargetr(r5)ÚsimpleNr‘r”r•r–rr—r’r“r-r˜có”•—d|_ d|_ d|_ d|_ t ¦« |||||¬¦«dSr`)rvr(r5rwr�ržrŸs €r6ržzAnnAssign.__init__sgø€ð,&*ˆŒ Ø(à)-ˆŒØ?à$(ˆŒ Ø8à"&ˆŒ ØKå ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rvrr(rwrlr5có>—||_||_||_||_dS)aQDo some setup after initialisation. :param target: What is being assigned to. :param annotation: The type annotation of what is being assigned to. :param simple: Whether :attr:`target` is a pure name or a complex statement. :param value: The value being assigned to the variables. N)rvr(r5rw)r rvr(rwr5s r6r£zAnnAssign.postinit:s$€ð$ˆŒ Ø$ˆŒØˆŒ ؈Œ ˆ ˆ r8z&ClassVar[AssignedStmtsCall[AnnAssign]]rÜc#óRK—|jV—|jV—|j� |jV—dSdSr0rur¯s r6r¹zAnnAssign.get_childrenVsFèè€ØŒkÐÐÐØŒoÐÐÐà Œ:Ð !Ø”*Ð Ð Ð Ð Ð ð "Ð !r8rºr»r0) rvrr(rrwrlr5r—r-r˜© r½r¾r¿rÀrÁrßržr£ràr¹rÅrÆs@r6rtrts¸ø€€€€€€ððð8€OØ€Mð"Ø!%Ø $ð ( ð "&Ø%)ð( ð( ð( ð( ð( ð( ð( ð( ð^ $ð ððððð.;Ð:Ð:Ñ:ððððððððr8rtc󪇗eZdZUdZdZdZejd¬¦« ddddœd ˆfd„¦«Z d!d"d„Z de d< de d<d#d$d„Z d„Z ˆfd„Z ˆxZS)%Ú AugAssignzüClass representing an :class:`ast.AugAssign` node. An :class:`AugAssign` is an assignment paired with an operator. >>> import astroid >>> node = astroid.extract_node('variable += 1') >>> node ©rvr5©Úopr´Nr‘r€rØr”r•r–rr—r’r“r-r˜có„•—d|_ ||_ d|_ t¦« |||||¬¦«dS)aH :param op: The operator that is being combined with the assignment. This includes the equals sign. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. Nrœ)rvr€r5r�rž©r r€r”r–rr’r“r…s €r6ržzAugAssign.__init__lsaø€ð6&*ˆŒ Ø(à ˆŒð ð %)ˆŒ Ø7å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rvr5có"—||_||_dS)z Do some setup after initialisation. :param target: What is being assigned to. :param value: The value being assigned to the variable. Nr~©r rvr5s r6r£zAugAssign.postinit›s€ðˆŒ ؈Œ ˆ ˆ r8z&ClassVar[AssignedStmtsCall[AugAssign]]rÜzIClassVar[InferBinaryOperation[AugAssign, util.BadBinaryOperationMessage]]Ú_infer_augassignr@rAcól— | |¬¦«}d„|D¦«S#t$rgcYSwxYw)a&Get a list of type errors which can occur during inference. Each TypeError is represented by a :class:`BadBinaryOperationMessage` , which holds the original exception. :returns: The list of possible type errors. :rtype: list(BadBinaryOperationMessage) rjcóF—g|]}t|tj¦«¯|‘ŒSr§©r1rÚBadBinaryOperationMessage©rurs r6r«z)AugAssign.type_errors..¼ó;€ðððàݘf¥dÔ&DÑEÔEðØðððr8)r…r©r r@Úresultss r6Ú type_errorszAugAssign.type_errors±sd€ð Ø×+Ò+°GÐ+Ñ<Ô<ˆGððà%ðñôð øõ ð ð ð ØˆIˆIˆIð øøøó ‚!$¤ 3²3c#ó.K—|jV—|jV—dSr0r~r¯s r6r¹zAugAssign.get_childrenÄs(èè€ØŒkÐÐÐØŒjÐÐÐÐÐr8c#ó–•K—|j ¦«Ed{V—†t¦« ¦«Ed{V—†dS)z7An AugAssign node can contain a Yield node in the valueN)r5rpr�©r r…s €r6rpz'AugAssign._get_yield_nodes_skip_lambdasÈs[øèè€à”:×;Ò;Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ý‘7”7×8Ò8Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:r8rÝ©r€rØr”r•r–r•rr—r’r•r“r•r-r˜r9)rvr—r5r—r-r˜r0©r@rA)r½r¾r¿rÀrÁrßrráržr£ràrŽr¹rprÅrÆs@r6r}r}^sø€€€€€€ððð*€OØ€Mà1€ZÔ1°UÐ;Ñ;Ô;ðØ!Ø!%Ø $ð , ð"&Ø%)ð, ð, ð, ð, ð, ð, ð, ñ<Ô;ð, ð^DHð ð ð ð ð ð;Ð:Ð:Ñ:ðð ððñðððððð&ððð;ð;ð;ð;ð;ð;ð;ð;ð;r8r}có ‡—eZdZUdZdZdZejd¬¦« ddddœd ˆfd„¦«Zd!d"d„Z de d<d#d$d„Z d„Z d„Z d%d„ZˆxZS)&ÚBinOpzêClass representing an :class:`ast.BinOp` node. A :class:`BinOp` node is an application of a binary operator. >>> import astroid >>> node = astroid.extract_node('a + b') >>> node ©ÚleftÚrightrr´Nr‘r€rØr”r•r–rr—r’r“r-r˜có„•—d|_ ||_ d|_ t¦« |||||¬¦«dS©áò :param op: The operator. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. Nrœ)r˜r€r™r�ržr‚s €r6ržzBinOp.__init__Üs]ø€ð4$(ˆŒ ØEà ˆŒØà$(ˆŒ ØFå ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r˜r™có"—||_||_dS)zÊDo some setup after initialisation. :param left: What is being applied to the operator on the left side. :param right: What is being applied to the operator on the right side. Nr—)r r˜r™s r6r£zBinOp.postinits€ðˆŒ ؈Œ ˆ ˆ r8zEClassVar[InferBinaryOperation[BinOp, util.BadBinaryOperationMessage]]Ú _infer_binopr@rAcól— | |¬¦«}d„|D¦«S#t$rgcYSwxYw)á%Get a list of type errors which can occur during inference. Each TypeError is represented by a :class:`BadBinaryOperationMessage`, which holds the original exception. :returns: The list of possible type errors. :rtype: list(BadBinaryOperationMessage) rjcóF—g|]}t|tj¦«¯|‘ŒSr§rˆrŠs r6r«z%BinOp.type_errors..r‹r8)ržrrŒs r6rŽzBinOp.type_errorssd€ð Ø×'Ò'°Ð'Ñ8Ô8ˆGððà%ðñôð øõ ð ð ð ØˆIˆIˆIð øøør�c#ó.K—|jV—|jV—dSr0r—r¯s r6r¹zBinOp.get_children's%èè€ØŒiˆˆˆØŒjÐÐÐÐÐr8có&—t|jSr0©rr€r¯s r6Ú op_precedencezBinOp.op_precedence+ó€Ý˜TœWÔ%Ð%r8r.có—|jdkS)Nrrr¯s r6Úop_left_associativezBinOp.op_left_associative.s€àŒw˜$ŠÐr8rÝr“r9)r˜r—r™r—r-r˜r0r”r=)r½r¾r¿rÀrÁrßrráržr£ràrŽr¹r¥r¨rÅrÆs@r6r–r–Îs ø€€€€€€ððð(€OØ€Mà1€ZÔ1°UÐ;Ñ;Ô;ðØ!Ø!%Ø $ð ( ð"&Ø%)ð( ð( ð( ð( ð( ð( ð( ñ<Ô;ð( ðTðððððXÐWÐWÑWðððððð&ððð&ð&ð&ððððððððr8r–c󂇗eZdZdZdZdZejd¬¦« ddddœdˆfd„¦«Zddd„Z d„Z d„Z ˆxZ S)ÚBoolOpzêClass representing an :class:`ast.BoolOp` node. A :class:`BoolOp` is an application of a boolean operator. >>> import astroid >>> node = astroid.extract_node('a and b') >>> node ©rIrr´Nr‘r€rØr”r•r–rr—r’r“r-r˜cót•—||_ g|_ t¦« |||||¬¦«dS)rœrœN)r€rIr�ržr‚s €r6ržzBoolOp.__init__AsSø€ð4!ˆŒØà$&ˆŒ Ø7å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rIrÿcó—|� ||_dSdS)znDo some setup after initialisation. :param values: The values being applied to the operator. Nr«©r rIs r6r£zBoolOp.postinitis€ð Ð Ø ˆDŒKˆKˆKð Ð r8c#ó$K—|jEd{V—†dSr0r«r¯s r6r¹zBoolOp.get_childrenqó&èè€Ø”;ÐÐÐÐÐÐÐÐÐr8có&—t|jSr0r¤r¯s r6r¥zBoolOp.op_precedencetr¦r8rÝr“r0©rIrÿr-r˜) r½r¾r¿rÀrÁrßrráržr£r¹r¥rÅrÆs@r6rªrª3sËø€€€€€ððð"€OØ€Mà1€ZÔ1°UÐ;Ñ;Ô;ðØ!Ø!%Ø $ð % ð"&Ø%)ð% ð% ð% ð% ð% ð% ð% ñ<Ô;ð% ðN!ð!ð!ð!ð!ðððð&ð&ð&ð&ð&ð&ð&r8rªcó—eZdZdZdS)ÚBreakz§Class representing an :class:`ast.Break` node. >>> import astroid >>> node = astroid.extract_node('break') >>> node N©r½r¾r¿rÀr§r8r6r´r´xó€€€€€ððððr8r´có~‡—eZdZdZdZ ddddœdˆfd„Z ddd„Zedd„¦«Zedd„¦«Z d„Z ˆxZ S)ÚCallzêClass representing an :class:`ast.Call` node. A :class:`Call` node is a call to a function, method, etc. >>> import astroid >>> node = astroid.extract_node('function()') >>> node ©r/rîÚkeywordsNr‘r”r•r–rr—r’r“r-r˜có„•—d|_ g|_ g|_ t¦« |||||¬¦«dSr`)r/rîrºr�ržrŸs €r6ržz Call.__init__�s]ø€ð,$(ˆŒ Ø#à"$ˆŒ Ø?à')ˆŒ Ø<å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r/rîrÿrºúlist[Keyword] | Nonecó<—||_|�||_|� ||_dSdS)zéDo some setup after initialisation. :param func: What is being called. :param args: The positional arguments being given to the call. :param keywords: The keyword arguments being given to the call. Nr¹)r r/rîrºs r6r£z Call.postinit¶s1€ðˆŒ Ø Ð ØˆDŒIØ Ð Ø$ˆDŒMˆMˆMð Ð r8ú list[Starred]có$—d„|jD¦«S)z/The positional arguments that unpack something.có<—g|]}t|t¦«¯|‘ŒSr§)r1ÚStarred)rur*s r6r«z!Call.starargs..Ís'€ÐEÐEÐE˜­J°s½GÑ,DÔ,DÐE�ÐEÐEÐEr8)rîr¯s r6Ústarargsz Call.starargsÊs€ðFÐE˜tœyÐEÑEÔEÐEr8ú list[Keyword]có$—d„|jD¦«S)z,The keyword arguments that unpack something.có —g|] }|j­ |‘Œ Sr0©r*)ruÚkeywords r6r«zCall.kwargs..Òs€ÐLÐLÐL˜G¸¼ Ð8K�Ð8KÐ8KÐ8Kr8)rºr¯s r6Úkwargsz Call.kwargsÏs€ðMÐL t¤}ÐLÑLÔLÐLr8c#óPK—|jV—|jEd{V—†|jEd{V—†dSr0r¹r¯s r6r¹zCall.get_childrenÔsKèè€ØŒiˆˆˆà”9ÐÐÐÐÐÐÐà”=Ð Ð Ð Ð Ð Ð Ð Ð Ð r8rºr»)r/r—rîrÿrºr¼r-r˜)r-r¾)r-rÃ) r½r¾r¿rÀrÁržr£ÚpropertyrÂrÈr¹rÅrÆs@r6r¸r¸‚sìø€€€€€ððð3€Oð"Ø!%Ø $ð % ð "&Ø%)ð% ð% ð% ð% ð% ð% ð% ð% ðR#Ø$(Ø)-ð %ð%ð%ð%ð%ð(ðFðFðFñ„XðFððMðMðMñ„XðMð!ð!ð!ð!ð!ð!ð!r8r¸cóR‡—eZdZdZdZ ddddœdˆfd„Z ddd„Zd„Zd„ZˆxZ S)ÚCompareaLClass representing an :class:`ast.Compare` node. A :class:`Compare` node indicates a comparison. >>> import astroid >>> node = astroid.extract_node('a <= b <= c') >>> node >>> node.ops [('<=', ), ('<=', )] ©r˜ÚopsNr‘r”r•r–rr—r’r“r-r˜cót•—d|_ g|_ t¦« |||||¬¦«dSr`)r˜rÎr�ržrŸs €r6ržzCompare.__init__ësSø€ð,$(ˆŒ ØKà-/ˆŒØQå ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r˜rÎúlist[tuple[str, NodeNG]] | Nonecó*—||_|� ||_dSdS)zñDo some setup after initialisation. :param left: The value at the left being applied to a comparison operator. :param ops: The remainder of the operators and their relevant right hand value. NrÍ)r r˜rÎs r6r£zCompare.postinits"€ðˆŒ Ø ˆ?؈DŒHˆHˆHð ˆ?r8c#ó>K—|jV—|jD] \}}|V—Œ dS)zÏGet the child nodes below this node. Overridden to handle the tuple fields and skip returning the operator strings. :returns: The children. :rtype: iterable(NodeNG) NrÍ)r Ú_Ú comparators r6r¹zCompare.get_children sAèè€ðŒiˆˆˆØ!œXð ð ‰MˆAˆzØÐ Ð Ð Ð ð ð r8có(—|jddS)zsAn optimized version of list(get_children())[-1] :returns: The last child. :rtype: NodeNG r"rP)rÎr¯s r6Ú last_childzCompare.last_child-s€ðŒx˜Œ|˜AŒÐr8rºr»r9)r˜r—rÎrÐr-r˜) r½r¾r¿rÀrÁržr£r¹rÖrÅrÆs@r6rÌrÌÜs°ø€€€€€ð ð ð&€Oð"Ø!%Ø $ð " ð "&Ø%)ð" ð" ð" ð" ð" ð" ð" ð" ðL#Ø/3ðððððð" ð ð ðððððððr8rÌcó�‡—eZdZUdZdZdZdZ ded<ded<ded<ded <ddˆfd„ Z dd d„Z ded< d„Z d!d„Z d„Z ˆxZ S)"Ú ComprehensionaÄClass representing an :class:`ast.comprehension` node. A :class:`Comprehension` indicates the loop inside any type of comprehension including generator expressions. >>> import astroid >>> node = astroid.extract_node('[x for x in some_values]') >>> list(node.get_children()) [, ] >>> list(node.get_children())[1].as_string() 'for x in some_values' ©rvÚiterÚifs)Úis_asyncTr˜r”r–r’r“Nrr—r-c󌕗d|_ d|_ g|_ d|_ t ¦« |¬¦«dS)zD :param parent: The parent node in the syntax tree. Nrý)rvrÚrÛrÜr�rž©r rr…s €r6ržzComprehension.__init__QsNø€ð&*ˆŒ Ø7à#'ˆŒ Ø9à!#ˆŒØNà%)ˆŒ ØCå ‰Œ×Ò ÐÑ'Ô'Ð'Ð'Ð'r8rvrÚrÛrÿrÜú bool | NonecóB—||_||_|�||_||_dS)abDo some setup after initialisation. :param target: What is assigned to by the comprehension. :param iter: What is iterated over by the comprehension. :param ifs: The contents of any if statements that filter the comprehension. :param is_async: Whether this is an asynchronous comprehension or not. N)rvrÚrÛrÜ)r rvrÚrÛrÜs r6r£zComprehension.postinitds)€ð$ˆŒ ؈Œ Ø ˆ?؈DŒHØ ˆŒ ˆ ˆ r8z*ClassVar[AssignedStmtsCall[Comprehension]]rÜcó—|S)zwThe type of assignment that this node performs. :returns: The assignment type. :rtype: NodeNG r§r¯s r6Ú assign_typezComprehension.assign_type�s €ð ˆ r8Úmystmtú_base_nodes.Statement | Nonecó�—||ur"t|ttf¦«r|gdfSn| d¬¦«|ur|gdfS|dfS)zmethod used in filter_stmtsT©ÚfutureF)r1rkrçÚ statement)r Ú lookup_noderCrÓrãs r6Ú_get_filtered_stmtsz!Comprehension._get_filtered_stmts‰sh€ð �6ˆ>ˆ>ݘ+­­t }Ñ5Ô5ð +Ø#�} dÐ*Ð*ð +ð�^Š^ 4ˆ^Ñ (Ô (¨FÐ 2Ð 2ð�6˜4�<Ð à�eˆ|Ðr8c#óHK—|jV—|jV—|jEd{V—†dSr0rÙr¯s r6r¹zComprehension.get_children™s?èè€ØŒkÐÐÐØŒiˆˆˆà”8ÐÐÐÐÐÐÐÐÐr8r0©rr—r-r˜rÝ) rvr—rÚr—rÛrÿrÜrßr-r˜)rãrä)r½r¾r¿rÀrÁrßÚoptional_assignràržr£rârêr¹rÅrÆs@r6rØrØ8sûø€€€€€€ð ð ð0€OØ!€Mà€OØ:à€L€L�LØÐÐÑØÐÐÑØÐÐÑð(ð(ð(ð(ð(ð(ð(ð*!%Ø"Ø#'Ø $ð !ð!ð!ð!ð!ð0?Ð>Ð>Ñ>ððððððððð ððððððr8rØc󄇗eZdZUdZdZ d!dddœd"ˆfd„Zded<ded<ˆfd„Zd#d$d„Zd%d„Z d„Z d&d„Z d#d$d „Z ˆxZ S)'rkaÜClass representing any constant including num, str, bool, None, bytes. >>> import astroid >>> node = astroid.extract_node('(5, "This is a string.", True, None, b"bytes")') >>> node >>> list(node.get_children()) [, , , , ] )r5ÚkindNr‘r5r r”r•r–rr—rïrØr’r“r-r˜cóž•—||_ ||_ t¦« |||||¬¦«t j|d¦«dS)a} :param value: The value that the constant represents. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param kind: The string prefix. "u" for u-prefixed strings and ``None`` otherwise. Python 3.8+ only. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. rœN)r5rïr�ržr) r r5r”r–rrïr’r“r…s €r6ržzConst.__init__±sdø€ð8 ˆŒ Ø5à $ˆŒ Øfå ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð õ Ô˜$ Ñ%Ô%Ð%Ð%Ð%r8zClassVar[InferUnaryOp[Const]]Úinfer_unary_opzClassVar[InferBinaryOp[Const]]Úinfer_binary_opcó`•—|dkrt‚t¦« |¦«S)Nr5)ÚAttributeErrorr�Ú __getattr__)r rÊr…s €r6rõzConst.__getattr__às,ø€ð �7Š?ˆ?Ý Ð Ý‰wŒw×"Ò" 4Ñ(Ô(Ð(r8r@rAcóV—t|t¦«r|j}nGt|t¦«rt ||¬¦«}n t dt |¦«›d�¦«‚ t|jttf¦«rt|j|¦«Sno#t$r }td|j›d|›�¦«|‚d}~wt$r}td|||¬¦«|‚d}~wt$r}t d |||¬¦«|‚d}~wwxYwt |›d |j›d �¦«‚) a%Get an item from this node if subscriptable. :param index: The node to use as a subscript index. :type index: Const or Slice :raises AstroidTypeError: When the given index cannot be used as a subscript index, or if this node is not subscriptable. rjzCould not use type rƒzCould not index z with NzIndex {index!r} out of rangerxr‚z (value=rE)r1rkr5r„r€rrmr´Úbytesr†rr‡rrˆ)r rpr@Ú index_valuerŒs r6Úgetitemz Const.getitemësŒ€õ �e�UÑ #Ô #ð Øœ+ˆKˆKÝ ˜�uÑ %Ô %ð Ý& u°gÐ>Ñ>Ô>ˆKˆKõ#ØF¥d¨5¡k¤kÐFÐFÐFñôð ð ݘ$œ*¥s­E lÑ3Ô3ð 6ݘTœZ¨ Ô4Ñ5Ô5Ð5ð 6øåð ð ð Ý#ØF 4¤:ÐFÐF°{ÐFÐFñôàð øøøøõð ð ð Ý#Ø6ØØØð ñôð ð  øøøøõ ð ð ð Ý"Ø.°TÀÐPWðñôàð øøøøð øøøõ  $Ð?Ð?°$´*Ð?Ð?Ð?Ñ@Ô@Ð@s0Á&:B"Â" DÂ,Cà DÃC(Ã( DÃ5D Ä Dr.có—dS)zÖCheck if the node has a custom __getattr__ or __getattribute__. :returns: Whether the class has a custom __getattr__ or __getattribute__. For a :class:`Const` this is always ``False``. Fr§r¯s r6Úhas_dynamic_getattrzConst.has_dynamic_getattrs €ð ˆur8có —t|jt¦«rd„|jD¦«Stdt |j¦«›�¦«‚)zàAn iterator over the elements this node contains. :returns: The contents of this node. :rtype: iterable(Const) :raises TypeError: If this node does not represent something that is iterable. có,—g|]}t|¦«‘ŒSr§)r©rts r6r«z Const.itered..$s €Ð?Ð?Ð?¨D•M $Ñ'Ô'Ð?Ð?Ð?r8zCannot iterate over type )r1r5r´rˆrmr¯s r6r°z Const.iteredsP€õ �d”j¥#Ñ &Ô &ð @Ø?Ð?°D´JÐ?Ñ?Ô?Ð ?ÝÐHµD¸¼Ñ4DÔ4DÐHÐHÑIÔIÐIr8r´có4—|j ¦«S)r¶)Ú_proxiedÚqnamer¯s r6r·z Const.pytype's€ð Œ}×"Ò"Ñ$Ô$Ð$r8có*—t|j¦«S©zzDetermine the boolean value of this node. :returns: The boolean value of this node. :rtype: bool )r.r5r²s r6r³zConst.bool_value.ó€õ �D”JÑÔÐr8rÝ)r5r r”r•r–r•rr—rïrØr’r•r“r•r-r˜r0r”r=r¼)r½r¾r¿rÀrßržràrõrùrûr°r·r³rÅrÆs@r6rkrk sø€€€€€€ð ð ð&€Mð "Ø!%Ø $Øð *&ð"&Ø%)ð*&ð*&ð*&ð*&ð*&ð*&ð*&ð*&ðX2Ð1Ð1Ñ1Ø3Ð3Ð3Ñ3ð )ð )ð )ð )ð )ð&Að&Að&Að&Að&AðPðððð Jð Jð Jð%ð%ð%ð%ð ð ð ð ð ð ð ð ð r8rkcó—eZdZdZdS)ÚContinuez°Class representing an :class:`ast.Continue` node. >>> import astroid >>> node = astroid.extract_node('continue') >>> node Nrµr§r8r6rr7r¶r8rcóN‡—eZdZdZdZ ddddœdˆfd„Zdd„Zdd„Zd„ZˆxZ S)Ú Decoratorsa™A node representing a list of decorators. A :class:`Decorators` is the decorators that are applied to a method or function. >>> import astroid >>> node = astroid.extract_node(''' @property def my_property(self): return 3 ''') >>> node >>> list(node.get_children())[0] r(Nr‘r”r•r–rr—r’r“r-r˜cóZ•—| t¦« |||||¬¦«dSrš©r�ržrŸs €r6ržzDecorators.__init__UsLø€ð, Ð ð õ ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r)r¡có—||_dS)z“Do some setup after initialisation. :param nodes: The decorators that this node contains. :type nodes: list(Name or Call) Nr()r r)s r6r£zDecorators.postinitys€ð ˆŒ ˆ ˆ r8r*có®—|jst|¬¦«‚|jjst|j¬¦«‚|jj ¦«S©z·The first parent node defining a new scope. These can be Module, FunctionDef, ClassDef, Lambda, or GeneratorExp nodes. :returns: The first parent scope node. ©rv)rrrÍr¯s r6rÍzDecorators.scope�sV€ðŒ{ð 2Ý$¨DÐ1Ñ1Ô1Ð 1ØŒ{Ô!ð 9Ý$¨D¬KÐ8Ñ8Ô8Ð 8ØŒ{Ô!×'Ò'Ñ)Ô)Ð)r8c#ó$K—|jEd{V—†dSr0r(r¯s r6r¹zDecorators.get_childrenŽs&èè€Ø”:ÐÐÐÐÐÐÐÐÐr8rºr»)r)r¡r-r˜©r-r*) r½r¾r¿rÀrÁržr£rÍr¹rÅrÆs@r6rrAs¨ø€€€€€ððð"!€Oð"Ø!%Ø $ð " ð "&Ø%)ð" ð" ð" ð" ð" ð" ð" ð" ðHðððð *ð *ð *ð *ðððððððr8rcó|‡—eZdZdZdZdZejd¬¦« ddddœdˆfd„¦«Zddd„Z d„Z ˆxZ S)ÚDelAttraVariation of :class:`ast.Delete` representing deletion of an attribute. >>> import astroid >>> node = astroid.extract_node('del self.attr') >>> node >>> list(node.get_children())[0] rNrPr´Nr‘rQrØr”r•r–rr—r’r“r-r˜cót•—d|_ ||_ t¦« |||||¬¦«dS)a :param attrname: The name of the attribute that is being deleted. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. NrœrSrTs €r6ržzDelAttr.__init__ sWø€ð4$(ˆŒ ð ð %-ˆŒ Ø>å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rOcó—||_dS©z‡Do some setup after initialisation. :param expr: The name that this node represents. :type expr: Name or None NrNrVs r6r£zDelAttr.postinitËó€ð ˆŒ ˆ ˆ r8c#óK—|jV—dSr0rNr¯s r6r¹zDelAttr.get_childrenÓrXr8rÝrYr0rZ© r½r¾r¿rÀrÁrßrráržr£r¹rÅrÆs@r6rr’s½ø€€€€€ððð €OØ!€Mà1€ZÔ1¸5ÐAÑAÔAð $Ø!Ø!%Ø $ð ( ð"&Ø%)ð( ð( ð( ð( ð( ð( ð( ñBÔAð( ðTðððððððððððr8rcóH‡—eZdZdZdZ ddddœdˆfd„Zddd„Zd„ZˆxZS)ÚDeletezûClass representing an :class:`ast.Delete` node. A :class:`Delete` is a ``del`` statement this is deleting something. >>> import astroid >>> node = astroid.extract_node('del self.attr') >>> node ©rgNr‘r”r•r–rr—r’r“r-r˜cód•—g|_ t¦« |||||¬¦«dSrš)rgr�ržrŸs €r6ržzDelete.__init__äsIø€ð,&(ˆŒ Ø$å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rgrÿcó—|� ||_dSdS)z\Do some setup after initialisation. :param targets: What is being deleted. Nr)r rgs r6r£zDelete.postinit s€ð Ð Ø"ˆDŒLˆLˆLð Ð r8c#ó$K—|jEd{V—†dSr0rr¯s r6r¹zDelete.get_children s&èè€Ø”<ÐÐÐÐÐÐÐÐÐr8rºr»r0)rgrÿr-r˜rcrÆs@r6rr×s™ø€€€€€ððð#€Oð"Ø!%Ø $ð  ð "&Ø%)ð ð ð ð ð ð ð ð ðB#ð#ð#ð#ð#ð ð ð ð ð ð ð r8rc󔇗eZdZUdZdZ d!dddœd"ˆfd„Zd#d„Zded<ed$d„¦«Z d%d„Z d„Z d„Z d„Z d$d&d„Zd$d'd „ZˆxZS)(ÚDictzöClass representing an :class:`ast.Dict` node. A :class:`Dict` is a dictionary that is created with ``{}`` syntax. >>> import astroid >>> node = astroid.extract_node('{1: "1"}') >>> node ©ÚitemsNr‘r”r•r–rr—r’r“r-r˜cód•—g|_ t¦« |||||¬¦«dSrš)r!r�ržrŸs €r6ržz Dict.__init__ sNø€ð0 ð Œ ð ?å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r!úAlist[tuple[SuccessfulInferenceResult, SuccessfulInferenceResult]]có—||_dS)ztDo some setup after initialisation. :param items: The key-value pairs contained in the dictionary. Nr )r r!s r6r£z Dict.postinitA s€ðˆŒ ˆ ˆ r8zClassVar[InferUnaryOp[Dict]]rñcót—|¦«}|€g|_n#d„| ¦«D¦«|_|S)zÚCreate a :class:`Dict` of constants from a live dictionary. :param items: The items to store in the node. :type items: dict :returns: The created dictionary node. :rtype: Dict Ncó�—g|]C\}}t|¦«¯t|¦«t|¦«rt|¦«n|f‘ŒDSr§r¨)ruÚkÚvs r6r«z&Dict.from_elements..Z s]€ðððá�A�qå˜Q‘<”<ð ݘqÑ!Ô!µyÀ±|´|Ð#J¥=°Ñ#3Ô#3Ð#3ÈÐKðððr8r )r¬r!rCs r6r­zDict.from_elementsL sL€ðˆs‰uŒuˆØ ˆ=؈DŒJˆJððà!ŸKšK™MœMðñôˆDŒJð ˆ r8úLiteral['builtins.dict']có—dS)r¶z builtins.dictr§r¯s r6r·z Dict.pytypeb ó €ð ˆr8c#ó4K—|jD] \}}|V—|V—ŒdS)zïGet the key and value nodes below this node. Children are returned in the order that they are defined in the source code, key first then the value. :returns: The children. :rtype: iterable(NodeNG) Nr )r Úkeyr5s r6r¹zDict.get_childreni s;èè€ðœ*ð ð ‰JˆC�؈IˆIˆI؈KˆKˆKˆKð ð r8có:—|jr|jddSdS)z™An optimized version of list(get_children())[-1] :returns: The last child, or None if no children exist. :rtype: NodeNG or None r"rPNr r¯s r6rÖzDict.last_childv s$€ð Œ:ð %Ø”:˜b”> !Ô$Ð $؈tr8có$—d„|jD¦«S)z�An iterator over the keys this node contains. :returns: The keys of this node. :rtype: iterable(NodeNG) có—g|]\}}|‘ŒSr§r§)rur-rÓs r6r«zDict.itered..† s€Ð/Ð/Ð/™˜˜a�Ð/Ð/Ð/r8r r¯s r6r°z Dict.itered€ s€ð 0Ð/ D¤JÐ/Ñ/Ô/Ð/r8rpú Const | Slicer@rArcóú—ddlm}|jD]ß\}}t|t¦«rR|||¦«}t|t ¦«sŒ< | ||¦«cS#ttf$rYŒhwxYw|  |¦«D]]}t|tj ¦«rŒt|t¦«r+t|t¦«r|j |j kr|ccSŒ^Œàt|¦«‚)aTGet an item from this node. :param index: The node to use as a subscript index. :raises AstroidTypeError: When the given index cannot be used as a subscript index, or if this node is not subscriptable. :raises AstroidIndexError: If the given index does not exist in the dictionary. r)Ú safe_infer)Úastroid.helpersr3r!r1Ú DictUnpackrrùrrrHrrIrkr5)r rpr@r3r-r5Úinferred_valueÚ inferredkeys r6rùz Dict.getitemˆ s5€ð /Ð.Ð.Ð.Ð.Ð.àœ*ð %ð %‰JˆC�å˜#�zÑ*Ô*ð Ø!+ ¨E°7Ñ!;Ô!;�Ý! .µ$Ñ7Ô7ðØðØ)×1Ò1°%¸ÑAÔAÐAÐAÐAøÝ(Õ*;Ð<ðððØ�Hðøøøð #Ÿyšy¨Ñ1Ô1ð %ð %� ݘk­4Ô+?Ñ@Ô@ðØÝ˜k­5Ñ1Ô1ð%µjÀÍÑ6NÔ6Nð%Ø"Ô(¨E¬KÒ7Ð7Ø$˜ ˜ ˜ ˜ ˜ øð  %õ  Ñ&Ô&Ð&sÁ A#Á#A7Á6A7có*—t|j¦«Sr)r.r!r²s r6r³zDict.bool_value¬ rr8rºr»)r!r#r-r˜r0)r-r))rpr1r@rAr-rr”)r½r¾r¿rÀrÁržr£ràrÂr­r·r¹rÖr°rùr³rÅrÆs@r6rr s.ø€€€€€€ððð!€Oð"Ø!%Ø $ð ! ð "&Ø%)ð! ð! ð! ð! ð! ð! ð! ð! ðFðððð1Ð0Ð0Ñ0àðððñ„[ðð*ðððð ð ð ðððð0ð0ð0ðHLð"'ð"'ð"'ð"'ð"'ðH ð ð ð ð ð ð ð ð r8rcóN‡—eZdZdZdZ ddddœdˆfd„Zddd„Zd„Zd„ZˆxZ S)ÚExpra6Class representing an :class:`ast.Expr` node. An :class:`Expr` is any expression that does not have its value used or stored. >>> import astroid >>> node = astroid.extract_node('method()') >>> node >>> node.parent r4Nr‘r”r•r–rr—r’r“r-r˜cód•—d|_ t¦« |||||¬¦«dSr`©r5r�ržrŸs €r6ržz Expr.__init__Å óIø€ð,%)ˆŒ Ø'å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r5có—||_dS)z]Do some setup after initialisation. :param value: What the expression does. Nr4©r r5s r6r£z Expr.postinitæ ó€ð ˆŒ ˆ ˆ r8c#óK—|jV—dSr0r4r¯s r6r¹zExpr.get_childrení óèè€ØŒjÐÐÐÐÐr8c#ódK—|jjs!|j ¦«Ed{V—†dSdSr0)r5Ú is_lambdarpr¯s r6rpz"Expr._get_yield_nodes_skip_lambdasð sLèè€ØŒzÔ#ð BØ”z×?Ò?ÑAÔAÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Að Bð Br8rºr»r0©r5r—r-r˜© r½r¾r¿rÀrÁržr£r¹rprÅrÆs@r6r:r:µ s¯ø€€€€€ð ð ð!€Oð"Ø!%Ø $ð  ð "&Ø%)ð ð ð ð ð ð ð ð ðBððððððððBðBðBðBðBðBðBr8r:có—eZdZdZdS)ÚEllipsiszÎClass representing an :class:`ast.Ellipsis` node. An :class:`Ellipsis` is the ``...`` syntax. Deprecated since v2.6.0 - Use :class:`Const` instead. Will be removed with the release v2.7.0 Nrµr§r8r6rHrHõ r¶r8rHcó—eZdZdZdZdd„ZdS)Ú EmptyNodezAHolds an arbitrary object in the :attr:`LocalsDictNodeNG.locals`.Nr-r.có0—|jduo |jtuSr0)Úobjectrr¯s r6Úhas_underlying_objectzEmptyNode.has_underlying_object s€ØŒ{ $Ð&ÐR¨4¬;Õ>RÐ+RÐRr8r=)r½r¾r¿rÀrLrMr§r8r6rJrJÿ s9€€€€€ØKÐKà €FðSðSðSðSðSðSr8rJcó~‡—eZdZUdZdZdZ ddddœdˆfd„Zded< d„Z dd d„Z e d„¦«Z d!d„Z ˆxZ S)"Ú ExceptHandlera¬Class representing an :class:`ast.ExceptHandler`. node. An :class:`ExceptHandler` is an ``except`` block on a try-except. >>> import astroid >>> node = astroid.extract_node(''' try: do_something() except Exception as error: print("Error!") ''') >>> node >>> node.handlers [] ©rmrÊrS©rSNr‘r”r•r–rr—r’r“r-r˜có„•—d|_ d|_ g|_ t¦« |||||¬¦«dSr`)rmrÊrSr�ržrŸs €r6ržzExceptHandler.__init__ saø€ð,$(ˆŒ ð ð (,ˆŒ Ø@à"$ˆŒ Ø(å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8z*ClassVar[AssignedStmtsCall[ExceptHandler]]rÜc#ódK—|j� |jV—|j� |jV—|jEd{V—†dSr0rPr¯s r6r¹zExceptHandler.get_childrenN sLèè€Ø Œ9Ð Ø”)ˆOˆOˆOà Œ9Ð Ø”)ˆOˆOˆOà”9ÐÐÐÐÐÐÐÐÐr8rmrÊúAssignName | NonerSrÿcó8—||_||_|� ||_dSdS)a Do some setup after initialisation. :param type: The types that the block handles. :type type: Tuple or NodeNG or None :param name: The name that the caught exception is assigned to. :param body:The contents of the block. NrP)r rmrÊrSs r6r£zExceptHandler.postinitX s+€ðˆŒ ؈Œ Ø Ð ØˆDŒIˆIˆIð Ð r8có\—|jr |jjS|jr |jjS|jS©úPThe line on which the beginning of this block ends. :type: int )rÊÚtolinenormr”r¯s r6Úblockstart_tolinenoz!ExceptHandler.blockstart_tolinenol s6€ð Œ9ð &Ø”9Ô%Ð %Ø Œ9ð &Ø”9Ô%Ð %ØŒ{Ðr8rMrNr.có~‡—|j�‰€dStˆfd„|j ¦«D¦«¦«S)zzCheck if this node handles any of the given :param exceptions: The names of the exceptions to check for. NTc3ó*•K—|] }|j‰vV—ŒdSr0rÖ)rurCrMs €r6rwz&ExceptHandler.catch.. s*øèè€ÐSÐS¨t�4”9  Ð*ÐSÐSÐSÐSÐSÐSr8)rmrZrê)r rMs `r6rYzExceptHandler.catchx sHø€ð Œ9Ð   Ð 2Ø�4ÝÐSÐSÐSÐS°t´y×7PÒ7PÑ7RÔ7RÐSÑSÔSÑSÔSÐSr8rºr»)rmr—rÊrTrSrÿr-r˜©rMrNr-r.)r½r¾r¿rÀrÁÚ_multi_line_block_fieldsržràr¹r£r+rZrYrÅrÆs@r6rOrO söø€€€€€€ððð"/€OØ(Ðð"Ø!%Ø $ð ( ð "&Ø%)ð( ð( ð( ð( ð( ð( ð( ð( ðT?Ð>Ð>Ñ>ððððð#Ø"&Ø$(ð ððððð(ð ð ñ„_ð ðTðTðTðTðTðTðTðTr8rOcó—eZdZdZdS)ÚExtSlicezæClass representing an :class:`ast.ExtSlice` node. An :class:`ExtSlice` is a complex slice expression. Deprecated since v2.6.0 - Now part of the :class:`Subscript` node. Will be removed with the release of v2.7.0 Nrµr§r8r6r`r`‚ r¶r8r`c󄇗eZdZUdZdZdZdZdZ ddddœdˆfd„Z dd d„Z de d< e d„¦«Z d„Z ˆxZS)!ÚForz¿Class representing an :class:`ast.For` node. >>> import astroid >>> node = astroid.extract_node('for thing in things: print(thing)') >>> node ©rvrÚrSrTrh©rSrTTNr‘r”r•r–rr—r’r“r-r˜c󤕗d|_ d|_ g|_ g|_ d|_ t ¦« |||||¬¦«dSr`)rvrÚrSrTrir�ržrŸs €r6ržz For.__init__£ srø€ð,&*ˆŒ Ø'à#'ˆŒ Ø*à"$ˆŒ Ø3à$&ˆŒ Ø=à.2ˆÔØXå ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rvrÚrSrÿrTricóT—||_||_|�||_|�||_||_dS)aDo some setup after initialisation. :param target: What the loop assigns to. :param iter: What the loop iterates over. :param body: The contents of the body of the loop. :param orelse: The contents of the ``else`` block of the loop. N)rvrÚrSrTri)r rvrÚrSrTris r6r£z For.postinitÑ s:€ð$ˆŒ ؈Œ Ø Ð ØˆDŒIØ Ð Ø ˆDŒKØ.ˆÔÐÐr8z ClassVar[AssignedStmtsCall[For]]rÜcó—|jjSrW)rÚrYr¯s r6rZzFor.blockstart_tolinenoð ó€ð ŒyÔ!Ð!r8c#óbK—|jV—|jV—|jEd{V—†|jEd{V—†dSr0rcr¯s r6r¹zFor.get_childrenø sYèè€ØŒkÐÐÐØŒiˆˆˆà”9ÐÐÐÐÐÐÐØ”;ÐÐÐÐÐÐÐÐÐr8rºr»)NNNNN) rvr—rÚr—rSrÿrTrÿrir—r-r˜)r½r¾r¿rÀrÁrqr^ríržr£ràr+rZr¹rÅrÆs@r6rbrbŒ sðø€€€€€€ð ðð;€OØ.ÐØ1Ðà€Oðð"Ø!%Ø $ð + ð "&Ø%)ð+ ð+ ð+ ð+ ð+ ð+ ð+ ð+ ð`!%Ø"Ø$(Ø&*Ø)-ð /ð/ð/ð/ð/ð45Ð4Ð4Ñ4ððð"ð"ñ„_ð"ðððððððr8rbcó—eZdZdZdS)ÚAsyncFora°Class representing an :class:`ast.AsyncFor` node. An :class:`AsyncFor` is an asynchronous :class:`For` built with the ``async`` keyword. >>> import astroid >>> node = astroid.extract_node(''' async def func(things): async for thing in things: print(thing) ''') >>> node >>> node.body[0] Nrµr§r8r6rkrk s€€€€€ððððr8rkcóH‡—eZdZdZdZ ddddœdˆfd„Zddd„Zd„ZˆxZS)ÚAwaita¨Class representing an :class:`ast.Await` node. An :class:`Await` is the ``await`` keyword. >>> import astroid >>> node = astroid.extract_node(''' async def func(things): await other_func() ''') >>> node >>> node.body[0] >>> list(node.body[0].get_children())[0] r4Nr‘r”r•r–rr—r’r“r-r˜cód•—d|_ t¦« |||||¬¦«dSr`r<rŸs €r6ržzAwait.__init__' sIø€ð,%)ˆŒ Øå ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r5có—||_dS)zUDo some setup after initialisation. :param value: What to wait for. Nr4r?s r6r£zAwait.postinitH r@r8c#óK—|jV—dSr0r4r¯s r6r¹zAwait.get_childrenO rBr8rºr»r0rErcrÆs@r6rmrm s™ø€€€€€ððð"!€Oð"Ø!%Ø $ð  ð "&Ø%)ð ð ð ð ð ð ð ð ðBðððððððððððr8rmcó:‡—eZdZdZdZ ddddœdˆfd„ZˆxZS)Ú ImportFromzÌClass representing an :class:`ast.ImportFrom` node. >>> import astroid >>> node = astroid.extract_node('from my_package import my_module') >>> node )ÚmodnameÚnamesÚlevelrNr‘ÚfromnamerØrtúlist[tuple[str, str | None]]rur•r”r–rr—r’r“r-r˜có„•—||_ ||_ ||_ t¦« |||||¬¦«dS)a† :param fromname: The module that is being imported from. :param names: What is being imported from the module. :param level: The level of relative import. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. rœN)rsrtrur�rž) r rvrtrur”r–rr’r“r…s €r6ržzImportFrom.__init__^ siø€ð>$,ˆŒ ð ð 49ˆŒ ð ð"'ˆŒ ð õ ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8)rNNN)rvrØrtrwrur•r”r•r–r•rr—r’r•r“r•r-r˜©r½r¾r¿rÀrßržrÅrÆs@r6rrrrS ssø€€€€€ððð2€Mð Ø!Ø!%Ø $ð: ð"&Ø%)ð: ð: ð: ð: ð: ð: ð: ð: ð: ð: ð: ð: r8rrcó|‡—eZdZdZdZdZejd¬¦« ddddœdˆfd„¦«Zddd„Z d„Z ˆxZ S)Ú Attributez2Class representing an :class:`ast.Attribute` node.rNrPr´Nr‘rQrØr”r•r–rr—r’r“r-r˜cót•—d|_ ||_ t¦« |||||¬¦«dS)a :param attrname: The name of the attribute. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. NrœrSrTs €r6ržzAttribute.__init__¡ sWø€ð4$(ˆŒ ð ð %-ˆŒ Ø(å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rOcó—||_dSrrNrVs r6r£zAttribute.postinitÌ rr8c#óK—|jV—dSr0rNr¯s r6r¹zAttribute.get_childrenÔ rXr8rÝrYr0rZrrÆs@r6r{r{› s·ø€€€€€Ø<Ð<à€OØ!€Mà1€ZÔ1¸5ÐAÑAÔAð $Ø!Ø!%Ø $ð ( ð"&Ø%)ð( ð( ð( ð( ð( ð( ð( ñBÔAð( ðTðððððððððððr8r{có>‡—eZdZdZdZ ddddœdˆfd„Zd„ZˆxZS)ÚGlobalz³Class representing an :class:`ast.Global` node. >>> import astroid >>> node = astroid.extract_node('global a_global') >>> node ©rtNr‘rtú list[str]r”r•r–rr—r’r“r-r˜cód•—||_ t¦« |||||¬¦«dS)a  :param names: The names being declared as global. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. rœN©rtr�rž©r rtr”r–rr’r“r…s €r6ržzGlobal.__init__ã sIø€ð2!&ˆŒ Ø1å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8có—|Sr0r§rs r6rzGlobal._infer_name ó€Øˆ r8rº©rtr‚r”r•r–r•rr—r’r•r“r•r-r˜©r½r¾r¿rÀrßržrrÅrÆs@r6r€r€Ø s€ø€€€€€ððð€Mð "Ø!%Ø $ð " ð"&Ø%)ð" ð" ð" ð" ð" ð" ð" ð" ðHððððððr8r€c󎇗eZdZdZdZdZ ddddœdˆfd„Z ddd„Zed„¦«Z d„Z d„Z d„Z ˆfd„Z d d„Zd d„ZˆxZS)!rVzµClass representing an :class:`ast.If` node. >>> import astroid >>> node = astroid.extract_node('if condition: print(True)') >>> node ©rQrSrTrdNr‘r”r•r–rr—r’r“r-r˜có”•—d|_ g|_ g|_ d|_ t ¦« |||||¬¦«dS)r›NFrœ)rQrSrTÚ is_orelser�ržrŸs €r6ržz If.__init__ sgø€ð,$(ˆŒ Ø5à"$ˆŒ Ø(à$&ˆŒ Ø1à$ˆŒØSå ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rQrSrÿrTcóž—||_|�||_|�||_t|jt ¦«r||jjvr d|_dSdSdS)ú×Do some setup after initialisation. :param test: The condition that the statement tests. :param body: The contents of the block. :param orelse: The contents of the ``else`` block. NT)rQrSrTr1rrVr�©r rQrSrTs r6r£z If.postinitA sc€ðˆŒ Ø Ð ØˆDŒIØ Ð Ø ˆDŒKÝ �d”k¥2Ñ &Ô &ð "¨4°4´;Ô3EÐ+EÐ+EØ!ˆDŒNˆNˆNð "ð "Ð+EÐ+Er8có—|jjSrW©rQrYr¯s r6rZzIf.blockstart_tolinenoW rhr8cóè—||jdjkr||fS||jdjkr||jdjfS| ||j|jdjdz ¦«S)á8Get a range from the given line number to where this node ends. :param lineno: The line number to start the range at. :type lineno: int :returns: The range of line numbers that this node belongs to, starting at the given line number. :rtype: tuple(int, int) rr"rP)rSrrYÚ_elsed_block_rangerT©r r”s r6Ú block_rangezIf.block_range_ ss€ð �T”Y˜q”\Ô,Ò ,Ð ,ؘ6�>Ð !Ø �T”Y˜r”]Ô+Ò +Ð +ؘ4œ9 Rœ=Ô1Ð1Ð 1Ø×&Ò& v¨t¬{¸D¼IÀa¼LÔ>> import astroid >>> node = astroid.extract_node(''' import sys if sys.version_info > (3, 8): from typing import Literal else: from typing_extensions import Literal ''') >>> node.is_sys_guard() True zµThe 'is_sys_guard' function is deprecated and will be removed in astroid 3.0.0 It has been moved to pylint and can be imported from 'pylint.checkers.utils' starting with pylint 2.12é©Ú stacklevelzsys.version_infoTF) ÚwarningsÚwarnÚDeprecationWarningr1rQrÌr˜Ú Subscriptr5r{r$r?s r6Ú is_sys_guardzIf.is_sys_guard} s“€õ Œ ð (õ Øð  ñ ô ð õ �d”i¥Ñ )Ô )ð Ø”I”NˆEݘ%¥Ñ+Ô+ð $Øœ �ݘ%¥Ñ+Ô+ð °·²Ñ0AÔ0AÐEWÒ0WÐ0WØ�tàˆur8cóÔ—tjdtd¬¦«t|jt t f¦«o+|j ¦« d¦«S)aReturn True if IF stmt is a typing guard. >>> import astroid >>> node = astroid.extract_node(''' from typing import TYPE_CHECKING if TYPE_CHECKING: from xyz import a ''') >>> node.is_typing_guard() True z¸The 'is_typing_guard' function is deprecated and will be removed in astroid 3.0.0 It has been moved to pylint and can be imported from 'pylint.checkers.utils' starting with pylint 2.12r r¡r) r£r¤r¥r1rQrçr{r$Úendswithr¯s r6Úis_typing_guardzIf.is_typing_guard› sn€õ Œ ð (õ Øð  ñ ô ð õØ ŒI��iÐ(ñ ô ð>àŒi×!Ò!Ñ#Ô#×,Ò,¨_Ñ=Ô=ð >r8rºr»©rQr—rSrÿrTrÿr-r˜r=)r½r¾r¿rÀrÁr^ržr£r+rZr—r¹r›rpr§rªrÅrÆs@r6rVrV s*ø€€€€€ððð1€OØ1Ðð"Ø!%Ø $ð ( ð "&Ø%)ð( ð( ð( ð( ð( ð( ð( ð( ðX#Ø$(Ø&*ð "ð"ð"ð"ð"ð,ð"ð"ñ„_ð"ðYðYðYð ððð HðHðHð;ð;ð;ð;ð;ð ðððð<>ð>ð>ð>ð>ð>ð>ð>r8rVcóV‡—eZdZdZdZ ddddœdˆfd„Z ddd„Zd„Zdd„ZˆxZ S)ÚIfExpz¾Class representing an :class:`ast.IfExp` node. >>> import astroid >>> node = astroid.extract_node('value if condition else other') >>> node r‹Nr‘r”r•r–rr—r’r“r-r˜có„•—d|_ d|_ d|_ t¦« |||||¬¦«dSr`©rQrSrTr�ržrŸs €r6ržzIfExp.__init__½ s]ø€ð,$(ˆŒ Ø5à#'ˆŒ Ø(à%)ˆŒ Ø1å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rQrSrTcó0—||_||_||_dS)r�Nr‹r�s r6r£zIfExp.postinitä s€ðˆŒ ؈Œ ؈Œ ˆ ˆ r8c#ó@K—|jV—|jV—|jV—dSr0r‹r¯s r6r¹zIfExp.get_childrenö s0èè€ØŒiˆˆˆØŒiˆˆˆØŒkÐÐÐÐÐr8úLiteral[False]có—dS)NFr§r¯s r6r¨zIfExp.op_left_associativeû s €ðˆur8rºr»)rQr—rSr—rTr—r-r˜)r-r²) r½r¾r¿rÀrÁržr£r¹r¨rÅrÆs@r6r­r­³ s¸ø€€€€€ððð1€Oð"Ø!%Ø $ð % ð "&Ø%)ð% ð% ð% ð% ð% ð% ð% ð% ðR#Ø"Ø $ð ððððð$ððð ðððððððr8r­cóh‡—eZdZdZdZejd¬¦« ddddœdˆfd„¦«ZˆxZS)ÚImportz±Class representing an :class:`ast.Import` node. >>> import astroid >>> node = astroid.extract_node('import astroid') >>> node r�rwNr‘rtú#list[tuple[str, str | None]] | Noner”r•r–rr—r’r“r-r˜cóh•—|pg|_ t¦« |||||¬¦«dS)a :param names: The names being imported. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. rœNr„r…s €r6ržzImport.__init__ sQø€ð449°;¸BˆŒ ð õ ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rÝ)rtr¶r”r•r–r•rr—r’r•r“r•r-r˜rårÆs@r6rµrµ s�ø€€€€€ððð€Mà1€ZÔ1Ð8VÐWÑWÔWð6:Ø!Ø!%Ø $ð & ð"&Ø%)ð& ð& ð& ð& ð& ð& ð& ñXÔWð& ð& ð& ð& ð& r8rµcó—eZdZdZdS)ÚIndexzØClass representing an :class:`ast.Index` node. An :class:`Index` is a simple subscript. Deprecated since v2.6.0 - Now part of the :class:`Subscript` node. Will be removed with the release of v2.7.0 Nrµr§r8r6r¹r¹5 r¶r8r¹cóN‡—eZdZdZdZdZ ddddœdˆfd„Zddd„Zd„ZˆxZ S)ÚKeywordzõClass representing an :class:`ast.keyword` node. >>> import astroid >>> node = astroid.extract_node('function(a_kwarg=True)') >>> node >>> node.keywords [] r4rÆNr‘r*rØr”r•r–rr—r’r“r-r˜cót•—||_ d|_ t¦« |||||¬¦«dS)a :param arg: The argument being assigned to. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. Nrœ)r*r5r�rž)r r*r”r–rr’r“r…s €r6ržzKeyword.__init__M sSø€ð2 #ˆŒØ-à$(ˆŒ Ø?å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r5có—||_dS)zuDo some setup after initialisation. :param value: The value being assigned to the keyword argument. Nr4r?s r6r£zKeyword.postinitt r@r8c#óK—|jV—dSr0r4r¯s r6r¹zKeyword.get_children{ rBr8rÝ)r*rØr”r•r–r•rr—r’r•r“r•r-r˜r0rE© r½r¾r¿rÀrÁrßržr£r¹rÅrÆs@r6r»r»? s¡ø€€€€€ððð!€OØ€MðØ!Ø!%Ø $ð % ð"&Ø%)ð% ð% ð% ð% ð% ð% ð% ð% ðNðððððððððððr8r»cón‡—eZdZUdZdZ ddddœdˆfd„Zded< ded<ded<dd„Zdd d„ZˆxZ S)!r<z®Class representing an :class:`ast.List` node. >>> import astroid >>> node = astroid.extract_node('[1, 2, 3]') >>> node ©ÚctxNr‘rÂúContext | Noner”r•r–rr—r’r“r-r˜cód•—||_ t¦« |||||¬¦«dS)á :param ctx: Whether the list is assigned to or loaded from. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. rœN©rÂr�rž©r rÂr”r–rr’r“r…s €r6ržz List.__init__Š sIø€ð2$'ˆŒØ=å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8z!ClassVar[AssignedStmtsCall[List]]rÜzClassVar[InferUnaryOp[List]]rñzClassVar[InferBinaryOp[List]]ròúLiteral['builtins.list']có—dS)r¶z builtins.listr§r¯s r6r·z List.pytype¶ r+r8r@rAcó2—t||j||¬¦«S©z…Get an item from this node. :param index: The node to use as a subscript index. :type index: Const or Slice rj©r�rD©r rpr@s r6rùz List.getitem½ ó€õ " $¨¬ °5À'ÐJÑJÔJÐJr8rÝ©rÂrÃr”r•r–r•rr—r’r•r“r•r-r˜)r-rÈr0r”© r½r¾r¿rÀrßržràr·rùrÅrÆs@r6r<r< sÙø€€€€€€ððð€Mð#Ø!Ø!%Ø $ð " ð"&Ø%)ð" ð" ð" ð" ð" ð" ð" ð" ðH6Ð5Ð5Ñ5ðð1Ð0Ð0Ñ0Ø2Ð2Ð2Ñ2ðððððKðKðKðKðKðKðKðKðKr8r<có>‡—eZdZdZdZ ddddœdˆfd„Zd„ZˆxZS)ÚNonlocala Class representing an :class:`ast.Nonlocal` node. >>> import astroid >>> node = astroid.extract_node(''' def function(): nonlocal var ''') >>> node >>> node.body[0] r�Nr‘rtr‚r”r•r–rr—r’r“r-r˜cód•—||_ t¦« |||||¬¦«dS)a :param names: The names being declared as not local. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. rœNr„r…s €r6ržzNonlocal.__init__Ö sIø€ð2!&ˆŒ Ø4å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8có—|Sr0r§rs r6rzNonlocal._infer_nameú r‡r8rºrˆr‰rÆs@r6rÒrÒÆ s€ø€€€€€ð ð ð€Mð "Ø!%Ø $ð " ð"&Ø%)ð" ð" ð" ð" ð" ð" ð" ð" ðHððððððr8rÒcó—eZdZdZdS)ÚPassz¤Class representing an :class:`ast.Pass` node. >>> import astroid >>> node = astroid.extract_node('pass') >>> node Nrµr§r8r6rÖrÖþ r¶r8rÖcóT‡—eZdZdZdZ ddddœdˆfd„Z ddd„Zdd„Zd„ZˆxZ S)ÚRaisezÏClass representing an :class:`ast.Raise` node. >>> import astroid >>> node = astroid.extract_node('raise RuntimeError("Something bad happened!")') >>> node ©rŒÚcauseNr‘r”r•r–rr—r’r“r-r˜cót•—d|_ d|_ t¦« |||||¬¦«dSr`)rŒrÚr�ržrŸs €r6ržzRaise.__init__sSø€ð,#'ˆŒØ#à$(ˆŒ Ø9å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rŒrÚcó"—||_||_dS)zšDo some setup after initialisation. :param exc: What is being raised. :param cause: The exception being used to raise this one. NrÙ)r rŒrÚs r6r£zRaise.postinit7s€ðˆŒØˆŒ ˆ ˆ r8r.cót—|jsdStd„|j ¦«D¦«¦«S)zŽCheck if this node raises a :class:`NotImplementedError`. :returns: Whether this node raises a :class:`NotImplementedError`. Fc3ó,K—|]}|jdkV—ŒdS)ÚNotImplementedErrorNrÖ)rurÊs r6rwz/Raise.raises_not_implemented..Ls;èè€ð ð Ø37ˆDŒIÐ.Ò .ð ð ð ð ð ð r8)rŒrZrêr¯s r6Úraises_not_implementedzRaise.raises_not_implementedEsO€ð Œxð Ø�5Ýð ð Ø;?¼8×;SÒ;SÑ;UÔ;Uð ñ ô ñ ô ð r8c#óNK—|j� |jV—|j� |jV—dSdSr0rÙr¯s r6r¹zRaise.get_childrenPs=èè€Ø Œ8Ð Ø”(ˆNˆNˆNà Œ:Ð !Ø”*Ð Ð Ð Ð Ð ð "Ð !r8rºr»r9)rŒr—rÚr—r-r˜r=) r½r¾r¿rÀrÁržr£ràr¹rÅrÆs@r6rØrØsµø€€€€€ððð'€Oð"Ø!%Ø $ð " ð "&Ø%)ð" ð" ð" ð" ð" ð" ð" ð" ðL"Ø#ð ð ð ð ð ð  ð  ð  ð  ðððððððr8rØcóT‡—eZdZdZdZ ddddœdˆfd„Zddd„Zd„Zd„Zd„Z ˆxZ S)ÚReturnz¯Class representing an :class:`ast.Return` node. >>> import astroid >>> node = astroid.extract_node('return True') >>> node r4Nr‘r”r•r–rr—r’r“r-r˜cód•—d|_ t¦« |||||¬¦«dSr`r<rŸs €r6ržzReturn.__init__cr=r8r5có—||_dS)z]Do some setup after initialisation. :param value: The value being returned. Nr4r?s r6r£zReturn.postinit„r@r8c#ó.K—|j� |jV—dSdSr0r4r¯s r6r¹zReturn.get_children‹ó*èè€Ø Œ:Ð !Ø”*Ð Ð Ð Ð Ð ð "Ð !r8có6—t|jt¦«Sr0)r1r5r=r¯s r6Úis_tuple_returnzReturn.is_tuple_return�s€Ý˜$œ*¥eÑ,Ô,Ð,r8c#óK—|V—dSr0r§r¯s r6Ú _get_return_nodes_skip_functionsz'Return._get_return_nodes_skip_functions’óèè€Øˆ ˆ ˆ ˆ ˆ r8rºr»r0rE) r½r¾r¿rÀrÁržr£r¹rérërÅrÆs@r6rãrãXs·ø€€€€€ððð!€Oð"Ø!%Ø $ð  ð "&Ø%)ð ð ð ð ð ð ð ð ðBðððððððð-ð-ð-ðððððððr8rãcó&—eZdZUdZded<dd„ZdS) ÚSetz«Class representing an :class:`ast.Set` node. >>> import astroid >>> node = astroid.extract_node('{1, 2, 3}') >>> node zClassVar[InferUnaryOp[Set]]rñr-úLiteral['builtins.set']có—dS)r¶z builtins.setr§r¯s r6r·z Set.pytype¡s €ð ˆ~r8N)r-rï)r½r¾r¿rÀràr·r§r8r6rîrî–sB€€€€€€ððð0Ð/Ð/Ñ/ððððððr8rîc󈇗eZdZdZdZ ddddœdˆfd„Z ddd„Zd„Zed d„¦«Z d!d„Z d"d#d„Z d"d#d„Z d„Z ˆxZS)$r„zæClass representing an :class:`ast.Slice` node. >>> import astroid >>> node = astroid.extract_node('things[1:3]') >>> node >>> node.slice ©rzr{r|Nr‘r”r•r–rr—r’r“r-r˜có„•—d|_ d|_ d|_ t¦« |||||¬¦«dSr`)rzr{r|r�ržrŸs €r6ržzSlice.__init__¶s]ø€ð,%)ˆŒ Ø+à$(ˆŒ Ø+à#'ˆŒ Ø/å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rzr{r|có0—||_||_||_dS)zÌDo some setup after initialisation. :param lower: The lower index in the slice. :param upper: The upper index in the slice. :param step: The step to take between index. Nrò)r rzr{r|s r6r£zSlice.postinitÝs€ðˆŒ ؈Œ ؈Œ ˆ ˆ r8có:—|st|¦«}||_|S|S)z7Wrap the empty attributes of the Slice in a Const node.)r©r)r ÚattrÚconsts r6Ú_wrap_attributezSlice._wrap_attributeïs(€àð Ý! $Ñ'Ô'ˆE؈EŒL؈L؈ r8únodes.ClassDefcó^—t¦«j}| d¦«dS)Nr~r)rÚbuiltins_moduler)r Úbuiltinss r6rÿzSlice._proxied÷s)€å!Ñ#Ô#Ô3ˆØ×Ò Ñ(Ô(¨Ô+Ð+r8úLiteral['builtins.slice']có—dS)r¶zbuiltins.slicer§r¯s r6r·z Slice.pytypeüó €ð  Ðr8r@rAc#óK—|dkr| |j¦«V—dS|dkr| |j¦«V—dS|dkr| |j¦«V—dS| ||¬¦«Ed{V—†dS)zóInfer the possible values of the given attribute on the slice. :param attrname: The name of the attribute to infer. :type attrname: str :returns: The inferred possible values. :rtype: iterable(NodeNG) ÚstartÚstopr|rjN)rørzr{r|r©r rQr@s r6ÚigetattrzSlice.igetattrs½èè€ð �wÒ Ð Ø×&Ò& t¤zÑ2Ô2Ð 2Ð 2Ð 2Ð 2Ð 2Ø ˜Ò Ð Ø×&Ò& t¤zÑ2Ô2Ð 2Ð 2Ð 2Ð 2Ð 2Ø ˜Ò Ð Ø×&Ò& t¤yÑ1Ô1Ð 1Ð 1Ð 1Ð 1Ð 1à—|’| H°g�|Ñ>Ô>Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >r8có8—|j ||¦«Sr0)rÿrrs r6rz Slice.getattrs€ØŒ}×$Ò$ X¨wÑ7Ô7Ð7r8c#ónK—|j� |jV—|j� |jV—|j� |jV—dSdSr0ròr¯s r6r¹zSlice.get_childrensQèè€Ø Œ:Ð !Ø”*Ð Ð Ð à Œ:Ð !Ø”*Ð Ð Ð à Œ9Ð Ø”)ˆOˆOˆOˆOˆOð !Ð r8rºr»)rzr—r{r—r|r—r-r˜)r-rù)r-rýr0r”)r½r¾r¿rÀrÁržr£rør+rÿr·rrr¹rÅrÆs@r6r„r„©sø€€€€€ððð1€Oð"Ø!%Ø $ð % ð "&Ø%)ð% ð% ð% ð% ð% ð% ð% ð% ðR $Ø#Ø"ð ððððð$ðððð,ð,ð,ñ„_ð,ð ð ð ð ð?ð?ð?ð?ð?ð$8ð8ð8ð8ð8ðððððððr8r„có\‡—eZdZUdZdZdZ ddddœdˆfd„Zddd„Zded< d„Z ˆxZ S)rÁz«Class representing an :class:`ast.Starred` node. >>> import astroid >>> node = astroid.extract_node('*args') >>> node r4rÁNr‘rÂrÃr”r•r–rr—r’r“r-r˜cót•—d|_ ||_ t¦« |||||¬¦«dS)rÅNrœ)r5rÂr�ržrÇs €r6ržzStarred.__init__/sSø€ð2%)ˆŒ Ø%à#&ˆŒØEå ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r5có—||_dS)z[Do some setup after initialisation. :param value: What is being unpacked. Nr4r?s r6r£zStarred.postinitVr@r8z$ClassVar[AssignedStmtsCall[Starred]]rÜc#óK—|jV—dSr0r4r¯s r6r¹zStarred.get_childrenbrBr8rÝrÏr0rEr{rÆs@r6rÁrÁ#s¶ø€€€€€€ððð!€OØ€Mð#Ø!Ø!%Ø $ð % ð"&Ø%)ð% ð% ð% ð% ð% ð% ð% ð% ðNððððð9Ð8Ð8Ñ8ððððððððr8rÁcó\‡—eZdZUdZdZdZded< ddddœdˆfd„Z ddd„Zd„Z ˆxZ S)r¦zµClass representing an :class:`ast.Subscript` node. >>> import astroid >>> node = astroid.extract_node('things[1:3]') >>> node ©r5r~rÁzClassVar[InferLHS[Subscript]]r×Nr‘rÂrÃr”r•r–rr—r’r“r-r˜có„•—d|_ d|_ ||_ t¦« |||||¬¦«dS)a! :param ctx: Whether the subscripted item is assigned to or loaded from. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. Nrœ)r5r~rÂr�ržrÇs €r6ržzSubscript.__init__ts]ø€ð2%)ˆŒ Ø$à$(ˆŒ Ø-à#&ˆŒØIå ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r5r~có"—||_||_dS)z‘Do some setup after initialisation. :param value: What is being indexed. :param slice: The slice being used to lookup. Nr )r r5r~s r6r£zSubscript.postinitŸs€ðˆŒ ؈Œ ˆ ˆ r8c#ó.K—|jV—|jV—dSr0r r¯s r6r¹zSubscript.get_children«s(èè€ØŒjÐÐÐØŒjÐÐÐÐÐr8rÝrÏr9)r5r—r~r—r-r˜) r½r¾r¿rÀrÁrßràržr£r¹rÅrÆs@r6r¦r¦fs¶ø€€€€€€ððð)€OØ€Mà,Ð,Ð,Ñ,ð#Ø!Ø!%Ø $ð ( ð"&Ø%)ð( ð( ð( ð( ð( ð( ð( ð( ðXCGð ð ð ð ð ðððððððr8r¦có^‡—eZdZdZdZdZ ddddœdˆfd„Z ddd„Zd„Zd„Z d„Z ˆxZ S)rXaClass representing an :class:`ast.TryExcept` node. >>> import astroid >>> node = astroid.extract_node(''' try: do_something() except Exception as error: print("Error!") ''') >>> node ©rSrRrTNr‘r”r•r–rr—r’r“r-r˜có„•—g|_ g|_ g|_ t¦« |||||¬¦«dSrš)rSrRrTr�ržrŸs €r6ržzTryExcept.__init__Ás]ø€ð,#%ˆŒ ØAà-/ˆŒ Ø%à$&ˆŒ Ø1å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rSrÿrRúlist[ExceptHandler] | NonerTcó@—|�||_|�||_|� ||_dSdS)zäDo some setup after initialisation. :param body: The contents of the block to catch exceptions from. :param handlers: The exception handlers. :param orelse: The contents of the ``else`` block. Nr)r rSrRrTs r6r£zTryExcept.postinitès7€ð Р؈DŒIØ Ð Ø$ˆDŒMØ Ð Ø ˆDŒKˆKˆKð Ð r8có—|Sr0r§rs r6rzTryExcept._infer_nameýr‡r8cóF—d}|jD]|}|jr||jjkr||fcS|jdj|cxkr|jdjkrnn||jdjfcS|€|jdjdz }Œ}| ||j|¦«S)r”Nrr"rP)rRrmrrSrYr•rT)r r”ÚlastÚ exhandlers r6r—zTryExcept.block_rangesÈ€ðˆØœð 8ð 8ˆIØŒ~ð & &¨I¬NÔ,EÒ"EÐ"Eؘv�~Ð%Ð%Ð%ØŒ~˜aÔ Ô+¨vÐTÐTÒTÐT¸¼ÈÔ9KÔ9TÒTÐTÐTÐTÐTؘyœ~¨bÔ1Ô:Ð:Ð:Ð:Ð:؈|Ø ”~ aÔ(Ô3°aÑ7�øØ×&Ò& v¨t¬{¸DÑAÔAÐAr8c#ó`K—|jEd{V—†|jpdEd{V—†|jpdEd{V—†dSr;rr¯s r6r¹zTryExcept.get_childrensdèè€Ø”9ÐÐÐÐÐÐÐà”=Ð& BÐ&Ð&Ð&Ð&Ð&Ð&Ð&Ø”;Ð$ "Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$r8rºr»)rSrÿrRrrTrÿr-r˜© r½r¾r¿rÀrÁr^ržr£rr—r¹rÅrÆs@r6rXrX°sËø€€€€€ð ð ð5€OØ=Ðð"Ø!%Ø $ð % ð "&Ø%)ð% ð% ð% ð% ð% ð% ð% ð% ðR%)Ø/3Ø&*ð !ð!ð!ð!ð!ð*ðððBðBðBð(%ð%ð%ð%ð%ð%ð%r8rXcóV‡—eZdZdZdZdZ ddddœdˆfd„Z ddd„Zd„Zd„Z ˆxZ S)Ú TryFinallya3Class representing an :class:`ast.TryFinally` node. >>> import astroid >>> node = astroid.extract_node(''' try: do_something() except Exception as error: print("Error!") finally: print("Cleanup!") ''') >>> node ©rSÚ finalbodyNr‘r”r•r–rr—r’r“r-r˜cót•—g|_ g|_ t¦« |||||¬¦«dSrš)rSrr�ržrŸs €r6ržzTryFinally.__init__.sSø€ð,/1ˆŒ Ø=à')ˆŒØ4å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rSúlist[NodeNG | TryExcept] | Nonerrÿcó.—|�||_|� ||_dSdS)z´Do some setup after initialisation. :param body: The try-except that the finally is attached to. :param finalbody: The contents of the ``finally`` block. Nr)r rSrs r6r£zTryFinally.postinitRs*€ð Р؈DŒIØ Ð Ø&ˆDŒNˆNˆNð !Ð r8cóú—|jd}t|t¦«r?|j|jkr/|j|cxkr |jkrnn| |¦«S| ||j¦«S)r”r)rSr1rXrrYr—r•r)r r”Úchilds r6r—zTryFinally.block_rangebs…€ð” ˜!” ˆõ �u�iÑ (Ô (ð -àÔ  D¤OÒ3Ð3Ø” &Ð:Ð:Ò:Ð:¨4¬?Ò:Ð:Ð:Ð:Ð:à×$Ò$ VÑ,Ô,Ð ,Ø×&Ò& v¨t¬~Ñ>Ô>Ð>r8c#ó>K—|jEd{V—†|jEd{V—†dSr0rr¯s r6r¹zTryFinally.get_childrenvs@èè€Ø”9ÐÐÐÐÐÐÐØ”>Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!r8rºr»r9)rSr rrÿr-r˜) r½r¾r¿rÀrÁr^ržr£r—r¹rÅrÆs@r6rrs¶ø€€€€€ð ð ð,€OØ4Ðð"Ø!%Ø $ð " ð "&Ø%)ð" ð" ð" ð" ð" ð" ð" ð" ðL15Ø)-ð'ð'ð'ð'ð'ð ?ð?ð?ð("ð"ð"ð"ð"ð"ð"r8rcób‡—eZdZdZdZdZddddddœdˆfd„Zdddddœdd„Zd„Zdd„Z d„Z ˆxZ S)ÚTryStarz0Class representing an :class:`ast.TryStar` node.©rSrRrTrNrœr”r•r–r’r“rr—r-r˜có”•—g|_ g|_ g|_ g|_ t ¦« |||||¬¦«dS)aÌ :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. rœN)rSrRrTrr�rž)r r”r–r’r“rr…s €r6ržzTryStar.__init__�sgø€ð$#%ˆŒ ØAà-/ˆŒ Ø%à$&ˆŒ Ø1à')ˆŒØ4å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rSrÿrRrrTrcóR—|r||_|r||_|r||_|r ||_dSdS)a"Do some setup after initialisation. :param body: The contents of the block to catch exceptions from. :param handlers: The exception handlers. :param orelse: The contents of the ``else`` block. :param finalbody: The contents of the ``finally`` block. Nr')r rSrRrTrs r6r£zTryStar.postinit§sN€ð ð ØˆDŒIØ ð %Ø$ˆDŒMØ ð !Ø ˆDŒKØ ð 'Ø&ˆDŒNˆNˆNð 'ð 'r8có—|Sr0r§rs r6rzTryStar._infer_name¾r‡r8rlútuple[int, int]cóB—||jkr||fS|jrD|jdj|cxkr|jdjkrnn||jdjfS|jD]e}|jr||jjkr||fcS|jdj|cxkr|jdjkrnŒO||jdjfcSŒf|jra|jdjdz |kr||fS|jdj|cxkr|jdjkrnn||jdjfS|jra|jdjdz |kr||fS|jdj|cxkr|jdjkrnn||jdjfS||jfS)z=Get a range from a given line number to where this node ends.rr"rP)rrSrYrRrmrTr)r r”rs r6r—zTryStar.block_rangeÁsö€à �T”_Ò $Ð $ؘ6�>Ð !Ø Œ9ð 2˜œ 1œÔ0°FÐTÐTÒTÐT¸d¼iȼmÔ>TÒTÐTÐTÐTÐTà˜4œ9 Rœ=Ô1Ð1Ð 1Øœð ;ð ;ˆIØŒ~ð & &¨I¬NÔ,EÒ"EÐ"Eؘv�~Ð%Ð%Ð%ØŒ~˜aÔ Ô+¨vÐTÐTÒTÐT¸¼ÈÔ9KÔ9TÒTÐTÐTÐTÐTؘyœ~¨bÔ1Ô:Ð:Ð:Ð:Ð:ðUà Œ;ð 8ØŒ{˜1Œ~Ô(¨1Ñ,°Ò6Ð6ؘv�~Ð%ØŒ{˜1Œ~Ô(¨FÐNÐNÒNÐN°d´kÀ"´oÔ6NÒNÐNÐNÐNÐNؘtœ{¨2œÔ7Ð7Ð7Ø Œ>ð ;ØŒ~˜aÔ Ô+¨aÑ/°6Ò9Ð9ؘv�~Ð%ØŒ~˜aÔ Ô+¨vÐTÐTÒTÐT¸¼ÈÔ9KÔ9TÒTÐTÐTÐTÐTؘtœ~¨bÔ1Ô:Ð:Ð:Ø�t”}Ð$Ð$r8c#órK—|jEd{V—†|jEd{V—†|jEd{V—†|jEd{V—†dSr0r'r¯s r6r¹zTryStar.get_childrenÙstèè€Ø”9ÐÐÐÐÐÐÐØ”=Ð Ð Ð Ð Ð Ð Ð Ø”;ÐÐÐÐÐÐÐØ”>Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!r8) r”r•r–r•r’r•r“r•rr—r-r˜) rSrÿrRrrTrÿrrÿr-r˜)r”rlr-r+rrÆs@r6r&r&{sÈø€€€€€Ø:Ð:àA€OØJÐð "Ø!%Ø!%Ø%)Ø $ð$ ð$ ð$ ð$ ð$ ð$ ð$ ð$ ðR%)Ø/3Ø&*Ø)-ð 'ð'ð'ð'ð'ð'ð.ððð%ð%ð%ð%ð0"ð"ð"ð"ð"ð"ð"r8r&cón‡—eZdZUdZdZ ddddœdˆfd„Zded< ded<ded<dd„Zdd d„ZˆxZ S)!r=z±Class representing an :class:`ast.Tuple` node. >>> import astroid >>> node = astroid.extract_node('(1, 2, 3)') >>> node rÁNr‘rÂrÃr”r•r–rr—r’r“r-r˜cód•—||_ t¦« |||||¬¦«dS)a :param ctx: Whether the tuple is assigned to or loaded from. :param lineno: The line that this node appears on in the source code. :param col_offset: The column that this node appears on in the source code. :param parent: The parent node in the syntax tree. :param end_lineno: The last line this node appears on in the source code. :param end_col_offset: The end column this node appears on in the source code. Note: This is after the last symbol. rœNrÆrÇs €r6ržzTuple.__init__ësIø€ð2$'ˆŒØ>å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8z"ClassVar[AssignedStmtsCall[Tuple]]rÜzClassVar[InferUnaryOp[Tuple]]rñzClassVar[InferBinaryOp[Tuple]]ròúLiteral['builtins.tuple']có—dS)r¶zbuiltins.tupler§r¯s r6r·z Tuple.pytyperÿr8r@rAcó2—t||j||¬¦«SrËrÌrÍs r6rùz Tuple.getitemrÎr8rÝrÏ)r-r0r0r”rÐrÆs@r6r=r=àsÙø€€€€€€ððð€Mð#Ø!Ø!%Ø $ð " ð"&Ø%)ð" ð" ð" ð" ð" ð" ð" ð" ðH7Ð6Ð6Ñ6ðð2Ð1Ð1Ñ1Ø3Ð3Ð3Ñ3ð ð ð ð ðKðKðKðKðKðKðKðKðKr8r=c󜇗eZdZUdZdZdZejd¬¦« ddddœdˆfd„¦«Zddd„Z de d<dd d„Z d„Z ˆfd„Z ˆxZS)!ÚUnaryOpz¨Class representing an :class:`ast.UnaryOp` node. >>> import astroid >>> node = astroid.extract_node('-5') >>> node ©Úoperandrr´Nr‘r€rØr”r•r–rr—r’r“r-r˜cót•—||_ d|_ t¦« |||||¬¦«dSr›)r€r6r�ržr‚s €r6ržzUnaryOp.__init__3sSø€ð4!ˆŒØà&*ˆŒ Ø4å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r6có—||_dS)zlDo some setup after initialisation. :param operand: What the unary operator is applied to. Nr5)r r6s r6r£zUnaryOp.postinit[s€ð ˆŒ ˆ ˆ r8zFClassVar[InferBinaryOperation[UnaryOp, util.BadUnaryOperationMessage]]Ú_infer_unaryopr@rAcól— | |¬¦«}d„|D¦«S#t$rgcYSwxYw)r rjcóF—g|]}t|tj¦«¯|‘ŒSr§)r1rÚBadUnaryOperationMessagerŠs r6r«z'UnaryOp.type_errors..rs;€ðððàݘf¥dÔ&CÑDÔDðØðððr8)r9rrŒs r6rŽzUnaryOp.type_errorsgsd€ð Ø×)Ò)°'Ð)Ñ:Ô:ˆGððà%ðñôð øõ ð ð ð ØˆIˆIˆIð øøør�c#óK—|jV—dSr0r5r¯s r6r¹zUnaryOp.get_childrenzsèè€ØŒlÐÐÐÐÐr8có~•—|jdkrt|jSt¦« ¦«S)NÚnot)r€rr�r¥r’s €r6r¥zUnaryOp.op_precedence}s3ø€Ø Œ7�eÒ Ð Ý  ¤Ô)Ð )å‰wŒw×$Ò$Ñ&Ô&Ð&r8rÝr“r0)r6r—r-r˜r”)r½r¾r¿rÀrÁrßrráržr£ràrŽr¹r¥rÅrÆs@r6r4r4'sø€€€€€€ððð#€OØ€Mà1€ZÔ1°UÐ;Ñ;Ô;ðØ!Ø!%Ø $ð % ð"&Ø%)ð% ð% ð% ð% ð% ð% ð% ñ<Ô;ð% ðNðððððððñðððððð&ððð'ð'ð'ð'ð'ð'ð'ð'ð'r8r4cóx‡—eZdZdZdZdZ ddddœdˆfd„Z ddd„Zed„¦«Z d„Z d„Z ˆfd„Z ˆxZ S)ÚWhilezØClass representing an :class:`ast.While` node. >>> import astroid >>> node = astroid.extract_node(''' while condition(): print("True") ''') >>> node r‹rdNr‘r”r•r–rr—r’r“r-r˜có„•—d|_ g|_ g|_ t¦« |||||¬¦«dSr`r¯rŸs €r6ržzWhile.__init__“s]ø€ð,$(ˆŒ Ø0à"$ˆŒ Ø'à$&ˆŒ Ø1å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rQrSrÿrTcó<—||_|�||_|� ||_dSdS)zÑDo some setup after initialisation. :param test: The condition that the loop tests. :param body: The contents of the loop. :param orelse: The contents of the ``else`` block. Nr‹r�s r6r£zWhile.postinitºs1€ðˆŒ Ø Ð ØˆDŒIØ Ð Ø ˆDŒKˆKˆKð Ð r8có—|jjSrWr’r¯s r6rZzWhile.blockstart_tolinenoÎrhr8có8—| ||j¦«S)r”)r•rTr–s r6r—zWhile.block_rangeÖs€ð×&Ò& v¨t¬{Ñ;Ô;Ð;r8c#óPK—|jV—|jEd{V—†|jEd{V—†dSr0r‹r¯s r6r¹zWhile.get_childrenâr™r8c#ó–•K—|j ¦«Ed{V—†t¦« ¦«Ed{V—†dS)z1A While node can contain a Yield node in the testNr�r’s €r6rpz#While._get_yield_nodes_skip_lambdasèržr8rºr»r«)r½r¾r¿rÀrÁr^ržr£r+rZr—r¹rprÅrÆs@r6rArA„síø€€€€€ð ð ð1€OØ1Ðð"Ø!%Ø $ð % ð "&Ø%)ð% ð% ð% ð% ð% ð% ð% ð% ðR#Ø$(Ø&*ð !ð!ð!ð!ð!ð(ð"ð"ñ„_ð"ð <ð <ð <ðððð ;ð;ð;ð;ð;ð;ð;ð;ð;r8rAcóz‡—eZdZUdZdZdZdZ ddddœdˆfd„Z ddd„Zde d< e d„¦«Z d„Z ˆxZ S)ÚWithzèClass representing an :class:`ast.With` node. >>> import astroid >>> node = astroid.extract_node(''' with open(file_path) as file_: print(file_.read()) ''') >>> node ©r!rSrhrQNr‘r”r•r–rr—r’r“r-r˜có„•—g|_ g|_ d|_ t¦« |||||¬¦«dSr`)r!rSrir�ržrŸs €r6ržz With.__init__s^ø€ð,:<ˆŒ ØOà"$ˆŒ Ø1à.2ˆÔØXå ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r!ú)list[tuple[NodeNG, NodeNG | None]] | NonerSrÿricó8—|�||_|�||_||_dS)zËDo some setup after initialisation. :param items: The pairs of context managers and the names they are assigned to. :param body: The contents of the ``with`` block. N)r!rSri)r r!rSris r6r£z With.postinit)s,€ð Р؈DŒJØ Ð ØˆDŒIØ.ˆÔÐÐr8z!ClassVar[AssignedStmtsCall[With]]rÜcó2—|jddjS)rXr"r)r!rYr¯s r6rZzWith.blockstart_tolinenoAs€ð Œz˜"Œ~˜aÔ Ô)Ð)r8c#óRK—|jD]\}}|V—|r|V—Œ|jEd{V—†dS)zoGet the child nodes below this node. :returns: The children. :rtype: iterable(NodeNG) NrJ)r rOÚvars r6r¹zWith.get_childrenIsXèè€ð œð ð ‰IˆD�#؈JˆJˆJØð Ø� � � øØ”9ÐÐÐÐÐÐÐÐÐr8rºr»)r!rLrSrÿrir—r-r˜)r½r¾r¿rÀrÁrqr^ržr£ràr+rZr¹rÅrÆs@r6rIrIîsáø€€€€€€ð ð ð(€OØ.ÐØ(Ðð"Ø!%Ø $ð % ð "&Ø%)ð% ð% ð% ð% ð% ð% ð% ð% ðR<@Ø$(Ø)-ð /ð/ð/ð/ð/ð&6Ð5Ð5Ñ5ððð*ð*ñ„_ð*ð ð ð ð ð ð ð r8rIcó—eZdZdZdS)Ú AsyncWithz7Asynchronous ``with`` built with the ``async`` keyword.Nrµr§r8r6rRrRVs€€€€€ØAÐAÐAÐAr8rRcóN‡—eZdZdZdZ ddddœdˆfd„Zddd„Zd„Zd„ZˆxZ S)ÚYieldz¬Class representing an :class:`ast.Yield` node. >>> import astroid >>> node = astroid.extract_node('yield True') >>> node r4Nr‘r”r•r–rr—r’r“r-r˜cód•—d|_ t¦« |||||¬¦«dSr`r<rŸs €r6ržzYield.__init__esIø€ð,%)ˆŒ Ø!å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r5có—||_dS)zWDo some setup after initialisation. :param value: The value to yield. Nr4r?s r6r£zYield.postinit†r@r8c#ó.K—|j� |jV—dSdSr0r4r¯s r6r¹zYield.get_children�rçr8c#óK—|V—dSr0r§r¯s r6rpz#Yield._get_yield_nodes_skip_lambdas‘rìr8rºr»r0rErFrÆs@r6rTrTZs¨ø€€€€€ððð!€Oð"Ø!%Ø $ð  ð "&Ø%)ð ð ð ð ð ð ð ð ðBððððððððððððððr8rTcó—eZdZdZdS)Ú YieldFromz2Class representing an :class:`ast.YieldFrom` node.Nrµr§r8r6rZrZ•s€€€€€Ø<Ð<Ð<ÐRepresents the unpacking of dicts into dicts using :pep:`448`.Nrµr§r8r6r5r5™s€€€€€ØHÐHÐHÐHr8r5cóP‡—eZdZdZdZdZ ddddœdˆfd„Zddœdd„Zd„ZˆxZ S)ÚFormattedValueaPClass representing an :class:`ast.FormattedValue` node. Represents a :pep:`498` format string. >>> import astroid >>> node = astroid.extract_node('f"Format {type_}"') >>> node >>> node.values [, ] ©r5Ú format_spec)Ú conversionNr‘r”r•r–rr—r’r“r-r˜cóp•—| | d|_ t¦« |||||¬¦«dSr`)r_r�ržrŸs €r6ržzFormattedValue.__init__­sdø€ð, ÐØ8à Ðð ð .2ˆÔð õ ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8)r_r5rr`rlr_úJoinedStr | Nonecó0—||_||_||_dS)a2Do some setup after initialisation. :param value: The value to be formatted into the string. :param conversion: The type of formatting to be applied to the value. :param format_spec: The formatting to be applied to the value. :type format_spec: JoinedStr or None N)r5r`r_)r r5r`r_s r6r£zFormattedValue.postinitÜs €ð ˆŒ Ø$ˆŒØ&ˆÔÐÐr8c#ó@K—|jV—|j� |jV—dSdSr0r^r¯s r6r¹zFormattedValue.get_childrenðs:èè€ØŒjÐÐÐà Ô Ð 'ØÔ"Ð "Ð "Ð "Ð "Ð "ð (Ð 'r8rºr»)r5rr`rlr_rbr-r˜r¿rÆs@r6r]r]�s¨ø€€€€€ð ð ð/€OØ#€Mð"Ø!%Ø $ð - ð "&Ø%)ð- ð- ð- ð- ð- ð- ð- ð- ðh)-ð 'ð'ð'ð'ð'ð'ð(#ð#ð#ð#ð#ð#ð#r8r]cóH‡—eZdZdZdZ ddddœdˆfd„Zddd„Zd„ZˆxZS)Ú JoinedStrz¾Represents a list of string expressions to be joined. >>> import astroid >>> node = astroid.extract_node('f"Format {type_}"') >>> node r«Nr‘r”r•r–rr—r’r“r-r˜cód•—g|_ t¦« |||||¬¦«dSrš)rIr�ržrŸs €r6ržzJoinedStr.__init__sMø€ð,%'ˆŒ ð õ ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rIrÿcó—|� ||_dSdS)z–Do some setup after initialisation. :param value: The string expressions to be joined. :type: list(FormattedValue or Const) Nr«r®s r6r£zJoinedStr.postinit&s€ð Ð Ø ˆDŒKˆKˆKð Ð r8c#ó$K—|jEd{V—†dSr0r«r¯s r6r¹zJoinedStr.get_children0r°r8rºr»r0r²rcrÆs@r6rfrf÷s™ø€€€€€ððð"€Oð"Ø!%Ø $ð " ð "&Ø%)ð" ð" ð" ð" ð" ð" ð" ð" ðH!ð!ð!ð!ð!ðððððððr8rfcór‡—eZdZUdZdZdZ d!dddœd"ˆfd„Zd#d„Zded< ddœd$d„Z d%d„Z d&d „Z ˆxZ S)'Ú NamedExprzÉRepresents the assignment from the assignment expression >>> import astroid >>> module = astroid.parse('if a := 1: pass') >>> module.body[0].test r~TNr‘r”r•r–rr—r’r“r-r˜có`•—| | t¦« |||||¬¦«dSršr rŸs €r6ržzNamedExpr.__init__DsUø€ð, Ðð ð ÐØ<å ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8rvrr5có"—||_||_dSr0r~r„s r6r£zNamedExpr.postinitks€ØˆŒ ؈Œ ˆ ˆ r8z&ClassVar[AssignedStmtsCall[NamedExpr]]rÜrærçúLiteral[None, True]ú@nodes.FunctionDef | nodes.Module | nodes.ClassDef | nodes.Lambdacó–—|jst|¬¦«‚t|jttt f¦«rq|jjst|j¬¦«‚|jjjst|jj¬¦«‚|jjj d¬¦«S|j d¬¦«S)zµThe first parent frame node. A frame node is a :class:`Module`, :class:`FunctionDef`, or :class:`ClassDef`. :returns: The first parent frame node. r Træ)rrr1rír»rØrÒ)r rçs r6rÒzNamedExpr.framets¼€ðŒ{ð 2Ý$¨DÐ1Ñ1Ô1Ð 1õ �d”k¥I­w½ Ð#FÑ GÔ Gð @Ø”;Ô%ð =Ý(°´ Ð<Ñ<Ô<Ð<Ø”;Ô%Ô,ð DÝ(°´ Ô0BÐCÑCÔCÐCØ”;Ô%Ô,×2Ò2¸$Ð2Ñ?Ô?Ð ?àŒ{× Ò ¨Ð Ñ-Ô-Ð-r8r*cóŽ—|jst|¬¦«‚t|jttt f¦«ro|jjst|j¬¦«‚|jjjst|jj¬¦«‚|jjj ¦«S|j ¦«Sr )rrr1rír»rØrÍr¯s r6rÍzNamedExpr.scope‹s±€ð Œ{ð 2Ý$¨DÐ1Ñ1Ô1Ð 1õ �d”k¥I­w½ Ð#FÑ GÔ Gð 5Ø”;Ô%ð =Ý(°´ Ð<Ñ<Ô<Ð<Ø”;Ô%Ô,ð DÝ(°´ Ô0BÐCÑCÔCÐCØ”;Ô%Ô,×2Ò2Ñ4Ô4Ð 4àŒ{× Ò Ñ"Ô"Ð"r8rÊr´rJcóZ—| d¬¦« ||¦«dS)a{Define that the given name is declared in the given statement node. NamedExpr's in Arguments, Keyword or Comprehension are evaluated in their parent's parent scope. So we add to their frame's locals. .. seealso:: :meth:`scope` :param name: The name that is being defined. :param stmt: The statement that defines the given name. TræN)rÒÚ set_local)r rÊrJs r6rszNamedExpr.set_localžs.€ð � Š ˜$ˆ ÑÔ×)Ò)¨$°Ñ5Ô5Ð5Ð5Ð5r8rºr»)rvrr5rr-r˜)rçrnr-ror)rÊr´rJrr-r˜) r½r¾r¿rÀrÁríržr£ràrÒrÍrsrÅrÆs@r6rkrk4sðø€€€€€€ððð*€Oà€OðHð "Ø!%Ø $ð % ð "&Ø%)ð% ð% ð% ð% ð% ð% ð% ð% ðNðððð;Ð:Ð:Ñ:ðð 04ð.ð.ð.ð.ð.ð.ð.#ð#ð#ð#ð& 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6r8rkcó(—eZdZdZdZd d„Zd d d„ZdS) ÚUnknownzßThis node represents a node in a constructed AST where introspection is not possible. At the moment, it's only used in the args attribute of FunctionDef nodes where function signature introspection failed. r-úLiteral['Unknown']có—dS)Nrur§r¯s r6rz Unknown.qnameµs€Øˆyr8Nr@rAc+ó&K—tjV—dS)z4Inference on an Unknown node immediately terminates.N)rrE©r r@rÈs r6Ú_inferzUnknown._infer¸sèè€åÔÐÐÐÐÐr8)r-rvr0r”)r½r¾r¿rÀrÊrrzr§r8r6ruru¬sR€€€€€ððð €Dðððððððððððr8rucó<‡—eZdZdZdZdZdZdˆfd „ Z ddd„ZˆxZ S)ÚEvaluatedObjectz²Contains an object that has already been inferred This class is useful to pre-evaluate a particular node, with the resulting class acting as the non-evaluated node. )Úoriginalr4r}rr5úNodeNG | util.UninferableBaser-r˜c󬕗||_ ||_ t¦« |jj|jj|jj¬¦«dS)N)r”r–r)r}r5r�ržr”r–r)r r}r5r…s €r6ržzEvaluatedObject.__init__ÈsZø€Ø (ˆŒ Ø?à49ˆŒ Ø å ‰Œ×ÒØ”=Ô'Ø”}Ô/Ø”=Ô'ð ñ ô ð ð ð r8Nr@rArÈr ú4Generator[NodeNG | util.UninferableBase, None, None]c+óK—|jV—dSr0r4rys r6rzzEvaluatedObject._inferÕsèè€ðŒjÐÐÐÐÐr8)r}rr5r~r-r˜r0)r@rArÈr r-r€) r½r¾r¿rÀrÊrÁrßržrzrÅrÆs@r6r|r|½svø€€€€€ððð €DØ#€OØ€Mð  ð  ð  ð  ð  ð  ð26ðððððððððr8r|cóD‡—eZdZdZdZdZ ddddœdˆfd„Zdd„ZˆxZS)ÚMatchzöClass representing a :class:`ast.Match` node. >>> import astroid >>> node = astroid.extract_node(''' match x: case 200: ... case _: ... ''') >>> node ©ÚsubjectÚcases)r†Nr‘r”r•r–rr—r’r“r-r˜có\•—||t¦« |||||¬¦«dS©Nrœr rŸs €r6ržzMatch.__init__ðsKø€ð ÐØ Ð#Ý ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r…rr†úlist[MatchCase]có"—||_||_dSr0r„)r r…r†s r6r£zMatch.postinits€ð ˆŒ ؈Œ ˆ ˆ r8rºr»)r…rr†r‰r-r˜) r½r¾r¿rÀrÁr^ržr£rÅrÆs@r6rƒrƒÞsŠø€€€€€ð ð ð+€OØ)Ðð"Ø!%Ø $ð  ð "&Ø%)ð ð ð ð ð ð ð ð ð&ðððððððr8rƒcó—eZdZdZdS)ÚPatternz!Base class for all Pattern nodes.Nrµr§r8r6rŒrŒ s€€€€€Ø+Ð+Ð+Ð+r8rŒcód‡—eZdZUdZdZdZded<ded<ded<ded<d d œdˆfd„Zdd„ZˆxZ S)Ú MatchCasezèClass representing a :class:`ast.match_case` node. >>> import astroid >>> node = astroid.extract_node(''' match x: case 200: ... ''') >>> node.cases[0] ©ÚpatternÚguardrSrQr˜r”r–r’r“Nrýrr—r-cóX•—|||t¦« |¬¦«dS)Nrýr rÞs €r6ržzMatchCase.__init__&s6ø€Ø ÐØ Ð!Ø ÐÝ ‰Œ×Ò ÐÑ'Ô'Ð'Ð'Ð'r8r�rŒr‘rSr¡có0—||_||_||_dSr0r�)r r�r‘rSs r6r£zMatchCase.postinit,s€ðˆŒ ؈Œ ؈Œ ˆ ˆ r8rì)r�rŒr‘r—rSr¡r-r˜) r½r¾r¿rÀrÁr^ràržr£rÅrÆs@r6rŽrŽs¤ø€€€€€€ð ð ð3€OØ(Ðà€L€L�LØÐÐÑØÐÐÑØÐÐÑà26ð(ð(ð(ð(ð(ð(ð(ð(ð ð ð ð ð ð ð ð r8rŽcó@‡—eZdZdZdZ ddddœdˆfd„Zdd„ZˆxZS)Ú MatchValuezñClass representing a :class:`ast.MatchValue` node. >>> import astroid >>> node = astroid.extract_node(''' match x: case 200: ... ''') >>> node.cases[0].pattern r4Nr‘r”r•r–rr—r’r“r-r˜cóX•—|t¦« |||||¬¦«dSrˆr rŸs €r6ržzMatchValue.__init__GsEø€ð ÐÝ ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r5rcó—||_dSr0r4r?s r6r£zMatchValue.postinitYs €ØˆŒ ˆ ˆ r8rºr»)r5rr-r˜©r½r¾r¿rÀrÁržr£rÅrÆs@r6r•r•8s„ø€€€€€ð ð ð!€Oð"Ø!%Ø $ð  ð "&Ø%)ð ð ð ð ð ð ð ð ð$ðððððððr8r•có6‡—eZdZdZdZddddddœdˆfd„ZˆxZS)ÚMatchSingletonaÍClass representing a :class:`ast.MatchSingleton` node. >>> import astroid >>> node = astroid.extract_node(''' match x: case True: ... case False: ... case None: ... ''') >>> node.cases[0].pattern >>> node.cases[1].pattern >>> node.cases[2].pattern r4Nrœr5úLiteral[True, False, None]r”r•r–r’r“rr—r-r˜cób•—||_t¦« |||||¬¦«dSrˆr<)r r5r”r–r’r“rr…s €r6ržzMatchSingleton.__init__tsFø€ðˆŒ Ý ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8)r5r›r”r•r–r•r’r•r“r•rr—r-r˜ryrÆs@r6ršrš]siø€€€€€ððð(€Mð "Ø!%Ø!%Ø%)Ø $ð ð ð ð ð ð ð ð ð ð ð ð r8ršcó@‡—eZdZdZdZ ddddœdˆfd„Zdd„ZˆxZS)Ú MatchSequenceahClass representing a :class:`ast.MatchSequence` node. >>> import astroid >>> node = astroid.extract_node(''' match x: case [1, 2]: ... case (1, 2, *_): ... ''') >>> node.cases[0].pattern >>> node.cases[1].pattern ©ÚpatternsNr‘r”r•r–rr—r’r“r-r˜cóX•—|t¦« |||||¬¦«dSrˆr rŸs €r6ržzMatchSequence.__init__›óEø€ð Ð$Ý ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r ú list[Pattern]có—||_dSr0rŸ©r r s r6r£zMatchSequence.postinit­ó €Ø ˆŒ ˆ ˆ r8rºr»©r r£r-r˜r˜rÆs@r6ržržˆs„ø€€€€€ððð $€Oð"Ø!%Ø $ð  ð "&Ø%)ð ð ð ð ð ð ð ð ð$!ð!ð!ð!ð!ð!ð!ð!r8ržcóL‡—eZdZUdZdZ ddddœdˆfd„Zdd„Zded<ˆxZS)Ú MatchMappingaClass representing a :class:`ast.MatchMapping` node. >>> import astroid >>> node = astroid.extract_node(''' match x: case {1: "Hello", 2: "World", 3: _, **rest}: ... ''') >>> node.cases[0].pattern ©Úkeysr ÚrestNr‘r”r•r–rr—r’r“r-r˜có`•—|||t¦« |||||¬¦«dSrˆr rŸs €r6ržzMatchMapping.__init__ÀsQø€ð ÐØ Ð$Ø Ð$Ý ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r«r¡r r£r¬rTcó0—||_||_||_dSr0rª)r r«r r¬s r6r£zMatchMapping.postinitÔs€ðˆŒ Ø ˆŒ ؈Œ ˆ ˆ r8zlClassVar[Callable[[MatchMapping, AssignName, InferenceContext | None, None], Generator[NodeNG, None, None]]]rÜrºr»)r«r¡r r£r¬rTr-r˜© r½r¾r¿rÀrÁržr£ràrÅrÆs@r6r©r©±sšø€€€€€€ð ð ð3€Oð"Ø!%Ø $ð  ð "&Ø%)ð ð ð ð ð ð ð ð ð( ð ð ð ð ð ð ñ ððððr8r©cóD‡—eZdZdZdZdZ ddddœdˆfd„Zdd„ZˆxZS)Ú MatchClassarClass representing a :class:`ast.MatchClass` node. >>> import astroid >>> node = astroid.extract_node(''' match x: case Point2D(0, 0): ... case Point3D(x=0, y=0, z=0): ... ''') >>> node.cases[0].pattern >>> node.cases[1].pattern )r¬r Ú kwd_patterns)Ú kwd_attrsNr‘r”r•r–rr—r’r“r-r˜cód•—||||t¦« |||||¬¦«dSrˆr rŸs €r6ržzMatchClass.__init__sWø€ð ÐØ Ð$Ø Ð!Ø Ð(Ý ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r¬rr r£r³r‚r²có>—||_||_||_||_dSr0)r¬r r³r²)r r¬r r³r²s r6r£zMatchClass.postinits'€ðˆŒØ ˆŒ Ø"ˆŒØ(ˆÔÐÐr8rºr») r¬rr r£r³r‚r²r£r-r˜) r½r¾r¿rÀrÁrßržr£rÅrÆs@r6r±r±ïs‰ø€€€€€ððð :€OØ"€Mð"Ø!%Ø $ð  ð "&Ø%)ð ð ð ð ð ð ð ð ð* )ð )ð )ð )ð )ð )ð )ð )r8r±cóL‡—eZdZUdZdZ ddddœdˆfd„Zdd„Zded<ˆxZS)Ú MatchStarzÿClass representing a :class:`ast.MatchStar` node. >>> import astroid >>> node = astroid.extract_node(''' match x: case [1, *_]: ... ''') >>> node.cases[0].pattern.patterns[1] rÖNr‘r”r•r–rr—r’r“r-r˜cóX•—|t¦« |||||¬¦«dSrˆr rŸs €r6ržzMatchStar.__init__5r¢r8rÊrTcó—||_dSr0rÖrÏs r6r£zMatchStar.postinitGs €ØˆŒ ˆ ˆ r8ziClassVar[Callable[[MatchStar, AssignName, InferenceContext | None, None], Generator[NodeNG, None, None]]]rÜrºr»)rÊrTr-r˜r¯rÆs@r6r·r·&sšø€€€€€€ð ð ð €Oð"Ø!%Ø $ð  ð "&Ø%)ð ð ð ð ð ð ð ð ð$ðððð ð ð ñ ððððr8r·cóL‡—eZdZUdZdZ ddddœdˆfd„Zdd„Zded<ˆxZS)ÚMatchAsa=Class representing a :class:`ast.MatchAs` node. >>> import astroid >>> node = astroid.extract_node(''' match x: case [1, a]: ... case {'key': b}: ... case Point2D(0, 0) as c: ... case d: ... ''') >>> node.cases[0].pattern.patterns[1] >>> node.cases[1].pattern.patterns[0] >>> node.cases[2].pattern >>> node.cases[3].pattern ©r�rÊNr‘r”r•r–rr—r’r“r-r˜có\•—||t¦« |||||¬¦«dSrˆr rŸs €r6ržzMatchAs.__init__usKø€ð Ð$Ø Ð$Ý ‰Œ×ÒØØ!Ø!Ø)Øð ñ ô ð ð ð r8r�úPattern | NonerÊrTcó"—||_||_dSr0r¼)r r�rÊs r6r£zMatchAs.postinitˆs€ð ˆŒ ؈Œ ˆ ˆ r8zgClassVar[Callable[[MatchAs, AssignName, InferenceContext | None, None], Generator[NodeNG, None, None]]]rÜrºr»)r�r¾rÊrTr-r˜r¯rÆs@r6r»r»Zsšø€€€€€€ððð0*€Oð"Ø!%Ø $ð  ð "&Ø%)ð ð ð ð ð ð ð ð ð&ðððð ð ð ñ ððððr8r»có@‡—eZdZdZdZ ddddœdˆfd„Zdd„ZˆxZS)ÚMatchOrz÷Class representing a :class:`ast.MatchOr` node. >>> import astroid >>> node = astroid.extract_node(''' match x: case 400 | 401 | 402: ... ''') >>> node.cases[0].pattern rŸNr‘r”r•r–rr—r’r“r-r˜cóX•—|t¦« |||||¬¦«dSrˆr rŸs €r6ržzMatchOr.__init__°r¢r8r r£có—||_dSr0rŸr¥s r6r£zMatchOr.postinitÂr¦r8rºr»r§r˜rÆs@r6rÁrÁ¡s„ø€€€€€ð ð ð$€Oð"Ø!%Ø $ð  ð "&Ø%)ð ð ð ð ð ð ð ð ð$!ð!ð!ð!ð!ð!ð!ð!r8rÁ.zdict[type, type[NodeNG]]r3r5ú Iterable[Any]rCúList | Set | Tupler¡cój—g}|D]-}t|¦«}||_| |¦«Œ.|S)zACreate a list of nodes to function as the elements of a new node.)r©rr)r5rCÚelementsÚelementÚ element_nodes r6Ú_create_basic_elementsrÊÛsG€ð €HØð&ð&ˆÝ$ WÑ-Ô-ˆ Ø"ˆ ÔØ�Š˜ Ñ%Ô%Ð%Ð%Ø €Or8rIúMapping[Any, Any]r#cóÄ—g}| ¦«D]H\}}t|¦«}||_t|¦«}||_| ||f¦«ŒI|S)zHCreate a list of node pairs to function as the items of a new dict node.)r!r©rr)rIrCrÇr-r5Úkey_nodeÚ value_nodes r6Ú_create_dict_itemsrÏçsn€ðSU€HØ—l’l‘n”nð0ð0‰ ˆˆUÝ  Ñ%Ô%ˆØˆŒÝ" 5Ñ)Ô)ˆ Ø ˆ ÔØ�Š˜ :Ð.Ñ/Ô/Ð/Ð/Ø €Or8r r cóæ—t|t¦«rJ‚|jtvrt ¦«}||_|St|j}t |tttf¦«r/|¦«}|  t||¦«¦«|St |t¦«r/|¦«}|  t||¦«¦«|St|¦«S)z*Return an astroid node for a python value.)r1rr…r3rJrLÚ issubclassr<rîr=r£rÊrrÏrk)r5rCÚinitializer_clsr‰s r6r©r©õsã€å˜%¥Ñ(Ô(Ð(Ð(Ð (ð  „�iÐ'Ð'݉{Œ{ˆØˆŒ ؈ õ  ¤Ô0€OÝ�/¥D­#­uÐ#5Ñ6Ô6ðØ"�?Ñ$Ô$ˆØ×ÒÕ0°¸ÑAÔAÑBÔBÐB؈Ý�/¥4Ñ(Ô(ðØ"�?Ñ$Ô$ˆØ×ÒÕ,¨U°HÑ=Ô=Ñ>Ô>Ð>ØˆÝ �‰<Œ<Ðr8r=r0r”r]r>rºr<)r5rÄrCrÅr-r¡)rIrËrCrr-r#)r5r r-r )´rÀÚ __future__rrÃr ÚsysÚtypingr£Úcollections.abcrrrÚ functoolsrrr r r r r rÚastroidrrÚ astroid.basesrrÚ astroid.constrrÚastroid.contextrÚastroid.exceptionsrrrrrrÚastroid.managerrÚ astroid.nodesrÚastroid.nodes.constrÚastroid.nodes.node_ngrÚastroid.typingr r!r"r#r$Ú version_infor'Útyping_extensionsr)r*r+Úastroid.decoratorsr,r7r9ÚBadOperationMessager;ÚAssignedStmtsPossibleNoder<rlÚAssignedStmtsCallÚInferBinaryOperationÚInferLHSr´Ú InferUnaryOpÚraise_if_nothing_inferredrFrhrLrorqr€r�ÚParentAssignNodeÚABCMetar�rÉÚNoChildrenNoder>rãrçÚAssignTypeNoderír0rr?Ú Statementr\rertr}r–rªr´r¸rÌrØrkrrrrrr:rHrJÚMultiLineBlockNoderOr`ÚMultiLineWithElseBlockNoderbrkrmÚ ImportNoderrr{r€rVr­rµr¹r»rÒrÖrØrãrîr„rÁr¦rXrr&r=r4rArIrRrTrZr5r]rfrkrur|rƒrŒrŽr•ršržr©r±r·r»rÁr r2ÚdictrGrmÚNotImplementedr.ÚfloatÚcomplexr÷r3ràrÊrÏr©r§r8r6úrøs$ðð BÐAÐAà"Ð"Ð"Ð"Ð"Ð"à € € € ØÐÐÐØ € € € Ø € € € Ø€€€Ø8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØÐÐÐÐÐØSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSà$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ø0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ø7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø,Ð,Ð,Ð,Ð,Ð,ððððððððððððððððð+Ð*Ð*Ð*Ð*Ð*Ø%Ð%Ð%Ð%Ð%Ð%Ø-Ð-Ð-Ð-Ð-Ð-Ø(Ð(Ð(Ð(Ð(Ð(ðððððððððððððððÔ�vÒÐØÐÐÐÐÐÐà)Ð)Ð)Ð)Ð)Ð)àð/ØÐÐÐÐÐØ.Ð.Ð.Ð.Ð.Ð.àÔ�vÒÐØ)Ð)Ð)Ð)Ð)Ð)Ð)àDÐDÐDÐDÐDÐDð/ð/ð/ð/ð ˆ'�) 6Ð *Ñ *Ô *€Ø�Ð)°Ô1IÐJÑJÔJ€à!Ð"SÔTÐØàØ!ØÐ!Ô"Ø�”˜SÔ!Ô"ð ð ð  ôÐð Ø ˆhÐ'Ô(Ð)Ø Ô�U˜?¨NÐ:Ô;¸TÀ4ÐGÔHðJôÐð Ø ˆhÐ'Ô(Ð)Ø Ô�_ d¨HÐ5GÔ,HÐHÔIðKô €ð˜ #˜Ð(:Ð:Ô;€ ð Ô%ð.ð.ð.ð.ñ&Ô%ð.ð4FðFðFðFðFðV�&‘(”(€ðððððð6 ð ð ð ð ðHðHðHðHðHðBUðUðUðUðU�KÔ0°(ÀcÄkðUñUôUðUðr3ð3ð3ð3ð3�&ñ3ô3ð3ðJ<ð<ð<ð<ð<�Ô+¨[¸+Ô:Vñ<ô<ð<ð~2 ð2 ð2 ð2 ð2 ˆkÔ(¨+°{Ô7Sñ2 ô2 ð2 ðj;4ð;4ð;4ð;4ð;4ˆ;Ô % {ñ;4ô;4ð;4ð|uðuðuðuðu� Ô*ñuôuðuðp ð ð ð ðOSðððððð@GðGðGðGðG�Ô-ñGôGðGðT?ð?ð?ð?ð?ˆ[Ô "ñ?ô?ð?ðDV>ðV>ðV>ðV>ðV>ˆ[Ô '¨Ô)>ñV>ôV>ðV>ðrYðYðYðYðY� Ô*¨KÔ,AñYôYðYðxm;ðm;ðm;ðm;ðm;� Ô*¨KÔ,Añm;ôm;ðm;ð`bðbðbðbðbˆFñbôbðbðJB&ðB&ðB&ðB&ðB&ˆVñB&ôB&ðB&ðJððððˆKÔ &¨ Ô(=ñôððW!ðW!ðW!ðW!ðW!ˆ6ñW!ôW!ðW!ðtXðXðXðXðXˆfñXôXðXðxeðeðeðeðe�FñeôeðeðPT ðT ðT ðT ðT ˆKÔ &¨ñT ôT ðT ðnððððˆ{Ô)¨;Ô+@ñôððNðNðNðNðN�ñNôNðNðbBðBðBðBðBˆkÔ*ñBôBðBðJ7 ð7 ð7 ð7 ð7 ˆ[Ô '¨Ô)>ñ7 ô7 ð7 ðta ða ða ða ða ˆ6�8ña ôa ða ðH=Bð=Bð=Bð=Bð=Bˆ;Ô ñ=Bô=Bð=Bð@ððððˆ{Ô)ñôððSðSðSðSðS� Ô*ñSôSðSðwTðwTðwTðwTðwTØÔ" KÔ$>À Ô@UñwTôwTðwTðtððððˆvñôððqðqðqðqðqØÔ*ØÔØÔñqôqðqðhððððˆsñôðð&=ð=ð=ð=ð=ˆFñ=ô=ð=ð@E ðE ðE ðE ðE �Ô'ñE ôE ðE ðP:ð:ð:ð:ð:�ñ:ô:ð:ðz0ð0ð0ð0ð0ˆ[Ô '¨Ô)>ñ0ô0ð0ðfe>ðe>ðe>ðe>ðe>ˆÔ /°Ô1Fñe>ôe>ðe>ðPKðKðKðKðKˆFñKôKðKð\1 ð1 ð1 ð1 ð1 ˆ[Ô #ñ1 ô1 ð1 ðhððððˆFñôðð=ð=ð=ð=ð=ˆfñ=ô=ð=ð@DKðDKðDKðDKðDKˆ=ñDKôDKðDKðN5ð5ð5ð5ð5ˆ{Ô)¨;Ô+@ñ5ô5ð5ðpððððˆ;Ô % {Ô'<ñôððMðMðMðMðMˆKÔ !ñMôMðMð`;ð;ð;ð;ð;ˆ[Ô "ñ;ô;ð;ð|ððððˆ-ñôðð&wðwðwðwðwˆFñwôwðwðt@ð@ð@ð@ð@ˆkÔ*ñ@ô@ð@ðFGðGðGðGðG�ñGôGðGðTh%ðh%ðh%ðh%ðh%� Ô6¸ Ô8Mñh%ôh%ðh%ðV]"ð]"ð]"ð]"ð]"�Ô7¸Ô9Nñ]"ô]"ð]"ð@b"ðb"ðb"ðb"ðb"ˆkÔ4°kÔ6Kñb"ôb"ðb"ðJDKðDKðDKðDKðDKˆMñDKôDKðDKðNZ'ðZ'ðZ'ðZ'ðZ'ˆfñZ'ôZ'ðZ'ðzg;ðg;ðg;ðg;ðg;ˆKÔ 2°KÔ4Iñg;ôg;ðg;ðTeðeðeðeðeØÔ*ØÔØÔñeôeðeðPBðBðBðBðB�ñBôBðBð8ð8ð8ð8ð8ˆFñ8ô8ð8ðv=ð=ð=ð=ð=�ñ=ô=ð=ðIðIðIðIðI�Ô+ñIôIðIðW#ðW#ðW#ðW#ðW#�VñW#ôW#ðW#ðt:ð:ð:ð:ð:�ñ:ô:ð:ðzu6ðu6ðu6ðu6ðu6� Ô*ñu6ôu6ðu6ðpððððˆkÔ(ñôðð"ðððð�fñôððB,ð,ð,ð,ð,ˆKÔ ! ;Ô#Añ,ô,ð,ð^,ð,ð,ð,ð,ˆfñ,ô,ð,ð$ð$ð$ð$ð$� Ô.ñ$ô$ð$ðN"ð"ð"ð"ð"�ñ"ô"ð"ðJ( ð( ð( ð( ð( �Wñ( ô( ð( ðV&!ð&!ð&!ð&!ð&!�Gñ&!ô&!ð&!ðR;ð;ð;ð;ð;�;Ô-¨wñ;ô;ð;ð|4)ð4)ð4)ð4)ð4)�ñ4)ô4)ð4)ðn1ð1ð1ð1ð1� Ô*¨Gñ1ô1ð1ðhDðDðDðDðDˆkÔ(¨'ñDôDðDðN"!ð"!ð"!ð"!ð"!ˆgñ"!ô"!ð"!ðT ˆ$Ø ˆ5؈$؈؀Dˆ�J„J�Ø€DˆÑÔ˜%Ø€Dˆ�I„Iˆu؈%ØˆØ ˆ5Ø ˆUØˆØ ˆ5ð'€ ðððñð" ð ð ð ð ð ð ð ððððððr8