Ë
    pPêj–· ã                  ó`  — U d Z ddlmZ ddlZddlmZmZmZmZ ddl	m
Z
 ddlmZmZmZmZmZmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZmZ ddlmZm Z  ddl!m"Z"m#Z# ddl$m%Z% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZm€Z€m�Z�m‚Z‚mƒZƒm„Z„m…Z…m†Z†m‡Z‡mˆZˆm‰Z‰mŠZŠm‹Z‹mŒZŒm�Z�mŽZŽm�Z�m�Z�m‘Z‘m’Z’m“Z“mZm”Z”m•Z•m–Z–m—Z—m˜Z˜m™Z™mšZšm›Z›mœZœm�Z�mžZžmŸZŸm Z m¡Z¡m¢Z¢m£Z£m¤Z¤m¥Z¥m¦Z¦m§Z§m¨Z¨m©Z©mªZªm«Z« ddl¬m­Z­ ddl®m¯Z¯m°Z°m±Z±m²Z²m³Z³m´Z´mµZµm¶Z¶ ddl·m¸Z¸m¹Z¹mºZºm»Z» ddl¼m½Z¾ ddl¿mÀZÀmÁZÁmÂZÂmÃZÃmÄZÄmÅZÅmÆZÆ ddlÇmÈZÈ ddlÉmÊZÊ ddlËmÌZÌ ddlÍmÎZÎ ddlÏmÐZÐmÑZÑmÒZÒmÓZÓmÔZÔmÕZÕmÖZÖm×Z×mØZØ ddlÙmÚZÚ ddlÛmÜZÜ ddlÝmÞZÞmßZßmàZàmáZámâZâmãZãmäZämåZåmæZæmçZçmèZèméZémêZêmëZë ddlìmíZímîZîmïZï ddlðmñZñmòZòmóZómôZômõZõmöZöm÷Z÷møZømùZùmúZúmûZûmüZümýZýmþZþmÿZÿ�m �Z �m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m	�Z	�m
�Z
�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m �Z �m!�Z!�m"�Z"�m#�Z#�m$�Z$�m%�Z%�m&�Z&�m'�Z' dd �l(�m)�Z)�m*�Z* dd!�l+�m,�Z, dd"�l-�m.�Z.�m/�Z/�m0�Z0�m1�Z1�m2�Z2 dd#�l3�m4�Z4  ed$«      �Z5d%�Z6d&�e7d'<   d(d)d*d+d,d-d.d/d0d1d2œ
�Z8d&�e7d3<   g d4¢�Z9d&�e7d5<   d�Z:d&�e7d6<   d7�Z;d&�e7d8<   d9�Z<d&�e7d:<   d;�Z=d&�e7d<<   d=�Z>d&�e7d><   �e?�Z@d?�e7d@<    e�j‚                  dA«      �ZB �eCdB«      �ZDd&�e7dC<    G dD„ dE�e4d   eÒe»eˆ«      �ZEd^dF„�ZFd_dG„�ZGd`dH„�ZHdadI„�ZIdbdJ„�ZJdcdK„�ZK G dL„ dM�e«      �ZLdcdN„�ZM G dO„ dP�e«      �ZNdddQ„�ZOdedR„�ZPdfdS„�ZQdgdT„�ZRdhdU„�ZSdidV„�ZTdjdW„�ZUdkdX„�ZVdldY„�ZWdmdZ„�ZXdnd[„�ZYdod\„�ZZdpd]„�Z[y)qaó  The semantic analyzer.

Bind names to definitions and do various other simple consistency
checks.  Populate symbol tables.  The semantic analyzer also detects
special forms which reuse generic syntax such as NamedTuple and
cast().  Multiple analysis iterations may be needed to analyze forward
references and import cycles. Each iteration "fills in" additional
bindings and references until everything has been bound.

For example, consider this program:

  x = 1
  y = x

Here semantic analysis would detect that the assignment 'x = 1'
defines a new variable, the type of which is to be inferred (in a
later pass; type inference or type checking is not part of semantic
analysis).  Also, it would bind both references to 'x' to the same
module-level variable (Var) node.  The second assignment would also
be analyzed, and the type of 'y' marked as being inferred.

Semantic analysis of types is implemented in typeanal.py.

See semanal_main.py for the top-level logic.

Some important properties:

* After semantic analysis is complete, no PlaceholderNode and
  PlaceholderType instances should remain. During semantic analysis,
  if we encounter one of these, the current target should be deferred.

* A TypeInfo is only created once we know certain basic information about
  a type, such as the MRO, existence of a Tuple base class (e.g., for named
  tuples), and whether we have a TypedDict. We use a temporary
  PlaceholderNode node in the symbol table if some such information is
  missing.

* For assignments, we only add a non-placeholder symbol table entry once
  we know the sort of thing being defined (variable, NamedTuple, type alias,
  etc.).

* Every part of the analysis step must support multiple iterations over
  the same AST nodes, and each iteration must be able to fill in arbitrary
  things that were missing or incomplete in previous iterations.

* Changes performed by the analysis need to be reversible, since mypy
  daemon strips and reuses existing ASTs (to improve performance and/or
  reduce memory use).
é    )ÚannotationsN)ÚCallableÚ
CollectionÚIterableÚIterator)Úcontextmanager)ÚAnyÚFinalÚ	TypeAliasÚ	TypeGuardÚTypeVarÚcast)Úassert_never)Ú
errorcodesÚmessage_registry)Úconstant_fold_expr)ÚPROPERTY_DECORATORÚ	ErrorCode)ÚErrorsÚreport_internal_error)ÚTypeTranslationErrorÚexpr_to_unanalyzed_type)ÚErrorMessage)ÚSUGGESTED_TEST_FIXTURESÚTYPES_FOR_UNIMPORTED_HINTSÚMessageBuilderÚbest_matchesÚ
pretty_seq)ÚMroErrorÚcalculate_mro)}Ú	ARG_NAMEDÚARG_POSÚ	ARG_STAR2ÚCONTRAVARIANTÚ	COVARIANTÚGDEFÚIMPLICITLY_ABSTRACTÚ	INVARIANTÚIS_ABSTRACTÚLDEFÚMDEFÚNOT_ABSTRACTÚPARAM_SPEC_KINDÚREVEAL_LOCALSÚREVEAL_TYPEÚRUNTIME_PROTOCOL_DECOSÚSYMBOL_FUNCBASE_TYPESÚTYPE_VAR_KINDÚTYPE_VAR_TUPLE_KINDÚVARIANCE_NOT_READYÚArgKindÚ
AssertStmtÚAssertTypeExprÚAssignmentExprÚAssignmentStmtÚ	AwaitExprÚBlockÚ	BreakStmtÚ	BytesExprÚCallExprÚCastExprÚClassDefÚComparisonExprÚComplexExprÚConditionalExprÚContextÚContinueStmtÚDataclassTransformSpecÚ	DecoratorÚDelStmtÚDictExprÚDictionaryComprehensionÚEllipsisExprÚEnumCallExprÚ
ExpressionÚExpressionStmtÚFakeExpressionÚ	FloatExprÚForStmtÚFuncBaseÚFuncDefÚFuncItemÚGeneratorExprÚ
GlobalDeclÚIfStmtÚImportÚ	ImportAllÚ
ImportBaseÚ
ImportFromÚ	IndexExprÚIntExprÚ
LambdaExprÚListComprehensionÚListExprÚLvalueÚ	MatchStmtÚMaybeTypeExpressionÚ
MemberExprÚMypyFileÚNamedTupleExprÚNameExprÚNodeÚNonlocalDeclÚOperatorAssignmentStmtÚOpExprÚOverloadedFuncDefÚOverloadPartÚParamSpecExprÚPassStmtÚPlaceholderNodeÚPromoteExprÚ	RaiseStmtÚRefExprÚ
ReturnStmtÚ
RevealExprÚSetComprehensionÚSetExprÚ	SliceExprÚSplittingVisitorÚStarExprÚ	StatementÚStrExprÚ	SuperExprÚ
SymbolNodeÚSymbolTableÚSymbolTableNodeÚTemplateStrExprÚTempNodeÚTryStmtÚ	TupleExprr   ÚTypeAliasExprÚTypeAliasStmtÚTypeApplicationÚTypedDictExprÚTypeFormExprÚTypeInfoÚ	TypeParamÚTypeVarExprÚTypeVarLikeExprÚTypeVarTupleExprÚ	UnaryExprÚVarÚ	WhileStmtÚWithStmtÚ	YieldExprÚYieldFromExprÚfunc_scoped_nameÚget_member_expr_fullnameÚimplicit_module_attrsÚinline_baseÚis_final_nodeÚtype_aliasesÚtype_aliases_source_versionsÚtyping_extensions_aliases)ÚOptions)Ú	AsPatternÚClassPatternÚMappingPatternÚ	OrPatternÚSequencePatternÚSingletonPatternÚStarredPatternÚValuePattern)ÚClassDefContextÚDynamicClassDefContextÚPluginÚSemanticAnalyzerPluginInterface)Údataclasses)ÚALWAYS_FALSEÚALWAYS_TRUEÚ
MYPY_FALSEÚ	MYPY_TRUEÚinfer_condition_valueÚ"infer_reachability_of_if_statementÚ%infer_reachability_of_match_statement)ÚScope)ÚEnumCallAnalyzer)ÚNamedTupleAnalyzer)ÚNewTypeAnalyzer)	ÚALLOW_INCOMPATIBLE_OVERRIDEÚPRIORITY_FALLBACKSÚSemanticAnalyzerInterfaceÚcalculate_tuple_fallbackÚfind_dataclass_transform_specÚhas_placeholderÚ
parse_boolÚrequire_bool_literal_argumentÚset_callable_name)ÚTypedDictAnalyzer)ÚTypeVarLikeScope)ÚSELF_TYPE_NAMESÚFindTypeVarVisitorÚTypeAnalyserÚTypeVarDefaultTranslatorÚTypeVarLikeListÚanalyze_type_aliasÚcheck_for_explicit_anyÚcheck_vec_type_argsÚdetect_diverging_aliasÚfind_self_typeÚfix_instanceÚhas_any_from_unimported_typeÚtype_constructorsÚvalidate_instance)Úfunction_typeÚget_type_varsÚ"try_getting_str_literals_from_type)7ÚANNOTATED_TYPE_NAMESÚASSERT_TYPE_NAMESÚDATACLASS_TRANSFORM_NAMESÚDEPRECATED_TYPE_NAMESÚDISJOINT_BASE_DECORATOR_NAMESÚFINAL_DECORATOR_NAMESÚFINAL_TYPE_NAMESÚIMPORTED_REVEAL_TYPE_NAMESÚNEVER_NAMESÚOVERLOAD_NAMESÚOVERRIDE_DECORATOR_NAMESÚPROTOCOL_NAMESÚREVEAL_TYPE_NAMESÚSENTINEL_TYPE_NAMESÚTPDICT_NAMESÚTYPE_ALIAS_NAMESÚTYPE_CHECK_ONLY_NAMESÚ
TYPE_NAMESÚTYPE_VAR_LIKE_NAMESÚTYPED_NAMEDTUPLE_NAMESÚUNPACK_TYPE_NAMESÚAnyTypeÚCallableTypeÚFunctionLikeÚInstanceÚLiteralTypeÚNoneTypeÚ
OverloadedÚ
ParametersÚParamSpecTypeÚPlaceholderTypeÚ
ProperTypeÚSentinelValueÚTrivialSyntheticTypeTranslatorÚ	TupleTypeÚTypeÚTypeAliasTypeÚTypedDictTypeÚ	TypeOfAnyÚTypeStrVisitorÚTypeTypeÚ	TypeVarIdÚTypeVarLikeTypeÚTypeVarTupleTypeÚTypeVarTypeÚUnboundTypeÚ	UnionTypeÚ
UnpackTypeÚflatten_nested_tuplesÚget_proper_typeÚget_proper_typesÚhas_type_varsÚis_named_instanceÚremove_dupsÚtype_vars_as_args)Úis_invalid_recursive_aliasÚstore_argument_type)Úfill_typevars)Úcorrect_relative_importÚ	is_dunderÚmodule_prefixÚunmangleÚunnamed_function)ÚNodeVisitorÚTFr
   Ú)DEBUG_TYPE_EXPRESSION_FULL_PARSE_FAILURESÚnested_scopesÚ
generatorsÚdivisionÚabsolute_importÚwith_statementÚprint_functionÚunicode_literalsÚbarry_as_FLUFLÚgenerator_stopr   )
z__future__.nested_scopesz__future__.generatorsz__future__.divisionz__future__.absolute_importz__future__.with_statementz__future__.print_functionz__future__.unicode_literalsz__future__.barry_as_FLUFLz__future__.generator_stopz__future__.annotationsÚFUTURE_IMPORTS)ÚobjectÚboolÚfunctionÚCORE_BUILTIN_CLASSESÚSCOPE_GLOBALé   ÚSCOPE_CLASSé   Ú
SCOPE_FUNCé   ÚSCOPE_COMPREHENSIONé   ÚSCOPE_ANNOTATIONÚ
_TypeAliasÚTagz\s*[^\s.\'"|\[]+\s+[^\s.\'"|\[]z!:/<>@%$^?;&~`\Ú_NONTYPE_CHARSc                  óˆ  — e Zd ZU dZg d¢Zded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   dZded<   ded<   ded<   ded<   ded<   dZdZdZ	dZ
ded<   ded<   ded<   dZdZdZd ed!<   d"ed#<   d$ed%<   dZd&ed'<   i Zd(ed)<   	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dvd*„Ze�dwd+„«       Ze�dxd,„«       Ze�dxd-„«       Ze�dxd.„«       Ze�dyd/„«       Ze	 �dz	 	 	 	 	 �d{d0„«       Z�d|d1„Z�d}d2„Z�d|d3„Z	 �d~	 	 	 	 	 	 	 	 	 	 	 	 	 �dd4„Z�d€d5„Z�d|d6„Z�d|d7„Z�d�d8„Z �d�d9„Z!�d‚d:„Z"�dƒd;„Z#e	 �d~	 	 	 	 	 	 	 �d„d<„«       Z$�d…d=„Z%�d†d>„Z&�d…d?„Z'�d‡d@„Z(�dˆdA„Z)�d‰dB„Z*�dŠdC„Z+�d‹dD„Z,�dƒdE„Z-�dŒdF„Z.e�d�dG„«       Z/�dŒdH„Z0�dŒdI„Z1e2�dŽdJ„«       Z3�dŒdK„Z4	 	 	 	 �d�dL„Z5	 	 	 	 	 	 	 	 �d�dM„Z6�dŒdN„Z7�dŒdO„Z8�dŒdP„Z9	 	 	 	 �d‘dQ„Z:	 	 	 	 	 	 �d’dR„Z;�d“dS„Z<�d”dT„Z=�d”dU„Z>�d•dV„Z?�d–dW„Z@�d—dX„ZA�d˜dY„ZB�d™dZ„ZC	 	 	 	 	 	 �dšd[„ZD�d›d\„ZE	 	 	 	 	 	 �dœd]„ZF�d�d^„ZG�d™d_„ZH�džd`„ZI�dŸda„ZJ�d™db„ZK�d dc„ZL�d™dd„ZM�d de„ZN	 	 	 	 	 	 �d¡df„ZO�d™dg„ZP�d¢dh„ZQ�d™di„ZR�d£dj„ZS�dƒdk„ZT�d¤dl„ZU�d¤dm„ZV	 	 	 	 	 	 	 	 �d¥dn„ZW	 	 	 	 	 	 �d¦do„ZX�d§dp„ZY	 �d¨	 	 	 	 	 	 	 �d©dq„ZZ�dªdr„Z[	 	 	 	 	 	 �d«ds„Z\	 	 	 	 	 	 �d¬dt„Z]�d­du„Z^�d®dv„Z_�d~�d¯dw„Z`�d°dx„Za�d¢dy„Zb	 	 	 	 	 	 �d±dz„Zc	 	 	 	 	 	 �d²d{„Zd�d³d|„Ze�d£d}„Zf�d£d~„Zg	 �d~	 	 	 	 	 �d´d„Zh�d™d€„Zi�d d�„Zj�d d‚„Zk�dµdƒ„Zl	 	 	 	 	 	 �d¶d„„Zm�d·d…„Zn�d¸d†„Zo�d¹d‡„Zp	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dºdˆ„Zq	 �d»	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d¼dŠ„Zr	 	 	 	 	 	 	 	 	 	 �d½d‹„Zs�d¾dŒ„Zt�d¿d�„Zu�dÀdŽ„Zv�dÁd�„Zw�dÂd�„Zx�dÃd‘„Zy�dÂd’„Zz�dÄd“„Z{�dÃd”„Z|�dÅd•„Z}�dz�dÆd–„Z~�dÃd—„Z�dÃd˜„Z€�dz�dÇd™„Z��dÈdš„Z‚�dÂd›„Zƒ�dÃdœ„Z„�dÃd�„Z…�dÃdž„Z†�dÃdŸ„Z‡�dÂd „Zˆ�dÂd¡„Z‰�dÂd¢„ZŠ�dÃd£„Z‹�dÂd¤„ZŒ�dÂd¥„Z��dÉd¦„ZŽ�dÂd§„Z��dÃd¨„Z��dÊd©„Z‘	 	 	 	 �dË	 	 	 	 	 	 	 	 	 	 	 	 	 �dÌdª„Z’�dÃd«„Z“�dÃd¬„Z”�dÍd­„Z•	 	 	 	 �dÎd®„Z–	 	 	 	 	 	 	 	 �dÏd¯„Z—	 	 	 	 	 	 �dÐ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dÑd°„Z˜	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dÒd±„Z™�dÓd²„Zš�d›d³„Z›	 	 	 	 	 	 	 	 	 	 	 	 �dÔd´„Zœ	 	 	 	 	 	 	 	 �dÕdµ„Z��dz�dÖd¶„Zž	 	 	 	 	 	 	 	 	 	 �d×d·„ZŸ�dØd¸„Z �dØd¹„Z¡�dÙdº„Z¢�dÚd»„Z£�dÃd¼„Z¤�dÛd½„Z¥�dÛd¾„Z¦�dÛd¿„Z§�dÜdÀ„Z¨	 	 	 	 	 	 �dÝdÁ„Z©	 	 	 	 	 	 	 	 	 	 	 	 �dÞdÂ„Zª�dßdÃ„Z«dddd‰dÄœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dàdÅ„Z¬�dádÆ„Z­�dÃdÇ„Z®�dÃdÈ„Z¯�dâdÉ„Z°�dãdÊ„Z±�dÂdË„Z²�dädÌ„Z³�dådÍ„Z´�dædÎ„Zµ	 	 	 	 	 	 	 	 �dçdÏ„Z¶�dÂdÐ„Z·�dÂdÑ„Z¸�dÂdÒ„Z¹�dèdÓ„Zº�dédÔ„Z»�dêdÕ„Z¼�dëdÖ„Z½�dìd×„Z¾�dídØ„Z¿�dîdÙ„ZÀ�dïdÚ„ZÁ�dðdÛ„ZÂ�dñdÜ„ZÃ�dòdÝ„ZÄ�dódÞ„ZÅ�dôdß„ZÆ�dõdà„ZÇ�dödá„ZÈ�d÷dâ„ZÉ�dødã„ZÊ�dùdä„ZË�dúdå„ZÌ�dûdæ„ZÍ�düdç„ZÎ�dýdè„ZÏ�dþdé„ZÐ�dÿdê„ZÑ�d dë„ZÒ�ddì„ZÓ�ddí„ZÔ�ddî„ZÕ�ddï„ZÖ�ddð„Z×�ddñ„ZØ�ddò„ZÙ�ddó„ZÚ�d	dô„ZÛ�d
dõ„ZÜ�ddö„ZÝ�dd÷„ZÞ�ddø„Zß�ddù„Zà�ddú„Zá�ddû„Zâ�ddü„Zã�ddý„Zä�ddþ„Zå�ddÿ„Zæ�d�d „Zç�d�d„Zè�d�d„Zé�d�d„Zê�d�d„Zë�d�d„Zì�d�d„Zí�d�d„Zî�d�d„Zï�d�d	„Zð�d�d
„Zñ�d�d„Zò�d�d„Zó�d �d„Zô�d!�d„Zõ�d"�d„Zö�d#�d„Z÷�d$�d„Zø�d%�d„Zù�d&�d„Zú	 �dz	 	 	 	 	 	 	 �d'�d„Zû�d(�d„Zü	 �dz	 	 	 	 	 	 	 �d'�d„Zý�d)�d„Zþ�d)�d„Zÿ�d*�d„�Z �d)�d„�Z�d+�d„�Z�d,�d„�Z	 �dz	 	 	 	 	 	 	 �d'�d„�Z�d-�d„�Z�d.�d„�Z�d/�d „�Z�d0�d!„�Z�d1�d"„�Z		 	 	 	 	 	 	 	 	 	 �d2�d#„�Z
	 	 	 	 	 	 	 	 �d3�d$„�Z�d4�d%„�Z�d5�d&„�Z�d6�d'„�Z�d6�d(„�Z�d6�d)„�Z�d~�d7�d*„�Z�d~�d8�d+„�Z�d9�d,„�Z�d:�d-„�Z	 	 	 	 	 	 �d;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d<�d.„�Z�d=�d/„�Z	 	 	 	 	 �d>	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d?�d0„�Z�d@�d1„�Z�dA�d2„�Z	 	 	 	 	 	 	 	 �dB�d3„�Z	 	 	 	 	 	 	 	 	 	 	 	 �dC�d4„�Z	 	 	 	 	 	 	 	 	 	 	 	 �dD�d5„�Ze�dE�d6„«       �Z�dF�dG�d7„�Z�dH�d8„�Z�dI�d9„�Z �dƒ�d:„�Z!	 	 	 �dJ	 	 	 	 	 	 	 	 	 	 	 �dK�d;„�Z"�dL�d<„�Z#	 �dz	 	 	 	 	 	 	 	 	 �dM�d=„�Z$�dN�d>„�Z%�dO�d?„�Z&e	 	 	 	 �dP�d@„«       �Z'�dx�dA„�Z(�dx�dB„�Z)�dx�dC„�Z*�dx�dD„�Z+�dQ�dE„�Z,	 �d¨	 	 	 	 	 �dR�dF„�Z-�d›�dG„�Z.�dS�dH„�Z/�d~�dT�dI„�Z0�dU�dJ„�Z1	 	 	 	 	 	 	 	 	 	 �dV�dK„�Z2	 �d~	 	 	 	 	 	 	 �dW�dL„�Z3	 �d~	 	 	 	 	 	 	 �dW�dM„�Z4�d›�dN„�Z5�dx�dO„�Z6	 �dzdd�dPœ	 	 	 	 	 	 	 	 	 	 	 �dX�dQ„�Z7�d~�dY�dR„�Z8�dZ�dS„�Z9�d[�dT„�Z:	 	 	 	 	 	 	 	 �d\	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d]�dU„�Z;�d^�dV„�Z<ddddddddd‰dddd�dWœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d_�dX„�Z=�dz�d`�dY„�Z>ddddddddd‰dddd�dWœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �da�dZ„�Z?�db�d[„�Z@�dc�d\„�ZA�dƒ�d]„�ZB�d~�dd�d^„�ZC	 �d~	 	 	 	 	 �de�d_„�ZD�d›�d`„�ZE�d›�da„�ZF�df�db„�ZG�d¢�dc„�ZH�dg�dd„�ZI�dh�de„�ZJ�di�df„�ZK�dj�dg„�ZL�dk�dh„�ZM�dl�di„�ZN�dm�dj„�ZO�dn�dk„�ZP�do�dl„�ZQ�dp�dm„�ZR�dq�dn„�ZS�dr�do„�ZT�ds�dp„�ZU�dt�dq„�ZV�du�dr„�ZWe2�dv�ds„«       �ZXe2�dv�dt„«       �ZYe�dy�du„«       �ZZy(w  ÚSemanticAnalyzerz·Semantically analyze parsed mypy files.

    The analyzer binds names and does various consistency checks for an
    AST. Note that type checking is performed as a separate pass.
    )ÚpatchesÚoptionsÚcur_mod_nodeúdict[str, MypyFile]Úmodulesr   Úglobalszlist[set[str]]Úglobal_declsÚnonlocal_declszlist[SymbolTable | None]Úlocalsú	list[int]Úscope_stackÚblock_depthNúTypeInfo | NoneÚ_typezlist[TypeInfo | None]Ú
type_stackrÀ   Ú
tvar_scoper�   r1  zlist[FuncItem]Úfunction_stackFÚmissing_namesú$list[tuple[int, Callable[[], None]]]r0  Ú
loop_depthÚ úset[str]Úimportsr   Úerrorsr¨   ÚpluginzStatement | NoneÚ	statementzdict[FuncDef, Type]Úwrapped_coro_return_typesc                ór  — dg| _         t        g| _        i | _        t	        «       | _        d| _        g | _        g | _        t        «       | _
        g | _        dg| _        dg| _        || _        || _        || _        t#        ||«      | _        || _        t	        «       g| _        || _        g | _        || _        d| _        t3        «       | _        g | _        d| _        d| _        d| _        d| _        d| _         d| _!        d| _"        d| _#        d| _$        d| _%        d| _&        i | _'        d| _(        g g| _)        y)a  Construct semantic analyzer.

        We reuse the same semantic analyzer instance across multiple modules.

        Args:
            modules: Global modules dictionary
            missing_modules: Modules that could not be imported encountered so far
            incomplete_namespaces: Namespaces that are being populated during semantic analysis
                (can contain modules and classes within the current SCC; mutated by the caller)
            errors: Report analysis errors using this instance
        Nr   TF)*r8  r"  r:  Úsaved_localsÚsetrF  r=  r>  Úincomplete_type_stackrÀ   r?  r@  r;  rC  rG  r4  Ú
import_mapr   ÚmsgÚmissing_modulesrA  Úincomplete_namespacesÚall_exportsrH  Úrecurse_into_functionsr²   ÚscopeÚdeferral_debug_contextÚbasic_type_applicationsÚallow_unbound_tvarsÚcurrent_overload_itemÚinside_except_star_blockÚ$return_stmt_inside_except_star_blockÚ	_str_typeÚ_function_typeÚ_object_typeÚtype_expression_parse_countÚ(type_expression_full_parse_success_countÚ(type_expression_full_parse_failure_countÚtransitive_submodule_importsÚtypes_fixedÚremoved_type_vars)Úselfr4  rQ  rR  rG  rH  rO  s          úQ/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/semanal.pyÚ__init__zSemanticAnalyzer.__init__È  sZ  € ð( �fˆŒÜ(˜>ˆÔð ð 	Ôô “uˆŒØˆŒ
ØˆŒà13ˆÔ"Ü*Ó,ˆŒØ ˆÔØ˜3ˆÔØ˜#ˆŒØˆŒØˆŒØ$ˆŒÜ! &¨'Ó2ˆŒØ.ˆÔÜ!›e˜WˆÔð &;ˆÔ"Ø&(ˆÔØˆŒØ&*ˆÔ#Ü“WˆŒ
ð >@ˆÔ#ð (-ˆÔ$ð
 $)ˆÔ ð 26ˆÔ"ð /4ˆÔ%à:?ˆÔ1à*.ˆŒØ/3ˆÔØ-1ˆÔð 12ˆÔ(Ø=>ˆÔ5Ø=>ˆÔ5ð BDˆÔ)ð
 >BˆÔð
 <>¸$ˆÕó    c                ó   — | j                   S ©N)r=  ©re  s    rf  ÚtypezSemanticAnalyzer.type6  s   € à�z‰zÐrh  c                ó   — | j                   S rj  )Ú_is_stub_filerk  s    rf  Úis_stub_filezSemanticAnalyzer.is_stub_file:  s   € à×!Ñ!Ð!rh  c                ó   — | j                   S rj  )Ú_is_typeshed_stub_filerk  s    rf  Úis_typeshed_stub_filez&SemanticAnalyzer.is_typeshed_stub_file>  s   € à×*Ñ*Ð*rh  c                ó   — | j                   S rj  )Ú_final_iterationrk  s    rf  Úfinal_iterationz SemanticAnalyzer.final_iterationB  s   € à×$Ñ$Ð$rh  c              #  ób   K  — | j                   }d| _         	 d –— || _         y # || _         w xY w­w©NT©rX  )re  Úolds     rf  Úallow_unbound_tvars_setz(SemanticAnalyzer.allow_unbound_tvars_setF  s1   è ø€ à×&Ñ&ˆØ#'ˆÔ ð	+Ûà'*ˆDÕ$ø sˆDÕ$üs   ‚/—# ›/£	,¬/c              #  ó´   K  — | j                   }|| _         |s| j                  }|| _        	 d –— || _         |s| _        y y # || _         |s| _        w w xY w­wrj  )rZ  r[  )re  ÚvalueÚentering_loopry  Úold_return_stmt_flags        rf  Úinside_except_star_block_setz-SemanticAnalyzer.inside_except_star_block_setO  sp   è ø€ ð ×+Ñ+ˆØ(-ˆÔ%ñ Ø#'×#LÑ#LÐ Ø8=ˆDÔ5ð	QÛà,/ˆDÔ)Ù Ø<P�Õ9ð !øð -0ˆDÔ)Ù Ø<P�Õ9ð !üs   ‚)A¬A °AÁAÁAc                óJ  — d| j                   v r*t        t        | j                   d   «      |j                  d<   |j                  dk(  r| j                  |«       |j                  dk(  r| j                  |t        «       |j                  dk(  r| j                  |t        «       yy)z4Prepare a freshly parsed file for semantic analysis.ÚbuiltinsÚ__builtins__ÚtypingÚtyping_extensionsN)	r4  r€   r&   ÚnamesÚfullnameÚprepare_builtins_namespaceÚprepare_typing_namespacerš   rœ   )re  Ú	file_nodes     rf  Úprepare_filezSemanticAnalyzer.prepare_filef  sŒ   € à˜Ÿ™Ñ%Ü.=¼dÀDÇLÁLÐQ[ÑD\Ó.]ˆI�O‰O˜NÑ+Ø×Ñ Ò+Ø×+Ñ+¨IÔ6Ø×Ñ Ò)Ø×)Ñ)¨)´\ÔBØ×ÑÐ!4Ò4Ø×)Ñ)¨)Ô5NÕOð 5rh  c                ó>   ‡‡‡— dˆˆˆfd„Š ‰‰j                   «       y)z¬Remove dummy alias definitions such as List = TypeAlias(object) from typing.

        They will be replaced with real aliases when corresponding targets are ready.
        c                óî  •— | j                  «       D ]á  }t        |t        «      rK|j                  D ]  } ‰|j                  «       Œ |j                  r ‰|j                  j                  «       t        |t
        «      sŒot        |j                  «      dk(  sŒˆt        |j                  d   t        «      sŒ¦‰j                  › d|j                  d   j                  › �‰v sŒÑ| j                  |«       Œã y )Nr#  r   ú.)ÚcopyÚ
isinstancerW   ÚbodyÚ	else_bodyr9   ÚlenÚlvaluesrg   r†  ÚnameÚremove)ÚdefsÚstmtr�  Úaliasesr‰  Úhelpers      €€€rf  r™  z9SemanticAnalyzer.prepare_typing_namespace.<locals>.helper~  s¾   ø€ ØŸ	™	›ò *�Ü˜d¤FÔ+Ø $§	¡	ò *˜Ù˜tŸy™yÕ)ð*à—~’~Ù˜tŸ~™~×2Ñ2Ô3ä˜t¤^Õ4Ü˜DŸL™LÓ)¨QÓ.Ü" 4§<¡<°¡?´HÕ=ð $×,Ñ,Ð-¨Q¨t¯|©|¸A©×/CÑ/CÐ.DÐEÈÒPØŸ™ DÕ)ñ*rh  N)r–  zlist[Statement]ÚreturnÚNone)r–  )re  r‰  r˜  r™  s    ``@rf  rˆ  z)SemanticAnalyzer.prepare_typing_namespaceq  s   ú€ ÷	*ñ  	ˆy�~‰~Õrh  c                ó(  — |j                   }t        D ]I  }t        |t        g «      «      }t	        t        «       |d«      }d|› �|_        t        t        |«      ||<   ŒK |d   j                  }t        |t        «      sJ ‚t        |g «      }dt        «       fdt        t        j                  «      fdt        t        j                  «      fd|fd|fd	|fg}|D ]8  \  }}	t!        ||	«      }
d|› �|
_        t        t        |
«      |j                   |<   Œ: y
)z®Add certain special-cased definitions to the builtins module.

        Some definitions are too special or fundamental to be processed
        normally from the AST.
        r�  ú	builtins.r  r›  Úreveal_typeÚreveal_localsÚTrueÚFalseÚ	__debug__N)r…  r!  r@   r;   rŠ   r   Ú	_fullnamer€   r&   Únoder�  rê   rì   rç   rø   Úspecial_formr�   )re  r‰  r…  r”  ÚcdefÚinfoÚ	bool_infoÚ	bool_typeÚspecial_var_typesÚtypÚvs              rf  r‡  z+SemanticAnalyzer.prepare_builtins_namespace�  s"  € ð —‘ˆô )ò 	6ˆDÜ˜D¤%¨£)Ó,ˆDÜœK›M¨4°Ó<ˆDØ(¨¨Ð/ˆDŒNÜ)¬$°Ó5ˆE�$ŠKð		6ð ˜&‘M×&Ñ&ˆ	Ü˜)¤XÔ.Ð.Ð.Ü˜Y¨Ó+ˆ	ð ”X“ZÐ ð œG¤I×$:Ñ$:Ó;Ð<ð œg¤i×&<Ñ&<Ó=Ð>Ø�YÐØ�iÐ Ø˜)Ð$ð5
Ðð +ò 	=‰IˆD�#Ü�D˜#“ˆAØ% d VÐ,ˆAŒKÜ$3´D¸!Ó$<ˆI�O‰O˜DÒ!ñ	=rh  c                ó6  — || _         d| _        d| _        || _        t	        «       | j
                  d<   | j                  |||«      5  t        |t        «      r| j                  |«       nd| _
        | j                  |«       ddd«       | ` y# 1 sw Y   | ` yxY w)z8Refresh a stale target in fine-grained incremental mode.FéÿÿÿÿTN)r0  ÚdeferredÚ
incompletert  rM  rA  Úfile_contextr�  re   Úrefresh_top_levelrT  Úaccept)re  r¤  r0  ru  r‰  r1  Úactive_types          rf  Úrefresh_partialz SemanticAnalyzer.refresh_partialº  s�   € ð ˆŒØˆŒØˆŒØ /ˆÔÜ!$£ˆ×Ñ˜2Ñà×Ñ˜y¨'°;Ó?ñ 	"Ü˜$¤Ô)Ø×&Ñ& tÕ,à.2�Ô+Ø—‘˜DÔ!÷	"ð ‰L÷	"ð ‰Lús   Á;BÂBc                ó¤   — t        t        t        j                  «      «      }d|_        d|_        d|_        d|_        | j                  ||«       y ©Nr#  r   )	r‚   rç   rø   r¥  ÚlineÚcolumnÚend_lineÚ
end_columnÚfail)re  rP  Úns      rf  Úad_hoc_errorzSemanticAnalyzer.ad_hoc_errorÒ  sA   € Ü”WœY×3Ñ3Ó4Ó5ˆØˆŒØˆŒØˆŒ
ØˆŒØ�	‰	�#�qÕrh  c                óš  — | j                   j                  r'| j                   j                  s| j                  d«       | j                   j                  r'| j                   j                  r| j                  d«       | j                   j                  s*| j                   j
                  dkD  r| j                  d«       d| _        | j                  |«       |j                  D ]  }| j                  |«       Œ |j                  dk(  r| j                  |«       |j                  dk(  r| j                  |«       | j                  «        g | _        y)	zDReanalyze a stale module top-level in fine-grained incremental mode.zC--local-partial-types must be enabled if using --allow-redefinitionzM--allow-redefinition-old and --allow-redefinition should not be used togetherr   z6--local-partial-types must be enabled in parallel modeFrƒ  r„  N)r1  Úallow_redefinitionÚlocal_partial_typesr¾  Úallow_redefinition_oldÚnum_workersrT  Úadd_implicit_module_attrsr–  r³  r†  Úadd_builtin_aliasesÚadd_typing_extension_aliasesÚadjust_public_exportsrS  )re  r‰  Úds      rf  r²  z"SemanticAnalyzer.refresh_top_levelÚ  s  € à�<‰<×*Ò*°4·<±<×3SÒ3SØ×ÑØUôð �<‰<×*Ò*¨t¯|©|×/RÒ/RØ×ÑØ_ôð �|‰|×/Ò/°D·L±L×4LÑ4LÈqÒ4PØ×ÑÐVÔWØ&+ˆÔ#Ø×&Ñ& yÔ1Ø—‘ò 	ˆAØ�K‰K˜�Nð	à×Ñ Ò)Ø×$Ñ$ YÔ/Ø×ÑÐ!4Ò4Ø×-Ñ-¨iÔ8Ø×"Ñ"Ô$ØˆÕrh  c           	     óH  — | j                  d«      }|€t        d«      }t        j                  «       D �]l  \  }}|dk(  r|}�n–|dk(  rO|j	                  «       sŒ&| j                  d|g«      }|€%| j
                  rJ d«       ‚| j                  «         y|}�nB|dk(  rU| j                  d|t        t        j                  «      g«      }|€%| j
                  rJ d	«       ‚| j                  «         y|}nè|d
k(  rÌ| j                  j                  r| j                  d«      }n| j                  d«      }|€`| j
                  s(| j                  j                  d«      j                  dk(  r| j                  d«      }|€J d«       ‚| j                  «         y|j                  dk(  rt        j                   |t#        «       g«      }|}n|€
J d|› �«       ‚t        |«      }|j$                  j'                  |«      }|�t)        |j*                  t,        «      s�Œß| j/                  |«      }|rFt1        ||«      }	| j3                  |«      |	_        d|	_        | j9                  ||	t;        «       «       �Œ8| j9                  |t-        | j3                  |«      |d«      t;        «       «       �Œo y)z;Manually add implicit definitions of module '__name__' etc.úbuiltins.strNÚ__doc__Ú__path__zbuiltins.listz)Cannot find builtins.list to add __path__Ú__annotations__úbuiltins.dictz0Cannot find builtins.dict to add __annotations__Ú__spec__úbuiltins.objectzimportlib.machinery.ModuleSpeczimportlib.machineryÚskipzCannot find builtins.objectÚ__main__ztype should be specified for Tr®  )Únamed_type_or_nonerÿ   r—   ÚitemsÚis_package_init_fileru  Údeferrç   rø   r¥  r1  Úuse_builtins_fixturesÚclone_for_moduleÚfollow_importsr”  r   Ú
make_unionrì   r…  Úgetr�  r¤  rp   Ú	anal_typer�   Úqualified_namer£  Úis_readyÚ
add_symbolÚdummy_context)
re  r‰  Ústr_typer”  Útr«  ÚinstÚexistingÚan_typeÚvars
             rf  rÄ  z*SemanticAnalyzer.add_implicit_module_attrsñ  sƒ  € à $× 7Ñ 7¸Ó GˆØÐÜ" >Ó2ˆHä,×2Ñ2Ó4ó E	‰GˆD�!Ø�yÒ Ø$’Ø˜Ò#Ø ×5Ñ5Ô7Øð ×.Ñ.¨ÀÀ
ÓK�Ø�<Ø#×3Ò3Ð`Ð5`Ó`Ð3Ø—J‘J”LÙØ’ØÐ*Ò*Ø×.Ñ.Ø# h´¼	×8NÑ8NÓ0OÐ%Pó�ð �<à ×0Ò0ðJàIóJØ0à—J‘J”LÙØ‘Ø˜Ò#Ø—<‘<×5Ò5Ø×2Ñ2Ð3DÓE‘Dà×2Ñ2Ð3SÓT�DØ�<à×,Ò,ØŸ<™<×8Ñ8Ð9NÓO×^Ñ^Ø!ò"ð  $×6Ñ6Ð7HÓI˜Ø#Ð/ÐNÐ1NÓNÐ/àŸ
™
œÙØ—>‘> ZÒ/ä$×/Ñ/°´x³zÐ0BÓC�DØ‘à�}ÐLÐ(EÀdÀVÐ&LÓL�}Ü! !“n�à —‘×*Ñ*¨4Ó0ˆHØÐ#¬J°x·}±}ÄoÔ,Váà—n‘n SÓ)ˆGÙÜ˜$ Ó(�Ø $× 3Ñ 3°DÓ 9�”Ø#�”Ø—‘  c¬=«?Ö;à—‘ØÜ# D×$7Ñ$7¸Ó$=¸yÈ"ÓMÜ!“OöñCE	rh  c                ól  — |j                   dk(  sJ ‚t        j                  «       D ]Œ  \  }}|t        v r!t        |   | j                  j
                  kD  rŒ/|j                  d«      d   }||j                  v r(t        |j                  |   j                  t        «      sŒy| j                  ||||«       ŒŽ y)aa  Add builtin type aliases to typing module.

        For historical reasons, the aliases like `List = list` are not defined
        in typeshed stubs for typing module. Instead we need to manually add the
        corresponding nodes on the fly. We explicitly mark these aliases as normalized,
        so that a user can write `typing.List[int]`.
        rƒ  r�  r®  N)r†  rš   rÔ  r›   r1  Úpython_versionÚsplitr…  r�  r¤  rp   Úcreate_alias©re  ÚtreeÚaliasÚtarget_namer”  s        rf  rÅ  z$SemanticAnalyzer.add_builtin_aliases>  s¦   € ð �}‰} Ò(Ð(Ð(Ü".×"4Ñ"4Ó"6ò 
	>ÑˆE�;àÔ5Ñ5Ü0°Ñ7¸$¿,¹,×:UÑ:UÒUð Ø—;‘;˜sÓ# BÑ'ˆDØ�t—z‘zÑ!¬*°T·Z±ZÀÑ5E×5JÑ5JÌOÔ*\ØØ×Ñ˜d K°¸Õ=ñ
	>rh  c                óR  — |j                   dk(  sJ ‚t        j                  «       D ]  \  }}|j                  d«      d   }||j                  v r(t        |j                  |   j                  t        «      rŒP|j                  j                  |d«       | j                  ||||«       Œ� y)zÚTyping extensions module does contain some type aliases.

        We need to analyze them as such, because in typeshed
        they are just defined as `_Alias()` call.
        Which is not supported natively.
        r„  r�  r®  N)
r†  rœ   rÔ  ré  r…  r�  r¤  r   Úpoprê  rë  s        rf  rÆ  z-SemanticAnalyzer.add_typing_extension_aliasesS  s˜   € ð �}‰}Ð 3Ò3Ð3Ð3ä";×"AÑ"AÓ"Cò 		>ÑˆE�;Ø—;‘;˜sÓ# BÑ'ˆDØ�t—z‘zÑ!¤j°·±¸DÑ1A×1FÑ1FÌ	Ô&RØð �J‰J�N‰N˜4 Ô&ð ×Ñ˜d K°¸Õ=ñ		>rh  c           	     ó^  — | j                  «       }| j                  |«      }|r¡t        |j                  t        «      r| j                  ||«       y | j                  |g «      }|€J ‚t        || j                  | j                  d| j                  ¬«       t        |||j                  dddd¬«      }| j                  |||«       y | j                  |«      r| j                  ||«       y ||j                  v r7t        |j                  |   j                  t        «      sJ ‚|j                  |= y y )NF©Údisallow_anyr1  r®  T)r¸  r¹  Úno_argsÚ
normalized)Útrack_incomplete_refsÚlookup_fully_qualified_or_noner�  r¤  rp   Úmark_incompleterÓ  rË   r¼  Únoter1  r   r†  rß  Úfound_incomplete_refr…  )	re  rì  rî  rí  r”  Útagr½  ÚtargetÚ
alias_nodes	            rf  rê  zSemanticAnalyzer.create_aliasg  s  € Ø×(Ñ(Ó*ˆØ×/Ñ/°Ó<ˆÙÜ˜!Ÿ&™&¤/Ô2Ø×$Ñ$ T¨4Õ0ð ×0Ñ0°¸bÓA�ØÐ)Ð)Ð)äØ˜DŸI™I t§y¡y¸uÈdÏlÉlõô 'ØØØ—M‘MØØØ Ø#ô�
ð —‘  j°$Õ7Ø×&Ñ& sÔ+à× Ñ   tÕ,ð �t—z‘zÑ!Ü! $§*¡*¨TÑ"2×"7Ñ"7¼ÔIÐIÐIØ—J‘J˜tÑ$ð "rh  c                ó®   — d| j                   v rG| j                   j                  «       D ])  \  }}|| j                  v rd|_        d|_        Œ#d|_        Œ+ yy)z7Adjust the module visibility of globals due to __all__.Ú__all__TFN)r5  rÔ  rS  Úmodule_publicÚmodule_hidden)re  r”  Úgs      rf  rÇ  z&SemanticAnalyzer.adjust_public_exports‰  sX   € à˜Ÿ™Ñ$ØŸ<™<×-Ñ-Ó/ò ,‘��aà˜4×+Ñ+Ñ+Ø&*�A”OØ&+�A•Oð ',�A•Oñ,ð %rh  c              #  óÞ  K  — | j                   }|| _        | j                  j                  |j                  |j
                  ||¬«       || _        |j
                  | _        |j                  | j                  «      5  |j                  j                  «       j                  d«      | _        |j                  |«      | _        |j                  | _        t!        «       | _        t%        || | j&                  «      | _        t+        || | j&                  «      | _        t/        || «      | _        t3        || | j&                  «      | _        d| _        |�r|j
                  j9                  dd«      d   }d|v r>| j;                  |«      }|r+t=        |j>                  t@        «      r|j>                  | _!        | jE                  |jF                  jH                  |jF                  «       | jJ                  jM                  d«       |jO                  |«       | jO                  |jF                  jP                  «       |jF                  jR                  D ]  }| j"                  jU                  |«       Œ d–— |rf|jW                  «        | jW                  «        d| _!        | jJ                  jY                  «        | j[                  |jF                  jH                  «       ddd«       | `y# 1 sw Y   | `yxY w­w)zûConfigure analyzer for analyzing targets within a file/class.

        Args:
            file_node: target file
            options: options specific to the file
            active_type: must be the surrounding class to analyze method targets
        )rU  r1  z.pyir   r�  r#  FN).rU  r1  rG  Úset_fileÚpathr†  r2  Ú
cur_mod_idÚmodule_scopeÚlowerÚendswithrn  Úis_typeshed_filerq  r…  r5  rÀ   r?  r´   rP  Únamed_tuple_analyzerr¿   Útyped_dict_analyzerr³   Úenum_call_analyzerrµ   Únewtype_analyzerÚnum_incomplete_refsÚrsplitr÷  r�  r¤  rŠ   r=  Úpush_type_argsÚdefnÚ	type_argsrN  ÚappendÚenter_classr§  Ú	type_varsÚbind_existingÚleave_classrð  Úpop_type_args)re  r‰  r1  r´  rU  Úenclosing_fullnameÚenclosing_nodeÚtvars           rf  r±  zSemanticAnalyzer.file_context–  s^  è ø€ ð —
‘
ˆØˆŒØ�‰×Ñ˜YŸ^™^¨Y×-?Ñ-?ÀuÐV]ÐÔ^Ø%ˆÔØ#×,Ñ,ˆŒØ×Ñ §¡Ó0ñ #	?Ø!*§¡×!5Ñ!5Ó!7×!@Ñ!@ÀÓ!HˆDÔØ*3×*DÑ*DÀWÓ*MˆDÔ'Ø$Ÿ?™?ˆDŒLÜ.Ó0ˆDŒOä(:¸7ÀDÈ$Ï(É(Ó(SˆDÔ%Ü'8¸À$ÈÏÉÓ'QˆDÔ$Ü&6°wÀÓ&EˆDÔ#Ü$3°G¸TÀ4Ç8Á8Ó$LˆDÔ!ð ()ˆDÔ$âØ%0×%9Ñ%9×%@Ñ%@ÀÀaÓ%HÈÑ%KÐ"ØÐ,Ñ,Ø%)×%HÑ%HÐI[Ó%\�NÙ%¬*°^×5HÑ5HÌ(Ô*SØ%3×%8Ñ%8˜œ
Ø×#Ñ# K×$4Ñ$4×$>Ñ$>À×@PÑ@PÔQØ×*Ñ*×1Ñ1°%Ô8Ø×!Ñ! +Ô.Ø× Ñ  ×!1Ñ!1×!6Ñ!6Ô7Ø'×,Ñ,×6Ñ6ò 8�DØ—O‘O×1Ñ1°$Õ7ð8ó áØ×!Ñ!Ô#Ø× Ñ Ô"Ø!�”
Ø×*Ñ*×.Ñ.Ô0Ø×"Ñ" ;×#3Ñ#3×#=Ñ#=Ô>÷G#	?ðH ‰L÷I#	?ðH ‰Lüs   ‚A:K-Á<IKËK-ËK*Ë$	K-c                óØ  — || _         |j                  D ]*  }|j                  sŒ|j                  j                  | «       Œ, | j                  d   dkD  |_        | j                  |j                  «      |_        | j                  rt        | j                  «      dkD  r)|j                  s|j                  s| j                  |«       | j                  s|j                  sy | j                   j#                  |«      5  | j%                  «       5  | j'                  d¬«      5  | j)                  |«       d d d «       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nr®  r   F)r|  )rI  Ú	argumentsÚinitializerr³  r;  Úis_conditionalrÝ  r”  r£  rT  r’  r@  Úis_decoratedÚis_overloadÚadd_function_to_symbol_tableÚdef_or_infer_varsrU  Úfunction_scopeÚset_recurse_into_functionsr  Úanalyze_func_def)re  r  Úargs      rf  Úvisit_func_defzSemanticAnalyzer.visit_func_defÐ  s9  € ØˆŒð —>‘>ò 	-ˆCØ�‹Ø—‘×&Ñ& tÕ,ð	-ð #×.Ñ.¨rÑ2°QÑ6ˆÔð ×,Ñ,¨T¯Y©YÓ7ˆŒð ×*Ò*¬c°$×2EÑ2EÓ.FÈÒ.JØ×$Ò$¨T×-=Ò-=Ø×1Ñ1°$Ô7à×*Ò*°4×3IÒ3IØà�Z‰Z×&Ñ& tÓ,ñ 	,¨d×.MÑ.MÓ.Oñ 	,Ø×2Ñ2¸Ð2Ó?ñ ,Ø×%Ñ% dÔ+÷,÷	,÷ 	,ð 	,÷,ð ,ú÷	,ð 	,ú÷ 	,ð 	,ús<   Ã9E Ä
EÄEÄ/EÄ7E ÅEÅEÅE	ÅE Å E)c                ó@   — | j                   €|S |› d| j                   › �S )Nú#©rY  ©re  r†  s     rf  Úfunction_fullnamez"SemanticAnalyzer.function_fullnameí  s+   € Ø×%Ñ%Ð-ØˆOØ�˜1˜T×7Ñ7Ð8Ð9Ð9rh  c                óÖ  — | j                  |j                  |«      €| j                  |«       y | j                  j	                  |«       |j
                  r9t        |j
                  t        «      sJ ‚| j                  |j
                  |«      }nd}| j                  j                  «        | j                  «       rÈ| j
                  €J ‚| j
                  |_        |j
                  �€|j                  dv rrt        |j
                  t        «      sJ ‚t        t        |j
                  j                  «      t        «      r)|j
                  j!                  t#        «       ¬«      |_        | j%                  || j
                  |«       | j'                  |j(                  «      }| j+                  | j,                  j/                  |«      «      5  |j
                  �r„| j1                  |j
                  «       t        |j
                  t        «      sJ ‚| j3                  «       }| j5                  «       }|j7                  |j
                  d|¬«      }| j9                  |«      st;        |«      r6| j                  |«       | j=                  |j                  «       	 d d d «       y t        |t>        «      sJ ‚t        |t        «      �r | j                  «       xr |j@                   }|jB                  rItD        |jF                  |d  vr4| jI                  d|tJ        jL                  ¬«       |j!                  d ¬«      }|jN                  rItD        |jF                  |d  vr4| jI                  d|tJ        jL                  ¬«       |j!                  d ¬	«      }| jQ                  ||«      }|rC| j
                  �7| j
                  }|jR                  �|jR                  f|jT                  z   |_*        ||_        | jW                  |jX                  «       | j[                  |«       t        |t\        «      r7t        |j
                  t        «      sJ ‚t_        |j
                  |«      |_        d d d «       | ja                  |«       | jc                  |«       | j                  «       rÎ| j
                  €J ‚| j
                  jd                  ro| jf                  sct        | jh                  jj                  tl        «      r|jn                  r3|jp                  tr        k7  r tu        |jv                  «      rtx        |_8        tu        |jv                  «      r&| jf                  s|jp                  tz        k7  rd
|_:        |j|                  rÔt        |j
                  t        «      rº| j~                  j�                  |«      |j
                  k7  r’|j‚                  rn…t        t„        j†                  «      }	| j‰                  d|	|	|j
                  j                  g«      }
|
€J d«       ‚|j
                  j!                  |
¬«      |_        |j
                  | j~                  |<   | j=                  |j                  «       y # 1 sw Y   �ŒxY w)NF)rg  Ú__init_subclass__)Úret_type)ÚnestedÚ	namespacez3TypeGuard functions must have a positional argument©Úcode)Ú
type_guardz2"TypeIs" functions must have a positional argument)Útype_isTztyping.Coroutinez*Internal error: typing.Coroutine not found)Er  r  rÖ  r@  r  rl  r�  rè   Úupdate_function_type_variablesrð  Úis_class_scoper§  r”  r  r1  rç   Úcopy_modifiedrì   Úprepare_method_signaturer.  r†  Útvar_scope_framer?  Úmethod_frameÚcheck_classvar_in_signatureÚtype_analyzerrö  Úvisit_callable_typerú  r»   r  rñ   Ú	is_staticr6  r"   Ú	arg_kindsr¼  ÚcodesÚ
VALID_TYPEr7  Úremove_unpack_kwargsÚ	self_typeÚ	variablesÚadd_type_alias_depsÚaliases_usedÚcheck_function_signaturerS   r¾   Úanalyze_arg_initializersÚanalyze_function_bodyÚis_protocolro  rU  r   rl   Úis_propertyÚabstract_statusr)   Úis_trivial_bodyr�  r'   r,   Úis_coroutinerJ  rÛ  Úis_async_generatorrø   r¥  rÓ  )re  r  Úhas_self_typer†  Úanalyzerrû  ÚresultÚ	skip_selfr§  Úany_typer1  s              rf  r'  z!SemanticAnalyzer.analyze_func_defò  s  € Ø×Ñ˜tŸ~™~¨tÓ4Ð<Ø�J‰J�tÔØà×Ñ×"Ñ" 4Ô(à�9Š9Ü˜dŸi™i¬Ô6Ð6Ð6Ø ×?Ñ?ÀÇ	Á	È4ÓP‰Mà!ˆMà×Ñ×ÑÔ!à×ÑÔ à—9‘9Ð(Ð(Ð(ØŸ	™	ˆDŒIØ�y‰yÐ$¨¯©Ð6WÑ)WÜ! $§)¡)¬\Ô:Ð:Ð:Üœo¨d¯i©i×.@Ñ.@ÓAÄ7ÔKØ $§	¡	× 7Ñ 7ÄÃÐ 7Ó L�D”IØ×)Ñ)¨$°·	±	¸=ÔIð ×)Ñ)¨$¯-©-Ó8ˆØ×"Ñ" 4§?¡?×#?Ñ#?ÀÓ#IÓJñ ,	CØ�y‹yØ×0Ñ0°·±Ô;Ü! $§)¡)¬\Ô:Ð:Ð:ð  ×-Ñ-Ó/�Ø×0Ñ0Ó2�Ø!×5Ñ5°d·i±iÈÐYaÐ5Ób�à×,Ñ,¨SÔ1´_ÀVÔ5LØ—J‘J˜tÔ$Ø×&Ñ& t§~¡~Ô6Ø÷,	Cð ,	Cô " &¬*Ô5Ð5Ð5Ü˜f¤lÕ3à $× 3Ñ 3Ó 5Ò L¸d¿n¹nÐ:L�IØ×(Ò(¬W¸F×<LÑ<LÈYÈZÐ<XÑ-XØŸ	™	ØQØ"Ü!&×!1Ñ!1ð "ô ð "(×!5Ñ!5ÀÐ!5Ó!F˜Ø—~’~¬'¸×9IÑ9IÈ)È*Ð9UÑ*UØŸ	™	ØPØ"Ü!&×!1Ñ!1ð "ô ð
 "(×!5Ñ!5¸dÐ!5Ó!C˜à!×6Ñ6°t¸VÓD�FÙ$¨¯©Ð)>Ø#Ÿy™y˜ØŸ>™>Ð5Ø04·±Ð/@À6×CSÑCSÑ/S˜FÔ,Ø"�”	Ø×(Ñ(¨×)>Ñ)>Ô?Ø×-Ñ-¨dÔ3Ü˜d¤GÔ,Ü% d§i¡i´Ô>Ð>Ð>Ü 1°$·)±)¸TÓ B�D”I÷Y,	Cð\ 	×%Ñ% dÔ+Ø×"Ñ" 4Ô(à×ÑÔ Ø—9‘9Ð(Ð(Ð(ð —	‘	×%Ò%Ø×)Ò)Ü# D§J¡J×$7Ñ$7Ô9JÔKÈt×O_ÒO_Ø×(Ñ(¬KÒ7Ü# D§I¡IÔ.ä':�Ô$ä §	¡	Ô*Ø×)Ò)Ø×(Ñ(¬LÒ8à'+�Ô$ð ×ÒÜ˜4Ÿ9™9¤lÔ3Ø×.Ñ.×2Ñ2°4Ó8¸D¿I¹IÒEà×&Ò&àô #¤9×#9Ñ#9Ó:�Ø×2Ñ2Ø&¨°8¸T¿Y¹Y×=OÑ=OÐ(Pó�ð  Ð+ÐYÐ-YÓYÐ+Ø ŸI™I×3Ñ3¸XÐ3ÓF�”	Ø7;·y±y�×.Ñ.¨tÑ4à×Ñ˜4Ÿ>™>Õ*÷o,	Cñ ,	Cús   ÇCYÊF=YÙY(c                ó~  — |j                   r|j                   d   t        j                  ur|S |j                  d   }t	        |t
        «      s|S t        |j                  «      }t	        |t        «      sN| j                  d|«       |j                  d d t        t        j                  «      gz   }|j                  |¬«      S t        |j                  «      t        |j                   «      z  }|j#                  |j                  d   «       |r‡dj%                  t'        t)        d |«      «      D �cg c]  }d|› d�‘Œ
 c}«      }| j                  d|› �|«       |j                  d d t        t        j                  «      gz   }|j                  |¬«      S |j                  d d |gz   }|j                  |d¬«      S c c}w )	Nr®  z/Unpack item in ** parameter must be a TypedDict©Ú	arg_typesz, ú"z8Overlap between parameter names and ** TypedDict items: T)rZ  Úunpack_kwargs)rB  r5   r#   rZ  r�  r  r  rl  r÷   r¼  rç   rø   Ú
from_errorr:  rM  Ú	arg_namesrÔ  ÚdiscardÚjoinÚsortedÚfilter)	re  r  r«  Ú	last_typeÚp_last_typeÚnew_arg_typesÚoverlapr”  Ú
overlappeds	            rf  rE  z%SemanticAnalyzer.remove_unpack_kwargsf  sˆ  € Ø�}Š} §¡¨bÑ 1¼×9JÑ9JÑ JØˆJØ—M‘M "Ñ%ˆ	Ü˜)¤ZÔ0ØˆJÜ% i§n¡nÓ5ˆÜ˜+¤}Ô5Ø�I‰IÐGÈÔSØŸM™M¨#¨2Ð.´'¼)×:NÑ:NÓ2OÐ1PÑPˆMØ×$Ñ$¨}Ð$Ó=Ð=Ü�c—m‘mÓ$¤s¨;×+<Ñ+<Ó'=Ñ=ˆà�‰˜Ÿ™ bÑ)Ô*ÙØŸ™¼FÄ6È$ÐPWÓCXÓ<YÖ#Z°D a¨ v¨Q¢KÒ#ZÓ[ˆJØ�I‰IØJÈ:È,ÐWÐY]ôð  ŸM™M¨#¨2Ð.´'¼)×:NÑ:NÓ2OÐ1PÑPˆMØ×$Ñ$¨}Ð$Ó=Ð=àŸ™ c rÐ*¨k¨]Ñ:ˆØ× Ñ ¨=ÈÐ ÓMÐMùò $[s   Ä/F:c                óÜ  — |j                   }|j                  dk(  rd|_        |j                  �r¨|j                  dv rd|_        |j
                  �r…t        |t        «      �rst        |j                  d   «      }t        |t        «      r˜|r;| j                   �| j                   j                  €J ‚| j                   j                  }nd|_        t        |«      }|j                  s|j                  dk(  r| j                  |«      }t        |«      sÄt!        ||«      |_         y|r¯t        |j"                  t        «      r”t        t        |j"                  j                  d   «      t        «      sc| j%                  ||j                  xs |j                  dk(  «      r#| j'                  d|t(        j*                  ¬«       y| j'                  d|«       yyyyyyy|r| j'                  d	|«       yy)
zICheck basic signature validity and tweak annotation of self/cls argument.Ú__new__T)r0  Ú__class_getitem__r   Nz9Redundant "Self" annotation for the first method argumentr4  z9Method cannot have explicit self annotation and Self typez#Static methods cannot use Self type)rl  r”  rA  Úhas_self_or_cls_argumentÚis_classr  r�  rè   r  rZ  rç   rF  Úis_trivial_selfr  Ú
class_typer»   Úreplace_implicit_first_typeÚunanalyzed_typeÚis_expected_self_typer¼  rC  ÚREDUNDANT_SELF_TYPE)re  Úfuncr§  rS  ÚfunctyperF  Úleading_types          rf  r;  z)SemanticAnalyzer.prepare_method_signature  s¨  € ð —9‘9ˆØ�9‰9˜	Ò!Ø!ˆDŒNØ×(Ó(Ø�y‰yÐFÑFØ $�”Ø�~‹~¤*¨X´|Õ"DÜ+¨H×,>Ñ,>¸qÑ,AÓB�	Ü˜i¬Ô1Ù$Ø#Ÿy™yÐ4¸¿¹×9LÑ9LÐ9XÐXÐXØ-1¯Y©Y×-@Ñ-@™à/3˜Ô,Ü'4°TÓ':˜Ø—}’}¨¯	©	°YÒ(>Ø'+§¡°|Ó'D˜Ü*¨<Ô8Ü$?ÀÈ,Ó$W˜�	Ù"¤z°$×2FÑ2FÌÔ'UÜ%¤o°d×6JÑ6J×6TÑ6TÐUVÑ6WÓ&XÔZaÔbØ×5Ñ5Ø% t§}¡}Ò'N¸¿	¹	ÀYÑ8Nôð
 !ŸI™IØ [Ø $Ü%*×%>Ñ%>ð &õ ð !ŸI™IØ [Ð]aõð cð (V�]ð 9ð #Eˆ~ñ: Ø�I‰IÐ;¸TÕBð rh  c                óP  — | j                   €J ‚t        |«      }|rÜt        |t        «      r| j	                  |j
                  d¬«      S t        |t        «      rž| j                  |j                  |d¬«      }|�>|j                  t        v r,|j                  r | j	                  |j                  d   d¬«      S |�>|j                  t        v r,|j                  r | j	                  |j                  d   d¬«      S yt        |t        «      r|| j                   j                  k(  S t        |t        «      rv| j                  |j                  |d¬«      }|�>|j                  t        v r,|j                  r | j	                  |j                  d   d¬«      S |duxr |j                  t        v S y)zODoes this (analyzed or not) type represent the expected Self type for a method?NF)Úis_classmethodT©Úsuppress_errorsr   )rl  r  r�  rú   rq  Úitemrÿ   Úlookup_qualifiedr”  r†  rã   ÚargsrÒ   rþ   rF  rÁ   )re  r«  rw  Úsyms       rf  rq  z&SemanticAnalyzer.is_expected_self_type¨  sm  € à�y‰yÐ$Ð$Ð$Ü˜cÓ"ˆÙÜ˜#œxÔ(Ø×1Ñ1°#·(±(È5Ð1ÓQÐQÜ˜#œ{Ô+Ø×+Ñ+¨C¯H©H°cÈ4Ð+ÓP�Ø�? s§|¡|´zÑ'AÀcÇhÂhØ×5Ñ5°c·h±h¸q±kÐRWÐ5ÓXÐXØ�? s§|¡|Ô7KÑ'KÐPS×PXÒPXØ×5Ñ5°c·h±h¸q±kÐRVÐ5ÓWÐWØÜ�cœ;Ô'Ø˜$Ÿ)™)×-Ñ-Ñ-Ð-Ü�cœ;Ô'Ø×'Ñ'¨¯©°#ÀtÐ'ÓLˆCØˆ 3§<¡<Ô3GÑ#GÈCÏHÊHØ×1Ñ1°#·(±(¸1±+ÈeÐ1ÓTÐTØ˜d�?ÒF s§|¡|´Ð'FÐFØrh  c                ó  — t        |t        «      r|j                  }t        |t        t        f«      r+t	        |j
                  «      rt	        |j
                  «      ryt        |t        t        t        f«      r|j                  r||_        yy)a  If 'new' conditionally redefine 'previous', set 'previous' as original

        We reject straight redefinitions of functions, as they are usually
        a programming error. For example:

          def f(): ...
          def f(): ...  # Error: 'f' redefined
        TF)	r�  rG   rs  rS   r  r”  r�   r   Úoriginal_def)re  ÚpreviousÚnews      rf  Úset_original_defz!SemanticAnalyzer.set_original_def¿  sh   € ô �cœ9Ô%Ø—(‘(ˆCä�x¤'¬9Ð!5Ô6Ü  §¡Ô*Ü  §¡Ô/àÜ�h¤¬#¬yÐ 9Ô:¸s×?QÒ?QØ'ˆCÔØàrh  c           	     óÄ  — | j                  |j                  «      }| j                  | j                  j	                  |«      «      5  | j                  «       }|j                  ||«      \  |_        }|r| j                  �| j                  «        |j                  r¡|j                  D �ch c]  }|j                  ’Œ }}|j                  D �ch c]  }| j                  |j                  «      ’Œ }	}t        ||	z
  «      }
|
r<| j                  j                  |
D �cg c]  }|j!                  d«      d   ‘Œ c}|«       |cddd«       S c c}w c c}w c c}w # 1 sw Y   yxY w)zÿMake any type variables in the signature of defn explicit.

        Update the signature of defn to contain type variable definitions
        if defn is generic. Return True, if the signature contains typing.Self
        type, or False otherwise.
        Nr�  r®  )r.  r†  r<  r?  r=  r?  Úbind_function_type_variablesrG  rl  Úsetup_self_typer  rÝ  r”  ra  rP  Ú"type_parameters_should_be_declaredré  )re  Úfun_typer  r†  ÚarS  r¬  Úbound_fullnamesÚpÚdeclared_fullnamesÚextrar½  s               rf  r8  z/SemanticAnalyzer.update_function_type_variablesÖ  s0  € ð ×)Ñ)¨$¯-©-Ó8ˆØ×"Ñ" 4§?¡?×#?Ñ#?ÀÓ#IÓJñ 	!Ø×"Ñ"Ó$ˆAØ01×0NÑ0NÈxÐY]Ó0^Ñ-ˆHÔ Ù §¡Ð!6Ø×$Ñ$Ô&Ø�~Š~Ø7?×7IÑ7IÖ"J°! 1§:£:Ð"J�Ð"JØKOÏ>É>Ö%ZÀa d×&9Ñ&9¸!¿&¹&Õ&AÐ%ZÐ"Ð%ZÜ˜Ð1CÑCÓD�ÙØ—H‘H×?Ñ?Ø38Ö9¨a˜Ÿ™ › bÓ)Ò9¸4ôð !÷	!ñ 	!ùò #KùÚ%Zùò :÷	!ð 	!ús7   ÁA#EÂ)EÂ<EÃ"EÃ.+EÄE
Ä4	EÅEÅEc           
     ó”  — | j                   €J ‚| j                   }|j                  �Vt        |j                  j                  «      r6| j	                  dd||j                  j                  t        |«      k7  ¬«       nyt        d|j                  › d�t        d«      g t        |«      t        t        j                  «      ¬«      |_        y)zèSetup a (shared) Self type variable for current class.

        We intentionally don't add it to the class symbol table,
        so it can be accessed only by mypy and will not cause
        clashes with user defined names.
        NzSelf upper bound©Úforce_progressÚSelfz.Selfr   )ÚidÚvaluesÚupper_boundÚdefault)rl  rF  r»   r“  Úprocess_placeholderr  rþ   r†  rû   rç   rø   Úfrom_omitted_generics©re  r§  s     rf  r…  z SemanticAnalyzer.setup_self_typeí  s®   € ð �y‰yÐ$Ð$Ð$Ø�y‰yˆØ�>‰>Ð%Ü˜tŸ~™~×9Ñ9Ô:à×(Ñ(ØØ&ØØ#'§>¡>×#=Ñ#=ÄÈtÓATÑ#Tð	 )õ ð Ü$ØØ�}‰}ˆo˜UÐ#Ü˜‹|ØÜ% dÓ+ÜœI×;Ñ;Ó<ô
ˆ�rh  c                ó2  — || _         | j                  |«       | j                  s|j                  sy | j                  j                  |«      5  | j                  «       5  | j                  |«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY wrj  )rI  r#  rT  r$  rU  r%  r&  Úanalyze_overloaded_func_def©re  r  s     rf  Úvisit_overloaded_func_defz*SemanticAnalyzer.visit_overloaded_func_def
  s‚   € ØˆŒØ×)Ñ)¨$Ô/à×*Ò*°4×3IÒ3IØð �Z‰Z×&Ñ& tÓ,ñ 	3¨d×.MÑ.MÓ.Oñ 	3Ø×,Ñ,¨TÔ2÷	3÷ 	3÷ 	3ñ 	3ú÷ 	3ð 	3ús$   ÁBÁBÁ0BÂB
	ÂBÂBc              #  óJ   K  — || _         	 d –— d | _         y # d | _         w xY w­wrj  r,  )re  rz  s     rf  Úoverload_item_setz"SemanticAnalyzer.overload_item_set  s&   è ø€ à%)ˆÔ"ð	.Ûà)-ˆDÕ&ø¨ˆDÕ&üs   ‚#‹ �#—	  #c                ó,  ‡— | j                  |j                  «      |_        |j                  j	                  «       |_        |j
                  d   }d|_        | j                  d«      5  |j                  | «       d d d «       d }dŠt        |t        «      r{|j                  j                  redŠd|j                  _        | j                  |«      }t        |j                  | j                  «       «      }t        |t        «      sJ ‚||_        |g}n{| j#                  |«      \  }}}||_        |r | j'                  ||t)        |«      dkD  ¬«       |�(||j
                  d   u sJ ‚|j
                  d d |_        n|s| j+                  |«       |r‰t-        ˆfd„t/        |j
                  «      D «       «      sbt1        |«      |_        |j4                  |j2                  _        t        |t        «      r'|r%|d   |j6                  _        ||j6                  _        |j
                  s!|j$                  s|j                  d   |_        y | j;                  |«       | j=                  |«       | j?                  |«       | jA                  |«       y # 1 sw Y   �ŒxY w)Nr   TF)Úsome_overload_decoratorsr®  c              3  óŠ   •K  — | ]:  \  }}t        |t        «      xr! t        |j                  «      |d kD  s‰sdnd kD  –— Œ< y­w)r   r#  N)r�  rG   r’  Ú
decorators)Ú.0ÚiÚitrN  s      €rf  ú	<genexpr>z?SemanticAnalyzer.analyze_overloaded_func_def.<locals>.<genexpr>L  sM   øè ø€ ò 
ñ ��2ô �rœ9Ó%ò LÜ�B—M‘MÓ"¨1¨qª5¹¡aÈÑKóLñ	
ùs   ƒA A)!rÝ  r”  r£  Úunanalyzed_itemsrŽ  rÔ  r"  r�  r³  r�  rG   rs  rN  Ú+analyze_property_with_multi_part_definitionrÏ   rè   Ú
definitionÚanalyze_overload_sigs_and_implÚimplÚ"handle_missing_overload_decoratorsr’  Ú&handle_missing_overload_implementationÚanyÚ	enumeraterí   rl  r¸  ræ  Úsetter_typeÚprocess_deprecated_overloadÚprocess_final_in_overloadÚ*process_static_or_class_method_in_overloadÚprocess_overload_impl)	re  r  Ú
first_itemÚbare_setter_typer«  Útypesrª  Únon_overload_indexesrN  s	           @rf  r™  z,SemanticAnalyzer.analyze_overloaded_func_def   sI  ø€ ð ×,Ñ,¨T¯Y©YÓ7ˆŒà×*Ñ*×/Ñ/Ó1ˆŒ
à—Z‘Z ‘]ˆ
Ø!%ˆ
ÔØ×#Ñ# AÓ&ñ 	$Ø×Ñ˜dÔ#÷	$ð  ÐØˆÜ�j¤)Ô,°·±×1LÒ1LØˆKà*.ˆJ�O‰OÔ'Ø#×OÑOÐPTÓUÐÜ 
§¡°×1CÑ1CÓ1EÓFˆCÜ˜c¤<Ô0Ð0Ð0Ø'ˆCŒNØ�E‰Eð
 15×0SÑ0SÐTXÓ0YÑ-ˆE�4Ð-ØˆDŒIÙ#Ø×7Ñ7ØÐ.ÌÈUËÐVWÉð 8ô ð
 ÐØ˜tŸz™z¨"™~Ñ-Ð-Ð-Ø!ŸZ™Z¨¨˜_�•
Ù)Ø×;Ñ;¸DÔAáœó 
ô # 4§:¡:Ó.ô
ô 
ô # 5Ó)ˆDŒIØ!ŸY™YˆD�I‰IŒNô ˜*¤iÔ0Ñ5EØ&+¨A¡h�
—‘Ô#Ø-=�
—‘Ô*à�zŠzð —9’9ð !×1Ñ1°"Ñ5�”	Øð 	×(Ñ(¨Ô.Ø×&Ñ& tÔ,Ø×7Ñ7¸Ô=Ø×"Ñ" 4Õ(÷C	$ñ 	$ús   Á(J	Ê	Jc                óÚ  — |j                   ry t        |j                  x}t        «      rR|j                  j
                  x}�:||_        |j                  D ]$  }t        |t        «      sŒ||j                  _        Œ& |j                  D ]á  }d}t        |t        «      sŒ|j                  D ]½  }|r-t        |t        «      r| j                  j                  d|«       Œ2| j                  |«      x}€ŒFd}t        |j                  j                  x}t        «      r*d|j                  t!        | j"                  ¬«      «      › d�}nd}d|› d|j$                  › d|› �|j                  _        Œ¿ Œã y )	NFz-@overload should be placed before @deprecatedTú )r1  Úoverloadzof function ú is deprecated: )rN  r�  rª  rG   rs  Ú
deprecatedrÔ  r¡  Úrefers_to_fullnamerÛ   rP  rù  Úget_deprecatedrl  rè   r³  rù   r1  r†  )	re  r  rª  r¼  rz  ÚdeprecationrÈ  r«  Útypestrs	            rf  r°  z,SemanticAnalyzer.process_deprecated_overloado  sA  € Ø×ÒØä˜dŸi™iÐ'�d¬Ô3ØŸ9™9×/Ñ/Ð/ˆZÐ<à(ˆDŒOØŸ
™
ò 6�Ü˜d¤IÕ.Ø+5�D—I‘IÕ(ð6ð —J‘Jò 	ˆDØˆKÜ˜$¤	Õ*ØŸ™ò �AÙ"Ô'9¸!¼^Ô'LØŸ™Ÿ™Ð&UÐWXÕYØ(,×(;Ñ(;¸AÓ(>Ð>˜*ÑKØ&*˜Ü%¨T¯Y©Y¯^©^Ð&; c¼\ÔJØ()¨#¯*©*´^ÈDÏLÉLÔ5YÓ*ZÐ)[Ð[\Ð&]™Gà&)˜Gà& w i¨|¸D¿M¹M¸?ÐJZØ)˜lð,ð Ÿ	™	Õ,ññ	rh  c                óÎ   — t        | t        «      rUt        | j                  t        «      r;t        | j                  x}«      dk\  r!t        |d   x}t        «      r|j                  S y r·  )	r�  r>   r½  ÚcalleerÕ   r’  r|  r|   r|  )Ú
expressionr|  r¼  s      rf  r¾  zSemanticAnalyzer.get_deprecatedŒ  sW   € ô �z¤8Ô,Ü" :×#4Ñ#4Ô6KÔLÜ˜ZŸ_™_Ð,�TÓ-°Ò2Ü¨¨a©Ð0˜:´'Ô:à×#Ñ#Ð#Ørh  c                ó’  — |j                   €yt        |j                   t        «      r|j                   n|j                   j                  }t	        |j
                  «      ri| j                  «       rX| j                  sK| j                  €J ‚| j                  j                  rt        |_        |j                  t        k7  rd|_        yyyyy)z²Set flags for an overload implementation.

        Currently, this checks for a trivial body in protocols classes,
        where it makes the method implicitly abstract.
        NT)rª  r�  rS   rs  rP  r�  r9  ro  rl  rM  r'   rO  r,   )re  r  rª  s      rf  r³  z&SemanticAnalyzer.process_overload_impl—  s�   € ð �9‰9ÐØÜ& t§y¡y´'Ô:ˆt�yŠyÀÇ	Á	ÇÁˆÜ˜4Ÿ9™9Ô%¨$×*=Ñ*=Ô*?È×HYÒHYØ—9‘9Ð(Ð(Ð(Ø�y‰y×$Ò$Ü':�Ô$Ø×#Ñ#¤|Ò3Ø'+�Õ$ð 4ð	 IZÐ*?Ð%rh  c                óê  — g }g }d}t        |j                  «      D �]Ã  \  }}|dk7  rOd|_        | j                  |t	        |j                  «      dz
  k  r|nd«      5  |j                  | «       ddd«       t        |t        «      �r
t        |j                  | j                  «       «      }t        |t        «      sJ ‚||_        t        d„ |j                  D «       «      s<|t	        |j                  «      dz
  k(  r| j                  s|}n\|j                  |«       nJd|j                  _        |j                  |«       |j                   j"                  r| j%                  d|«       |xj&                  |j                  j&                  z  c_        �Œvt        |t(        «      s�Œˆ|t	        |j                  «      dz
  k(  r| j                  s|}�Œ³|j                  |«       �ŒÆ |||fS # 1 sw Y   �Œ{xY w)záFind overload signatures, the implementation, and items with missing @overload.

        Assume that the first was already analyzed. As a side effect:
        analyzes remaining items and updates 'is_overload' flags.
        Nr   Tr#  c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrj  )r½  rÛ   )r¢  Údecs     rf  r¥  zBSemanticAnalyzer.analyze_overload_sigs_and_impl.<locals>.<genexpr>½  s   è ø€ Ò^ÀsÔ-¨c´>×BÑ^ùó   ‚z!An overload can not be a property)r®  rÔ  r"  r�  r’  r³  r�  rG   rÏ   rs  rè   r¨  r­  r¡  ro  r  ræ  rN  r¼  Úis_explicit_overriderS   )re  r  r¶  r·  rª  r£  rz  Úcallables           rf  r©  z/SemanticAnalyzer.analyze_overload_sigs_and_impl§  s¢  € ð ˆØ!ÐØ$(ˆÜ  §¡Ó,ó  	3‰GˆAˆtØ�AŠvà#'�Ô Ø×+Ñ+°´S¸¿¹³_ÀqÑ5HÒ1H©AÈdÓSñ &Ø—K‘K Ô%÷&ô ˜$¤	Õ*Ü(¨¯©°D×4FÑ4FÓ4HÓI�Ü! (¬LÔ9Ð9Ð9Ø&*�Ô#ÜÑ^ÈdÏoÉoÔ^Ô^ØœC §
¡
›O¨aÑ/Ò/¸×8IÒ8Ià#™ð
 -×3Ñ3°AÕ6à,0�D—I‘IÔ)Ø—L‘L Ô*Ø—x‘x×+Ò+ØŸ	™	Ð"EÀtÔLð ×)Ò)¨T¯Y©Y×-KÑ-KÑK×)Ü˜D¤'Ö*Øœ˜DŸJ™J›¨!Ñ+Ò+°D×4EÒ4EØ’Dà(×/Ñ/°Ö2ðA 	3ðB �dÐ0Ð0Ð0÷;&ñ &ús   ÁG(Ç(G2	c                óê  — |rS|D ]M  }| j                   r | j                  d|j                  |   «       Œ/| j                  d|j                  |   «       ŒO n�|dd D ]9  }| j                  |j                  |j                  |   |j                  d   «       Œ; |j
                  r4| j                  |j                  |j
                  |j                  d   «       t        |«      D ]  }|j                  |= Œ y)zoGenerate errors for overload items without @overload.

        Side effect: remote non-overload items.
        zJAn implementation for an overloaded function is not allowed in a stub filez<The implementation for an overloaded function must come lastr#  Nr   )ro  r¼  rÔ  Úname_already_definedr”  rª  Úreversed)re  r  r·  rŸ  Úidxs        rf  r«  z3SemanticAnalyzer.handle_missing_overload_decoratorsÕ  sá   € ñ $à+ò �Ø×$Ò$Ø—I‘Ið8àŸ
™
 3™õð —I‘IØVØŸ
™
 3™õñð ,¨A¨BÐ/ò U�Ø×)Ñ)¨$¯)©)°T·Z±ZÀ±_ÀdÇjÁjÐQRÁmÕTðUà�yŠyØ×)Ñ)¨$¯)©)°T·Y±YÀÇ
Á
È1ÁÔNäÐ0Ó1ò 	 ˆCØ—
‘
˜3‘ñ	 rh  c                ó  — | j                   sÿ| j                  ri| j                  j                  rS| j                  «       sC|j                  D ]3  }t        |t        «      rt        |j                  _	        Œ)t        |_	        Œ5 yt        d„ |j                  D «       «      rK|j                  r>t        |j                  d   t        «      sJ ‚d|j                  d   j                  _        yy| j                  d|t        j                  ¬«       yy)zFGenerate error about missing overload implementation (only if needed).c              3  óz   K  — | ]3  }t        |t        «      xr |j                  j                  t        k(  –— Œ5 y ­wrj  )r�  rG   rs  rO  r)   ©r¢  rz  s     rf  r¥  zJSemanticAnalyzer.handle_missing_overload_implementation.<locals>.<genexpr>  s6   è ø€ ò àô ˜4¤Ó+ÒX°·	±	×0IÑ0IÌ[Ñ0XÓXñùó   ‚9;r   TzFAn overloaded function outside a stub file must have an implementationr4  N)ro  rl  rM  Úis_func_scoperÔ  r�  rG   r)   rs  rO  ÚallrP  r¼  rC  ÚNO_OVERLOAD_IMPL)re  r  rz  s      rf  r¬  z7SemanticAnalyzer.handle_missing_overload_implementationö  sÚ   € à× Ò Ø�yŠy˜TŸY™Y×2Ò2¸4×;MÑ;MÔ;Oð !ŸJ™Jò ;�DÜ! $¬	Ô2Ü4?˜Ÿ	™	Õ1ä/:˜Õ,ñ	;ô
 ñ à ŸJ™Jôô ð
 —:’:Ü% d§j¡j°¡m´YÔ?Ð?Ð?Ø9=�D—J‘J˜q‘M×&Ñ&Õ6ð ð —	‘	Ø\ØÜ×/Ñ/ð õ ð% !rh  c                ó¶  — t        d„ |j                  D «       «      r’d|_        t        d„ |j                  D «       «      }| j                  s| j                  d|«       nPt        d„ |j                  dd D «       «      r1t        d„ |j                  dd D «       «      }| j                  d	|«       |j                  �|j                  j                  rd|_        yyy)
zHDetect the @final status of an overloaded function (and perform checks).c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrj  ©Úis_finalrÑ  s     rf  r¥  z=SemanticAnalyzer.process_final_in_overload.<locals>.<genexpr>  s   è ø€ Ò4 ˆt�}�}Ñ4ùó   ‚Tc              3  ó:   K  — | ]  }|j                   sŒ|–— Œ y ­wrj  rØ  ©r¢  Úovs     rf  r¥  z=SemanticAnalyzer.process_final_in_overload.<locals>.<genexpr>  s   è ø€ ÒD B¸¿»œRÑDùó   ‚”z8@final should be applied only to overload implementationc              3  ó4   K  — | ]  }|j                   –— Œ y ­wrj  rØ  rÑ  s     rf  r¥  z=SemanticAnalyzer.process_final_in_overload.<locals>.<genexpr>  s   è ø€ Ò> t�T—]•]Ñ>ùrÚ  r#  Nc              3  ó:   K  — | ]  }|j                   sŒ|–— Œ y ­wrj  rØ  rÜ  s     rf  r¥  z=SemanticAnalyzer.process_final_in_overload.<locals>.<genexpr>  s   è ø€ Ò L¨ÀÇÃ¤Ñ LùrÞ  z@In a stub file @final must be applied only to the first overload)r­  rÔ  rÙ  Únextro  r¼  rª  )re  r  Ú	bad_finals      rf  r±  z*SemanticAnalyzer.process_final_in_overload  sµ   € ô Ñ4¨¯©Ô4Ô4à ˆDŒMäÑD¨$¯*©*ÔDÓDˆIØ×$Ò$Ø—	‘	ÐTÐV_Õ`ÜÑ>¨t¯z©z¸!¸"¨~Ô>Ô>Ü Ñ L¨d¯j©j¸¸¨nÔ LÓL�	Ø—	‘	ØVÐXaôð �9‰9Ð  T§Y¡Y×%7Ò%7Ø ˆD�Mð &8Ð rh  c                ó†  — g }g }|j                   D ]{  }t        |t        «      r|j                  }n&t        |t        «      r|}nJ dt        |«      › �«       ‚|j                  |j                  «       |j                  |j                  «       Œ} |j                  �«t        |j                  t        «      r|j                  j                  }nDt        |j                  t        «      r|j                  }nJ dt        |j                  «      › �«       ‚|j                  |j                  «       |j                  |j                  «       t        t        |«      «      dk7  r| j                  j                  d|«       y t        t        |«      «      dk7  r| j                  j                  d|«       y |d   |_        |d   |_        y )Nz+The 'item' variable is an unexpected type: zUnexpected impl type: r#  ÚclassmethodÚstaticmethodr   )rÔ  r�  rG   rs  rS   rl  r  rl  rA  rª  r’  rM  rP  Ú)overload_inconsistently_applies_decorator)re  r  Úclass_statusÚstatic_statusrz  Úinners         rf  r²  z;SemanticAnalyzer.process_static_or_class_method_in_overload#  s\  € ØˆØˆØ—J‘Jò 	2ˆDÜ˜$¤	Ô*ØŸ	™	‘Ü˜D¤'Ô*Ø‘àXÐ KÌDÐQUËJÈ<ÐXÓX�uØ×Ñ §¡Ô/Ø× Ñ  §¡Õ1ð	2ð �9‰9Ð Ü˜$Ÿ)™)¤YÔ/ØŸ	™	Ÿ™‘Ü˜DŸI™I¤wÔ/ØŸ	™	‘àHÐ 6´t¸D¿I¹I³Ð6GÐHÓH�uØ×Ñ §¡Ô/Ø× Ñ  §¡Ô1äŒs�<Ó Ó! QÒ&Ø�H‰H×>Ñ>¸}ÈdÕSÜ”�]Ó#Ó$¨Ò)Ø�H‰H×>Ñ>¸~ÈtÕTà(¨™OˆDŒMØ*¨1Ñ-ˆD�Nrh  c                óT  — d|_         |j                  }|j                  d   }t        |t        «      sJ ‚g }d}|j                  j
                  }t        |dd «      D �]S  \  }}t        |t        «      �r|j                  j                  | «       |j                  sŒ@|j                  d   }	| j                  |	|«      r®|j                  j                  |j                  _
        |	j
                  dk(  rSd|j                  _        t        |j                  | j                  «       «      }
t        |
t        «      sJ ‚|
}|dz   |_        |j                  dd D ]  }|j                  | «       Œ �Œ| j!                  d|› d|› d�|	«       �Œ*| j!                  d	|› d
�|«       |j#                  |dz   «       �ŒV t%        |«      D ]  }||= Œ |dd D ]Y  }t        |t        «      sŒ|j                  D ]7  }| j'                  |«      x}€Œd|j(                  › d|› �|j                  _        Œ9 Œ[ |S )a.  Analyze a property defined using multiple methods (e.g., using @x.setter).

        Assume that the first method (@property) has already been analyzed.
        Return bare setter type (without any other decorators applied), this may be used
        by the caller for performance optimizations.
        Tr   Nr#  Úsetterz$Only supported top decorators are "@z.setter" and "@z	.deleter"z$Unexpected definition for property "r[  ú	function r»  )rN  rÔ  r�  rG   rs  r”  r®  r³  r¡  Ú_is_valid_property_decoratorrO  ræ  Úis_settable_propertyrÏ   rè   Úsetter_indexr¼  r  rÍ  r¾  r†  r¼  )re  r  rÔ  r´  Údeleted_itemsrµ  Ú	func_namer£  rz  Ú
first_nodeÚsetter_func_typeÚ
other_noderÈ  r¼  s                 rf  r§  z<SemanticAnalyzer.analyze_property_with_multi_part_definitionB  s   € ð  ˆÔØ—
‘
ˆØ—Z‘Z ‘]ˆ
Ü˜*¤iÔ0Ð0Ð0ØˆØÐØ—O‘O×(Ñ(ˆ	Ü   q r Ó+ó 	,‰GˆAˆtÜ˜$¤	Õ*Ø—	‘	× Ñ  Ô&Ø—?“?Ø!%§¡°Ñ!3�JØ×8Ñ8¸ÀYÔOà4>·O±O×4SÑ4S˜Ÿ	™	Ô1Ø%Ÿ?™?¨hÒ6àBF˜JŸN™NÔ?Ü/<¸T¿Y¹YÈ×HZÑHZÓH\Ó/]Ð,Ü#-Ð.>ÄÔ#MÐMÐ#MØ/?Ð,Ø01°A±˜DÔ-Ø*.¯/©/¸!¸"Ð*=ò 4˜JØ&×-Ñ-¨dÕ3ò4ð Ÿ	™	ØBÀ9À+È_Ð]fÐ\gÐgpÐqØ&öð
 —	‘	Ð@ÀÀÈ1ÐMÈtÔTØ×$Ñ$ Q¨¡UÖ+ð1	,ô2 ˜-Ó(ò 	ˆAØ�a‘ð	ð ˜!˜"�Iò 	ˆDÜ˜$¤	Õ*ØŸ™ò �AØ&*×&9Ñ&9¸!Ó&<Ð<˜
ÑIà'¨¯© Ð6FÀzÀlÐSð Ÿ	™	Õ,ñð	ð  Ðrh  c                ó¬   — t        |t        «      syt        |j                  t        «      r|j                  j                  |k7  ry|j                  dvryy)NF>   rë  ÚdeleterT)r�  rd   Úexprrg   r”  )re  ÚdecoÚproperty_names      rf  rí  z-SemanticAnalyzer._is_valid_property_decoratorw  sF   € ô ˜$¤
Ô+ØÜ˜$Ÿ)™)¤XÔ.°$·)±)·.±.ÀMÒ2QØØ�9‰9Ð1Ñ1ð Ørh  c                óÜ   — | j                  «       r| j                  €J ‚| j                  |_        | j                  |j                  «      |_        | j                  |j                  ||«       y rj  )r9  rl  r§  rÝ  r”  r£  rß  )re  rs  s     rf  r#  z-SemanticAnalyzer.add_function_to_symbol_tableˆ  sS   € Ø×ÑÔ Ø—9‘9Ð(Ð(Ð(ØŸ	™	ˆDŒIØ×,Ñ,¨T¯Y©YÓ7ˆŒØ�‰˜Ÿ	™	 4¨Õ.rh  c                ó,  — | j                  |j                  «      }| j                  | j                  j	                  |«      «      5  |j
                  D ]*  }|j                  sŒ|j                  j                  | «       Œ, 	 d d d «       y # 1 sw Y   y xY wrj  )r.  r†  r<  r?  r=  r  r  r³  )re  r  r†  r(  s       rf  rK  z)SemanticAnalyzer.analyze_arg_initializers�  st   € Ø×)Ñ)¨$¯-©-Ó8ˆØ×"Ñ" 4§?¡?×#?Ñ#?ÀÓ#IÓJñ 	1à—~‘~ò 1�Ø—?“?Ø—O‘O×*Ñ*¨4Õ0ñ1÷	1÷ 	1ñ 	1ús   ÁB
Á#B
Â
Bc                óò  — | j                  «       }| j                  |j                  «      }| j                  | j                  j                  |«      «      5  |j                  r{| j                  «       }|j                  }t        |t        «      sJ ‚|j                  ||«       t        t        |j                  «      «      D ]  }t        |||| j                  «       Œ | j                   j#                  |«       | j%                  |«      5  |j&                  D ]  }| j)                  |j*                  |«       Œ  |ra|j,                  rU|j&                  rI|j.                  sd|j&                  d   j*                  _        nd|j&                  d   j*                  _        |j4                  j7                  | «       d d d «       | j                   j9                  «        d d d «       y # 1 sw Y   Œ,xY w# 1 sw Y   y xY w)NTr   )r9  r.  r†  r<  r?  r=  rl  r?  r�  rè   r„  Úranger’  rZ  r
  Ú
named_typer@  r  Úenterr  Ú	add_localÚvariablerk  rl  Úis_selfÚis_clsr�  r³  rð  )re  r  Ú	is_methodr†  rˆ  r«  r£  r(  s           rf  rL  z&SemanticAnalyzer.analyze_function_body—  s’  € Ø×'Ñ'Ó)ˆ	Ø×)Ñ)¨$¯-©-Ó8ˆØ×"Ñ" 4§?¡?×#?Ñ#?ÀÓ#IÓJñ 	&à�yŠyØ×&Ñ&Ó(�Ø—i‘i�Ü! #¤|Ô4Ð4Ð4Ø×.Ñ.¨s°DÔ9Üœs 3§=¡=Ó1Ó2ò G�AÜ'¨¨a°°d·o±oÕFðGà×Ñ×&Ñ& tÔ,Ø—‘˜DÓ!ñ 'ØŸ>™>ò 7�CØ—N‘N 3§<¡<°Õ6ð7ñ  ×!>Ò!>À4Ç>Â>ØŸ=š=Ø=A˜Ÿ™ qÑ)×2Ñ2Õ:à<@˜Ÿ™ qÑ)×2Ñ2Ô9à—	‘	× Ñ  Ô&÷'ð ×Ñ×#Ñ#Ô%÷1	&ð 	&÷'ð 'ú÷	&ð 	&ús&   ÁB4G-Ä
B,G!Æ6"G-Ç!G*	Ç&G-Ç-G6c                ó6  — t        |t        «      r#|j                  D ]  }| j                  |«       Œ y t        |t        «      sy t        |j                  «      t        |j                  «      gz   D ]&  }| j                  |«      sŒ| j                  |«        y  y rj  )r�  rí   rÔ  r>  rè   r  rZ  r  r1  Úis_classvarÚfail_invalid_classvar)re  r«  râ  s      rf  r>  z,SemanticAnalyzer.check_classvar_in_signature´  s…   € ä�cœ:Ô&Ø—Y‘Yò 4�Ø×0Ñ0°Õ3ð4àÜ˜#œ|Ô,ØÜ! #§-¡-Ó0´OÀCÇLÁLÓ4QÐ3RÑRò 	ˆAØ×Ñ Õ"Ø×*Ñ*¨1Ô-áñ		rh  c                ó  — |j                   }t        |t        «      sJ ‚t        |j                  «      t        |j
                  «      k  rv| j                  d|«       t        |j
                  «      t        |j                  «      z
  }t        t        j                  «      g|z  }|j                  j                  |«       y t        |j                  «      t        |j
                  «      kD  r| j                  d|d¬«       y y )Nz$Type signature has too few argumentsz%Type signature has too many argumentsT©Úblocker)rl  r�  rè   r’  rZ  r  r¼  rç   rø   r]  Úextend)re  ÚfdefÚsigÚnum_extra_anysÚ
extra_anyss        rf  rJ  z)SemanticAnalyzer.check_function_signatureÂ  s¼   € Ø�i‰iˆÜ˜#œ|Ô,Ð,Ð,Üˆs�}‰}Ó¤ D§N¡NÓ 3Ò3Ø�I‰IÐ<¸dÔCä  §¡Ó0´3°s·}±}Ó3EÑEˆNÜ!¤)×"6Ñ"6Ó7Ð8¸>ÑIˆJØ�M‰M× Ñ  Õ,Ü�—‘Ó¤# d§n¡nÓ"5Ò5Ø�I‰IÐ=¸tÈTˆIÕRð 6rh  c                ó¢  — || _         |j                  j                  «       |_        | j                  d   dkD  |j
                  _        |j                  s| j                  |j                  ||«       | j                  |j                  «      |j
                  _        | j                  |j                  «      |j                  _        |j                  D ]  }|j                  | «       Œ g }d}d}t        |j                  «      D �]œ  \  }}t        |d«      r9|j!                  |«       t"        |j
                  _        | j'                  d|«       ŒLt        |d«      r#|j!                  |«       d|j
                  _        Œ{t        |d«      rF|j!                  |«       d|j
                  _        d|j                  _        | j'                  d	|«       ŒÍt        |d
«      rG|j!                  |«       d|j
                  _        d|j                  _        | j'                  d|«       �Œ t        |t2        «      r6|j!                  |«       d|j
                  _        | j'                  d|«       �Œft        |d«      r†|j!                  |«       d|j
                  _        d|j                  _        t        |d«      rt"        |j
                  _        nt        |d«      rd|j                  _        | j'                  d|«       �Œøt        |d«      r,t;        t<        j>                  «      |j                  _         d}�Œ0t        |tB        «      rž| jE                  «       rz| j@                  €J d«       ‚| j@                  jF                  r| jH                  jK                  |«       n"d|j
                  _&        d|j                  _&        |j!                  |«       �ŒÊ| jO                  d|«       �ŒÞt        |tP        «      rd|j
                  _)        �ŒtU        |tV        «      r<t        |jX                  tZ        «      r"| j]                  |«      |j
                  _/        �ŒM| ja                  |«      x}�#d|jb                  › d|› �|j
                  _2        �Œƒ|j                  j6                  r�Œ›d}�ŒŸ tg        |«      D ]  }|j                  |= Œ |j                  r|j                  j6                  r8| j@                  r,| j@                  |j                  _4        d|j                  _5        |rtm        |j
                  «       |sV| jn                  s|j
                  jp                  r4| js                  «       5  |j
                  j                  | «       d d d «       |r:|j                  r.|j                  j6                  r| jO                  d|tt        ¬«       |j
                  j*                  s|j
                  j.                  r(|j                  j6                  r| jO                  d|«       |j
                  j$                  t"        k(  r@|j
                  jL                  r*| jO                  d|j
                  j                  › d�|«       |j
                  j*                  r8|j
                  j.                  r!| jO                  tv        jx                  |«       y y y # 1 sw Y   �ŒFxY w)Nr®  r   Fzabc.abstractmethodÚabstractmethod)zasyncio.coroutines.coroutineztypes.coroutineTzbuiltins.staticmethodrå  zbuiltins.classmethodrä  Úoverride)zbuiltins.propertyúabc.abstractpropertyúfunctools.cached_propertyzenum.propertyztypes.DynamicClassAttributer  r  Úpropertyztyping.no_type_checkzNo type set at class scopez/@final cannot be used with non-method functionsrì  r»  z0Decorators on top of @property are not supportedr4  z5Only instance methods can be decorated with @propertyzMethod z is both abstract and final)=rI  Úoriginal_decoratorsrŽ  r¡  r;  rs  r   r"  rß  r”  rÝ  r£  ræ  r³  r®  r½  r  r)   rO  Ú"check_decorated_function_is_methodÚis_awaitable_coroutinerA  Úis_staticmethodrl  rw  rÜ   rÉ  rN  rî  rç   rø   r¥  rl  r×   r9  rM  rP  Úprotocol_members_cant_be_finalrÙ  r¼  râ   Úis_type_check_onlyr�  r>   rÂ  rÔ   Úparse_dataclass_transform_specÚdataclass_transform_specr¾  r†  r¼  rÍ  r§  Úis_initialized_in_classÚerase_func_annotationsrT  r$  r&  r   r   Ú$CLASS_PATTERN_CLASS_OR_STATIC_METHOD)re  rÇ  rÈ  ÚremovedÚno_type_checkÚcould_be_decorated_propertyr£  r¼  s           rf  Úvisit_decoratorz SemanticAnalyzer.visit_decoratorÎ  s  € ØˆŒà×0Ñ0×5Ñ5Ó7ˆŒØ"&×"2Ñ"2°2Ñ"6¸Ñ":ˆ�‰ÔØ�ŠØ�O‰O˜CŸH™H c¨3Ô/Ø!×0Ñ0°·±Ó:ˆ�‰ÔØ ×/Ñ/°·±Ó9ˆ�‰ÔØ—‘ò 	ˆAØ�H‰H�T�Nð	àˆØˆØ&+Ð#Ü˜cŸn™nÓ-ó C	3‰DˆAˆqä! !Ð%9Ô:Ø—‘˜qÔ!Ü+6�—‘Ô(Ø×7Ñ7Ð8HÈ#ÕNÜ# AÐ'ZÔ[Ø—‘˜qÔ!Ø26�—‘Õ/Ü# AÐ'>Ô?Ø—‘˜qÔ!Ø%)�—‘Ô"Ø*.�—‘Ô'Ø×7Ñ7¸ÈÕLÜ# AÐ'=Ô>Ø—‘˜qÔ!Ø$(�—‘Ô!Ø)-�—‘Ô&Ø×7Ñ7¸ÀsÖKÜ# AÔ'?Ô@Ø—‘˜qÔ!Ø04�—‘Ô-Ø×7Ñ7¸
ÀCÖHÜ#Øðô	ð —‘˜qÔ!Ø'+�—‘Ô$Ø&*�—‘Ô#Ü% aÐ)?Ô@Ü/:�C—H‘HÕ,Ü'¨Ð+FÔGØ37�C—G‘GÔ0Ø×7Ñ7¸
ÀCÖHÜ# AÐ'=Ô>Ü&¤y×'=Ñ'=Ó>�—‘”Ø $’Ü# AÔ'<Ô=Ø×&Ñ&Ô(ØŸ9™9Ð0ÐNÐ2NÓNÐ0Ø—y‘y×,Ò,ØŸ™×?Ñ?ÀÕBà,0˜Ÿ™Ô)Ø+/˜Ÿ™Ô(Ø—N‘N 1Ö%à—I‘IÐOÐQRÖSÜ# AÔ'<Ô=à.2�—‘Ö+Ü˜AœxÔ(Ô-?Ø—‘Ô3ô.ð 59×4WÑ4WÐXYÓ4Z�—‘Ö1Ø $× 3Ñ 3°AÓ 6Ð6�*ÐCØ(1°#·,±,°Ð?OÐPZÈ|Ð&\�—‘Ö#Ø—W‘W×(Ô(ð /3Ò+ðGC	3ôH ˜'Ó"ò 	"ˆAØ—‘˜qÑ!ð	"à—’ 3§7¡7×#6Ò#6¸D¿IºIØŸ9™9ˆC�G‰GŒLØ.2ˆC�G‰GÔ+ÙÜ" 3§8¡8Ô,Ù $×"=Ò"=ÀÇÁ×A[ÒA[Ø×0Ñ0Ó2ñ &Ø—‘—‘ Ô%÷&á&¨3¯>ª>¸c¿g¹g×>QÒ>QØ�I‰IØBÀCÔN`ð ô ð �H‰H×Ò #§(¡(×"3Ò"3¸¿¹×9LÒ9LØ�I‰IÐMÈsÔSØ�8‰8×#Ñ#¤{Ò2°s·x±x×7HÒ7HØ�I‰I˜ §¡§¡˜Ð.IÐJÈCÔPØ�8‰8×Ò #§(¡(×"3Ò"3Ø�I‰IÔ&×KÑKÈSÕQð #4Ð÷&ñ &ús   Õ$[Û[c                ój   — | j                   r| j                  «       r| j                  d|› d�|«       y y )Nr[  z" used with a non-method)rl  rÓ  r¼  )re  Ú	decoratorÚcontexts      rf  r  z3SemanticAnalyzer.check_decorated_function_is_method5  s1   € Ø�yŠy˜D×.Ñ.Ô0Ø�I‰I˜˜)˜Ð$<Ð=¸wÕGð 1rh  c                óŒ  — || _         | j                  j                  |j                   «       | j	                  |j
                  «      }| j                  | j                  j                  |«      «      5  | j                  |j                  |«      €&| j                  |j
                  |«       	 d d d «       y | j                  j                  g «       | j                  |«       | j                  j                  «        | j                  |j                  «       d d d «       | j                  j                  «        y # 1 sw Y   Œ$xY wrj  )rI  rN  r  r§  rÝ  r”  r<  r?  Úclass_framer  r  rø  rd  Úanalyze_classrð  r  )re  r  r3  s      rf  Úvisit_class_defz SemanticAnalyzer.visit_class_def=  sý   € ØˆŒØ×"Ñ"×)Ñ)¨d¯i©i¨-Ô8Ø×'Ñ'¨¯	©	Ó2ˆ	Ø×"Ñ" 4§?¡?×#>Ñ#>¸yÓ#IÓJñ 	/Ø×"Ñ" 4§>¡>°4Ó8Ð@Ø×$Ñ$ T§Y¡Y°Ô5Ø÷	/ð 	/ð ×"Ñ"×)Ñ)¨"Ô-Ø×Ñ˜tÔ$Ø×"Ñ"×&Ñ&Ô(Ø×Ñ˜tŸ~™~Ô.÷	/ð 	×"Ñ"×&Ñ&Õ(÷	/ð 	/ús   Á3:D:Â6A!D:Ä:Ec                óÐ  — |sg S | j                   j                  t        «       «       | j                  j                  t        «       g }|D ]˜  }| j                  ||«      }|€ y |j                  |j                  |f«       | j                  |j                  «      r!| j                  d|j                  › d�|«       Œr| j                  |j                  ||dd¬«      rŒ“J d«       ‚ |S )Nr[  z%" already defined as a type parameterT)Úno_progressÚ
type_paramz&Type parameter should not be discarded)
r8  r  r   r:  r*  Úanalyze_type_paramr”  Úis_defined_type_paramr¼  rß  )re  r  r'  ÚtvsrŠ  Útvs         rf  r  zSemanticAnalyzer.push_type_argsK  sÞ   € ñ ØˆIØ�‰×Ñœ;›=Ô)Ø×Ñ×ÑÔ 0Ô1Ø13ˆØò 	<ˆAØ×(Ñ(¨¨GÓ4ˆBØˆzÙØ�J‰J˜Ÿ™ �|Ô$à×)Ñ)¨!¯&©&Ô1Ø—	‘	˜A˜aŸf™f˜XÐ%JÐKÈWÕUà—‘Ø—F‘F˜B °TÀdð 'õ ð <à;ó<ð ð	<ð ˆ
rh  c                óx   — | j                   D ]+  }|€Œ||v sŒ||   j                  }t        |t        «      sŒ+ y y©NTF)r8  r¤  r�  r�   )re  r”  r…  r¤  s       rf  r0  z&SemanticAnalyzer.is_defined_type_paramb  sE   € Ø—[‘[ò 	 ˆEØˆ}ØØ�uŠ}Ø˜T‘{×'Ñ'�Ü˜d¤OÕ4Ùð	 ð rh  c           
     ó   — | j                  |j                  «      }|j                  r7| j                  |j                  d¬«      }|€]t	        d g |j
                  «      }nE|j                  t        k(  r"| j                  d| j                  «       g«      }n| j                  «       }| j                  �| j                  j                  «        |j                  �r | j                  |j                  ddd|j                  t        k(  |j                  t        k(  |j                  t        k(  d¬«      }|€t	        d g |j
                  «      }n©|j                  t        k(  r| j                  ||j                  «      }ny|j                  t        k(  r| j!                  ||j                  «      }nI|j                  t        k(  r6| j#                  ||j                  «      }nt%        t&        j(                  «      }| j                  }d | _
        |j                  t        k(  rÜg }|j*                  r¢|j*                  D ]“  }| j                  |d¬«      }	|	€t	        d g |j
                  «      }	t-        |	«      rI| j/                  t0        j2                  |«       |j5                  t%        t&        j6                  «      «       Œƒ|j5                  |	«       Œ• t9        |j                  ||||t:        d|j
                  ¬«      }
n•|j                  t        k(  r&t=        |j                  |||d|j
                  ¬«      }
n\|j                  t        k(  sJ ‚| j                  d| j                  «       g«      }t?        |j                  ||||d|j
                  ¬«      }
||
_         |
S )	NT©Úallow_placeholderúbuiltins.tupleF)r7  rX  Úreport_invalid_typesÚallow_param_spec_literalsÚallow_tuple_literalÚallow_unpackÚanalyzing_tvar_def)r”  r†  r’  r“  r”  ÚvarianceÚis_new_styler¸  )r”  r†  r“  r”  r?  r¸  )r”  r†  r“  Útuple_fallbackr”  r?  r¸  )!rÝ  r”  r“  rÜ  rð   r¸  Úkindr3   rþ  Úobject_typerc  Úclearr”  r-   r2   Úcheck_typevar_defaultÚcheck_paramspec_defaultÚcheck_typevartuple_defaultrç   rø   r–  r’  r  r¼  r   Ú TYPE_VAR_GENERIC_CONSTRAINT_TYPEr  r]  rŒ   r4   rn   rŽ   Údefault_depends)re  r.  r'  r†  r“  r”  rH  r’  r|  Úanalyzedr2  r@  s               rf  r/  z#SemanticAnalyzer.analyze_type_paraml  s	  € ð ×&Ñ& z§¡Ó7ˆØ×!Ò!ØŸ.™.¨×)?Ñ)?ÐSW˜.ÓXˆKàÐ"ô .¨d°B¸¿¹ÓE‘à�‰Ô"5Ò5Ø"Ÿo™oÐ.>À×AQÑAQÓASÐ@TÓU‘à"×.Ñ.Ó0�à×ÑÐ'Ø×Ñ×"Ñ"Ô$Ø×ÓØ—n‘nØ×"Ñ"Ø"&Ø$(Ø%*Ø*4¯/©/¼_Ñ*LØ$.§O¡O´Ñ$FØ'Ÿ_™_Ô0CÑCØ#'ð %ó 	ˆGð ˆÜ)¨$°°G·L±LÓA‘Ø—‘¤MÒ1Ø×4Ñ4°W¸j×>PÑ>PÓQ‘Ø—‘¤OÒ3Ø×6Ñ6°wÀ
×@RÑ@RÓS‘Ø—‘Ô$7Ò7Ø×9Ñ9¸'À:×CUÑCUÓV‘äœi×=Ñ=Ó>ˆGØ×*Ñ*ˆØˆÔØ�?‰?œmÒ+Ø!#ˆFØ× Ò Ø'×.Ñ.ò 0�EØ#Ÿ~™~¨eÀt˜~ÓL�HØÐ'Ü#2°4¸¸W¿\¹\Ó#J˜Ü$ XÔ.ØŸ	™	Ô"2×"SÑ"SÐU\Ô]ØŸ™¤g¬i×.BÑ.BÓ&CÕDàŸ™ hÕ/ð0ô Ø—_‘_Ø!ØØ'ØÜ+Ø!Ø—\‘\ô	‰Bð �_‰_¤Ò/ÜØ—_‘_Ø!Ø'ØØ!Ø—\‘\ô‰Bð —?‘?Ô&9Ò9Ð9Ð9Ø!Ÿ_™_Ð-=À×@PÑ@PÓ@RÐ?SÓTˆNÜ!Ø—_‘_Ø!Ø'Ø-ØØ!Ø—\‘\ôˆBð -ˆÔØˆ	rh  c                ór   — |sy | j                   j                  «        | j                  j                  «        y rj  )r8  rð  r:  )re  r  s     rf  r  zSemanticAnalyzer.pop_type_argsÄ  s(   € ÙØØ�‰�‰ÔØ×Ñ×ÑÕrh  c                ó	  — | j                  |j                  «      }|j                  sI| j                  |«      s8t	        |||j
                  d¬«      }| j                  |j                  ||d¬«       | j                  «       }|j                  j                  |j                  «       |j                  j                  «        | j                  |«       |j                  }| j                  |||¬«      \  }}}}| j                  |«       i }	|D ]+  \  }
}|j                  €Œ|j                  |	|j                   <   Œ- t#        d„ |D «       «      r| j%                  ||j&                  k7  ¬«       | j)                  |«       | j+                  |j                  |«      }|�| j-                  |«      r| j/                  |j                  |«       y |\  }}t#        d„ |D «       «      r| j/                  |j                  |«       y t#        d	„ |D «       «      r| j%                  «        | j1                  |j                  |j2                  «      \  }}}|s| j-                  |«      r| j/                  |j                  |«       y | j5                  |«      rA|j                  r4| j7                  ||«       | j9                  |«       |	|j                  _        y | j;                  ||«      r|j                  r|	|j                  _        y | j=                  |«       | j7                  ||«       |	|j                  _        |rd|j                  _        |rd|j                  _         | jB                  jE                  |j                  «      5  | jG                  ||«       ||j                  _$        | jK                  ||«       d|j                  _&        |jN                  r4| jP                  jS                  «       }| jT                  jS                  «        |jV                  D ]  }| jY                  ||«       Œ |jN                  r:| jP                  j[                  «       | jT                  j[                  t\        «       | j_                  |«       d d d «       y # 1 sw Y   y xY w)
NT©Úbecomes_typeinfoF)Ú	can_defer©r'  c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrj  ©r»   )r¢  Útvds     rf  r¥  z1SemanticAnalyzer.analyze_class.<locals>.<genexpr>ç  s   è ø€ Ò9¨Œ˜s×#Ñ9ùó   ‚rŽ  c              3  óB   K  — | ]  \  }}t        |t        «      –— Œ y ­wrj  )r�  rð   ©r¢  ÚbaseÚ_s      rf  r¥  z1SemanticAnalyzer.analyze_class.<locals>.<genexpr>ö  s   è ø€ ÒK±W°T¸1Œz˜$¤×0ÑKùs   ‚c              3  ó8   K  — | ]  \  }}t        |«      –— Œ y ­wrj  rQ  rU  s      rf  r¥  z1SemanticAnalyzer.analyze_class.<locals>.<genexpr>û  s   è ø€ Ò?©¨¨qŒ˜t×$Ñ?ùó   ‚)0rÝ  r”  r§  Úis_core_builtin_classrp   r¸  rß  rö  Úbase_type_exprsr  Úremoved_base_type_exprsrC  Ú-infer_metaclass_and_bases_from_compat_helpersÚ'clean_up_bases_and_infer_type_variablesÚcheck_type_alias_basesrH  r†  r­  rÖ  r  Úanalyze_class_keywordsÚanalyze_base_classesrú  rø  Úget_declared_metaclassÚ	metaclassÚanalyze_typeddict_classdefÚsetup_type_varsÚsetup_alias_type_varsÚanalyze_namedtuple_classdefÚprepare_class_defÚfallback_to_anyÚmeta_fallback_to_anyrU  Úclass_scopeÚconfigure_base_classesrM  Úrecalculate_metaclassÚruntime_protocolr  r8  rð  r:  r¡  Úanalyze_class_decoratorr  r*  Úanalyze_class_body_common)re  r  r†  Úplaceholderrû  ÚbasesÚ	tvar_defsrM  Údeclared_tvarsrH  rW  r2  Úbases_resultÚ
base_typesÚ
base_errorÚdeclared_metaclassÚshould_deferÚany_metaÚtype_params_namesr&  s                       rf  r*  zSemanticAnalyzer.analyze_classÊ  sË  € Ø×&Ñ& t§y¡yÓ1ˆØ�yŠy ×!;Ñ!;¸DÔ!Aô
 *¨(°D¸$¿)¹)ÐVZÔ[ˆKØ�O‰O˜DŸI™I {°DÀEˆOÔJà×(Ñ(Ó*ˆð 	×Ñ×#Ñ# D×$@Ñ$@ÔAØ×$Ñ$×*Ñ*Ô,à×:Ñ:¸4Ô@à×$Ñ$ˆà×8Ñ8¸¸uÈdÐ8ÓSñ 	6ˆˆy˜+ ~ð 	×#Ñ# EÔ*Ø@BˆØ#ò 	B‰EˆAˆrØ×!Ñ!Ñ-Ø/1×/AÑ/A� §¡Ò,ð	Bô Ñ9¨yÔ9Ô9ð
 �J‰J i°4·>±>Ñ&AˆJÔBà×#Ñ# DÔ)Ø×0Ñ0°·±¸EÓBˆØÐ 4×#<Ñ#<¸SÔ#Aà× Ñ  §¡¨DÔ1Øà!-Ñˆ
�JÜÑKÀ
ÔKÔKð × Ñ  §¡¨DÔ1ØÜÑ?°JÔ?Ô?ð �J‰JŒLà59×5PÑ5PØ�I‰I�t—~‘~ó6
Ñ2Ð˜L¨(ñ ˜4×4Ñ4°SÔ9à× Ñ  §¡¨DÔ1Øà×*Ñ*¨4Ô0Ø�yŠyØ×$Ñ$ T¨9Ô5Ø×*Ñ*¨4Ô0Ø,;�—	‘	Ô)Øà×+Ñ+¨D°)Ô<Ø�yŠyØ,;�—	‘	Ô)Øð 	×Ñ˜tÔ$Ø×Ñ˜T 9Ô-Ø$3ˆ�	‰	Ô!ÙØ(,ˆD�I‰IÔ%ÙØ-1ˆD�I‰IÔ*à�Z‰Z×#Ñ# D§I¡IÓ.ñ 	1Ø×'Ñ'¨¨jÔ9Ø$/ˆD�I‰IÔ!Ø×&Ñ& tÐ-?Ô@Ø).ˆD�I‰IÔ&à�~Š~ð %)§K¡K§O¡OÓ$5Ð!Ø× Ñ ×$Ñ$Ô&Ø!Ÿ_™_ò >�	Ø×,Ñ,¨T°9Õ=ð>à�~Š~Ø—‘×"Ñ"Ð#4Ô5Ø× Ñ ×'Ñ'Ô(8Ô9à×*Ñ*¨4Ô0÷#	1÷ 	1ñ 	1ús   Í8DRÒRc                óô   — |D ]s  }t        |t        «      r|j                  }t        |t        «      sŒ0t        |j                  t
        «      sŒK|j                  j                  sŒb| j                  d|«       Œu y )NzAType alias defined using "type" statement not valid as base class)r�  r\   rV  rs   r¤  r   Úpython_3_12_type_aliasr¼  )re  rr  rV  s      rf  r_  z'SemanticAnalyzer.check_type_alias_bases0  s[   € Øò 
	ˆDÜ˜$¤	Ô*Ø—y‘y�ä˜4¤Õ)Ü˜tŸy™y¬)Õ4Ø—I‘I×4Ó4à—	‘	ØWÐY]õñ
	rh  c                ó¦  — d}g }|D ]–  }|rot        |t        «      r_|j                  «       rO| j                  t        j
                  |t        j                  ¬«       | j                  d   j                  |«       Œtt        |t        «      rd}|j                  |«       Œ˜ ||_        g |j                  _        |j                  j                  «        y )NFr4  r®  T)r�  rþ   Úhas_defaultr¼  r   ÚNO_DEFAULT_AFTER_TYPEVAR_TUPLErC  ÚTYPE_VARrd  r  rý   r  r§  Úadd_type_vars)re  r  rs  Úseen_tvtÚvalid_tvar_defsr2  s         rf  re  z SemanticAnalyzer.setup_type_vars=  s¶   € ØˆØˆØò 	'ˆBÙœJ r¬;Ô7¸B¿N¹NÔ<LØ—	‘	Ü$×CÑCÀTÔPU×P^ÑP^ð ô ð
 ×&Ñ& rÑ*×1Ñ1°"Ô5ØÜ˜"Ô.Ô/Ø�Ø×"Ñ" 2Õ&ð	'ð )ˆŒØ ˆ�	‰	Ôà�	‰	×ÑÕ!rh  c                ó~  — |j                   j                  €J ‚t        |j                  «      |j                   j                  _        t        |j                  «      D ]1  \  }}t        |t        «      sŒ||j                   j                  _        Œ3 |j                   j                  j                  }t        |t        «      sJ ‚t        |t        «      r%t        |j                  «      |j                  _        y t        |t        «      r%t        |j                  «      |j                   _        y J dt#        |«      › �«       ‚)NzUnexpected special alias type: )r§  Úspecial_aliasÚlistr  Úalias_tvarsr®  r�  rý   Útvar_tuple_indexrü  rñ   r÷   r  Úfallbackr|  rô   Úpartial_fallbackrl  )re  r  r£  râ  rü  s        rf  rf  z&SemanticAnalyzer.setup_alias_type_varsQ  së   € Ø�y‰y×&Ñ&Ð2Ð2Ð2Ü.2°4·>±>Ó.Bˆ�	‰	×ÑÔ+ô ˜dŸn™nÓ-ò 	=‰DˆAˆqÜ˜!Ô-Õ.Ø;<�—	‘	×'Ñ'Õ8ð	=ð —‘×(Ñ(×/Ñ/ˆÜ˜&¤*Ô-Ð-Ð-Ü�fœmÔ,Ü#4°T·^±^Ó#DˆF�O‰OÕ Ü˜¤	Ô*Ü+<¸T¿^¹^Ó+LˆF×#Ñ#Õ(àJÐ;¼DÀ»L¸>ÐJÓJ�5rh  c                óH   — | j                   dk(  xr |j                  t        v S ©Nr�  )r  r”  r!  rš  s     rf  rZ  z&SemanticAnalyzer.is_core_builtin_classb  s    € Ø�‰ *Ñ,ÒR°·±Ô>RÐ1RÐRrh  c                ó  — | j                  |j                  «       t        d„ |j                  j                  D «       «      r| j	                  «        |j
                  j                  | «       | j                  |«       | j                  «        y)zHParts of class body analysis that are common to all kinds of class defs.c              3  ó8   K  — | ]  }|j                   d u–— Œ y ­wrj  )rF  )r¢  Úbs     rf  r¥  z=SemanticAnalyzer.analyze_class_body_common.<locals>.<genexpr>h  s   è ø€ Ò>¨1ˆq�{‰{ $Ô&Ñ>ùrY  N)	r  r§  r­  Úmror…  r–  r³  Úapply_class_plugin_hooksr  rš  s     rf  rp  z*SemanticAnalyzer.analyze_class_body_commone  sb   € à×Ñ˜Ÿ™Ô#ÜÑ>°·	±	·±Ô>Ô>Ø× Ñ Ô"Ø�	‰	×Ñ˜ÔØ×%Ñ% dÔ+Ø×ÑÕrh  c                óø  — |j                   r[|j                   j                  rE|j                   j                  � |j                   j                  j                  rd}|j                   }n| j                  j                  |«      \  }}|rs|€| j                  |j                  |«       n| j                  ||«       |j                  D ]2  }|j                  | «       |j                   sŒ!| j                  ||«       Œ4 yyr4  )r§  Útypeddict_typeÚtypeddict_dataÚreadyr  rd  rø  r”  rh  r¡  r³  Úanalyze_class_decorator_common)re  r  Úis_typeddictr§  r&  s        rf  rd  z+SemanticAnalyzer.analyze_typeddict_classdefn  sÒ   € à�IŠIØ—	‘	×(Ò(Ø—‘×)Ñ)Ð1°T·Y±Y×5MÑ5M×5SÒ5Sð  ˆLØ—9‘9‰Dà!%×!9Ñ!9×!TÑ!TÐUYÓ!ZÑˆL˜$ÙØˆ|Ø×$Ñ$ T§Y¡Y°Õ5à×&Ñ& t¨TÔ2Ø!Ÿ_™_ò I�	Ø× Ñ  Ô&Ø—9“9Ø×7Ñ7¸¸iÕHðIð Ørh  c                ó.  — |j                   rZ|j                   j                  rD|j                   j                  r.t        |j                   j                  «      sd}|j                   }n)| j                  j                  || j                  «      \  }}|rì|€| j                  |j                  |«       y| j                  ||«       | j                  ||«       | j                  |«       | j                  j                  |j                   «      5  |j                  D ]%  }|j                  | «       | j!                  ||«       Œ' | j                  j#                  |«      5  | j%                  |«       ddd«       ddd«       yy# 1 sw Y   ŒxY w# 1 sw Y   yxY w)z-Check if this class can define a named tuple.TNF)r§  Úis_named_tupleÚ
tuple_typer»   r  rg  ro  rø  r”  rh  re  rf  rU  rk  r¡  r³  r—  Úsave_namedtuple_bodyrp  )re  r  rs  rš  r§  rø  s         rf  rg  z,SemanticAnalyzer.analyze_namedtuple_classdef…  s]  € ð
 �IŠIØ—	‘	×(Ò(Ø—	‘	×$Ò$Ü# D§I¡I×$8Ñ$8Ô9ð "ˆNØ$(§I¡I‰Dà#'×#<Ñ#<×#XÑ#XØ�d×'Ñ'ó$Ñ ˆN˜Dñ Øˆ|Ø×$Ñ$ T§Y¡Y°Ô5ð ð ×&Ñ& t¨TÔ2Ø×$Ñ$ T¨9Ô5Ø×*Ñ*¨4Ô0Ø—Z‘Z×+Ñ+¨D¯I©IÓ6ñ =Ø $§¡ò H˜ØŸ™ DÔ)Ø×;Ñ;¸DÀ$ÕGðHð ×2Ñ2×GÑGÈÓMñ =Ø×6Ñ6°tÔ<÷=÷	=ð Ø÷=ð =ú÷	=ð ús%   ÄAFÅE?Å-FÅ?F	ÆFÆFc                ó¶  — |j                   D ]d  }| j                  |«      }|sŒ| j                  j                  |«      }|€t	        |«      rt
        j                  }|sŒR |t        ||| «      «       Œf |j                  rW| j                  |j                  «      }|r:| j                  j                  |«      }|r |t        ||j                  | «      «       |j                  D ]G  }| j                  |«      }|sŒ| j                  j                  |«      }|sŒ5 |t        ||| «      «       ŒI t	        |«      }|� t        j                  |j                  «       yy)zIApply a plugin hook that may infer a more precise definition for a class.N)r¡  Úget_fullname_for_hookrH  Úget_class_decorator_hookrº   Údataclasses_pluginÚdataclass_tag_callbackr¦   rc  Úget_metaclass_hookr[  Úget_base_class_hookÚadd_dataclass_tagr§  )	re  r  r&  Údecorator_nameÚhookÚmetaclass_nameÚ	base_exprÚ	base_nameÚspecs	            rf  r’  z)SemanticAnalyzer.apply_class_plugin_hooks§  s5  € ð Ÿ™ò 
	AˆIØ!×7Ñ7¸	ÓBˆNÚØ—{‘{×;Ñ;¸NÓK�ð �<Ô$AÀ)Ô$LÜ-×DÑD�DÚÙœ¨¨y¸$Ó?Õ@ð
	Að �>Š>Ø!×7Ñ7¸¿¹ÓGˆNÙØ—{‘{×5Ñ5°nÓE�ÙÙœ¨¨t¯~©~¸tÓDÔEà×-Ñ-ò 	AˆIØ×2Ñ2°9Ó=ˆIÚØ—{‘{×6Ñ6°yÓA�ÚÙœ¨¨y¸$Ó?Õ@ð	Aô -¨TÓ2ˆØÐÜ×0Ñ0°·±Õ;ð rh  c                ó>  — t        |t        «      r| j                  |j                  «      S t        |t        «      r| j                  |j
                  «      S t        |t        «      r7|j                  r|j                  S | j                  |«      }|r|j                  S y rj  )	r�  r>   rž  rÂ  r\   rV  rs   r†  Úlookup_type_node©re  r÷  r}  s      rf  rž  z&SemanticAnalyzer.get_fullname_for_hookÊ  s}   € Ü�dœHÔ%Ø×-Ñ-¨d¯k©kÓ:Ð:Ü˜œiÔ(Ø×-Ñ-¨d¯i©iÓ8Ð8Ü˜œgÔ&Ø�}Š}Ø—}‘}Ð$ð ×'Ñ'¨Ó-ˆCÙØ—|‘|Ð#Ørh  c                ód   — |j                   j                  «       D ]  }|j                  | «       Œ y rj  )Úkeywordsr’  r³  )re  r  r|  s      rf  r`  z'SemanticAnalyzer.analyze_class_keywordsÚ  s*   € Ø—]‘]×)Ñ)Ó+ò 	ˆEØ�L‰L˜Õñ	rh  c                ó‚  — | j                   j                  | j                  «       | j                  j                  d «       | j                  j                  t
        «       | j                  j                  d«       | j                  j                  d«       || _        | j                  j                  t        «       «       y )Nr®  r   )r>  r  rl  r8  r:  r$  r;  rC  r=  rA  rM  r—  s     rf  r  zSemanticAnalyzer.enter_classÞ  s�   € à�‰×Ñ˜tŸy™yÔ)Ø�‰×Ñ˜4Ô Ø×Ñ×Ñ¤Ô,Ø×Ñ×Ñ Ô#Ø�‰×Ñ˜qÔ!ØˆŒ
Ø×Ñ×!Ñ!¤#£%Õ(rh  c                óF  — | j                   j                  «        | j                  j                  «        | j                  j                  «        | j                  j                  «        | j
                  j                  «       | _        | j                  j                  «        y)zRestore analyzer state.N)r;  rð  rC  r8  r:  r>  r=  rA  rk  s    rf  r  zSemanticAnalyzer.leave_classè  sj   € à×Ñ×ÑÔØ�‰×ÑÔØ�‰�‰ÔØ×Ñ×ÑÔØ—_‘_×(Ñ(Ó*ˆŒ
Ø×Ñ×ÑÕ rh  c                óž  — |j                  | «       | j                  ||«       t        |t        «      rN|j                  t
        v r;|j                  j                  rd|j                  _        y | j                  d|«       y y t        |t        «      r<t        |j                  t        «      r!| j                  |«      |j                  _        y y y )NTz9@runtime_checkable can only be used with protocol classes)r³  r—  r�  rs   r†  r0   r§  rM  rn  r¼  r>   r½  rÂ  rÔ   r  r  )re  r  r&  s      rf  ro  z(SemanticAnalyzer.analyze_class_decoratorñ  s©   € Ø×Ñ˜ÔØ×+Ñ+¨D°)Ô<Ü�i¤Ô)Ø×!Ñ!Ô%;Ñ;Ø—9‘9×(Ò(Ø15�D—I‘IÕ.à—I‘IÐYÐ[_Õ`ð	 <ô
 ˜	¤8Ô,Ô1CØ×ÑÔ7ô2
ð 26×1TÑ1TÐU^Ó1_ˆD�I‰IÕ.ð2
Ð,rh  c                ó~  — |j                   }t        |t        «      rd|_        yt        |t        «      rF|j
                  r| j                  d|«       y|j                  �| j                  d|«       yd|_        yt        |t        «      rd|_
        y| j                  |«      x}�d|j                  › d|› �|_        yy)zvCommon method for applying class decorators.

        Called on regular classes, typeddicts, and namedtuples.
        Tz1@disjoint_base cannot be used with protocol classNz,@disjoint_base cannot be used with TypedDictzclass r»  )r§  r½  r×   rÙ  rÖ   rM  r¼  r”  Úis_disjoint_baserâ   r  r¾  r†  r¼  )re  r  r&  r§  r¼  s        rf  r—  z/SemanticAnalyzer.analyze_class_decorator_commonÿ  s­   € ð
 �y‰yˆÜ˜iÔ)>Ô?Ø ˆD�MÜ 	Ô+HÔIØ×ÒØ—	‘	ÐMÈyÕYØ×$Ñ$Ð0Ø—	‘	ÐHÈ)ÕTà(,�Õ%Ü 	Ô+@ÔAØ&*ˆDÕ#Ø ×/Ñ/°	Ó:Ð:ˆjÐGØ & t§}¡} oÐ5EÀjÀ\ÐRˆD�Oð Hrh  c                óÜ  — g }g }d}d}|j                   �¥|j                   D ]–  }| j                  |j                  |«      }	|	€J ‚t        |	j                  t
        «      sJ ‚t        |	j                  t        «      r|r| j                  d|«       Œnd}|j                  |j                  |	j                  f«       Œ˜ t        |«      D �]@  \  }
}t        |t        «      rd|_        | j                  |«       	 | j                  |«      }| j                  ||«      }|�w|d   }||d   z  }|rF|j                   r(|r| j                  d|«       n%| j                  d|«       n| j                  d|«       |j                  |
«       |j!                  |«       t        |t"        «      sŒÝ| j%                  |j                  |«      }|€Œü|j                  €�Œ
|j                  j&                  t(        v s�Œ(|
|vs�Œ.|j                  |
«       d}�ŒC | j+                  ||«      }|rçt-        t/        |«      «      t-        |«      k  r|j                   s| j                  d	|«       t/        |«      }t1        |«      j3                  t1        |«      «      s}|j                   rNt5        t1        |«      t1        |«      z
  «      }| j6                  j9                  |D �cg c]  }|d   ‘Œ	 c}|«       n| j                  d
|«       t/        ||z   «      }n|}t;        |«      D ]-  }
|j<                  j                  |j>                  |
   «       ||
= Œ/ | jA                  ||«      }||||fS # t        $ r Y �Œ w xY wc c}w )aÛ  Remove extra base classes such as Generic and infer type vars.

        For example, consider this class:

          class Foo(Bar, Generic[T]): ...

        Now we will remove Generic[T] from bases of Foo and infer that the
        type variable 'T' is a type argument of Foo.

        Note that this is performed *before* semantic analysis.

        Returns a tuple:
            (remaining base expressions, type variables, is protocol, type variable expressions).
        Fú.Can only use one type var tuple in a class defTr   r#  z/No arguments expected for "Protocol" base classz$Generic[...] base class is redundantz9Only single Generic[...] or Protocol[...] can be in basesz9Duplicate type variables in Generic[...] or Protocol[...]zMIf Generic[...] or Protocol[...] is present it should list all type variables)!r  Úlookupr”  r�  r¤  r�   rŽ   r¼  r  r®  rz   ÚvalidÚanalyze_type_exprr   r   Ú!analyze_class_typevar_declarationr  rÿ   r{  r†  rÝ   Úget_all_bases_tvarsr’  r  rM  Úissubsetra  rP  r†  rÍ  r\  r[  Útvar_defs_from_tvars)re  r  r[  r'  r!  rt  rM  Úhas_type_var_tuplerŠ  r¤  r£  r¨  rV  rU  Útvarsr}  Ú	all_tvarsÚ
undeclaredr2  rs  s                       rf  r^  z8SemanticAnalyzer.clean_up_bases_and_infer_type_variables	  s4  € ð"  ˆØ*,ˆØˆØ"ÐØ�>‰>Ð%Ø—^‘^ò 	;�Ø—{‘{ 1§6¡6¨7Ó3�ØÐ'Ð'Ð'Ü! $§)¡)¬_Ô=Ð=Ð=Ü˜dŸi™iÔ)9Ô:Ù)ØŸ	™	Ð"RÐT[Ô\Ø Ø)-Ð&Ø×%Ñ% q§v¡v¨t¯y©yÐ&9Õ:ð	;ô & oÓ6ó  	+‰LˆAˆyÜ˜)¤XÔ.Ø"&�	”Ø×"Ñ" 9Ô-ðØ×3Ñ3°IÓ>�ð ×;Ñ;¸DÐBTÓUˆFØÐ!Ø˜q™	�Ø˜v a™yÑ(�Ù!Ø—~’~Ù&Ø ŸI™IÐ&WÐY`Õaà ŸI™IÐ&LÈgÕVàŸ	™	ØWÐY`ôð —‘˜qÔ!Ø×%Ñ% eÔ,Ü˜$¤Õ,Ø×+Ñ+¨D¯I©I°tÓ<�Ø‘? s§x¡xÒ';Ø—x‘x×(Ñ(¬NÓ:¸qÈÓ?OàŸ™ qÔ)Ø&*šðA 	+ðD ×,Ñ,¨_¸gÓFˆ	ÙÜ”;˜~Ó.Ó/´#°nÓ2EÒEÈdÏnÊnØ—	‘	ÐUÐW^Ô_Ü(¨Ó8ˆNÜ�y“>×*Ñ*¬3¨~Ó+>Ô?Ø—>’>Ü!'¬¨I«¼¸^Ó9LÑ(LÓ!M�JØ—H‘H×?Ñ?Ø)3Ö4 2˜˜A›Ò4°gõð —I‘Ið=àôô "-¨^¸iÑ-GÓ!H‘à&ˆNÜ˜'Ó"ò 	#ˆAð ×(Ñ(×/Ñ/°×0DÑ0DÀQÑ0GÔHØ Ñ"ð	#ð ×-Ñ-¨n¸gÓFˆ	Ø 	¨;¸ÐFÐFøôo (ò âðüòH 5s   Ã5MËM)Í	M&Í%M&c                ó–  — t        |t        «      sy|}| j                  |j                  |«      }|�|j                  €y|j                  j
                  dk(  s(|j                  j
                  t        v rÖ|j                  rÊ|j                  j
                  dk7  }g }|j                  D ]œ  }| j                  «       }| j                  |«      }	|	r<t        |	d   t        «      r|r| j                  d|«       ŒNd}|j                  |	«       Œb| j                  |«      rŒt| j                  d|j                  j                  z  |«       Œž ||fS y)züAnalyze type variables declared using Generic[...] or Protocol[...].

        Args:
            base: Non-analyzed base class

        Return None if the base class does not declare type variables. Otherwise,
        return the type variables.
        Nztyping.Genericr#  r¶  Tz&Free type variable expected in %s[...])r�  rÿ   r{  r”  r¤  r†  rÝ   r|  rö  Úanalyze_unbound_tvarrŽ   r¼  r  rú  )
re  rV  r¾  Úunboundr}  Úis_protor¿  r(  rû  r  s
             rf  rº  z2SemanticAnalyzer.analyze_class_typevar_declarationt	  s*  € ô ˜$¤Ô,ØØˆØ×#Ñ# G§L¡L°'Ó:ˆØˆ;˜#Ÿ(™(Ð*Øà�H‰H×ÑÐ!1Ò1Ø�x‰x× Ñ ¤NÑ2Ø—	’	à—x‘x×(Ñ(Ð,<Ñ<ˆHØ%'ˆEØ—|‘|ò ^�Ø×0Ñ0Ó2�Ø×0Ñ0°Ó5�ÙÜ! $ q¡'Ô+;Ô<Ù-Ø ŸI™IÐ&VÐX\Ô]Ø$Ø-1Ð*Ø—L‘L Õ&Ø×2Ñ2°3Õ7Ø—I‘IÐFÈÏÉÏÉÑVÐX\Õ]ð^ð ˜(�?Ð"Ørh  c                ó´  — t        |t        «      r7t        |j                  t        «      r| j	                  |j                  d¬«      S t        |t        «      r�| j                  |j                  |«      }|rR|j                  t        v r@|j                  sy |j                  d   }t        |t        «      r| j	                  |d¬«      S y | j	                  |«      S y )NT)Úis_unpackedr   )
r�  r  rl  rÿ   Úanalyze_unbound_tvar_implr{  r”  r†  ræ   r|  )re  râ  r}  Úinner_ts       rf  rÃ  z%SemanticAnalyzer.analyze_unbound_tvar›	  s°   € Ü�aœÔ$¬°A·F±F¼KÔ)HØ×1Ñ1°!·&±&ÀdÐ1ÓKÐKÜ�aœÔ%Ø×'Ñ'¨¯©°Ó2ˆCÙ�s—|‘|Ô'8Ñ8Ø—v’vàØŸ&™& ™)�Ü˜g¤{Ô3Ø×9Ñ9¸'ÈtÐ9ÓTÐTØØ×1Ñ1°!Ó4Ð4Ørh  c                óV  — |r	|rJ d«       ‚| j                  |j                  |«      }|r*t        |j                  t        «      r| j                  «        |sf|rdt        |j                  t        «      rJ|j                  r&| j                  j                  |j                  «      sy |j                  |j                  fS |s|rf|rdt        |j                  t        «      rJ|j                  r&| j                  j                  |j                  «      sy |j                  |j                  fS |�t        |j                  t        «      r|ry |j                  r&| j                  j                  |j                  «      sy t        |j                  t        «      sJ ‚|j                  |j                  fS )NzMutually exclusive conditions)r{  r”  r�  r¤  rp   Úrecord_incomplete_refrn   r†  r?  Úallow_bindingrŽ   rŒ   )re  râ  rÇ  Úis_typealias_paramr}  s        rf  rÈ  z*SemanticAnalyzer.analyze_unbound_tvar_impl«	  s1  € ñ Ñ&8ÐYÐ:YÓYÐ8Ø×#Ñ# A§F¡F¨AÓ.ˆÙ”:˜cŸh™h¬Ô8Ø×&Ñ&Ô(Ù™s¤z°#·(±(¼MÔ'JØ�|Š| D§O¡O×$AÑ$AÀ#Ç,Á,Ô$OàØ—6‘6˜3Ÿ8™8Ð#Ð#ÙÑ-±3¼:ÀcÇhÁhÔP`Ô;aØ�|Š| D§O¡O×$AÑ$AÀ#Ç,Á,Ô$OàØ—6‘6˜3Ÿ8™8Ð#Ð#Øˆ;œj¨¯©´;Ô?Á;ØØ�\Š\ $§/¡/×"?Ñ"?ÀÇÁÔ"Màä˜cŸh™h¬Ô4Ð4Ð4Ø—6‘6˜3Ÿ8™8Ð#Ð#rh  c                óh   — t        | | j                  «      }|j                  |«       |j                  S rj  )rÂ   r?  r³  Útype_var_likes)re  râ  Úvisitors      rf  Úfind_type_var_likesz$SemanticAnalyzer.find_type_var_likesÅ	  s*   € Ü$ T¨4¯?©?Ó;ˆØ	�‰�ÔØ×%Ñ%Ð%rh  c                óÒ   — g }t        |«      D ]>  \  }}||vsŒ	 | j                  |«      }| j                  |«      }|j	                  |«       Œ@ t        |«      S # t        $ r Y ŒWw xY w)z-Return all type variable references in bases.)r®  r   r   rÑ  r  r  )re  r[  r!  r¿  r£  r¨  rV  Ú
base_tvarss           rf  r»  z$SemanticAnalyzer.get_all_bases_tvarsÊ	  s}   € ð "$ˆÜ% oÓ6ò 	)‰LˆAˆyØ˜ÒðØ×7Ñ7¸	ÓB�Dð "×5Ñ5°dÓ;�
Ø—‘˜ZÕ(ð	)ô ˜5Ó!Ð!øô ,ò áðús   šAÁ	A&Á%A&c                óª  — g }d }|D �]H  \  }}|j                   sT| j                  j                  |j                  «      s/| j	                  t
        j                  j                  |«      |«       | j                  j                  ||| j                  |«      }|j                  j                  t        | |j                  |«      «      |_	        |�V|j                  «       sF| j                  j                  |j                  ||«       t!        t"        j$                  «      |_	        n|j                  «       r|j                  }|j'                  |«       �ŒK |S rj  )r?  r?  rÌ  r†  r¼  r   Ú#TYPE_VAR_REDECLARED_IN_NESTED_CLASSÚformatÚbind_newr”  r³  rÄ   r”  r  rP  Útvar_without_default_typerç   rø   r]  r  )re  r¿  r'  rs  Úlast_tvar_name_with_defaultr”  Ú	tvar_exprÚtvar_defs           rf  r½  z%SemanticAnalyzer.tvar_defs_from_tvarsÚ	  s*  € ð ,.ˆ	Ø26Ð#Ø$ó 	'‰OˆD�)ð ×)Ò)°$·/±/×2OÑ2OØ×"Ñ"ô3ð —	‘	Ü$×HÑH×OÑOÐPTÓUÐW^ôð —‘×/Ñ/°°iÀÇÁÈGÓTˆHð  (×/Ñ/×6Ñ6Ü(¨¨y¯~©~¸wÓGó ˆHÔð +Ð6¸x×?SÑ?SÔ?UØ—‘×2Ñ2Ø—M‘MÐ#>Àôô $+¬9×+?Ñ+?Ó#@�Õ Ø×%Ñ%Ô'Ø.6¯m©mÐ+Ø×Ñ˜XÖ&ð-	'ð. Ðrh  c                ó`  — i }|D ]A  }	 | j                  |«      }| j                  |«      D ]  \  }}|j                  |||f«       Œ ŒC g }|j	                  «       D ]A  \  }\  }}	| j
                  j                  ||| j                  |	«      }
|j                  |
«       ŒC |S # t        $ r Y Œ§w xY w)a7  Return all type variable references in item type expressions.

        This is a helper for generic TypedDicts and NamedTuples. Essentially it is
        a simplified version of the logic we use for ClassDef bases. We duplicate
        some amount of code, because it is hard to refactor common pieces.
        )	r   r   rÑ  Ú
setdefaultrÔ  r?  r×  r¼  r  )re  Ú
type_exprsr¿  r¨  rV  r”  r÷  rs  rÚ  r'  rÛ  s              rf  Úget_and_bind_all_tvarsz'SemanticAnalyzer.get_and_bind_all_tvarsø	  sÒ   € ð @BˆØ#ò 	:ˆIðØ×3Ñ3°IÓ>�ð #×6Ñ6°tÓ<ò :‘
��dØ× Ñ  ¨¨iÐ'8Õ9ñ:ð	:ð ˆ	Ø*/¯+©+«-ò 	'Ñ&ˆDÑ&�9˜gØ—‘×/Ñ/°°iÀÇÁÈGÓTˆHØ×Ñ˜XÕ&ð	'ð Ðøô (ò áðús   ‰B!Â!	B-Â,B-c                ó~   — | j                  «       s| j                  |«      S t        ||«      }| j                  › d|› �S ©Nr�  )Úis_nested_within_func_scoperÝ  r•   r  )re  r”  r¸  s      rf  Úclass_fullnamezSemanticAnalyzer.class_fullname
  sA   € Ø×/Ñ/Ô1Ø×&Ñ& tÓ,Ð,Ü  dÓ+ˆØ—/‘/Ð" ! D 6Ð*Ð*rh  c                óv  — |j                   sN| j                  |j                  |j                  «      |_        |xs | j                  |«      }||_         ||_        | j                  |j                  |j                   |«       | j                  «       r(| j                  |j                  ||j                   «       yy)zÝPrepare for the analysis of a class definition.

        Create an empty TypeInfo and store it in a symbol table, or if the 'info'
        argument is provided, store it instead (used for magic type definitions).
        N)
r§  rã  r”  r¸  r†  Úmake_empty_type_infor  rß  râ  Úadd_global_symbol©re  r  r§  s      rf  rh  z"SemanticAnalyzer.prepare_class_def
  s�   € ð �yŠyØ ×/Ñ/°·	±	¸4¿9¹9ÓEˆDŒMØÒ:˜4×4Ñ4°TÓ:ˆDØˆDŒIØˆDŒIØ�‰˜Ÿ	™	 4§9¡9¨dÔ3Ø×+Ñ+Ô-Ø×"Ñ" 4§9¡9¨d°D·I±IÕ>ð .rh  c                ó6  — | j                  «       rX| j                  dk(  rI|j                  t        v r7| j                  |j                     j
                  }t        |t        «      sJ ‚|S t        t        «       || j                  «      }|j                  |«       |S r�  )
Úis_module_scoper  r”  r!  r5  r¤  r�  rŠ   r   Úset_linerç  s      rf  rå  z%SemanticAnalyzer.make_empty_type_info#
  s   € à× Ñ Ô"Ø—‘ :Ò-Ø—	‘	Ô1Ñ1ð
 —<‘< §	¡	Ñ*×/Ñ/ˆDÜ˜d¤HÔ-Ð-Ð-ð ˆô œK›M¨4°·±ÓAˆDØ�M‰M˜$ÔØˆrh  c                ó  — t        |t        «      r|j                  S t        |t        «      rt	        |«      S t        |t
        «      r| j                  |j                  «      S t        |t        «      r| j                  |j                  «      S y)zQTry finding a short simplified textual representation of a base class expression.N)
r�  rg   r”  rd   r–   r\   Úget_name_repr_of_exprrV  r>   rÂ  ©re  r÷  s     rf  rì  z&SemanticAnalyzer.get_name_repr_of_expr3
  sl   € ä�dœHÔ%Ø—9‘9ÐÜ�dœJÔ'Ü+¨DÓ1Ð1Ü�dœIÔ&Ø×-Ñ-¨d¯i©iÓ8Ð8Ü�dœHÔ%Ø×-Ñ-¨d¯k©kÓ:Ð:Ørh  c           
     óF  — d}g }t        |«      D ]·  \  }}t        |t        «      r|j                  t        t
        z   v sFt        |t        «      r7t        |j                  t        «      r|j                  j                  t
        v rŒv	 | j                  |ddt        ||«      ¬«      }|€ yt        |«      }|j                  ||f«       Œ¹ ||fS # t        $ rI | j                  |«      }t        |t        «      rd}	nd}	|r	|	d|› d�z  }	| j                  |	|«       d}Y �Œw xY w)	a#  Analyze base class types.

        Return None if some definition was incomplete. Otherwise, return a tuple
        with these items:

         * List of (analyzed type, original expression) tuples
         * Boolean indicating whether one of the bases had a semantic analysis error
        FT)r7  Úallow_type_anyÚunique_namezUnsupported dynamic base classúInvalid base classú "r[  N)r®  r�  rs   r†  rå   rà   r>   rÂ  Úexpr_to_analyzed_typer˜   r   rì  r¼  r  r  )
re  Úcls_namer[  Úis_errorrr  r£  r¨  rV  r”  rP  s
             rf  ra  z%SemanticAnalyzer.analyze_base_classes?
  s7  € ð ˆØˆÜ% oÓ6ò %	,‰LˆAˆyä˜9¤gÔ.Ø×&Ñ&Ô*@Ä<Ñ*OÑOä˜9¤hÔ/Ü˜y×/Ñ/´Ô9Ø×$Ñ$×-Ñ-´Ñ=ð ðØ×1Ñ1ØØ&*Ø#'Ü +¨H°aÓ 8ð	 2ó �ð" ˆ|ÙÜ" 4Ó(ˆDØ�L‰L˜$ 	Ð*Õ+ðK%	,ðL �hˆÐøô (ò 
Ø×1Ñ1°)Ó<�Ü˜i¬Ô2Ø:‘Cà.�CÙØ˜R ˜v Q˜<Ñ'�CØ—	‘	˜#˜yÔ)Ø�Úð
ús   ÂCÃAD ÄD c                óN  — g }|j                   }|D �]å  \  }}t        |t        «      r%| j                  ||«      }|j	                  |«       �nt        |t
        «      r:|j                  j                  r| j                  d|«       |j	                  |«       nÌt        |t        «      rY| j                  j                  r;t        |t        t        f«      rd|j                  › d�}nd}| j                  ||«       d|_        nct        |t         «      r|j	                  |j"                  «       n7d}| j%                  |«      }	|	r	|d|	› d�z  }| j                  ||«       d|_        | j                  j&                  rPt)        |«      rEt        |t        t        f«      rd	|j                  › �}
nd
}
| j*                  j-                  |
||«       t/        || j                  | j0                  | j*                  |¬«       �Œè |s.|j2                  dk7  r|j	                  | j5                  «       «       ||_        | j9                  |«      s| j;                  |j                   «       y| j=                  |«      s| j?                  |j                   «       | jA                  || j4                  «       y)a
  Set up base classes.

        This computes several attributes on the corresponding TypeInfo defn.info
        related to the base classes: defn.info.bases, defn.info.mro, and
        miscellaneous others (at least tuple_type, fallback_to_any, and is_enum.)
        zCannot subclass "NewType"zClass cannot subclass "z" (has type "Any")z)Class cannot subclass value of type "Any"Trñ  rò  r[  z
Base type z	Base typerO  rÐ  N)!r§  r�  rô   Úconfigure_tuple_base_classr  rê   rl  Ú
is_newtyper¼  rç   r1  Údisallow_subclassing_anyrg   rd   r”  ri  r÷   rŠ  rì  Údisallow_any_unimportedrÌ   rP  Úunimported_type_becomes_anyrÇ   rr  r†  rB  rr  Úverify_base_classesÚset_dummy_mroÚverify_duplicate_base_classesÚset_any_mroÚcalculate_class_mro)re  r  rr  rv  r§  rV  r¨  Úactual_baserP  r”  Úprefixs              rf  rl  z'SemanticAnalyzer.configure_base_classest
  s4  € ð &(ˆ
Ø�y‰yˆà$ó !	‰OˆD�)Ü˜$¤	Ô*Ø"×=Ñ=¸dÀDÓI�Ø×!Ñ! +Ö.Ü˜D¤(Ô+Ø—9‘9×'Ò'Ø—I‘IÐ9¸4Ô@Ø×!Ñ! $Õ'Ü˜D¤'Ô*Ø—<‘<×8Ò8Ü! )¬h¼
Ð-CÔDØ 7¸	¿¹Ð7GÐGYÐZ™àI˜Ø—I‘I˜c 9Ô-Ø'+�Õ$Ü˜D¤-Ô0Ø×!Ñ! $§-¡-Õ0à*�Ø×1Ñ1°)Ó<�ÙØ˜R ˜v Q˜<Ñ'�CØ—	‘	˜#˜yÔ)Ø'+�Ô$Ø�|‰|×3Ò3Ô8TÐUYÔ8ZÜ˜i¬(´JÐ)?Ô@Ø)¨)¯.©.Ð)9Ð:‘Fà(�FØ—‘×4Ñ4°V¸TÀ9ÔMÜ"Ø�d—l‘l D×$>Ñ$>ÀÇÁÐR[÷ð?!	ñH ˜dŸm™mÐ/@Ò@Ø×Ñ˜d×.Ñ.Ó0Ô1àˆŒ
ð ×'Ñ'¨Ô-Ø×Ñ˜tŸy™yÔ)ØØ×1Ñ1°$Ô7ð ×Ñ˜TŸY™YÔ'Ø× Ñ   t×'7Ñ'7Õ8rh  c                óò  ‡— |j                   }|j                  r=|j                  ‰k7  r.t        |j                  «      s| j                  d|«       d|_        t        ‰«      r"| j                  d d|‰|j                  k7  ¬«       |j                  ‰«       | j                  |«       ‰j                  j                  j                  dk(  r$t        ‰«      s| j                  t        ˆfd„«       ‰j                  S )Nz3Class has two incompatible bases derived from tupleTz
tuple baserŽ  r8  c                 ó   •— t        ‰ «      S rj  )r¹   )rV  s   €rf  ú<lambda>z=SemanticAnalyzer.configure_tuple_base_class.<locals>.<lambda>Å
  s   ø€ Ô<TÐUYÓ<Z€ rh  )r§  r›  r»   r¼  Úhas_incompatible_baseclassr•  Úupdate_tuple_typerf  r‹  rl  r†  Úschedule_patchr·   )re  r  rV  r§  s     ` rf  r÷  z+SemanticAnalyzer.configure_tuple_base_class³
  sÐ   ø€ Ø�y‰yˆð �?Š?˜tŸ™°$Ò6¼ÈtÏÉÔ?_Ø�I‰IÐKÈTÔRØ.2ˆDÔ+Ü˜4Ô Ø×$Ñ$Ø�l D¸ÀÇÁÑ9Pð %ô ð 	×Ñ˜tÔ$Ø×"Ñ" 4Ô(à× Ñ ×%Ñ%×.Ñ.Ð2BÒBÌ?Ð[_ÔK`ð ×ÑÔ 2Ó4ZÔ[à×$Ñ$Ð$rh  c                óT   — || j                  «       j                  g|_        d|_        y rw  )rB  rl  r‘  Úbad_mror—  s     rf  rý  zSemanticAnalyzer.set_dummy_mroÉ
  s$   € à˜$×*Ñ*Ó,×1Ñ1Ð2ˆŒØˆ�rh  c                óT   — d|_         || j                  «       j                  g|_        y rw  )ri  rB  rl  r‘  r—  s     rf  rÿ  zSemanticAnalyzer.set_any_mroÎ
  s%   € à#ˆÔØ˜$×*Ñ*Ó,×1Ñ1Ð2ˆ�rh  c                óf  — 	 t        |j                  |«       |j                  rD| j                  j                  |j                  «      }|r |t        |t        «       | «      «       yyy# t        $ r> | j                  d|j                  › d�|«       | j                  |j                  «       Y Œ—w xY w)z�Calculate method resolution order for a class.

        `obj_type` exists just to fill in empty base class list in case of an error.
        z?Cannot determine consistent method resolution order (MRO) for "r[  N)r    r§  r   r¼  r”  rý  r†  rH  Úget_customize_class_mro_hookr¦   rO   )re  r  Úobj_typer¦  s       rf  r   z$SemanticAnalyzer.calculate_class_mroÓ
  s    € ð	*Ü˜$Ÿ)™) XÔ.ð �=Š=Ø—;‘;×;Ñ;¸D¿M¹MÓJˆDÙÙ”_ T¬>Ó+;¸TÓBÕCð ð øô ò 	*Ø�I‰IØQÐRV×R[ÑR[ÐQ\Ð\]Ð^Øôð ×Ñ˜tŸy™yÖ)ð	*ús   ‚A) Á)AB0Â/B0c                óâ  — d}t        |j                  «      dk(  r¹|j                  d   }t        |t        «      ršt        |j                  t
        «      r€| j                  |«       |j                  j                  dv rWt        |j                  «      dk\  r?t        d„ |j                  D «       «      r#|j                  d   }|j                  dd |_        d}|j                  D ]£  }t        |t        «      sŒt        |j                  t
        «      sŒ/|j                  j                  | «       |j                  j                  dk(  sŒdt        |j                  «      dk(  sŒ}|j                  d   t        k(  sŒ”|j                  d   } n |j                  ||hdhz
  }t        |«      dk(  ryt        |«      dkD  r#| j                  d|t         j"                  ¬«       y|j%                  «       |_        y)	a  Lookup for special metaclass declarations, and update defn fields accordingly.

        * six.with_metaclass(M, B1, B2, ...)
        * @six.add_metaclass(M)
        * future.utils.with_metaclass(M, B1, B2, ...)
        * past.utils.with_metaclass(M, B1, B2, ...)
        Nr#  r   >   úsix.with_metaclassúpast.utils.with_metaclassúfuture.utils.with_metaclassc              3  ó.   K  — | ]  }|t         k(  –— Œ y ­wrj  )r"   ©r¢  rA  s     rf  r¥  zQSemanticAnalyzer.infer_metaclass_and_bases_from_compat_helpers.<locals>.<genexpr>   s   è ø€ ÒL°˜D¤G�OÑLùs   ‚zsix.add_metaclasszMultiple metaclass definitionsr4  )r’  r[  r�  r>   rÂ  rs   r¹  r†  r|  rÔ  rB  r¡  r³  r"   rc  r¼  rC  Ú	METACLASSrð  )re  r  Úwith_meta_exprr¨  Úadd_meta_exprÚdec_exprÚmetass          rf  r]  z>SemanticAnalyzer.infer_metaclass_and_bases_from_compat_helpersé
  s™  € ð -1ˆÜˆt×#Ñ#Ó$¨Ò)Ø×,Ñ,¨QÑ/ˆIÜ˜)¤XÔ.´:¸i×>NÑ>NÔPWÔ3XØ×&Ñ& yÔ1à×$Ñ$×-Ñ-ðñô ˜IŸN™NÓ+¨qÒ0ÜÑL¸	×8KÑ8KÔLÔLà%.§^¡^°AÑ%6�NØ+4¯>©>¸!¸"Ð+=�DÔ(ð ,0ˆØŸ™ò 		ˆHÜ˜(¤HÕ-´*¸X¿_¹_ÌgÕ2VØ—‘×&Ñ& tÔ,à—O‘O×,Ñ,Ð0CÓCÜ˜HŸM™MÓ*¨aÓ/Ø ×*Ñ*¨1Ñ-´Ó8à$,§M¡M°!Ñ$4�MÙð		ð —‘ °Ð?À4À&ÑHˆÜˆu‹:˜Š?ØÜˆu‹:˜Š>Ø�I‰IÐ6¸Ä5Ç?Á?ˆIÔSØØŸ™›ˆ�rh  c                ó¬   — |j                   }d}|j                  D ]5  }|j                  }| j                  ||«      sŒ"| j	                  d|«       d}Œ7 | S )NFzCycle in inheritance hierarchyT)r§  rr  rl  Úis_base_classr¼  )re  r  r§  ÚcyclerV  Úbaseinfos         rf  rü  z$SemanticAnalyzer.verify_base_classes  sZ   € Ø�y‰yˆØˆØ—J‘Jò 	ˆDØ—y‘yˆHØ×!Ñ! $¨Õ1Ø—	‘	Ð:¸DÔAØ‘ð		ð
 ˆyÐrh  c                ó’   — t        |j                  j                  «       «      }|r | j                  d|j                  › d�|«       | S )NzDuplicate base class "r[  )Úfind_duplicater§  Údirect_base_classesr¼  r”  )re  r  Údups      rf  rþ  z.SemanticAnalyzer.verify_duplicate_base_classes$  s?   € Ü˜TŸY™Y×:Ñ:Ó<Ó=ˆÙØ�I‰IÐ.¨s¯x©x¨j¸Ð:¸DÔAØˆwˆrh  c                óò   — |g}|h}|ro|j                  «       }||k(  ry|j                  D ]G  }|j                  |vsŒ|j                  |j                  «       |j	                  |j                  «       ŒI |rŒoy)z9Determine if t is a base class of s (but do not use mro).TF)rð  rr  rl  r  Úadd)re  râ  ÚsÚworklistÚvisitedÚnxtrV  s          rf  r  zSemanticAnalyzer.is_base_class*  ss   € ð �3ˆØ�#ˆÙØ—,‘,“.ˆCØ�aŠxØØŸ	™	ò +�Ø—9‘9 GÒ+Ø—O‘O D§I¡IÔ.Ø—K‘K §	¡	Õ*ð+ò	 ð rh  c                ó°  — d}|�rMd}t        |t        «      r|j                  }nt        |t        «      rt	        |«      }|€'| j                  d|› d�|t        j                  ¬«       y| j                  ||«      }|€yt        |j                  t        «      r~t        t        |j                  j                  «      t        «      rQ| j                  j                  r:| j                  d|j                  j                  › d�|t        j                  ¬«       yt        |j                  t         «      ry|j                  }t        |j                  t"        «      rg|j                  j$                  sQ|j                  j&                  s;t        |j                  j(                  «      }t        |t*        «      r|j                  }t        |t,        «      r|j.                  �'| j                  d	|› d�|t        j                  ¬«       y
|j1                  «       s#| j                  d|t        j                  ¬«       y
t3        |«      }t        |t*        «      sJ ‚|}|ddfS )až  Get declared metaclass from metaclass expression.

        Returns a tuple of three values:
          * A metaclass instance or None
          * A boolean indicating whether we should defer
          * A boolean indicating whether we should set metaclass Any fallback
            (either for Any metaclass or invalid/dynamic metaclass).

        The two boolean flags can only be True if instance is None.
        Nz%Dynamic metaclass not supported for "r[  r4  ©NFTzClass cannot use "z!" as a metaclass (has type "Any")r4  zInvalid metaclass ")NFFz8Metaclasses not inheriting from "type" are not supportedF)r�  rg   r”  rd   r–   r¼  rC  r  r{  r¤  r�   r  rl  rç   r1  rù  rp   r   r}  rˆ  rü  rê   rŠ   r›  Úis_metaclassr  )	re  r”  Úmetaclass_exprrx  r§  r}  Úmetaclass_inforü  rã  s	            rf  rb  z'SemanticAnalyzer.get_declared_metaclass9  sö  € ð "ÐÚØ!ˆNÜ˜.¬(Ô3Ø!/×!4Ñ!4‘Ü˜N¬JÔ7Ü!9¸.Ó!I�ØÐ%Ø—	‘	Ø;¸D¸6ÀÐCØ"ÜŸ™ð ô ð
 )Ø×'Ñ'¨¸ÓGˆCØˆ{à(Ü˜#Ÿ(™(¤CÔ(¬Z¼ÈÏÉÏÉÓ8VÔX_Ô-`Ø—<‘<×8Ò8Ø—I‘IØ,¨S¯X©X¯]©]¨OÐ;\Ð]Ø&Ü"Ÿ_™_ð ô ð
 )Ü˜#Ÿ(™(¤OÔ4Ø(ð +.¯(©(ˆNä˜3Ÿ8™8¤YÔ/ØŸ™×7Ò7ØŸ™×,Ò,ä(¨¯©¯©Ó9�Ü˜f¤hÔ/Ø%+§[¡[�Nä˜n¬hÔ7¸>×;TÑ;TÐ;`Ø—	‘	Ø)¨.Ð)9¸Ð;¸^ÔRW×RaÑRað ô ð *Ø!×.Ñ.Ô0Ø—	‘	ØNØ"ÜŸ™ð ô ð
 *Ü  Ó0ˆDÜ˜d¤HÔ-Ð-Ð-Ø!%ÐØ! 5¨%Ð/Ð/rh  c                ó‚  — ||j                   _        |j                   j                  «       |j                   _        t	        d„ |j                   j
                  D «       «      rh|j                   j                  r-|j                   j                  j                  j                  dk(  r%| j                  dg «      }|�||j                   _        |j                   j                  ra|j                   j                  j                  j                  d«      r1d|j                   _
        |j                  r| j                  d|«       y y y y )Nc              3  ó4   K  — | ]  }|j                   –— Œ y ­wrj  )rM  )r¢  r§  s     rf  r¥  z9SemanticAnalyzer.recalculate_metaclass.<locals>.<genexpr>‚  s   è ø€ Ò: Dˆt×ÕÑ:ùrÚ  úbuiltins.typezabc.ABCMetazenum.EnumMetaTzEnum class cannot be generic)r§  rx  Úcalculate_metaclass_typeÚmetaclass_typer­  r‘  rl  r†  rÓ  Úhas_baseÚis_enumr  r¼  )re  r  rx  Úabc_metas       rf  rm  z&SemanticAnalyzer.recalculate_metaclass  sè   € Ø'9ˆ�	‰	Ô$Ø#'§9¡9×#EÑ#EÓ#Gˆ�	‰	Ô ÜÑ:¨D¯I©I¯M©MÔ:Ô:à—I‘I×,Ò,Ø—9‘9×+Ñ+×0Ñ0×9Ñ9¸_ÒLð  ×2Ñ2°=À"ÓE�ØÐ'Ø/7�D—I‘IÔ,Ø�9‰9×#Ò#¨¯	©	×(@Ñ(@×(EÑ(E×(NÑ(NÈÔ(_Ø $ˆD�I‰IÔØ�~Š~Ø—	‘	Ð8¸$Õ?ð ð )`Ð#rh  c                óì  — || _         |j                  D ]Þ  \  }}| j                   xr | j                  j                  }|�|}|}|xs ||k(  }n|j                  d«      d   }|}|}|| j                  v rg| j                  |   }| j                  «       rt        }	n| j                  �t        }	nt        }	t        |	||| ¬«      }
| j                  ||
||| ¬«       ŒÈ| j                  ||||| ¬«       Œà y )Nr�  r   ©r   r  ©r'  r   r  )r'  rî  r   r  )rI  Úidsro  r1  Úimplicit_reexportré  r4  rÓ  r*   rl  r+   r&   r€   Úadd_imported_symbolÚadd_unknown_imported_symbol)re  r£  r‘  Úas_idÚuse_implicit_reexportÚbase_idÚimported_idr   r¤  rA  Úsymbols              rf  Úvisit_importzSemanticAnalyzer.visit_import•  s  € ØˆŒØŸ™ò &	‰IˆB�ð )-×(9Ñ(9Ð$9Ò$\¸d¿l¹l×>\Ñ>\Ð!ØÐ Ø�Ø#�Ø 5Ò D¸¸u¹‘àŸ(™( 3›-¨Ñ*�Ø%�Ø 5�à˜$Ÿ,™,Ñ&Ø—|‘| GÑ,�Ø×%Ñ%Ô'Ü‘DØ—Y‘YÐ*Ü‘Dä�DÜ(Ø˜$¨mÈ}ÐK\ô�ð ×(Ñ(ØØØØ"/Ø&3Ð"3ð )õ ð ×0Ñ0ØØØ 'Ø"/Ø&3Ð"3ð 1õ ñA&	rh  c           
     óÞ  — || _         | j                  |«      }| j                  j                  |«      }|j                  D �]$  \  }}|dz   |z   }| j                  |«       |€d }n«|| j                  k(  r,|| j                  v rt        t        | j                  |   «      }np||cxk(  rdk(  rJn nG|j                  j                  «       D ��	cg c]  \  }}	|	j                  sŒ|‘Œ c}	}| j                  d d  |j                  j                  |«      }d}
|xs |}| j                   xr | j                  j                  }|xs |d uxr ||k(  }|sJ| j                  j                  |«      }|�| j                  «       }t        ||«      }n|| j                   v rd}
|rS|sQd|j                  v rC|dz   |z   }| j#                  |j                  d   ||«      }|r| j%                  ||||| ¬«       �Œ­|rA| j'                  |||||||¬«       |j(                  s�ŒÕ| j+                  ||||| |d¬«       �Œð|r|
s| j+                  ||||| |¬	«       �Œ| j-                  ||||| ¬
«       �Œ' y c c}	}w )Nr�  rÿ  FTÚ__getattr__r6  rO  )r   r  r'  r;  ©r   r  r'  ©rî  r   r  )rI  r  r4  rÛ  r…  Úset_future_import_flagsr  r€   r&   rÔ  r   rS  ro  r1  r9  Úcurrent_symbol_kindrQ  Úcreate_getattr_varrß  Úprocess_imported_symbolr  Úreport_missing_module_attributer;  )re  ÚimpÚ	module_idÚmoduler‘  r<  r†  r¤  r”  r}  Úmissing_submoduler?  r=  r   ÚmodrA  Úgvars                    rf  Úvisit_import_fromz"SemanticAnalyzer.visit_import_from¿  s®  € ØˆŒØ×0Ñ0°Ó5ˆ	Ø—‘×!Ñ! )Ó,ˆØŸ™ó X	‰IˆB�Ø  3‘¨Ñ+ˆHØ×(Ñ(¨Ô2Øˆ~Ø‘Ø˜dŸo™oÒ-°(¸d¿l¹lÑ2Jô '¤t¨T¯\©\¸(Ñ-CÓD‘à˜Ô+ )Õ+ð
 /5¯l©l×.@Ñ.@Ó.B÷+Ù!*  sÀc×FWÓFWšó+�D×$Ñ$¡QÐ'ð —|‘|×'Ñ'¨Ó+�à %ÐØš+ 2ˆKð
 )-×(9Ñ(9Ð$9Ò$\¸d¿l¹l×>\Ñ>\Ð!Ø1ÒX°eÀ4Ð6GÒ6WÈBÐRWÉKˆMñ Ø—l‘l×&Ñ& xÓ0�Ø�?Ø×3Ñ3Ó5�DÜ*¨4°Ó5‘DØ ×!5Ñ!5Ñ5Ø(,Ð%á™d }¸¿¹Ñ'Dð % s™?¨RÑ/�Ø×.Ñ.¨v¯|©|¸MÑ/JÈKÐYaÓb�ÙØ—O‘OØ#ØØØ&3Ø*7Ð&7ð $ô ñ áØ×,Ñ,Ø˜) R¨°hÀÐWZð -ô ð ×%Ô%Ø×8Ñ8Ø!ØØ#Ø&3Ø*7Ð&7Ø #Ø49ð 9ö ñ Ñ 1à×4Ñ4ØØØØ"/Ø&3Ð"3Øð 5ö ð ×0Ñ0ØØØ (Ø"/Ø&3Ð"3ð 1ö ñeX	ùó"+s   ÃI)Ã I)c                óŽ  — | xrL t        |j                  t        «       xs/ || j                  vxs |j	                  | j
                  dz   «       }t        |j                  t        «      rD| j                  r| j                  ||||||¬«       y | j                  ||j                  ||d¬«       | j                  |||||¬«       y )Nr�  rD  T)r   r  rM  r6  )r�  r¤  re   r4  Ú
startswithr  rp   ru  rJ  rø  r:  )	re  r¤  rL  r‘  r?  r†  r   r'  r  s	            rf  rI  z(SemanticAnalyzer.process_imported_symbol  så   € ð *Ð)ò 
ô ˜4Ÿ9™9¤hÓ/Ð/ò >Ø˜tŸ|™|Ð+ò>ð ×&Ñ& t§¡¸Ñ'<Ó=Ð=ð 	ô �d—i‘i¤Ô1Ø×#Ò#Ø×4Ñ4ØØØØ"/Ø"/Ø#ð 5ô ð ð ×$Ñ$ØØ—I‘IØ"/Ø"/Ø%)ð %ô ð 	× Ñ Ø˜˜w°mÐS`ð 	!õ 	
rh  Tc                ó¬  — | j                  |«      r| j                  ||||¬«       y d|› d|› d�}| j                  j                  |«      }	|	rô||	j                  j                  «       v r#|	j                  |   j                  s
d|› d|› d�}nµ| j                  j                  sŸ| j                  j                  | j                  j                  v ss| j                  j                  «       sYt        |	j                  j                  «       «      j                  |h«      }
t!        ||
d¬«      }|rdt#        |d	«      › d
�}||› z  }| j%                  ||t&        j(                  ¬«       |r| j+                  ||d || ¬«       |dk(  rÓd|j-                  «       › �}| j/                  |«      €%|t0        v r| j2                  j5                  ||«       y | j                  j                  d«      }|rl||j                  v r]| j2                  j7                  d|› d�|t&        j(                  ¬«       | j2                  j7                  d|t&        j(                  ¬«       y y y y )Nr6  zModule "z" has no attribute "r[  z(" does not explicitly export attribute "r'  ©r½  z; maybe Úorú?r4  rE  rƒ  r�  r„  z#Use `from typing_extensions import z	` insteadzhSee https://mypy.readthedocs.io/en/stable/runtime_troubles.html#using-new-additions-to-the-typing-module)Úis_incomplete_namespacerø  r4  rÛ  r…  Úkeysr   r1  Úignore_errorsr2  r  rG  Úignored_filesÚprefer_simple_messagesrM  Ú
differencer   r   r¼  rC  ÚATTR_DEFINEDr;  r  r÷  r   rP  Úadd_fixture_noterù  )re  Ú	import_idÚ	source_idr?  r   r  r'  r;  ÚmessagerM  ÚalternativesÚmatchesÚ
suggestionr†  r„  s                  rf  rJ  z0SemanticAnalyzer.report_missing_module_attributeK  sP  € ð ×'Ñ'¨	Ô2ð × Ñ Ø˜W°MÐQ^ð !ô ð Ø˜Y˜KÐ';¸I¸;ÀaÐHˆà—‘×!Ñ! )Ó,ˆÙØ˜FŸL™L×-Ñ-Ó/Ñ/¸¿¹ÀYÑ8O×8]Ò8]à˜y˜kÐ)QÐR[ÐQ\Ð\]Ð^ñ ð —‘×*Ò*Ø×$Ñ$×)Ñ)¨T¯[©[×-FÑ-FÑFØ—;‘;×5Ñ5Ô7ä" 6§<¡<×#4Ñ#4Ó#6Ó7×BÑBÀIÀ;ÓO�Ü& y°,À!ÔD�ÙØ#+¬J°wÀÓ,EÐ+FÀaÐ!H�JØ * Ñ.�GØ�	‰	�'˜7¬×);Ñ);ˆ	Ô<Ù&Ø×,Ñ,ØØØ Ø+Ø"/Ð/ð -ô ð ˜Ò à" 9§?¡?Ó#4Ð"5Ð6ˆHà×3Ñ3°HÓ=ÐEØÔ 7Ñ7ð —‘×)Ñ)¨(°GÕ<à$(§L¡L×$4Ñ$4Ð5HÓ$IÐ!Ù$¨Ð6G×6MÑ6MÑ)MØ—H‘H—M‘MØ=¸i¸[È	ÐRØÜ"×/Ñ/ð "ô ð
 —H‘H—M‘Mð CØÜ"×/Ñ/ð "õ ð *NÐ$ð !rh  c                óL  — |j                   |j                   u ry|j                  t        t        t        fv rît        |j                   t        t        t        t        t        f«      r¿t        |«      }|j                  |_        |j                   |_         t        |«      }|j                  |_        |j                   |_         t        |j                   t        «      rd|_        t        |g|«      }|||fD ]  }|j                  |«       Œ |j                  j!                  |«       yyr)  )r¤  rA  r*   r&   r+   r�  r�   rS   rŠ   rG   r   rg   Úis_alias_rvaluer9   rê  Úassignmentsr  )	re  r?  Úexisting_symbolÚmodule_symbolÚimport_nodeÚlvalueÚrvalueÚ
assignmentr¤  s	            rf  Ú!process_import_over_existing_namez2SemanticAnalyzer.process_import_over_existing_name�  sù   € ð ×Ñ =×#5Ñ#5Ñ5àØ×Ñ¤D¬$´Ð#5Ñ5¼*Ø× Ñ ¤3¬´¼9ÄiÐ"Pô;
ô
 ˜kÓ*ˆFØ)×.Ñ.ˆFŒKØ)×.Ñ.ˆFŒKÜ˜kÓ*ˆFØ'×,Ñ,ˆFŒKØ'×,Ñ,ˆFŒKÜ˜&Ÿ+™+¤yÔ1ð *.�Ô&Ü'¨¨°&Ó9ˆJØ" F¨FÐ2ò +�Ø—‘˜kÕ*ð+à×#Ñ#×*Ñ*¨:Ô6ØØrh  c                ó¼   — t        | j                  |j                  |j                  | j                  j                  «       «      \  }}|s| j                  d|«       |S )Nz*Relative import climbs too many namespaces)r  r  Úrelativer‘  r2  rÕ  r¼  )re  r¤  r`  Úoks       rf  r  z(SemanticAnalyzer.correct_relative_import°  sN   € Ü/Ø�O‰O˜TŸ]™]¨D¯G©G°T×5FÑ5F×5[Ñ5[Ó5]ó
‰ˆ	�2ñ Ø�I‰IÐBÀDÔIØÐrh  c                óÎ  — | j                  |«      }|| j                  v �rE| j                  |   }| j                  |«      r| j                  d|«       |j                  j                  «       D ]õ  \  }}|j                  rŒ|dz   |z   }| j                  |«       |j                  sŒ9|j                  d«      rd|j                  v sŒYt        |j                  t        «      r/| j                  j                  |j                  j                  «       | j!                  |||dd¬«       t        |j                  t"        «      sŒÓ| j$                  sŒà| j'                  ||d dd¬«       Œ÷ y y )	NÚ*r�  rW  rÿ  TFr7  rE  )r  r4  rX  rø  r…  rÔ  Úno_serializerF  r   rS  r�  r¤  re   rF  r#  r†  r:  rp   ru  r;  )re  r£  Úi_idÚmr”  r¤  r†  s          rf  Úvisit_import_allz!SemanticAnalyzer.visit_import_all¸  s<  € Ø×+Ñ+¨AÓ.ˆØ�4—<‘<ÒØ—‘˜TÑ"ˆAØ×+Ñ+¨DÔ1ð ×$Ñ$ S¨!Ô,ØŸg™gŸm™m›oò ‘
��dØ×$Ò$ð Ø #™:¨Ñ,�Ø×,Ñ,¨XÔ6ð ×%Ó%¨t¯©¸sÔ/CÀyÐTU×T[ÑT[ÒG[Ü! $§)¡)¬XÔ6àŸ™×(Ñ(¨¯©×);Ñ);Ô<à×,Ñ,Ø˜d¨A¸TÐQVð -ô ô
 " $§)¡)¬_Õ=À$×BVÓBVØ×8Ñ8Ø  !°ÀTÐY^ð 9õ ñ)ð4 rh  c                óº   — |j                   j                  | «       | j                  «       r| j                  |«      sy | j	                  |j
                  dd¬«       y )NT)Úescape_comprehensionsÚhas_explicit_value)r|  r³  rÓ  Úcheck_valid_comprehensionÚanalyze_lvaluerü  ©re  r$  s     rf  Úvisit_assignment_exprz&SemanticAnalyzer.visit_assignment_exprà  sI   € Ø	�‰�‰�tÔØ×ÑÔØ×1Ñ1°!Ô4ØØ×Ñ˜AŸH™H¸DÐUYÐÕZrh  c                ó  — t        t        | j                  «      «      D ]d  \  }}|t        k7  sŒ|t	        | j
                  «      dz
  k  sŒ,| j
                  d|z
     €&| j                  d|t        j                  dd¬«        y y y)zíCheck that assignment expression is not nested within comprehension at class scope.

        class C:
            [(j := i) for i in [1, 2, 3]]
        is a syntax error that is not enforced by Python parser, but at later steps.
        r#  r®  zKAssignment expression within a comprehension cannot be used in a class bodyT)r5  Úseriousr
  F)	r®  rÍ  r:  r(  r’  r8  r¼  rC  ÚSYNTAX)re  r$  r£  Ú
scope_types       rf  r|  z*SemanticAnalyzer.check_valid_comprehensionç  sŽ   € ô '¤x°×0@Ñ0@Ó'AÓBò 	‰MˆAˆzØÔ0Ó0°Q¼¸T¿[¹[Ó9IÈAÑ9MÓ5MØ—;‘;˜r A™vÑ&Ð.Ø—I‘Ið:àÜ"Ÿ\™\Ø $Ø $ð ô ñ !ØØð	ð rh  c                óp  — || _         | j                  |«      ry | j                  «       }| j                  |«      rO| j                  }d| _        | j                  «       5  |j                  j                  | «       d d d «       || _        na| j                  |«      r5| j                  «       5  |j                  j                  | «       d d d «       n|j                  j                  | «       | j                  |«      s| j                  |j                  «      r-t        |«      D ]  }| j                  |j                  |«       Œ  y | j                  |«      r4| j                  «       5  |j                  j                  | «       d d d «       d}| j                  |«      r
d|_        d}n¯t!        |j                  t"        «      r•| j%                  |«      rd}n�| j'                  |«      rd}nm| j)                  |«      rd}nY| j+                  |«      rd}nE| j-                  |«      rd}n1| j.                  j1                  |«      rd}n| j3                  |«      rd}|r| j5                  |«       y d|_        | j7                  |«      }| j9                  |«      |_        |rd|_        | j=                  |«       |r| j?                  |«       | jA                  |«       | jC                  |«       | jE                  |«       | jG                  |«       | jI                  |«       | jK                  |«       |jL                  s'| jO                  |jP                  |j                  |«       | jS                  |«       | jU                  |«       | jW                  |«       y # 1 sw Y   �ŒxY w# 1 sw Y   �Œ½xY w# 1 sw Y   �Œ,xY wr4  ),rI  Ú"analyze_identity_global_assignmentrö  Úcan_possibly_be_type_formrW  rz  rm  r³  Ú'can_possibly_be_typevarlike_declarationrú  Úshould_wait_rhsÚnames_modified_by_assignmentrø  r”  Úcheck_and_set_up_type_aliasÚis_alias_defr�  r>   Úprocess_typevar_declarationÚprocess_paramspec_declarationÚ process_typevartuple_declarationÚanalyze_namedtuple_assignÚanalyze_typeddict_assignr  Úprocess_newtype_declarationÚanalyze_enum_assignÚrecord_special_form_lvalueÚis_sentinel_declarationÚunwrap_finalÚis_final_defÚanalyze_lvaluesÚsetup_sentinel_varÚcheck_final_implicit_defÚstore_final_statusÚcheck_classvarÚprocess_type_annotationÚanalyze_rvalue_as_type_formÚapply_dynamic_class_hookrl  Úprocess_module_assignmentr“  Úprocess__all__Úprocess__deletable__Úprocess__slots__)re  r$  rû  Úold_basic_type_applicationsr÷  r¥  Úsentinel_definitions          rf  Úvisit_assignment_stmtz&SemanticAnalyzer.visit_assignment_stmtý  s/  € ØˆŒð ×2Ñ2°1Ô5Øà×(Ñ(Ó*ˆð ×)Ñ)¨!Ô,Ø*.×*FÑ*FÐ'Ø+/ˆDÔ(Ø×-Ñ-Ó/ñ &Ø—‘—‘ Ô%÷&à+FˆDÕ(Ø×9Ñ9¸!Ô<à×-Ñ-Ó/ñ &Ø—‘—‘ Ô%÷&ð &ð �H‰H�O‰O˜DÔ!à×$Ñ$ SÔ)¨T×-AÑ-AÀ!Ç(Á(Ô-Kô 5°QÓ7ò 6�Ø×$Ñ$ T§Y¡Y°Õ5ð6àØ×)Ñ)¨!Ô,ð ×-Ñ-Ó/ñ &Ø—‘—‘ Ô%÷&ð ˆà×+Ñ+¨AÔ.Ø!ˆAŒNØ‰LÜ˜Ÿ™¤(Ô+à×/Ñ/°Ô2Ø#‘Ø×3Ñ3°AÔ6Ø#‘Ø×6Ñ6°qÔ9Ø#‘à×/Ñ/°Ô2Ø#‘Ø×.Ñ.¨qÔ1Ø#‘Ø×&Ñ&×BÑBÀ1ÔEØ#‘Ø×)Ñ)¨!Ô,Ø#�áØ×+Ñ+¨AÔ.Øð ˆŒà"×:Ñ:¸1Ó=Ðð ×*Ñ*¨1Ó-ˆŒÙØ!ˆAŒNØ×Ñ˜QÔÙØ×#Ñ# AÔ&Ø×%Ñ% aÔ(Ø×Ñ Ô"Ø×Ñ˜AÔØ×$Ñ$ QÔ'Ø×(Ñ(¨Ô+Ø×%Ñ% aÔ(Ø�vŠvØ×*Ñ*¨1¯9©9°a·h±hÀÔBØ×Ñ˜AÔØ×!Ñ! !Ô$Ø×Ñ˜aÕ ÷S&ñ &ú÷
&ñ &ú÷&ñ &ús$   ÁNÂ+NÅ%N+ÎNÎN(Î+N5c                ó¨  — | j                  «       s|j                  �yt        |j                  «      dk7  st	        |j                  d   t
        «      syt	        |j                  t        «      rFt	        |j                  j                  t        «      xr  |j                  j                  j                  S t	        |j                  t        «      sy|j                  }t	        |j                  t        «      sy|j                  j                  t        vry|j                  r3|j                   d   t"        k7  st	        |j                  d   t$        «      syy)aA  Does this assignment define a PEP 661 sentinel singleton?

        This includes both the original `NAME = Sentinel("NAME")` call and a
        plain alias of an existing sentinel, e.g. `ALIAS = NAME` or
        `ALIAS = mod.NAME`, so that re-exports of a sentinel keep working as
        the same sentinel type.
        Fr#  r   T)râ  rp  r’  r“  r�  rg   rm  rs   r¤  r�   Úis_sentinelr>   rÂ  r†  rß   r|  rB  r"   r|   )re  r$  Úcalls      rf  r”  z(SemanticAnalyzer.is_sentinel_declarationY  sé   € ð ×+Ñ+Ô-°×1BÑ1BÐ1NØÜˆq�y‰y‹>˜QÒ¤j°·±¸1±¼xÔ&HØÜ�a—h‘h¤Ô(Ü˜aŸh™hŸm™m¬SÓ1ÒO°a·h±h·m±m×6OÑ6OÐOÜ˜!Ÿ(™(¤HÔ-ØØ�x‰xˆÜ˜$Ÿ+™+¤wÔ/ØØ�;‰;×ÑÔ':Ñ:ØØ�yŠy˜DŸN™N¨1Ñ-´Ò8Ä
È4Ï9É9ÐUVÉ<ÔY`Ô@aØØrh  c                óò  — |j                   d   }t        |t        «      sJ ‚t        |j                  t        «      sy d|_        |j                  }d|_        t        |j                  t        «      rat        |j                  j                  t        «      sJ ‚t        |j                  j                  j                  «      }t        |t        «      sJ ‚| j                  ||j                  «      }|�||_
        y y )Nr   T)r“  r�  rg   r¤  r�   Úis_special_formr§  rm  rs   r  rl  rë   Úsentinel_type_for_var)re  r$  rl  ræ  r«  s        rf  r˜  z#SemanticAnalyzer.setup_sentinel_varr  s½   € Ø—‘˜1‘ˆÜ˜&¤(Ô+Ð+Ð+Ü˜&Ÿ+™+¤sÔ+ØØ!%ˆÔØ�k‰kˆØˆŒÜ�a—h‘h¤Ô(ä˜aŸh™hŸm™m¬SÔ1Ð1Ð1Ü! !§(¡(§-¡-×"4Ñ"4Ó5ˆCÜ˜c¤;Ô/Ð/Ð/à×,Ñ,¨S°!·(±(Ó;ˆCØˆ?ØˆA�Fð rh  c                ó†  — t        |t        «      sJ ‚|j                  }t        |t        «      sJ ‚| j	                  |j
                  «      }|€y | j                  �%| j                  j                  › d|j                  › �n|j                  }t        t        |j
                  |«      ||j                  |j                  ¬«      S )Nr�  )rŠ  r¸  r¹  )r�  r>   rÂ  rs   rÓ  r†  rl  r”  rë   rò   r¸  r¹  )re  ræ  rm  rÂ  r«  r”  s         rf  r«  z&SemanticAnalyzer.sentinel_type_for_var„  sŸ   € Ü˜&¤(Ô+Ð+Ð+Ø—‘ˆÜ˜&¤'Ô*Ð*Ð*Ø×%Ñ% f§o¡oÓ6ˆØˆ;ØØ15·±Ð1F�$—)‘)—.‘.Ð!  3§8¡8 *Ñ-ÈCÏHÉHˆÜÜ˜#Ÿ,™,¨Ó-¸À&Ç+Á+ÐV\×VcÑVcô
ð 	
rh  c                óÞ  — t        |j                  t        «      rt        |j                  «      dk7  ry|j                  d   }t        |t        «      r#|j                  j
                  |j
                  k7  ry| j                  €| j                  «       ry|j
                  }| j                  ||«      }|€| j                  ry| j                  «        y|j                  €y|| j                  vr| j                  ||j                  |«       t        |j                  t        «      sJ|j                  |fD ]9  }|j                  |_        t        |_        |j                  j"                  |_        Œ; y)zœSpecial case 'X = X' in global scope.

        This allows supporting some important use cases.

        Return true if special casing was applied.
        r#  Fr   T)r�  rm  rg   r’  r“  r”  rl  rÓ  r·  ru  rÖ  r¤  r5  rß  rp   r&   rA  r†  )re  r$  rl  r”  r}  r¤  s         rf  r…  z3SemanticAnalyzer.analyze_identity_global_assignment�  s  € ô ˜!Ÿ(™(¤HÔ-´°Q·Y±Y³À1Ò1DàØ—‘˜1‘ˆÜ˜&¤(Ô+¨q¯x©x¯}©}ÀÇÁÒ/KàØ�9‰9Ð  D×$6Ñ$6Ô$8àà�{‰{ˆØ�k‰k˜$ Ó"ˆØˆ;Ø×#Ò#àà—
‘
”Øà�x‰xÐàØ˜4Ÿ<™<Ñ'à—‘  c§h¡h°Ô2Ü˜cŸh™h¬Ô8ØŸH™H fÐ,ò 6�DØ #§¡�D”IÜ $�D”IØ$'§H¡H×$5Ñ$5�D•Mð6ð rh  c                ó¼  — | j                   ryt        |t        «      rP| j                  |j                  |«      }|r1t        |j
                  t        «      r|j
                  j                  syyt        |t        «      rUt        |«      }|rG| j                  ||d¬«      }|r1t        |j
                  t        «      r|j
                  j                  syyt        |t        «      r5t        |j                  t        «      r| j                  |j                  «      S t        |t        «      r5t        |j                   t        «      r| j                  |j                   «      S y)a‰  Can we already classify this r.h.s. of an assignment or should we wait?

        This returns True if we don't have enough information to decide whether
        an assignment is just a normal variable definition or a special form.
        Always return False if this is a final iteration. This will typically cause
        the lvalue to be classified as a variable plus emit an error.
        FTrx  )ru  r�  rg   r·  r”  r¤  rp   rM  rd   r–   r{  r\   rV  rs   rˆ  r>   rÂ  )re  Úrvr½  Úfnames       rf  rˆ  z SemanticAnalyzer.should_wait_rhs¹  s  € ð ×ÒàÜ�bœ(Ô#Ø—‘˜BŸG™G RÓ(ˆAÙ”Z §¡¬Ô8ÀÇÁ×AXÒAXØð ô ˜œJÔ'Ü,¨RÓ0ˆEÙØ×)Ñ)¨%°ÀTÐ)ÓJ�Ùœ A§F¡F¬OÔ<ÀQÇVÁV×E\ÒE\Øð ô ˜œIÔ&¬:°b·g±g¼wÔ+GØ×'Ñ'¨¯©Ó0Ð0Ü˜œHÔ%¬*°R·Y±YÄÔ*Hð ×'Ñ'¨¯	©	Ó2Ð2Ørh  c                óÞ  — t        |t        «      r| j                  |d¬«      ryt        |t        «      r| j                  |j                  d¬«      ry| j                  |«      ry|r t        |t        «      r|j                  dk(  ryt        |t        «      rW|j                  dk(  rH| j                  ry| j                  |j                  d¬«      r| j                  |j                  d¬«      ryy)z¯Is this a valid r.h.s. for an alias definition?

        Note: this function should be only called for expressions where self.should_wait_rhs()
        returns False.
        T)ÚbareFúbuiltins.Noneú|)Ú
allow_none)r�  rs   Úis_type_refr\   rV  Úis_none_aliasrg   r†  rk   Úopro  Úcan_be_type_aliasÚleftÚright)re  r¯  rµ  s      rf  r¹  z"SemanticAnalyzer.can_be_type_aliasÖ  sÎ   € ô �bœ'Ô" t×'7Ñ'7¸ÀÐ'7Ô'FØÜ�bœ)Ô$¨×)9Ñ)9¸"¿'¹'ÈÐ)9Ô)NØØ×Ñ˜bÔ!ØÙœ* R¬Ô2°r·{±{ÀoÒ7UØÜ�bœ&Ô! b§e¡e¨s¢lØ× Ò ØØ×%Ñ% b§g¡g¸$Ð%Ô?ÀD×DZÑDZØ—‘ Tð E[ô Eð Ørh  c                óÐ  — t        |j                  «      dkD  ryt        |j                  t        «      rVt        |j                  j
                  t        «      r2|j                  j
                  j                  }|t        v xs |t        v S t        |j                  d   t        «      sy|j                  �| j                  |«      syt        |j                  t        t        f«      syy)aÉ  Like can_be_type_alias(), but simpler and doesn't require fully analyzed rvalue.

        Instead, use lvalues/annotations structure to figure out whether this can potentially be
        a type alias definition, NamedTuple, or TypedDict. Another difference from above function
        is that we are only interested IndexExpr, CallExpr and OpExpr rvalues, since only those
        can be potentially recursive (things like `A = A` are never valid).
        r#  Fr   T)r’  r“  r�  rm  r>   rÂ  rs   r†  rà   rå   rg   rp  Ú
is_pep_613r\   rk   ©re  r$  Úrefs      rf  r†  z*SemanticAnalyzer.can_possibly_be_type_formí  s§   € ô ˆq�y‰y‹>˜AÒØÜ�a—h‘h¤Ô)¬j¸¿¹¿¹Ì'Ô.RØ—(‘(—/‘/×*Ñ*ˆCØœ,Ð&ÒG¨#Ô1GÐ*GÐGÜ˜!Ÿ)™) A™,¬Ô1ØØ×ÑÐ(°·±ÀÔ1CØÜ˜!Ÿ(™(¤Y´Ð$7Ô8Øàrh  c                ó^  — t        |j                  «      dk7  st        |j                  d   t        «      syt        |j                  t
        «      r$t        |j                  j                  t        «      sy|j                  j                  }|j                  | «       |j                  t        v S )z1Check if r.h.s. can be a TypeVarLike declaration.r#  r   F)
r’  r“  r�  rg   rm  r>   rÂ  r³  r†  rä   r¾  s      rf  r‡  z8SemanticAnalyzer.can_possibly_be_typevarlike_declaration  sr   € äˆq�y‰y‹>˜QÒ¤j°·±¸1±¼xÔ&HØÜ˜!Ÿ(™(¤HÔ-´ZÀÇÁÇÁÔQYÔ5ZØØ�h‰h�o‰oˆØ�
‰
�4ÔØ�|‰|Ô2Ð2Ð2rh  c                ód  — t        |t        «      syt        |j                  t        «      r!| j	                  d|j
                  › d�|«       y|rh d£}nt        }t        |j                  t        «      s|j
                  |v ryt        |j                  t        «      r|ry|j                  j                   S t        |j                  t        «      r|j                  j
                  t        v S t        |t        «      rP| j                  |j                  |«      }|r1t        |j                  t        «      r|j                  j                   ryyt        |t"        «      rTt%        |«      }|rG| j'                  ||d¬«      }|r1t        |j                  t        «      r|j                  j                   ryy)aò  Does this expression refer to a type?

        This includes:
          * Special forms, like Any or Union
          * Classes (except subscripted enums)
          * Other type aliases
          * PlaceholderNodes with becomes_typeinfo=True (these can be not ready class
            definitions, and not ready aliases).

        If bare is True, this is not a base of an index expression, so some special
        forms are not valid (like a bare Union).

        Note: This method should be only used in context of a type alias definition.
        This method can only return True for RefExprs, to check if C[int] is a valid
        target for type alias call this method on expr.base (i.e. on C in C[int]).
        See also can_be_type_alias().
        FzType variable "z%" is invalid as target for type alias>   útyping.Tupleútyping.Callableú
typing.AnyTrx  )r�  rs   r¤  r�   r¼  r†  rÍ   r   rŠ   r3  r�   rÚ   rg   r·  r”  rp   rM  rd   r–   r{  )re  r¯  r²  Ú
valid_refsr½  r°  s         rf  r¶  zSemanticAnalyzer.is_type_ref  sI  € ô$ ˜"œgÔ&ØÜ�b—g‘gœÔ/Ø�I‰I˜¨¯© }Ð4YÐZÐ\^Ô_Øáò K‰Jä*ˆJä�b—g‘gœyÔ)¨R¯[©[¸JÑ-FØÜ�b—g‘gœxÔ(ÙØà—w‘w—‘Ð&Ð&Ü�b—g‘gœsÔ#Ø—7‘7×#Ñ#¤{Ð2Ð2ä�bœ(Ô#Ø—‘˜BŸG™G RÓ(ˆAÙ”Z §¡¬Ô8¸Q¿V¹V×=TÒ=TØð ô ˜œJÔ'Ü,¨RÓ0ˆEÙð ×)Ñ)¨%°ÀTÐ)ÓJ�Ùœ A§F¡F¬OÔ<ÀÇÁ×AXÒAXØØrh  c                ó.  — t        |t        «      �rt        |j                  t        «      rêt	        |j
                  «      dk(  rÒt        |j
                  d   t        «      rµ| j                  |j                  j                  |j                  «      }| j                  |j
                  d   j                  |j
                  d   «      }|�M|j                  rA|j                  j                  dk(  r(|�&|j                  r|j                  j                  dk(  ryy)z�Is this a r.h.s. for a None alias?

        We special case the assignments like Void = type(None), to allow using
        Void in type annotations.
        r#  r   r/  r³  TF)
r�  r>   rÂ  rg   r’  r|  r{  r”  r¤  r†  )re  r¤  r¨  r(  s       rf  r·  zSemanticAnalyzer.is_none_aliasD  sÉ   € ô �dœHÕ%ä˜4Ÿ;™;¬Ô1Ü˜Ÿ	™	“N aÒ'Ü˜tŸy™y¨™|¬XÔ6à×,Ñ,¨T¯[©[×-=Ñ-=¸t¿{¹{ÓK�Ø×+Ñ+¨D¯I©I°a©L×,=Ñ,=¸t¿y¹yÈ¹|ÓL�àÐ$ØŸ	š	ØŸ	™	×*Ñ*¨oÒ=Ø˜ØŸšØŸ™×)Ñ)¨_Ò<àØrh  c                óì   — |j                   d   }t        |t        «      sJ ‚d|_        | j	                  «       t
        k(  r | j                  |j                  «      |_        | j	                  «       |_	        y)z›Record minimal necessary information about l.h.s. of a special form.

        This exists mostly for compatibility with the old semantic analyzer.
        r   TN)
r“  r�  rg   rª  rG  r&   rÝ  r”  r†  rA  )re  r$  rl  s      rf  r“  z+SemanticAnalyzer.record_special_form_lvalue]  s`   € ð
 —‘˜1‘ˆÜ˜&¤(Ô+Ð+Ð+Ø!%ˆÔØ×#Ñ#Ó%¬Ò-Ø"×1Ñ1°&·+±+Ó>ˆFŒOØ×.Ñ.Ó0ˆ�rh  c                óÖ   — t        |j                  t        «      r5t        |j                  j                  t        «      r| j                  |«      S | j                  j                  |«      S )zCheck if s defines an Enum.)r�  rm  r>   rI  rL   Ú_is_single_name_assignmentr  Úprocess_enum_callr~  s     rf  r’  z$SemanticAnalyzer.analyze_enum_assigni  sM   € ä�a—h‘h¤Ô)¬j¸¿¹×9JÑ9JÌLÔ.Yð ×2Ñ2°1Ó5Ð5Ø×&Ñ&×8Ñ8¸Ó;Ð;rh  c                óf  — t        |j                  t        «      r’t        |j                  j                  t        «      rn|j                  j                  j
                  j                  rDt        |j                  j                  j
                  j                  «      s| j                  |«      S t        |j                  «      dk7  s#t        |j                  d   t        t        f«      sy|j                  d   }t        |t        «      r~t        |j                  t        «      rct        |j                  j                  t        «      r?|j                  j                  j                  }|dk(  s|t         v r| j#                  d|«       y|j$                  }| j'                  |«      }| j)                  | j*                  j-                  |«      «      5  | j.                  j1                  |j                  |«      \  }}}|€
	 ddd«       y||k7  rF| j#                  dj3                  ||«      |j                  t4        j6                  ¬«       	 ddd«       y	|s| j9                  ||d	¬
«       n7| j;                  |j<                  |«       | j?                  |j<                  «       	 ddd«       y	# 1 sw Y   yxY w)z Check if s defines a namedtuple.r#  r   Fzcollections.namedtuplez0NamedTuple type as an attribute is not supportedNz7First argument to namedtuple() should be "{}", not "{}"r4  TrL  ) r�  rm  r>   rI  rf   r§  r›  r»   rÉ  r’  r“  rg   rd   rÂ  rs   r†  rå   r¼  r”  rÝ  r<  r?  r)  r  Úcheck_namedtuplerÖ  rC  Ú
NAME_MATCHrø  re  r  rf  )	re  r$  rl  r†  r”  r3  Úinternal_namer§  rs  s	            rf  r�  z*SemanticAnalyzer.analyze_namedtuple_assignq  s  € ä�a—h‘h¤Ô)¬j¸¿¹×9JÑ9JÌNÔ.[Ø�x‰x× Ñ ×%Ñ%×0Ò0¼Ø—‘×!Ñ!×&Ñ&×1Ñ1ô:ð
 ×6Ñ6°qÓ9Ð9Üˆq�y‰y‹>˜QÒ¤j°·±¸1±ÄÌ*Ð?UÔ&VØØ—‘˜1‘ˆÜ�fœjÔ)Ü˜!Ÿ(™(¤HÔ-´*¸Q¿X¹X¿_¹_ÌgÔ2VØŸ8™8Ÿ?™?×3Ñ3�ØÐ7Ò7¸8ÔG]Ñ;]Ø—I‘IÐPÐRXÔYØØ�{‰{ˆØ×'Ñ'¨Ó-ˆ	Ø×"Ñ" 4§?¡?×#>Ñ#>¸yÓ#IÓJñ 	Ø-1×-FÑ-F×-WÑ-WØ—‘˜$ó.Ñ*ˆM˜4 ð Ð$Ø÷	ð 	ð  Ò$Ø—	‘	ØM×TÑTØ˜móð —H‘HÜ×)Ñ)ð ô ð ÷	ð 	ñ  Ø×$Ñ$ T¨6ÀDÐ$ÕIà×$Ñ$ T§Y¡Y°	Ô:Ø×*Ñ*¨4¯9©9Ô5Ø÷+	÷ 	ñ 	ús   Ç.J'ÈAJ'ÉAJ'Ê'J0c                óü  — t        |j                  t        «      r’t        |j                  j                  t        «      rn|j                  j                  j
                  j                  rDt        |j                  j                  j
                  j                  «      s| j                  |«      S t        |j                  «      dk7  s#t        |j                  d   t        t        f«      sy|j                  d   }|j                  }| j                  |«      }| j                  | j                   j#                  |«      «      5  | j$                  j'                  |j                  |«      \  }}}|s
	 ddd«       yt        |t        «      r| j)                  d|«       	 ddd«       y|s| j+                  ||d¬«       n/|j,                  }| j/                  ||«       | j1                  |«       	 ddd«       y# 1 sw Y   yxY w)z Check if s defines a typed dict.r#  r   FNz,TypedDict type as attribute is not supportedTrL  )r�  rm  r>   rI  rˆ   r§  r”  r»   rÉ  r’  r“  rg   rd   r”  rÝ  r<  r?  r)  r  Úcheck_typeddictr¼  rø  r  re  rf  )	re  r$  rl  r”  r3  Úis_typed_dictr§  rs  r  s	            rf  r�  z)SemanticAnalyzer.analyze_typeddict_assignœ  s”  € ä�a—h‘h¤Ô)¬j¸¿¹×9JÑ9JÌMÔ.ZØ�x‰x× Ñ ×%Ñ%×4Ò4¼_Ø—‘×!Ñ!×&Ñ&×5Ñ5ô>ð
 ×6Ñ6°qÓ9Ð9Üˆq�y‰y‹>˜QÒ¤j°·±¸1±ÄÌ*Ð?UÔ&VØØ—‘˜1‘ˆØ�{‰{ˆØ×'Ñ'¨Ó-ˆ	Ø×"Ñ" 4§?¡?×#>Ñ#>¸yÓ#IÓJñ 	Ø-1×-EÑ-E×-UÑ-UØ—‘˜$ó.Ñ*ˆM˜4 ñ !Ø÷	ð 	ô ˜&¤*Ô-Ø—	‘	ÐHÈ&ÔQØ÷	ð 	ñ Ø×$Ñ$ T¨6ÀDÐ$ÕIà—y‘y�Ø×$Ñ$ T¨9Ô5Ø×*Ñ*¨4Ô0Ø÷!	÷ 	ñ 	ús   Ä?.G2Å6#G2Æ"AG2Ç2G;c                óp   — t        |j                  «      dk(  xr t        |j                  d   t        «      S r·  )r’  r“  r�  rg   r~  s     rf  rÉ  z+SemanticAnalyzer._is_single_name_assignment¼  s)   € Ü�1—9‘9‹~ Ñ"ÒI¤z°!·)±)¸A±,ÄÓ'IÐIrh  c                ó¤  — |j                   d u}| j                  |j                   «      r4t        |j                   t        «      sJ ‚|j                   j                  sd}|j
                  r5t        |j
                  t        «      r|j
                  j                   }nd}nd}|j                  D ]!  }| j                  |||j                  |¬«       Œ# y )NFT)Úexplicit_typerÙ  r{  )rp  Úis_final_typer�  rÿ   r|  rm  r‚   Úno_rhsr“  r}  r–  )re  r$  Úexplicitr{  Úlvals        rf  r—  z SemanticAnalyzer.analyze_lvalues¿  s¸   € à×$Ñ$¨DÐ0ˆØ×Ñ˜a×/Ñ/Ô0ä˜a×/Ñ/´Ô=Ð=Ð=Ø×$Ñ$×)Ò)Ø �à�8Š8Ü˜!Ÿ(™(¤HÔ-Ø)*¯©¯©Ð%8Ñ"à%)Ñ"à!&Ðà—I‘Iò 	ˆDØ×ÑØØ&ØŸ™Ø#5ð	  õ ñ	rh  c                ó:   — | j                  |j                  «       y rj  )Útry_parse_as_type_expressionrm  r~  s     rf  r�  z,SemanticAnalyzer.analyze_rvalue_as_type_formØ  s   € Ø×)Ñ)¨!¯(©(Õ3rh  c                ó€  — t        |j                  t        «      sy d}|j                  }	 t        |j                  t        «      r|j                  j
                  }|�s t        |j                  t        «      ræ|j                  j                  }t        |t        «      r5|j
                  r)|j                  j                  }|j
                  dz   |z   }n‹t        |t        «      rgt        |j                  t        «      rMt        |j                  t        «      r3|j                  j                  }|j                  j
                  dz   |z   }nt        |t        «      r|}�Œ4	 |sy | j                  j                  |«      }|sy |j                  D ]0  }t        |t         «      sŒ |t#        ||j                  | «      «       Œ2 y )NrD  r�  )r�  rm  r>   rÂ  rs   r†  rd   r÷  r”  r\   rV  rI  r‡   rH  Úget_dynamic_class_hookr“  rg   r§   )re  r$  r°  r¨  Úcallee_exprÚmethod_namer¦  rØ  s           rf  rž  z)SemanticAnalyzer.apply_dynamic_class_hookÛ  sW  € Ü˜!Ÿ(™(¤HÔ-ØØˆØ�x‰xˆØÜ˜$Ÿ+™+¤wÔ/ØŸ™×,Ñ,�âœZ¨¯©´ZÔ@Ø"Ÿk™k×.Ñ.�Ü˜k¬7Ô3¸×8LÒ8LØ"&§+¡+×"2Ñ"2�KØ'×0Ñ0°3Ñ6¸ÑD‘Eä˜{¬IÔ6Ü" ;×#3Ñ#3´WÔ=Ü" ;×#7Ñ#7¼ÔIà"&§+¡+×"2Ñ"2�KØ'×,Ñ,×5Ñ5¸Ñ;¸kÑI‘EÜ ¬XÔ6à&�DÙØÙØØ�{‰{×1Ñ1°%Ó8ˆÙØØ—I‘Iò 	@ˆDÜ˜d¤HÔ-ØÙÔ'¨¨d¯i©i¸Ó>Õ?ñ	@rh  c                óº  — |j                   r| j                  |j                   «      syt        |j                   t        «      sJ ‚t	        |j                   j
                  «      dkD  r| j                  d|j                   «       d}|j                   j
                  snd|_        t        |j                  t        «      rk|j                  j                  rU| j                  r| j                  j                  s3d}| j                  d|«       n|j                   j
                  d   |_        |j                  �G| j                  j                  dk  r.| j                  |j                  «      r| j                  d	|«       yt	        |j                  «      dk7  st        |j                  d   t         «      s| j                  d
|«       y|j                  d   }t        |t         «      sJ ‚|j"                  r|j                  du |_        | j&                  d   dkD  r| j                  d|«       | j                  rA| j                  j(                  r+| j+                  «       r| j,                  j/                  |«       t        |j                  t        «      rO|j                  j                  r9| j0                  s-| j+                  «       s|s| j,                  j3                  |«       y)am  Strip Final[...] if present in an assignment.

        This is done to invoke type inference during type checking phase for this
        assignment. Also, Final[...] doesn't affect type in any way -- it is rather an
        access qualifier for given `Var`.

        Also perform various consistency checks.

        Returns True if Final[...] was present.
        Fr#  z*Final[...] takes at most one type argumentNTzAType in Final[...] can only be omitted if there is an initializerr   )r'  é   z=Variable should not be annotated with both ClassVar and FinalzInvalid final declarationr®  zCannot use Final inside a loop)rp  rÕ  r�  rÿ   r’  r|  r¼  rl  rm  r‚   rÖ  rš  r1  rè  r  r“  rs   Ú
is_new_defÚis_inferred_defrC  rM  r9  rP  r  ro  Úfinal_without_value)re  r$  Úinvalid_bare_finalrØ  s       rf  r•  zSemanticAnalyzer.unwrap_finalÿ  s   € ð × Ò ¨×(:Ñ(:¸1×;LÑ;LÔ(MØÜ˜!×+Ñ+¬[Ô9Ð9Ð9Üˆq× Ñ ×%Ñ%Ó&¨Ò*Ø�I‰IÐBÀA×DUÑDUÔVØ"ÐØ× Ñ ×%Ò%ØˆAŒFä˜1Ÿ8™8¤XÔ.Ø—H‘H—O’OàŸš t§y¡y×'?Ò'?à%)Ð"Ø—	‘	Ð]Ð_`Õaà×&Ñ&×+Ñ+¨AÑ.ˆAŒFð �F‰FÐØ—‘×+Ñ+¨gÒ5Ø× Ñ  §¡Ô(à�I‰IÐUÐWXÔYØäˆq�y‰y‹>˜QÒ¤j°·±¸1±¼wÔ&GØ�I‰IÐ1°1Ô5ØØ�y‰y˜‰|ˆÜ˜$¤Ô(Ð(Ð(ð
 �?Š?Ø#$§6¡6¨T >ˆDÔ à�?‰?˜2Ñ Ò"Ø�I‰IÐ6¸Ô:Ø�9Š9˜Ÿ™×.Ò.Ø×"Ñ"Ô$Ø—‘×7Ñ7¸Ô:ä�q—x‘x¤Ô*Ø—‘—’Ø×%Ò%Ø×'Ñ'Ô)á%Ø—‘×,Ñ,¨QÔ/Ørh  c                ó`  — |j                   sy|j                  d   }t        |t        «      sJ ‚t        |t        «      rp| j                  |«      s| j                  d|«       d|_         y| j                  sJ ‚| j                  d   j                  dk7  r| j                  d|«       d|_         yyy)z�Do basic checks for final declaration on self in __init__.

        Additional re-definition checks are performed by `analyze_lvalue`.
        Nr   z;Final can be only applied to a name or an attribute on selfFr®  rg  z<Can only declare a final attribute in class body or __init__)	r–  r“  r�  rs   rd   Úis_self_member_refr¼  r@  r”  )re  r$  rØ  s      rf  r™  z)SemanticAnalyzer.check_final_implicit_def@  s©   € ð
 �~Š~ØØ�y‰y˜‰|ˆÜ˜$¤Ô(Ð(Ð(Ü�dœJÔ'Ø×*Ñ*¨4Ô0Ø—	‘	ÐWÐYZÔ[Ø!&�”Øà×*Ò*Ð*Ð*Ø×&Ñ& rÑ*×/Ñ/°:Ò=Ø—I‘IÐ\Ð^_Ô`Ø%*�A”NØð >ð (rh  c                óœ  — |j                   rät        |j                  «      dk(  rËt        |j                  d   t        «      r­|j                  d   j
                  }t        |t        «      rƒd|_        |j                  r%t        |j                  | j                  «      |_        | j                  «       r:t        |j                  t        «      r|j                  j                  rd|_        yyyyyyy| j#                  |j                  «      D �]=  }t        |t$        «      rât        | j                  t&        «      rÈ| j                  j(                  r²| j                  j*                  j-                  |j.                  d«      }|r€t        |j
                  t        «      rft        |j                  t        «      r|j                  j                  s6t1        |j
                  j.                  «       x|j
                  _        |_         t        |t2        «      s�Œ| j5                  |«      s�Œ| j                  sJ d«       ‚| j                  j*                  j-                  |j.                  d«      }|s�Œbt        |j
                  t        «      s�Œ~|j
                  j                  s�Œ–| j6                  sJ ‚| j6                  d   }|j.                  dk(  s�ŒÄ|j
                  j                   s�ŒÜ|j
                  j8                  r�Œôt        |j                  t        «      r|j                  j                  r�Œ&d|j
                  _        d|_         �Œ@ y)zRIf this is a locally valid final declaration, set the corresponding flag on `Var`.r#  r   TNúSelf member outside a classr®  rg  )r–  r’  r“  r�  rs   r¤  r�   rÙ  rl  r   rm  r  Úfinal_valuer9  r‚   rÖ  Úfinal_unset_in_classÚflatten_lvaluesrg   rŠ   r3  r…  rÛ  r”  r  rd   ræ  r@  Úfinal_set_in_init)re  r$  r¤  rØ  Úcur_nodeÚcurrent_functions         rf  rš  z#SemanticAnalyzer.store_final_statusU  sG  € à�>Š>Ü�1—9‘9‹~ Ò"¤z°!·)±)¸A±,ÄÔ'HØ—y‘y ‘|×(Ñ(�Ü˜d¤CÔ(Ø$(�D”MØ—v’vÜ+=¸a¿h¹hÈÏÉÓ+X˜Ô(Ø×*Ñ*Ô,Ü" 1§8¡8¬XÔ6¸1¿8¹8¿?º?à48˜Õ1ð <KÐ6ð -ð	 )ð (IÐ"ð ×,Ñ,¨Q¯Y©YÓ7ó +2�ô ˜t¤XÔ.Ü" 4§9¡9¬hÔ7ØŸ	™	×)Ò)à#Ÿy™yŸ™×2Ñ2°4·9±9¸dÓC�Há Ü& x§}¡}´cÔ:Ü!+¨A¯H©H´hÔ!?ÀAÇHÁHÇOÂOô GPÐPX×P]ÑP]×PbÑPbÓFcÐBcÐc˜Ÿ™Ô.°´ô
 ˜d¤JÖ/°D×4KÑ4KÈDÖ4QØŸ9š9ÐCÐ&CÓC˜9Ø#Ÿy™yŸ™×2Ñ2°4·9±9¸dÓC�HÛ¤J¨x¯}©}¼cÖ$BÀxÇ}Á}×G]ÔG]Ø#×2Ò2Ð2Ð2Ø+/×+>Ñ+>¸rÑ+BÐ(à,×1Ñ1°ZÔ?Ø (§¡× BÔ BØ$,§M¡M×$CÔ$CÜ%/°·±¼(Ô%CÈÏÉÏÌà>B˜HŸM™MÔ;Ø-1˜AžNñW+2rh  c                ó¼   — g }|D ]T  }t        |t        t        f«      r+|j                  | j	                  |j
                  «      «       ŒD|j                  |«       ŒV |S rj  )r�  r„   r`   r  rë  rÔ  r  )re  r“  ÚresÚlvs       rf  rë  z SemanticAnalyzer.flatten_lvalues�  sR   € Ø "ˆØò 	ˆBÜ˜"œy¬(Ð3Ô4Ø—
‘
˜4×/Ñ/°·±Ó9Õ:à—
‘
˜2•ð		ð
 ˆ
rh  c                ó
  — |j                   r÷|j                  d   }t        |t        «      }| j	                  |j                   |¬«      }|�t        |«      r| j                  |«       y||_         | j                   �rÎ| j                   j                  �r·t        |t        «      �r¦t        |j                  t        «      �r‹|j                  j                  �rtt        |j                  t        «      �rYd|j                  _        �nF| j                   rI| j                   j                  r3| j                  |«      r"| j!                  «       s| j#                  d|«       t%        |j                  «      dk(  rÙt        |j                  d   t&        «      r¼|j                  d   }d}| j                   rft        |t        «      rVt%        | j                   j(                  «      dkD  r4| j                   j(                  d   j+                  |j,                  «      du }|r7|j.                  r+| j1                  |j                  |j2                  «      |_         |j                   r.|j                  D ]  }| j5                  ||j                   «       Œ  yy)z5Analyze type annotation or infer simple literal type.r®  ©r;  NTz8All protocol members must have explicitly declared typesr#  r   )rl  r“  r�  r„   rÜ  r»   rÖ  rM  rg   rm  r‚   rÖ  r¤  r�   Úis_abstract_varÚis_annotated_protocol_memberrÓ  r¼  r’  rs   r‘  rÛ  r”  râ  Úanalyze_simple_literal_typer–  Ústore_declared_types)re  r$  rl  r;  rI  Úref_exprÚsafe_literal_inferences          rf  rœ  z(SemanticAnalyzer.process_type_annotation™  sÊ  € à�6Š6Ø—Y‘Y˜r‘]ˆFÜ",¨V´YÓ"?ÐØ—~‘~ a§f¡fÐBU�~ÓVˆHàÐ¤?°8Ô#<Ø—
‘
˜1”ØØˆAŒFà—	“	Ø—I‘I×)Ó)Ü˜v¤xÕ0Ü˜qŸx™x¬Õ2Ø—H‘H—O“Oä˜fŸk™k¬3Õ/Ø26�F—K‘KÖ/ð —	’	Ø—I‘I×)Ò)Ø×5Ñ5°aÔ8Ø×*Ñ*Ô,à—	‘	ÐTÐVWÔXä�1—9‘9‹~ Ò"¤z°!·)±)¸A±,ÄÔ'HØŸ9™9 Q™<�Ø)-Ð&Ø—9’9¤¨H´hÔ!?ÄCÈÏ	É	ÏÉÓDVÐYZÒDZð .2¯Y©Y¯]©]¸1Ñ-=×-AÑ-AÀ(Ç-Á-Ó-PÐTXÐ-XÐ*Ù)¨h×.FÒ.FØ!×=Ñ=¸a¿h¹hÈÏÉÓW�A”FØ�6Š6àŸ)™)ò :�Ø×)Ñ)¨&°!·&±&Õ9ñ:ð rh  c                ó:   — t        d„ |j                  D «       «      S )z‚Check whether a protocol member is annotated.

        There are some exceptions that can be left unannotated, like ``__slots__``.c              3  óz   K  — | ]3  }t        |t        «      xr |j                  d k7  xr |j                  –— Œ5 y­w)Ú	__slots__N)r�  rg   r”  râ  )r¢  rñ  s     rf  r¥  z@SemanticAnalyzer.is_annotated_protocol_member.<locals>.<genexpr>È  s;   è ø€ ò 
àô ˜œHÓ%ÒW¨"¯'©'°[Ñ*@ÒWÀR×EWÑEWÓWñ
ùrÒ  )r­  r“  r~  s     rf  rõ  z-SemanticAnalyzer.is_annotated_protocol_memberÄ  s"   € ô ñ 
à—i‘iô
ó 
ð 	
rh  c                ól  — | j                   ryt        || j                  «      }|�t        |t        «      ryt        |t
        «      rd}n8t        |t        «      rd}n%t        |t        «      rd}nt        |t        «      rd}| j                  «      }|r|r|j                  t        ||¬«      ¬«      S |S )z‡Return builtins.int if rvalue is an int literal, etc.

        If this is a 'Final' context, we return "Literal[...]" instead.
        Nzbuiltins.boolzbuiltins.intrÊ  zbuiltins.float)r|  rŠ  )Úlast_known_value)r@  r   r  r�  Úcomplexr  ÚintÚstrÚfloatrÓ  r:  rë   )re  rm  rÙ  r|  Ú	type_namer«  s         rf  rö  z,SemanticAnalyzer.analyze_simple_literal_typeÍ  s¥   € ð
 ×Òð
 ä" 6¨4¯?©?Ó;ˆØˆ=œJ u¬gÔ6Øä�eœTÔ"Ø'‰IÜ˜œsÔ#Ø&‰IÜ˜œsÔ#Ø&‰IÜ˜œuÔ%Ø(ˆIà×%Ñ% iÓ0ˆÙ‘8Ø×$Ñ$´kÈÐX[Ô6\Ð$Ó]Ð]Øˆ
rh  c                óˆ  — t        | j                  xr | j                  d   j                  «       «      }| j                   xr | j                   }	 t	        || j
                  | j                  | j                  ¬«      }	| j                  |	«      }
| j                  |«      }|€|
n|}| j                  | j                   j#                  |«      «      5  | j%                  ||	«      }|r*| j'                  «       5  |j)                  | «       ddd«       g }g }d}|D ]Œ  }|rbt+        |t,        «      rR|j/                  «       rB| j                  t0        j2                  |t        j4                  ¬«       |j7                  |«       Œgt+        |t8        «      r|rŒzd}|j7                  |«       ŒŽ t;        |	| | j                   | j<                  | j
                  | j>                  | j@                  |||||||¬«      \  }}ddd«       t        t+        |	tB        «      xr |	jD                  xs |	jF                  «      }i }|D ]+  \  }}|jH                  €Œ|jH                  ||jJ                  <   Œ- ||fS # t        $ r4 | j                  d|t        j                  ¬«       dg t        «       di fcY S w xY w# 1 sw Y   �Œ¥xY w# 1 sw Y   ŒÄxY w)	a  Check if 'rvalue' is a valid type allowed for aliasing (e.g. not a type variable).

        If yes, return the corresponding type, a list of type variables for generic aliases,
        a set of names the alias depends on, whether the original type has empty tuple index,
        and any type variables whose defaults depend on other classes or type aliases.
        An example for the dependencies:
            A = int
            B = str
            analyze_alias(dict[A, B])[2] == {'__main__.A', '__main__.B'}
        r®  ©r{  z2Invalid type alias: expression is not a valid typer4  NFT)r7  Úin_dynamic_funcÚglobal_scopeÚallowed_alias_tvarsÚerase_tvar_defsÚalias_type_params_namesr}  )&r  r@  Ú
is_dynamicrl  r   r1  ro  r{  r   r¼  rC  rD  rM  rÑ  rÝ  r<  r?  r)  r½  rz  r³  r�  rþ   r  r   r€  r�  r  rý   rÆ   rH  r2  rr  rÿ   r|  Úempty_tuple_indexrH  r†  )re  r”  rm  r7  Údeclared_type_varsÚall_declared_type_params_namesr}  Údynamicr  r«  Úfound_type_varsr3  Úalias_type_varsrs  Únew_tvar_defsr	  ÚvariadicÚtdrI  Ú
depends_onÚindexedrH  rW  r2  s                           rf  Úanalyze_aliaszSemanticAnalyzer.analyze_aliasë  s±  € ô* �t×*Ñ*ÒS¨t×/BÑ/BÀ2Ñ/F×/QÑ/QÓ/SÓTˆØŸ9™9�}Ò@¨T×-@Ñ-@Ð)@ˆð	.Ü)Ø˜Ÿ™ d×&7Ñ&7È$×J_ÑJ_ôˆCð ×2Ñ2°3Ó7ˆØ×'Ñ'¨Ó-ˆ	Ø-?Ð-G™/ÐM_ˆØ×"Ñ" 4§?¡?×#>Ñ#>¸yÓ#IÓJñ ,	Ø×1Ñ1°/À3ÓGˆIá%Ø×1Ñ1Ó3ñ (Ø—M‘M $Ô'÷(ð ˆMØ ˆOØˆHØò )�Ù¤
¨2¬{Ô ;ÀÇÁÔ@PØ—I‘IÜ(×GÑGØÜ"Ÿ^™^ð ô ð $×*Ñ*¨2Ô.ØÜ˜bÔ"2Ô3ñ  Ø Ø#�HØ×$Ñ$ RÕ(ð#)ô& $6ØØØ—‘Ø—‘Ø—‘Ø×!Ñ!Ø×*Ñ*Ø"3Ø 'Ø)Ø$-Ø /Ø(FØ'=ô$Ñ ˆH�j÷;,	ô\ ”z #¤{Ó3Ò[¸¿¹Ò9ZÀS×EZÑEZÓ\ˆØˆØ$ò 	B‰EˆAˆrØ×!Ñ!Ñ-Ø/1×/AÑ/A� §¡Ò,ð	Bð ˜¨
°G¸_ÐLÐLøôy $ò 	.Ø�I‰IØDÀfÔSX×ScÑScð ô ð ˜œS›U E¨2Ð-Ò-ð		.ú÷(ñ (ú÷	,	ð ,	ús7   Á-I+ Ã%J8Ã6J+ÄC-J8É+:J(Ê'J(Ê+J5	Ê0J8Ê8Kc                óÊ   — |j                   �Wt        |j                   t        «      r=| j                  |j                   j                  |d¬«      }|r|j
                  t        v ryy)NTrx  F)rp  r�  rÿ   r{  r”  r†  rá   )re  r$  r·  s      rf  r½  zSemanticAnalyzer.is_pep_613D  sV   € Ø×ÑÐ(¬Z¸×8IÑ8IÌ;Ô-WØ×*Ñ*¨1×+<Ñ+<×+AÑ+AÀ1ÐVZÐ*Ó[ˆFÙ˜&Ÿ/™/Ô-=Ñ=ØØrh  c                óÂ  — |j                   ry|j                  d   }t        |j                  «      dkD  st        |t        «      sy| j                  |«      }|s|j                  �y| j                  |j                  |j                  ¬«      r–|j                  j                  d   t        k(  r|j                  j                  d   n;|j                  j                  |j                  j                  j                  d«         }d}| j                  |j                  «      \  }}n|j                  }d}d}d}t        |t         «      r|j"                  ry| j%                  «       j'                  |j                  «      }|rÙt        |j(                  t*        «      smt        |j(                  t,        «      r|j.                  rGt        |j(                  t0        «      r|j(                  j(                  j2                  |j2                  k  rRt        |j(                  t,        «      r7|j.                  s+| j5                  dj7                  |j                  «      |«       y| j8                  xs | j;                  «       }	|s|st        |t<        «      r|	ry|s|s| j?                  |«      sy|r!t        |j(                  t0        t,        f«      syd}
| jA                  |«      rtC        «       }
g }tE        «       }d}i }n©| jG                  «       }| jI                  |j                  |d||¬	«      \  }
}}}}|
sy| j;                  «       s#t        |
tJ        «      xr t        |
tL        «      }ntO        |
«      }| jQ                  |«      s|r| jS                  |j                  |d¬
«       y| jU                  |«       tW        |
| jX                  | jZ                  | j\                  |¬«       t_        |
«      }
| jX                  j`                  r>tc        |
«      r3tO        |
«      s(| j\                  je                  d|
|«       tg        |
«      }
t        |
tJ        «      xr t        |
th        «      xr | xr | }t        |
tJ        «      rUt        |
th        «      rEtk        |
| j4                  |«      s.tm        |
| j4                  | jn                  d| jX                  ¬«       | j;                  «       }t-        |
| jq                  |j                  «      | jr                  |j2                  |jt                  ||||¬«	      }||_;        t        |j                  tx        t         tz        f«      r‰t        |j                  j"                  t|        «      st}        |«      |j                  _        |j2                  |j                  j"                  _        |
jt                  |j                  j"                  _:        n+t        |j                  t<        «      rd|j                  _?        d}|r•t        |j(                  t,        «      rqd|j(                  _@        |j(                  j‚                  |
k7  rn|
|j(                  _A        ||j(                  _;        ||j(                  _B        ||j(                  _C        d}n'||_D        d}n| j‹                  |j                  ||«       t        |t<        «      r5t        |j(                  t,        «      r|j(                  jŒ                  |_F        |r|j(                  n|}t        |t,        «      sJ ‚| j�                  |||j                  «       |stO        |
«      r| j‘                  |j                  d||¬«       | j“                  «       re| j8                  €J ‚| j8                  j”                  rA| j5                  d|«       |j                  d   j—                  «       s| jo                  d|«       y)a/  Check if assignment creates a type alias and set it up as needed.

        Return True if it is a type alias (even if the target is not ready),
        or False otherwise.

        Note: the resulting types for subscripted (including generic) aliases
        are also stored in rvalue.analyzed.
        Tr   r#  FN)r”  r|  zTCannot assign multiple types to name "{}" without an explicit "type[...]" annotation)r7  r  r  rL  rO  úType alias targetrò  ©rˆ  rô  Úeagerr}  r”  rŽ  z.Type aliases are prohibited in protocol bodiesz9Use variable annotation syntax to define protocol members)LÚinvalid_recursive_aliasr“  r’  r�  rg   r½  rp  Úcheck_type_alias_type_callrm  r”  rB  r"   r|  r^  ÚindexÚanalyze_type_alias_type_paramsr>   rI  Úcurrent_symbol_tablerÛ  r¤  r�   r   r‹  rp   r¸  r¼  rÖ  rl  rÓ  rs   r¹  r·  rì   rM  rö  r  rñ   rð   r»   rú  rø  rH  rÇ   r1  rr  rP  Úmake_any_non_explicitrú  rÌ   rû  Úmake_any_non_unimportedrê   rÎ   rË   rù  rÝ  r  r¹  rH  r\   rk   r…   rg  Ú_is_recursiverü  rˆ  rô  Ú_noderß  rõ  Ú!disable_invalid_recursive_aliasesr•  r9  rM  Úisupper)re  r$  rl  Úpep_613rm  Úpep_695Útype_paramsÚall_type_params_namesrä  Únon_global_scoperð  rˆ  r  r  rH  rû  Úincomplete_targetrô  r  rý  ÚupdatedÚcurrent_nodes                         rf  rŠ  z,SemanticAnalyzer.check_and_set_up_type_aliasK  sE  € ð ×$Ò$ØØ—‘˜1‘ˆÜˆq�y‰y‹>˜AÒ¤Z°¼Ô%Aàà—/‘/ !Ó$ˆÙ˜1×,Ñ,Ð8ð ð ×*Ñ*¨1¯8©8¸&¿+¹+Ð*ÔFð —8‘8×%Ñ% aÑ(¬GÒ3ð —‘—‘˜aÒ à—X‘X—]‘] 1§8¡8×#5Ñ#5×#;Ñ#;¸GÓ#DÑEð ð
 ˆGØ15×1TÑ1TÐUV×U]ÑU]Ó1^Ñ.ˆKÑ.à—X‘XˆFØˆGØˆKØ$(Ð!ä�fœhÔ'¨F¯OªOØà×,Ñ,Ó.×2Ñ2°6·;±;Ó?ˆñ Ü�x—}‘}¤cÔ*Ü˜8Ÿ=™=¬)Ô4¸Q¿^º^Ü˜8Ÿ=™=¬/Ô:¸x¿}¹}×?QÑ?Q×?VÑ?VÐYZ×Y_ÑY_Ò?_ô ˜(Ÿ-™-¬Ô3¸A¿NºNØ—	‘	ðBßBHÁ&ÈÏÉÓBUØôð
 àŸ9™9Ò<¨×(:Ñ(:Ó(<ÐÙ™w¬:°f¼gÔ+FÑK[ð Ù™w¨t×/EÑ/EÀfÔ/MØáœJ x§}¡}´Ì	Ð6RÔSààˆØ×Ñ˜fÔ%Ü“*ˆCØ13ˆKÜ#&£5ˆJØˆGØDF‰Oà×,Ñ,Ó.ˆCØEI×EWÑEWØ—‘ØØ"&Ø#.Ø/Dð FXó FÑBˆC�˜j¨'°?ñ ØØ×%Ñ%Ô'ô %/¨s´JÓ$?ò %ÄJØœóEÑ!ô %4°CÓ$8Ð!Ø×(Ñ(¨Ô-Ñ1Bð ×$Ñ$ V§[¡[°&È4Ð$ÔPØà× Ñ  Ô,Ü˜s D§L¡L°$×2LÑ2LÈdÏhÉhÐ`aÕbô $ CÓ(ˆØ�<‰<×/Ò/Ô4PÐQTÔ4Uä" 3Ô'Ø—‘×4Ñ4Ð5HÈ#ÈqÔQÜ-¨cÓ2�ô �sœJÓ'ò Ü˜3¤Ó)òà�òð �ð	 	ô �cœ:Ô&¬:°c¼8Ô+DÜ$ S¨$¯)©)°WÔ=Ü˜S $§)¡)¨T¯Y©YÀUÐTX×T`ÑT`Õað ×"Ñ"Ó$ˆÜØØ×Ñ §¡Ó,Ø�O‰OØ�F‰FØ�H‰HØ#ØØØ#*ô

ˆ
ð &5ˆ
Ô"Ü�a—h‘h¤¬H´fÐ =Ô>ä˜aŸh™h×/Ñ/´Ô?ä$1°*Ó$=�—‘Ô!Ø%&§V¡VˆA�H‰H×ÑÔ"à'*§z¡zˆA�H‰H×ÑÕ$Ü˜Ÿ™¤'Ô*Ø'+ˆA�H‰HÔ$àˆÙÜ˜(Ÿ-™-¬Ô3à.2�—‘Ô+Ø—=‘=×'Ñ'¨3Ò.ð ,/�H—M‘MÔ(Ø4C�H—M‘MÔ1Ø0;�H—M‘MÔ-Ø,3�H—M‘MÔ)Ø"‘Gð ",�”Ø‘à�O‰O˜FŸK™K¨°QÔ7Ü�fœgÔ&¬:°f·k±kÄ9Ô+MØ$*§K¡K×$:Ñ$:ˆJÔ!Ù(0�x—}’}°jˆÜ˜,¬	Ô2Ð2Ð2Ø×.Ñ.¨q°,ÀÇÁÔIñ ”o cÔ*Ø×$Ñ$ V§[¡[°&¸!ÈGÐ$ÔTØ×ÑÔ Ø—9‘9Ð(Ð(Ð(Ø�y‰y×$Ò$Ø—	‘	ÐJÈAÔNØ—{‘{ 1‘~×-Ñ-Ô/Ø—I‘IÐYÐ[\Ô]Ørh  c               ój  — t        |t        «      sydg}| j                  j                  dk\  r|j	                  d«       t        |j                  t        |«      «      sy| j                  |||«      sy|j                  j                  t        «      dd|j                  v z
  d|j                  v z
  k7  ryy)	NFútyping_extensions.TypeAliasType)r'  é   útyping.TypeAliasTyper%  r|  r”  T)r�  r>   r1  rè  r  r½  rÂ  ÚtupleÚcheck_typevarlike_namerB  Úcountr"   r^  )re  rm  r”  r…  s       rf  r  z+SemanticAnalyzer.check_type_alias_type_call  s¤   € Ü˜&¤(Ô+Øà2Ð3ˆØ�<‰<×&Ñ&¨'Ò1Ø�L‰LÐ/Ô0Ü! &§-¡-´°u³Ô>ØØ×*Ñ*¨6°4¸Ô@ØØ×Ñ×!Ñ!¤'Ó*Ø�˜F×,Ñ,Ð,Ñ-°¸6×;KÑ;KÐ1KÑLò
ð àrh  c                ó¾  — d|j                   v r[|j                  |j                   j                  d«         }t        |t        «      s| j                  d|«       g g fS |j                  }ng g fS g }g }d}|D �]Ñ  }t        |t        «      rd|_        | j                  |«       	 | j                  |«      }t        |t        «      sŒO| j                  «       }	| j                  |d¬«      }
|
r=t        |
d   t        «      ró|r%| j                  d|t         j"                  ¬«       d}Œ®d}nÉ| j%                  |	«      s¸| j'                  |j(                  |«      }|r@t        |j*                  t,        «      r&|j/                  |j*                  j(                  «       nX| j                  d	|t         j"                  ¬«       |r4|j0                  t2        v r"| j5                  d
|t         j"                  ¬«       �Œz|
|v r+| j                  d|
d   › d�|t         j"                  ¬«       �Œ©|
s�Œ­|j/                  |
d   «       |j/                  |
«       �ŒÔ ||fS # t        $ r Y �Œåw xY w)z¶Analyze type_params of TypeAliasType.

        Returns declared unbound type variable expressions and a list of all declared type
        variable names for error reporting.
        r*  zCTuple literal expected as the type_params argument to TypeAliasTypeFT)rÍ  r#  zFCan only use one TypeVarTuple in type_params argument to TypeAliasTyper4  zDFree type variable expected in type_params argument to TypeAliasTypez*Don't Unpack type variables in type_paramszDuplicate type variable "r   z*" in type_params argument to TypeAliasType)r^  r|  r  r�  r„   r¼  rÔ  rz   r¸  r¹  r   r   rÿ   rö  rÈ  rŽ   rC  r�  rú  r{  r”  r¤  r�   r  r†  ræ   rù  )re  rm  Útype_params_argr*  rt  Úall_declared_tvar_namesÚhave_type_var_tupleÚtp_exprrV  rû  r  r}  s               rf  r   z/SemanticAnalyzer.analyze_type_alias_type_params)  sT  € ð ˜F×,Ñ,Ñ,Ø$Ÿk™k¨&×*:Ñ*:×*@Ñ*@ÀÓ*OÑPˆOÜ˜o¬yÔ9Ø—	‘	ØYØ#ôð ˜2�v�Ø)×/Ñ/‰Kà�r�6ˆMà*,ˆØ-/ÐØ#ÐØ"ó 0	,ˆGÜ˜'¤8Ô,Ø %�”Ø×"Ñ" 7Ô+ðØ×3Ñ3°GÓ<�ô ˜d¤KÔ0Øà×,Ñ,Ó.ˆCØ×1Ñ1°$È4Ð1ÓPˆDÙÜ˜d 1™gÔ'7Ô8Ù*ØŸ	™	ØdØ Ü!&§¡ð "ô ð
 /3Ð+Ø Ø*.Ñ'Ø×.Ñ.¨sÔ3Ø×+Ñ+¨D¯I©I°tÓ<�Ùœ: c§h¡h´Ô@Ø+×2Ñ2°3·8±8·=±=ÕAà—I‘IØ^ØÜ"Ÿ^™^ð ô ñ
 ˜sŸ|™|Ô/@Ñ@ØŸ	™	ØHÈ$ÔUZ×UcÑUcð "ô ñ Ø�~Ñ%Ø—	‘	Ø/°°Q±¨yÐ8bÐcØÜŸ™ð ô ñ
 ÛØ'×.Ñ.¨t°A©wÔ7Ø×%Ñ% dÖ+ða0	,ðb Ð6Ð6Ð6øôW (ò Úðús   Â#IÉ	IÉIc                ó   — g }t        |j                  t        «      r8|j                  j                  |u r |j	                  d|j
                  › d�«       nSt        |h|j                  «      r<t        t        |j                  «      t        «      rdnd}|j	                  d|› d�«       t        ||j                  «      r|j	                  d«       |r%t        t        j                  «      |_        d|_        |D ]  }| j                  ||«       Œ y	)
zEProhibit and fix recursive type aliases that are invalid/unsupported.zCannot resolve name "z" (possible cyclic definition)r4  ÚunionzInvalid recursive alias: a z item of itselfzAInvalid recursive alias: type variable nesting on right hand sideTN)r�  rü  rö   rí  r  r”  r	  r  rô   rÉ   rç   rø   r]  r  r¼  )re  r$  r/  ÚctxÚmessagesrü  rP  s          rf  r&  z2SemanticAnalyzer.disable_invalid_recursive_aliasess  sò   € ð ˆä�|×*Ñ*¬MÔ:Ø×#Ñ#×)Ñ)¨\Ñ9ð �O‰OØ'¨×(9Ñ(9Ð':Ð:XÐYõô (¨¨¸×8KÑ8KÔLä%¤o°l×6IÑ6IÓ&JÌIÔV‘Ð\cð ð �O‰OÐ9¸&¸ÀÐQÔRÜ! ,°×0CÑ0CÔDØ�O‰OÐ_Ô`ÙÜ")¬)×*>Ñ*>Ó"?ˆLÔØ(,ˆAÔ%Øò 	 ˆCØ�I‰I�c˜3Õñ	 rh  c                óz  — |rt        |t        «      sJ d«       ‚t        |t        «      r| j                  ||||||¬«       yt        |t        «      r<| j	                  ||||«       |r%| j                  |«      s| j                  d|«       yyyt        |t        «      r&|r| j                  d|«       |j                  | «       yt        |t        «      r| j                  ||«       yt        |t        «      r3|r| j                  |j                  ||«       y| j                  d|«       y| j                  d|«       y)a  Analyze an lvalue or assignment target.

        Args:
            lval: The target lvalue
            nested: If true, the lvalue is within a tuple or list lvalue expression
            explicit_type: Assignment has type annotation
            escape_comprehensions: If we are inside a comprehension, set the variable
                in the enclosing scope instead. This implements
                https://www.python.org/dev/peps/pep-0572/#scope-of-the-target
            is_index_var: If lval is the index variable in a for loop
        z-assignment expression target must be NameExpr)r{  Úis_index_varz;Type cannot be declared in assignment to non-self attributezUnexpected type declarationz4Starred assignment target must be in a list or tupleúInvalid assignment targetN)r�  rg   Úanalyze_name_lvaluerd   Úanalyze_member_lvalueræ  r¼  r\   r³  r„   Úanalyze_tuple_or_list_lvaluerz   r}  r÷  )re  rØ  r2  rÔ  rÙ  rz  r{  rA  s           rf  r}  zSemanticAnalyzer.analyze_lvalueŽ  s  € ñ* !Ü˜d¤HÔ-Ð^Ð/^Ó^Ð-Ü�dœHÔ%Ø×$Ñ$ØØØØ%Ø#5Ø)ð %õ ô ˜œjÔ)Ø×&Ñ& t¨]¸HÐFXÔYÙ T×%<Ñ%<¸TÔ%BØ—	‘	ÐWÐY]Õ^ð &Cˆ}ä˜œiÔ(ÙØ—	‘	Ð7¸Ô>Ø�K‰K˜ÕÜ˜œiÔ(Ø×-Ñ-¨d°MÕBÜ˜œhÔ'ÙØ×#Ñ# D§I¡I¨v°}ÕEà—	‘	ÐPÐRVÕWà�I‰IÐ1°4Õ8rh  c                ó@  — |j                   ry|j                  }| j                  |«      r>|r| j                  d|«       n)| j                  j                  || j                  du|«       | j                  «       }| j                  |¬«      }	|	j                  |«      }
| j                  |«      }|t        k(  r»t        | j                  t        «      r¡| j                  j                  r‹|j                  d«      sz|
�Pt        |
j                   t         «      s6| j                  dj#                  || j                  j                  «      |«       |r&|r$| j                  d|«       | j%                  d|«       |
rt        |
j                   t         «      rÿ|sý| j'                  ||| ||«      }| j)                  ||||¬«      }|r§d|_        d|_        ||_        ||_         |t0        k(  r|j2                  |_        n|j                  |_        | j7                  «       rOt9        |«      d	k(  rA| j:                  j<                  s+t?        t@        jB                  «      }| jE                  ||«       |r&| jG                  ||«      r| j                  d|«       yyy| jI                  |||«       y)
znAnalyze an lvalue that targets a name expression.

        Arguments are similar to "analyze_lvalue".
        Nú)Cannot redefine an existing name as final)rz  Ú__z;Attempted to reuse member name "{}" in Enum definition "{}"z%Enum members must be left unannotatedzLSee https://typing.readthedocs.io/en/latest/spec/enums.html#defining-membersTrW  )%r¤  r”  Úis_alias_for_final_namer¼  rP  Úcant_assign_to_finalrl  rG  r!  rÛ  Úis_global_or_nonlocalr+   r�  rŠ   r3  rS  rp   rÖ  rù  Úmake_name_lvalue_varrß  rá  râ  rA  r&   r£  r†  rÓ  r  r1  rÀ  rç   rø   r¥  r÷  Úis_final_redefinitionÚ&make_name_lvalue_point_to_existing_def)re  rl  rÔ  rÙ  rz  r{  rA  r”  rA  r…  rä  Úouterræ  Úaddedr«  s                  rf  rC  z$SemanticAnalyzer.analyze_name_lvalueÀ  s;  € ð �;Š;àà�{‰{ˆØ×'Ñ'¨Ô-ÙØ—	‘	ÐEÀvÕNà—‘×-Ñ-¨d°D·I±IÀTÐ4IÈ6ÔRà×'Ñ'Ó)ˆØ×)Ñ)Ð@UÐ)ÓVˆØ—9‘9˜T“?ˆà×*Ñ*¨4Ó0ˆà”DŠLÜ˜4Ÿ9™9¤hÔ/Ø—	‘	×!Ò!Ø—O‘O DÔ)ð Ð#¬J°x·}±}ÄoÔ,VØ—	‘	ØQ×XÑXØ˜dŸi™iŸn™nóð ô	ñ Ñ!3Ø—	‘	ÐAÀ6ÔJØ—	‘	ØbØôñ
 œJ x§}¡}´oÔFÑPUà×+Ñ+Ø˜ -Ð/Ð1CÀ\óˆCð —O‘O D¨#¨vÐMb�OÓcˆEáØ$(�Ô!Ø)-�Ô&Ø"�”Ø!�”Øœ4’<Ø&)§m¡m�F•Oà&,§k¡k�F”OØ×%Ñ%Ô'Ü “~¨Ò,°T·\±\×5TÒ5Tô &¤i×&<Ñ&<Ó=˜Ø×1Ñ1°&¸#Ô>Ù˜D×6Ñ6°t¸TÔBØ—	‘	ÐEÀvÕNð Cˆxð ×7Ñ7¸ÀÈxÕXrh  c                óÒ   — |t         k(  r%| j                  |«      xr | j                  |«       S |t        k(  r0| j                  r$t        |«      dz   | j                  j                  v S y)Nú'F)r&   Úis_mangled_globalÚis_initial_mangled_globalr+   rl  r  r…  )re  rA  r”  s      rf  rM  z&SemanticAnalyzer.is_final_redefinition  sZ   € Ø”4Š<Ø×)Ñ)¨$Ó/Ò\¸×8VÑ8VÐW[Ó8\Ð4\Ð\Ø”TŠ\˜dŸišiÜ˜D“> CÑ'¨4¯9©9¯?©?Ð:Ð:Ørh  c                óN  — | j                  «       rl|j                  d«      syt        |«      }| j                  d   €J d«       ‚| j                  d   j	                  |«      }|d uxr t        |j                  «      S | j                  �Tt        |«      dz   }||k(  ry| j                  j                  j	                  |«      }|d uxr t        |j                  «      S t        |«      dz   }||k(  ry| j                  j	                  |«      }|d uxr t        |j                  «      S )NrR  Fr®  zNo locals at function scope)
rÓ  r	  r  r8  rÛ  r™   r¤  rl  r…  r5  )re  r”  rä  Ú	orig_names       rf  rI  z(SemanticAnalyzer.is_alias_for_final_name  s  € Ø×ÑÔØ—=‘= Ô%àÜ˜D“>ˆDØ—;‘;˜r‘?Ð.ÐMÐ0MÓMÐ.Ø—{‘{ 2‘×*Ñ*¨4Ó0ˆHØ 4Ð'ÒH¬M¸(¿-¹-Ó,HÐHØ�Y‰YÐ"Ü  ›¨Ñ,ˆIØ�yÒ ØØ—y‘y—‘×*Ñ*¨9Ó5ˆHØ 4Ð'ÒH¬M¸(¿-¹-Ó,HÐHä  ›¨Ñ,ˆIØ�yÒ ØØ—|‘|×'Ñ'¨	Ó2ˆHØ 4Ð'ÒH¬M¸(¿-¹-Ó,HÐHrh  c                óT  — |j                   }t        |«      }|j                  |«       ||_        |t        k(  r3| j
                  €J ‚| j
                  |_        d|_        |t        v |_	        |t        k7  r| j                  |«      |_        n||_        d|_        ||_        ||_        |S )z:Return a Var node for an lvalue that is a name expression.TF)r”  r�   rê  Úis_inferredr+   rl  r§  r  r¶   Úallow_incompatible_overrider*   rÝ  r£  rÞ  r{  rA  )re  rl  rA  Úinferredr{  rA  r”  r¬  s           rf  rL  z%SemanticAnalyzer.make_name_lvalue_var,  sž   € ð �{‰{ˆÜ�‹IˆØ	�
‰
�6ÔØ ˆŒØ”4Š<Ø—9‘9Ð(Ð(Ð(Ø—Y‘YˆAŒFØ(,ˆAÔ%Ø,0Ô4OÐ,OˆAÔ)Ø”4Š<Ø×-Ñ-¨dÓ3ˆA�Kð ˆAŒKØˆŒ
Ø1ˆÔØ%ˆŒØˆrh  c                óä  — |r| j                  d|«       | j                  |j                  |d¬«      }|€A| j                  r5| j	                  «       s%| j                  j                  |j                  «      }|r| j                  |j                  ||«       nM|r| j                  ||«       n| j                  |j                  |«       | j                  |j                  |«       | j                  j                  rx|j                  | j                  d   v r\|rYt        |j                  t        «      r>|j                  j                   r'| j                  j                  D ]  }t#        |«       Œ yyyyyy)z®Update an lvalue to point to existing definition in the same scope.

        Arguments are similar to "analyze_lvalue".

        Assume that an existing name exists.
        rG  Trx  Nr®  )r¼  r·  r”  rl  rÓ  rÛ  rÌ  Úbind_name_exprÚname_not_definedÚcheck_lvalue_validityr¤  rU  Ú	functionsr6  r�  r�   rX  Úmark_as_top_level)re  rØ  rÔ  rÙ  r  rs  s         rf  rN  z7SemanticAnalyzer.make_name_lvalue_point_to_existing_defH  s1  € ñ à�I‰IÐAÀ4ÔHØ—{‘{ 4§9¡9¨dÀD�{ÓIˆØÐ D§I¢I°d×6HÑ6HÔ6JàŸ9™9Ÿ=™=¨¯©Ó3ˆLÙà×%Ñ% d§i¡i°°|ÕDñ Ø×#Ñ# D¨,Õ7à×%Ñ% d§i¡i°Ô6Ø×&Ñ& t§y¡y°$Ô7à�:‰:×Ò D§I¡I°×1BÑ1BÀ2Ñ1FÑ$Fñ Ü˜|×0Ñ0´#Ô6Ø ×%Ñ%×1Ò1à ŸJ™J×0Ñ0ò ,�DÜ% dÕ+ñ,ð 2ð 7ð ð	 %GÐrh  c                ó  — |j                   }|D �cg c]  }t        |t        «      sŒ|‘Œ }}t        |«      dkD  r| j	                  d|«       yt        |«      dk(  r
d|d   _        |D ]  }| j                  |d|d¬«       Œ yc c}w )z?Analyze an lvalue or assignment target that is a list or tuple.r#  z%Two starred expressions in assignmentTr   )rØ  r2  rÔ  r{  N)rÔ  r�  rz   r’  r¼  r¸  r}  )re  rØ  rÔ  rÔ  rz  Ú
star_exprsr£  s          rf  rE  z-SemanticAnalyzer.analyze_tuple_or_list_lvaluen  s�   € à—
‘
ˆØ',ÖK˜t´
¸4ÄÕ0J’dÐKˆ
ÐKäˆz‹?˜QÒØ�I‰IÐ=¸tÕDä�:‹ !Ò#Ø&*�
˜1‘Ô#Øò �Ø×#Ñ#ØØØ"/ð (,ð $õ ñùò Ls
   ‘B§Bc                ó  — |j                   ry|j                  | «       | j                  |«      �rd| j                  sJ d«       ‚| j                  j                  j                  |j                  «      }| j                  j                  |j                  «      }|r|r| j                  d|«       |j                   sQ|rOt        |j                   t        «      r5|j                   j                  r|r| j                  |j                  ||«       | j                  j                  r/|r-|�+t        |j                   t        «      rd|j                   _        |�:|€0t        |j                   t        «      r|j                   j                  s|�€|s|�r	| j                  j                  r|€| j                  d|«       nÞd|_        d|_        t        |j                  «      }|j!                  |«       | j#                  |j                  «      |_        | j                  |_        d|_        |xs ||_        ||_        ||_         t/        t0        |d¬«      | j                  j                  |j                  <   | j2                  j4                  D ]  }t7        |«       Œ | j                  |«      s| j9                  |«      r°| j                  sJ d«       ‚| j                  j                  j                  |j                  «      }|rlt        |j                   t        «      rR|j                   j                  r<|j                   j:                  r&| j2                  j4                  D ]  }t7        |«       Œ | j=                  |j                   |«       y)	zÐAnalyze lvalue that is a member expression.

        Arguments:
            lval: The target lvalue
            explicit_type: Assignment has type annotation
            is_final: Is the target final
        Nrè  rG  Fz9Protocol members cannot be defined via assignment to selfT)Úimplicitz"Self or cls member outside a class)r¤  r³  ræ  rl  r…  rÛ  r”  r¼  r�  r�   rX  Úattribute_already_definedrM  rô  rá  râ  rê  rÝ  r£  r§  rÞ  Úexplicit_self_typeÚdef_varr€   r+   rU  r_  r`  Úis_cls_member_refr  r^  )	re  rØ  rÔ  rÙ  r{  rí  r¤  r¬  rs  s	            rf  rD  z&SemanticAnalyzer.analyze_member_lvalue‚  s�  € ð �9Š9àØ�‰�DÔØ×"Ñ" 4Õ(Ø—9’9Ð;Ð;Ó;�9Ø—y‘y—‘×*Ñ*¨4¯9©9Ó5ˆHØ—9‘9—=‘= §¡Ó+ˆDÙ™Hà—	‘	ÐEÀtÔLð —I’IÙÜ˜xŸ}™}¬cÔ2Ø—M‘M×-Ò-Ù!à×.Ñ.¨t¯y©y¸$ÀÔIØ�y‰y×$Ò$Ñ);ÀÐ@Tô ˜hŸm™m¬SÔ1Ø49�H—M‘MÔ1ð �àÐ$¬°D·I±I¼sÔ)CÈÏ	É	×HaÒHað Ñ$©-º8à—9‘9×(Ò(¨T¨\Ø—I‘IÐYÐ[_Õ`ð '+�D”OØ+/�DÔ(Ü˜DŸI™I›�AØ—J‘J˜tÔ$Ø"&×"5Ñ"5°d·i±iÓ"@�A”KØ!ŸY™Y�A”FØ!&�A”JØ+8Ò+D¸H�AÔ(Ø#$�D”LØ !�D”Iä1@ÄÀqÐSWÔ1X�D—I‘I—O‘O D§I¡IÑ.Ø $§
¡
× 4Ñ 4ò 0˜Ü)¨$Õ/ð0ð ×"Ñ" 4Ô(¨D×,BÑ,BÀ4Ô,HØ—9’9ÐBÐBÓB�9Ø—y‘y—‘×*Ñ*¨4¯9©9Ó5ˆHáÜ˜xŸ}™}¬cÔ2Ø—M‘M×-Ò-Ø—M‘M×9Ò9à ŸJ™J×0Ñ0ò ,�DÜ% dÕ+ð,à×"Ñ" 4§9¡9¨dÕ3rh  c                ó    — t        |j                  t        «      sy|j                  j                  }t        |t        «      xr |j
                  S )z1Does memberexpr to refer to an attribute of self?F)r�  r÷  rg   r¤  r�   r  ©re  Ú
memberexprr¤  s      rf  ræ  z#SemanticAnalyzer.is_self_member_refÐ  s8   € ä˜*Ÿ/™/¬8Ô4ØØ�‰×#Ñ#ˆÜ˜$¤Ó$Ò5¨¯©Ð5rh  c                ó    — t        |j                  t        «      sy|j                  j                  }t        |t        «      xr |j
                  S )z0Does memberexpr to refer to an attribute of cls?F)r�  r÷  rg   r¤  r�   r  rj  s      rf  rh  z"SemanticAnalyzer.is_cls_member_ref×  s8   € ä˜*Ÿ/™/¬8Ô4ØØ�‰×#Ñ#ˆÜ˜$¤Ó$Ò4¨¯©Ð4rh  c                ó¬   — t        |t        «      r| j                  d|«       y t        |t        «      r!| j                  t        j
                  |«       y y )NrB  )r�  rŒ   r¼  rŠ   r   ÚCANNOT_ASSIGN_TO_TYPE)re  r¤  r>  s      rf  r^  z&SemanticAnalyzer.check_lvalue_validityÞ  s?   € Ü�dœKÔ(Ø�I‰IÐ1°3Õ7Ü˜œhÔ'Ø�I‰IÔ&×<Ñ<¸cÕBð (rh  c                ó˜  — t        |t        «      rÖd|_        t        |j                  t        «      r´|j                  }||_        d|_        t        |«      }|j                  r‚t        |t        «      rq|j                  rdt        |j                  j                  t        «      s?| j
                  r| j
                  j                  s|j                  j                  |_        y y y y y y y t        |t        «      r§t        |«      }t        |t         «      ryt#        |j$                  «      t#        |j$                  «      k7  r| j'                  d|«       y t)        |j$                  |j$                  «      D ]  \  }}| j+                  ||«       Œ y | j'                  d|«       y t        |t,        «      r| j+                  |j.                  |«       y y )NFTz"Incompatible number of tuple itemsz*Tuple type expected for multiple variables)r�  rs   râ  r¤  r�   rl  rÞ  r  rÙ  rê   rþ  r|  rò   r3  ré  r„   rô   r’  rÔ  r¼  Úzipr÷  rz   r÷  )re  rl  r«  ræ  rz  Úitemtypes         rf  r÷  z%SemanticAnalyzer.store_declared_typesä  sj  € Ü�fœgÔ&Ø%*ˆFÔ"Ü˜&Ÿ+™+¤sÔ+Ø—k‘k�Ø�”Ø#�”Ü% cÓ*�à—L’LÜ" 3¬Ô1Ø×,Ò,Ü& s×';Ñ';×'AÑ'AÄ=ÔQØ!ŸYšY¨d¯i©i×.?Ò.?à&)×&:Ñ&:×&@Ñ&@�C•Oð /@ð Rð -ð 2ð !ð ,ô ˜¤	Ô*Ü! #Ó&ˆCÜ˜#œyÔ)Ü�v—|‘|Ó$¬¨C¯I©I«Ò6Ø—I‘IÐBÀFÔKØÜ&)¨&¯,©,¸¿	¹	Ó&Bò >‘N�D˜(Ø×-Ñ-¨d°HÕ=ñ>ð —	‘	ÐFÈÕOÜ˜¤Ô)à×%Ñ% f§k¡k°3Õ7ð rh  c                óÔ  — | j                  |d«      }|sy| j                  ||«      }|€y|j                  dd j                  t        «      }| j                  |j                  dd|z    «      }| j                  �| j                  j                  «        | j                  |j                  d|z   d |j                  d|z   d |j                  d|z   d ||«      }| j                  }d| _        |€y|\  }}	}
| j                  «       j                  |«      }|rct        |j                  t        «      sIt        |j                  t         «      r|j                  |j"                  u s| j%                  d|› d�|«       y| j&                  j(                  rmt+        |d¬«      D ]3  \  }}t-        |«      sŒd|› �}| j.                  j1                  |||«       Œ5 t-        |	«      rd	}| j.                  j1                  ||	|«       ||	|
gz   D ]0  }t3        || j&                  | j4                  | j.                  |¬
«       Œ2 |r/| j&                  j6                  rt9        t:        j<                  «      }	|j"                  sAt!        || j?                  |«      ||	|
|«      }||_         |jB                  |_!        ||_        d}n¯t        |j"                  t         «      sJ ‚||j"                  jD                  k7  xs4 |	|j"                  jF                  k7  xs |
|j"                  jH                  k7  }|	|j"                  _#        ||j"                  _"        |
|j"                  _$        ||j"                  _         tK        d„ |D «       «      r| jM                  dd||¬«       nAtO        |	«      r| jM                  dd||¬«       n tO        |
«      r| jM                  dd||¬«       | jQ                  ||j"                  |«       y)zÆCheck if s declares a TypeVar; it yes, store it in symbol table.

        Return True if this looks like a type variable declaration (but maybe
        with errors), otherwise return False.
        )ztyping.TypeVarztyping_extensions.TypeVarFNr#  zCannot redefine "z" as a type variable)ÚstartzConstraint zUpper bound of type variablerO  Tc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrj  rQ  ©r¢  r¬  s     rf  r¥  z?SemanticAnalyzer.process_typevar_declaration.<locals>.<genexpr>Z  s   è ø€ Ò2 aŒ˜q×!Ñ2ùrS  zTypeVar valuesrŽ  zTypeVar upper boundzTypeVar default))Úget_typevarlike_declarationÚextract_typevarlike_namerB  r6  r"   Úanalyze_value_typesr|  rc  rC  Úprocess_typevar_parametersr^  r!  rÛ  r�  r¤  rp   rŒ   rI  r¼  r1  rú  r®  rÌ   rP  rû  rÇ   rr  Úmypycrç   rø   Úimplementation_artifactrÝ  rH  r¸  r’  r“  r”  r­  r•  r»   rß  )re  r$  r¨  r”  Ún_valuesr’  rð  rH  r>  r“  r”  rä  rÎ  Ú
constraintr  râ  Útype_varr.  s                     rf  rŒ  z,SemanticAnalyzer.process_typevar_declaration  s”  € ð ×/Ñ/°Ð3bÓcˆÙØà×,Ñ,¨Q°Ó5ˆØˆ<Øð —>‘> ! "Ð%×+Ñ+¬GÓ4ˆØ×)Ñ)¨$¯)©)°A¸¸H¹Ð*EÓFˆà×ÑÐ'Ø×Ñ×"Ñ"Ô$Ø×-Ñ-Ø�I‰I�a˜(‘l�nÐ%Ø�N‰N˜1˜x™<˜>Ð*Ø�N‰N˜1˜x™<˜>Ð*ØØó
ˆð ×*Ñ*ˆØˆÔØˆ;ØØ),Ñ&ˆ�+˜wà×,Ñ,Ó.×2Ñ2°4Ó8ˆÙÜ�x—}‘}¤oÔ6ô ˜Ÿ™¤{Ô3¸¿¹ÈÏÉÑ8Và�I‰IÐ)¨$¨Ð/CÐDÀaÔHØà�<‰<×/Ò/Ü#,¨V¸1Ô#=ò P‘��ZÜ/°
Õ;Ø*¨3¨%Ð0�FØ—H‘H×8Ñ8¸ÀÈQÕOðPô
 ,¨KÔ8Ø7�Ø—‘×4Ñ4°V¸[È!ÔLà˜;¨Ð0Ñ0ò 	ˆAÜ"Ø�4—<‘< ×!;Ñ!;¸T¿X¹XÈqöð	ñ �d—l‘l×(Ò(Ü!¤)×"CÑ"CÓDˆKð �}Š}Ü"Ø�d×)Ñ)¨$Ó/°¸ÀgÈxóˆHð (7ˆHÔ$Ø ŸI™IˆHŒMØ$ˆDŒMØ‰Gä˜dŸm™m¬[Ô9Ð9Ð9à˜$Ÿ-™-×.Ñ.Ñ.ò 4Ø $§-¡-×";Ñ";Ñ;ò4à˜dŸm™m×3Ñ3Ñ3ð ð
 )4ˆD�M‰MÔ%Ø#)ˆD�M‰MÔ Ø$+ˆD�M‰MÔ!Ø,;ˆD�M‰MÔ)ÜÑ2¨6Ô2Ô2Ø×$Ñ$ TÐ+;¸QÈwÐ$ÕWÜ˜[Ô)Ø×$Ñ$ TÐ+@À!ÐT[Ð$Õ\Ü˜WÔ%Ø×$Ñ$ TÐ+<¸aÐPWÐ$ÔXà�‰˜˜dŸm™m¨QÔ/Ørh  c                ó´   — t        |«      }t        |t        «      r<|j                  r0| j	                  t
        j                  j                  dd«      |«       |S )Nr   r”  )r  r�  rç   Úis_from_errorr¼  r   ÚTYPEVAR_ARG_MUST_BE_TYPErÖ  ©re  r”  r'  r«  s       rf  rD  z&SemanticAnalyzer.check_typevar_defaultd  sJ   € Ü˜gÓ&ˆÜ�cœ7Ô#¨×(9Ò(9Ø�I‰IÜ ×9Ñ9×@Ñ@ÀÈIÓVÐX_ôð ˆrh  c                ó²  — t        |«      }t        |t        «      r^t        |j                  «      D ]D  \  }}t        |«      }t        |t
        «      sŒ"|j                  sŒ/| j                  d|› d�|«       ŒF |S t        |t
        «      r|j                  st        |t
        t        f«      s+| j                  d|«       t        t        j                  «      }|S )Nz	Argument z$ of ParamSpec default must be a typezUThe default argument to ParamSpec must be a list expression, ellipsis, or a ParamSpec)r  r�  rî   r®  rZ  rç   r€  r¼  rÿ   rø   r]  )re  r”  r'  r«  r£  Úarg_typeÚ	arg_ptypes          rf  rE  z(SemanticAnalyzer.check_paramspec_defaultl  s½   € Ü˜gÓ&ˆÜ�cœ:Ô&Ü(¨¯©Ó7ò \‘��8Ü+¨HÓ5�	Ü˜i¬Õ1°i×6MÓ6MØ—I‘I 	¨!¨Ð,PÐQÐSZÕ[ð\ð ˆô �sœGÔ$Ø×!Ò!Ü˜c¤G¬[Ð#9Ô:à�I‰IØgØôô œi×2Ñ2Ó3ˆGØˆrh  c                ó’   — t        |«      }t        |t        «      s+| j                  d|«       t	        t
        j                  «      }|S )Nz>The default argument to TypeVarTuple must be an Unpacked tuple)r  r�  r  r¼  rç   rø   r]  r‚  s       rf  rF  z+SemanticAnalyzer.check_typevartuple_default  s;   € Ü˜gÓ&ˆÜ˜#œzÔ*Ø�I‰IÐVÐX_Ô`Üœi×2Ñ2Ó3ˆGØˆrh  c                ó€  — t        |«      }t        |j                  t        «      sJ ‚t        |j                  t        «      r|j                  j
                  n|j                  j                  }t        |j                  «      dk  r| j                  d|› d�|«       yt        |j                  d   t        «      r|j                  d   t        k7  r| j                  |› d�|«       y|j                  d   j                  |k7  r=d}| j                  |j                  |j                  d   j                  ||«      |«       yy)	zDChecks that the name of a TypeVar or ParamSpec matches its variable.r#  zToo few arguments for z()Fr   z-() expects a string literal as first argumentzCString argument 1 "{}" to {}(...) does not match variable name "{}"T)r  r�  rÂ  rs   rg   r”  r†  r’  r|  r¼  r|   rB  r"   r|  rÖ  )re  r¨  r”  r'  Útypevarlike_typerP  s         rf  r5  z'SemanticAnalyzer.check_typevarlike_name†  s  € ä˜‹~ˆÜ˜$Ÿ+™+¤wÔ/Ð/Ð/ä *¨4¯;©;¼Ô AˆD�K‰K×ÒÀtÇ{Á{×G[ÑG[ð 	ô ˆt�y‰y‹>˜AÒØ�I‰IÐ.Ð/?Ð.@ÀÐCÀWÔMØÜ˜$Ÿ)™) A™,¬Ô0°D·N±NÀ1Ñ4EÌÒ4PØ�I‰IÐ)Ð*Ð*WÐXÐZaÔbØØ�Y‰Y�q‰\×Ñ 4Ò'ØWˆCØ�I‰I�c—j‘j §¡¨1¡×!3Ñ!3Ð5EÀtÓLÈgÔVØØrh  c                ó  — t        |j                  «      dk7  st        |j                  d   t        «      syt        |j                  t
        «      sy|j                  }|j                  }t        |t        «      sy|j                  |vry|S )z…Returns the call expression if `s` is a declaration of `typevarlike_type`
        (TypeVar or ParamSpec), or None otherwise.
        r#  r   N)	r’  r“  r�  rg   rm  r>   rÂ  rs   r†  )re  r$  Útypevarlike_typesr¨  rÂ  s        rf  rv  z,SemanticAnalyzer.get_typevarlike_declaration™  sm   € ô ˆq�y‰y‹>˜QÒ¤j°·±¸1±¼xÔ&HØÜ˜!Ÿ(™(¤HÔ-ØØ�x‰xˆØ—‘ˆÜ˜&¤'Ô*ØØ�?‰?Ð"3Ñ3ØØˆrh  c                óÂ  — |dkD  }d}d}| j                  «       }	t        t        j                  «      }
t	        |||«      D �]Ã  \  }}}|j                  «       s"| j                  t        j                  |«        y |dk(  r_t        |t        «      r|j                  dv r|j                  dk(  }Œm| j                  t        j                  j                  d«      |«        y |dk(  r_t        |t        «      r|j                  dv r|j                  dk(  }ŒÑ| j                  t        j                  j                  d«      |«        y |dk(  r2|r| j                  d|«        y | j                  d	|||«      }|€ y |}	�Œ9|d
k(  r5| j                  d	|||d¬«      }|xs t        t        j                  «      }
�Œs|dk(  r&| j                  d|«       | j                  d|«        y | j                  t        j                  › d|› d�|«        y  |r|r| j                  d|«       y |dk(  r!| j                  t        j                   |«       y |rt"        }n|rt$        }nt&        }||	|
fS )Nr   FÚ	covariant)r   r¡  r   ÚcontravariantÚboundz2TypeVar cannot have both values and an upper boundr   r”  Trx  r’  z'TypeVar "values" argument not supportedzAUse TypeVar('T', t, ...) instead of TypeVar('T', values=(t, ...))z: "r[  z2TypeVar cannot be both covariant and contravariantr#  )rB  rç   rø   r–  rp  Úis_namedr¼  r   ÚTYPEVAR_UNEXPECTED_ARGUMENTr�  rg   r”  ÚTYPEVAR_VARIANCE_DEFrÖ  Úget_typevarlike_argumentr]  Ú"TYPE_VAR_TOO_FEW_CONSTRAINED_TYPESr%   r$   r(   )re  r|  r…  ÚkindsÚ
num_valuesr'  Ú
has_valuesrŒ  r�  r“  r”  Úparam_valueÚ
param_nameÚ
param_kindÚtv_argr>  s                   rf  ry  z+SemanticAnalyzer.process_typevar_parameters«  s\  € ð   !‘^ˆ
Øˆ	ØˆØ ×,Ñ,Ó.ˆÜ¤	× ?Ñ ?Ó@ˆÜ36°t¸UÀEÓ3Jó *	Ñ/ˆK˜ ZØ×&Ñ&Ô(Ø—	‘	Ô*×FÑFÈÔPÙØ˜[Ò(Ü˜k¬8Ô4¸×9IÑ9IÐM^Ñ9^Ø +× 0Ñ 0°FÑ :‘Ià—I‘IÔ.×CÑC×JÑJÈ;ÓWÐY`ÔaÙØ˜Ò.Ü˜k¬8Ô4¸×9IÑ9IÐM^Ñ9^Ø$/×$4Ñ$4¸Ñ$>‘Mà—I‘IÜ(×=Ñ=×DÑDÀ_ÓUÐW^ôñ  Ø˜wÒ&ÙØ—I‘IÐRÐT[Ô\ÙØ×6Ñ6°yÀ*ÈkÐ[bÓc�Ø�>ÙØ$’Ø˜yÒ(Ø×6Ñ6Ø˜z¨;¸ÐUYð 7ó �ð !ÒA¤G¬I×,@Ñ,@Ó$A’Ø˜xÒ'à—	‘	ÐCÀWÔMØ—	‘	ØWÐY`ôñ à—	‘	Ü'×CÑCÐDÀCÈ
À|ÐSTÐUÐW^ôñ ðU*	ñX ™Ø�I‰IÐJÈGÔTØØ˜1Š_Ø�I‰IÔ&×IÑIÈ7ÔSØÙÜ ‰HÙÜ$‰Hä ˆHØ˜ gÐ-Ð-rh  c                óp   — | j                   €t        «       | _         | j                   j                  |«       y rj  )rc  rM  r#  )re  Úfixeds     rf  Úrecord_fixed_typez"SemanticAnalyzer.record_fixed_typeò  s,   € Ø×ÑÐ#Ü"›uˆDÔØ×Ñ×Ñ˜UÕ#rh  )rX  r:  r<  Úreport_invalid_typevar_argc          
     ó®  — 	 | j                  |dd||||dk(  ¬«      }	|	€t        d g |j                  «      }	|r\t        |	t        «      rLt        |	t
        «      r<|	j                  r0| j                  t        j                  j                  ||«      |«       |	S # t        $ r5 |r0| j                  t        j                  j                  ||«      |«       Y y w xY w)NTFr”  )r7  r9  rX  r:  r<  r=  )ró  rð   r¸  r�  rñ   rç   r€  r¼  r   r�  rÖ  r   )
re  Útypevarlike_namer˜  r—  r'  rX  r:  r<  rž  rI  s
             rf  r’  z)SemanticAnalyzer.get_typevarlike_argument÷  sà   € ð'	ð ×1Ñ1ØØ"&Ø%*Ø$7Ø*CØ)Ø#-°Ñ#:ð 2ó ˆHð Ðô +¨4°°W·\±\ÓB�á*Ü˜x¬Ô4Ü˜x¬Ô1Ø×*Ò*à—	‘	Ü$×=Ñ=×DÑDÐEUÐWaÓbØôð ˆOøÜ#ò 	Ù)Ø—	‘	Ü$×=Ñ=×DÑDÐEUÐWaÓbØôñ ð	ús   ‚BB Â;CÃCc                óÜ   — |sy |j                   d   }t        |t        «      sJ ‚|j                  r| j	                  d|«       y | j                  ||j                  |«      sy |j                  S )Nr   z9Cannot declare the type of a TypeVar or similar construct)r“  r�  rg   rl  r¼  r5  r”  )re  r$  r¨  rl  s       rf  rw  z)SemanticAnalyzer.extract_typevarlike_name,  sb   € ÙØà—‘˜1‘ˆÜ˜&¤(Ô+Ð+Ð+Ø�6Š6Ø�I‰IÐQÐSTÔUØà×*Ñ*¨4°·±¸aÔ@ØØ�{‰{Ðrh  c           
     óx  — | j                  |d«      }|sy| j                  ||«      }|€y|j                  dd j                  t        «      }|dk7  r| j                  d|«       | j                  �| j                  j                  «        t        t        j                  «      }t        |j                  d|z   d |j                  d|z   d «      D ]d  \  }}|dk(  rH| j                  d|||d	d	d¬
«      }|xs t        t        j                  «      }| j!                  ||«      }ŒS| j                  d|«       Œf | j                  }	d| _        |j"                  sRt%        || j'                  |«      | j)                  «       |t*        «      }
|j,                  |
_        |	|
_        |
|_        d	}nWt1        |j"                  t$        «      sJ ‚||j"                  j2                  k7  }||j"                  _        |	|j"                  _        t5        |«      r| j7                  dd||¬«       | j9                  ||j"                  |«       y	)ac  Checks if s declares a ParamSpec; if yes, store it in symbol table.

        Return True if this looks like a ParamSpec (maybe with errors), otherwise return False.

        In the future, ParamSpec may accept bounds and variance arguments, in which
        case more aggressive sharing of code with process_typevar_declaration should be pursued.
        )ztyping_extensions.ParamSpecztyping.ParamSpecFNr#  r   z-Too many positional arguments for "ParamSpec"r”  Ú	ParamSpecT)rX  r:  rž  zOThe variance and bound arguments to ParamSpec do not have defined semantics yetzParamSpec defaultrŽ  )rv  rw  rB  r6  r"   r¼  rc  rC  rç   rø   r–  rp  r|  r^  r’  r]  rE  rI  rn   rÝ  rB  r(   r¸  rH  r�  r”  r»   r•  rß  )re  r$  r¨  r”  r|  r”  r—  r˜  rš  rH  Úparamspec_varr.  s               rf  r�  z.SemanticAnalyzer.process_paramspec_declaration:  s)  € ð ×/Ñ/ØÐBó
ˆñ Øà×,Ñ,¨Q°Ó5ˆØˆ<Øà—>‘> ! "Ð%×+Ñ+¬GÓ4ˆØ�qŠ=Ø�I‰IÐEÀqÔIà×ÑÐ'Ø×Ñ×"Ñ"Ô$Ü¤	× ?Ñ ?Ó@ˆÜ'*Ø�I‰I�a˜(‘l�nÐ% t§~¡~°a¸(±l°nÐ'Eó(
ò 	Ñ#ˆK˜ð ˜YÒ&Ø×6Ñ6ØØØØØ(,Ø.2Ø/4ð 7ó �ð !ÒA¤G¬I×,@Ñ,@Ó$A�Ø×6Ñ6°wÀÓL‘ð
 —	‘	ØeØõð'	ð. ×*Ñ*ˆØˆÔð �}Š}Ü)Ø�d×)Ñ)¨$Ó/°×1AÑ1AÓ1CÀWÌióˆMð "&§¡ˆMÔØ,;ˆMÔ)Ø)ˆDŒMØ‰Gä˜dŸm™m¬]Ô;Ð;Ð;Ø §¡×!6Ñ!6Ñ6ˆGØ$+ˆD�M‰MÔ!Ø,;ˆD�M‰MÔ)Ü˜7Ô#Ø×$Ñ$ TÐ+>ÀÐRYÐ$ÔZà�‰˜˜dŸm™m¨QÔ/Ørh  c           
     óÄ  — | j                  |d«      }|sy|j                  dd j                  t        «      }|dk7  r| j	                  d|«       t        t        j                  «      }| j                  �| j                  j                  «        t        |j                  d|z   d |j                  d|z   d «      D ]h  \  }}|dk(  rH| j                  d|||d	dd	¬
«      }|xs t        t        j                  «      }| j                  ||«      }ŒS| j	                  d|› d�|«       Œj | j                  }d| _        | j!                  ||«      }	|	€y|j"                  st| j%                  d| j'                  «       g«      }
t)        |	| j+                  |	«      |
j-                  «       |
|t.        «      }|j0                  |_        ||_        ||_        d	}nWt5        |j"                  t(        «      sJ ‚||j"                  j6                  k7  }||j"                  _        ||j"                  _        t9        |«      r| j;                  dd||¬«       | j=                  |	|j"                  |«       y	)z³Checks if s declares a TypeVarTuple; if yes, store it in symbol table.

        Return True if this looks like a TypeVarTuple (maybe with errors), otherwise return False.
        )ztyping_extensions.TypeVarTupleztyping.TypeVarTupleFr#  Nr   z0Too many positional arguments for "TypeVarTuple"r”  ÚTypeVarTupleT)rX  rž  r<  zUnexpected keyword argument "z" for "TypeVarTuple"r8  zTypeVarTuple defaultrŽ  )rv  rB  r6  r"   r¼  rç   rø   r–  rc  rC  rp  r|  r^  r’  r]  rF  rw  rI  rþ  rB  rŽ   rÝ  r:  r(   r¸  rH  r�  r”  r»   r•  rß  )re  r$  r¨  r|  r”  r—  r˜  rš  rH  r”  r@  Útypevartuple_varr.  s                rf  rŽ  z1SemanticAnalyzer.process_typevartuple_declaration„  sY  € ð
 ×/Ñ/ØÐHó
ˆñ Øà—>‘> ! "Ð%×+Ñ+¬GÓ4ˆØ�qŠ=Ø�I‰IÐHÈ!ÔLä¤	× ?Ñ ?Ó@ˆØ×ÑÐ'Ø×Ñ×"Ñ"Ô$Ü'*Ø�I‰I�a˜(‘l�nÐ% t§~¡~°a¸(±l°nÐ'Eó(
ò 	_Ñ#ˆK˜ð ˜YÒ&Ø×6Ñ6Ø"ØØØØ(,Ø/4Ø!%ð 7ó �ð !ÒA¤G¬I×,@Ñ,@Ó$A�Ø×9Ñ9¸'À;ÓO‘à—	‘	Ð9¸*¸ÐEYÐZÐ\]Õ^ð!	_ð$ ×*Ñ*ˆØˆÔà×,Ñ,¨Q°Ó5ˆØˆ<Øð �}Š}Ø!Ÿ_™_Ð-=À×@PÑ@PÓ@RÐ?SÓTˆNÜ/ØØ×#Ñ# DÓ)à×,Ñ,Ó.ØØÜó Ðð %)§I¡IÐÔ!Ø/>ÐÔ,Ø,ˆDŒMØ‰Gä˜dŸm™mÔ-=Ô>Ð>Ð>Ø §¡×!6Ñ!6Ñ6ˆGØ$+ˆD�M‰MÔ!Ø,;ˆD�M‰MÔ)Ü˜7Ô#Ø×$Ñ$ TÐ+AÀ1ÐU\Ð$Ô]à�‰˜˜dŸm™m¨QÔ/Ørh  c                óL  — t        |t        g «      «      }| j                  ||«      |_        t	        t        «       || j                  «      }||_        |j                  j                  }|s&|j                  | j                  «       j                  g}|g|z   |_	        |g|_        |S rj  )r@   r;   rã  r†  rŠ   r   r  r§  rl  r‘  rB  rr  )re  r”  Úbasetype_or_fallbackr¸  Ú	class_defr§  r‘  s          rf  Úbasic_new_typeinfoz#SemanticAnalyzer.basic_new_typeinfoÊ  s“   € Ü˜T¤5¨£9Ó-ˆ	ð "×0Ñ0°°tÓ<ˆ	Ôäœ› y°$·/±/ÓBˆØˆ	ŒØ"×'Ñ'×+Ñ+ˆÙà'×,Ñ,¨d×.>Ñ.>Ó.@×.EÑ.EÐFˆCØ�6˜C‘<ˆŒØ*Ð+ˆŒ
Øˆrh  c                óì  — g }|D ]£  }	 | j                  | j                  |«      d¬«      }|€t        dg |j                  «      }t	        |«      rI| j                  t        j                  |«       |j                  t        t        j                  «      «       n|j                  |«       Œ¥ |S # t        $ r= | j                  d|«       |j                  t        t        j                  «      «       Y Œíw xY w)zBAnalyze types from values expressions in type variable definition.Tr6  NzType expected)rÜ  r   rð   r¸  r  r¼  r   rG  r  rç   rø   r]  r   )re  rÔ  rU  r¤  rI  s        rf  rx  z$SemanticAnalyzer.analyze_value_typesâ  sÙ   € àˆØò 	=ˆDð=ØŸ>™>Ø×0Ñ0°Ó6È$ð *ó �ð Ð#ô  /¨t°R¸¿¹ÓC�HÜ  Ô*Ø—I‘IÔ.×OÑOÐQUÔVØ—M‘M¤'¬)×*>Ñ*>Ó"?Õ@à—M‘M (Ô+øð	=ð$ ˆøô (ò =Ø—	‘	˜/¨4Ô0Ø—‘œg¤i×&:Ñ&:Ó;Ö<ð=ús   ‰B B-Â-AC3Ã2C3c                ó  — |j                   d   }t        |j                   «      dk7  st        |t        «      sy|j                  r| j                  |j                  «      syt        |j                  t        «      sJ ‚| j                  «       rÀt        |t        «      r°|j                  }t        |t        «      rd|_        | j                  |j                  «      }| j                  €J ‚|�”| j                  j                  t        |«      v rs| j                  j                  j                  rS| j!                  t"        j$                  |«       n2t        |t&        «      r| j)                  |«      r| j+                  |«       |j                  j,                  sqt        |j.                  t0        «      rO|j.                  j2                  r9| j4                  j6                  r"| j!                  d|t8        j:                  ¬«       yd|_        yy)z-Check if assignment defines a class variable.r   r#  NTz*ClassVar without type argument becomes Anyr4  )r“  r’  r�  rs   rl  r  rÿ   r9  rg   r¤  r�   rÜ  rF  rÐ   r  r  r¼  r   ÚCLASS_VAR_WITH_GENERIC_SELFrd   ræ  r  r|  rm  r‚   rÖ  r1  Údisallow_any_genericsrC  ÚTYPE_ARG)re  r$  rl  r¤  rI  s        rf  r›  zSemanticAnalyzer.check_classvarù  so  € à—‘˜1‘ˆÜˆq�y‰y‹>˜QÒ¤j°¼Ô&AØØ�vŠv˜T×-Ñ-¨a¯f©fÔ5ØÜ˜!Ÿ&™&¤+Ô.Ð.Ð.Ø×ÑÔ ¤Z°¼Ô%AØ—;‘;ˆDÜ˜$¤Ô$Ø#'�Ô Ø—~‘~ a§f¡fÓ-ˆHØ—9‘9Ð(Ð(Ð(àÐ$Ø—I‘I×'Ñ'¬=¸Ó+BÑBØ—I‘I—N‘N×,Ò,à—	‘	Ô*×FÑFÈÕJÜ˜F¤JÔ/°4×3JÑ3JÈ6Ô3Rð ×&Ñ& vÔ.Ø�v‰v�{Š{Ü˜!Ÿ(™(¤HÔ-°!·(±(·/²/Ø—<‘<×5Ò5Ø—I‘IÐJÈAÔTY×TbÑTb�IÔcØØˆA�Fð rh  c                ó¬   — t        |t        «      sy| j                  |j                  |«      }|r|j                  sy|j                  j
                  dk(  S )NFztyping.ClassVar)r�  rÿ   r{  r”  r¤  r†  ©re  r«  r}  s      rf  r  zSemanticAnalyzer.is_classvar  sG   € Ü˜#œ{Ô+ØØ×#Ñ# C§H¡H¨cÓ2ˆÙ˜#Ÿ(š(ØØ�x‰x× Ñ Ð$5Ñ5Ð5rh  c                ó²   — t        |t        «      sy| j                  |j                  |«      }|r|j                  sy|j                  j
                  t        v S ©NF)r�  rÿ   r{  r”  r¤  r†  rØ   r²  s      rf  rÕ  zSemanticAnalyzer.is_final_type   sG   € Ü˜#œ{Ô+ØØ×#Ñ# C§H¡H¨cÓ2ˆÙ˜#Ÿ(š(ØØ�x‰x× Ñ Ô$4Ð4Ð4rh  c                óD   — | j                  t        j                  |«       y rj  )r¼  r   ÚCLASS_VAR_OUTSIDE_OF_CLASS)re  r'  s     rf  r  z&SemanticAnalyzer.fail_invalid_classvar(  s   € Ø�	‰	Ô"×=Ñ=¸wÕGrh  c                óÀ  — t        |t        t        f«      rtt        d„ |D «       «      rbt	        t
        t           |«      }t        |j                  g|D �cg c]  }|j                  ‘Œ c}¢­Ž }|D ]  ^}}| j                  |||«       Œ yt        |t        «      �r¾| j                  |«      }	|	�r©t        |	j                  t        «      �r�|D �]†  }
t        |
t        «      sŒt        |
j                  t        «      r|
j                  j                  �ŒFt        |
t        «      r*| j!                  «       j#                  |
j$                  «      }n`t        |
t&        «      rO| j)                  |
«      r>| j                  €J ‚| j                  j*                  j#                  |
j$                  «      }nŒà|sŒãt        |j                  t        «      r]|j                  |	j                  urEt        |
t        t&        f«      sJ ‚| j-                  dj/                  |
j$                  «      |«       �ŒZ|
j0                  s�Œh|	j                  €J ‚|	j                  |_        �Œ‰ yyyyc c}w )a(  Propagate module references across assignments.

        Recursively handles the simple form of iterable unpacking; doesn't
        handle advanced unpacking with *rest, dictionary unpacking, etc.

        In an expression like x = y = z, z is the rval and lvals will be [x,
        y].

        c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrj  )r�  r„   ru  s     rf  r¥  z=SemanticAnalyzer.process_module_assignment.<locals>.<genexpr>7  s   è ø€ ò ;
Ø)*ŒJ�qœ)×$ñ;
ùrÈ  NzZCannot assign multiple modules to name "{}" without explicit "types.ModuleType" annotation)r�  r„   r`   rÔ  r   r‡  rp  rÔ  rŸ  rs   r¬  r¤  re   r�   rl  rg   r!  rÛ  r”  rd   ræ  r…  r¼  rÖ  râ  r%  )re  ÚlvalsÚrvalr>  Ú	seq_lvalsr¬  Úelementwise_assignmentsr¯  ÚlvsÚrnoderØ  Úlnodes               rf  rŸ  z*SemanticAnalyzer.process_module_assignment+  sî  € ô �dœY¬Ð1Ô2´sñ ;
Ø.3ô;
ô 8
ô œT¤)™_¨eÓ4ˆIô$ '*¨$¯*©*Ð&TÈÖ7SÀA¸¿»Ò7SÒ&TÐ#Ø3ò =���SØ×.Ñ.¨s°B¸Õ<ñ=ä˜œgÕ&Ø×)Ñ)¨$Ó/ˆEÚœ E§J¡J´Õ9Ø!ó 5�DÜ% d¬GÔ4Ø ä! $§)¡)¬SÔ1°d·i±i·n±nÐ6PØ ô " $¬Ô1Ø $× 9Ñ 9Ó ;× ?Ñ ?ÀÇ	Á	Ó J™Ü# D¬*Ô5¸$×:QÑ:QÐRVÔ:WØ#Ÿy™yÐ4Ð4Ð4Ø $§	¡	§¡× 3Ñ 3°D·I±IÓ >™à âÜ% e§j¡j´(Ô;ÀÇ
Á
ÐRW×R\ÑR\Ñ@\Ü#-¨d´X¼zÐ4JÔ#KÐKÐ#KØ ŸI™Ið!QßQWÑQWÐX\×XaÑXaÓQbØ #öð "×1Ô1Ø#(§:¡:Ð#9Ð9Ð#9Ø*/¯*©*˜EžKñ75ð :ˆuð 'ùò 8Ts   ÁI
c                óz  — t        |j                  «      dk(  r£t        |j                  d   t        «      r…|j                  d   j                  dk(  rh|j                  d   j
                  t        k(  rGt        |j                  t        t        f«      r&| j                  |j                  j                  «       yyyyyy)z1Export names if argument is a __all__ assignment.r#  r   rÿ  N)r’  r“  r�  rg   r”  rA  r&   rm  r`   r„   Úadd_exportsrÔ  r~  s     rf  r   zSemanticAnalyzer.process__all__s  s”   € ô �—	‘	‹N˜aÒÜ˜1Ÿ9™9 Q™<¬Ô2Ø—	‘	˜!‘×!Ñ! YÒ.Ø—	‘	˜!‘×!Ñ!¤TÒ)Ü˜1Ÿ8™8¤h´	Ð%:Ô;à×Ñ˜QŸX™XŸ^™^Õ,ð <ð *ð /ð 3ð  rh  c                ól  — | j                   j                  sy t        |j                  «      dk(  �rt	        |j                  d   t
        «      ræ|j                  d   j                  dk(  rÉ|j                  d   j                  t        k(  r¨|j                  }t	        |t        t        f«      s| j                  d|«       y |j                  }g }|D ]@  }t	        |t        «      s| j                  d|«       Œ&|j                  |j                   «       ŒB | j"                  sJ ‚|| j"                  _        y y y y y )Nr#  r   Ú__deletable__zC"__deletable__" must be initialized with a list or tuple expressionz5Invalid "__deletable__" item; string literal expected)r1  rz  r’  r“  r�  rg   r”  rA  r+   rm  r`   r„   r¼  rÔ  r|   r  r|  rl  Údeletable_attributes)re  r$  rm  rÔ  Úattrsrz  s         rf  r¡  z%SemanticAnalyzer.process__deletable__~  s   € Ø�|‰|×!Ò!Øä�—	‘	‹N˜aÓÜ˜1Ÿ9™9 Q™<¬Ô2Ø—	‘	˜!‘×!Ñ! _Ò4Ø—	‘	˜!‘×!Ñ!¤TÒ)à—X‘XˆFÜ˜f¤x´Ð&;Ô<Ø—	‘	Ð_ÐabÔcØØ—L‘LˆEØˆEØò -�Ü! $¬Ô0Ø—I‘IÐUÐW[Õ\à—L‘L §¡Õ,ð	-ð
 —9’9Ð�9Ø-2ˆD�I‰IÕ*ð *ð 5ð 3ð  rh  c                ó¬  — t        | j                  t        «      �r9t        |j                  «      dk(  �rt        |j                  d   t
        «      �r |j                  d   j                  dk(  �râ|j                  d   j                  t        k(  �rÀt        |j                  t        t        t        t        t        f«      syt        d„ | j                  j                   dd D «       «      ryd}g }t        |j                  t        «      r|j#                  |j                  «       n�t        |j                  t        t        t        f«      r&|j%                  |j                  j&                  «       n6|j                  j&                  D ]  \  }}|r|�|j#                  |«       Œd}Œ g }|D ]?  }t        |t        «      r+|j(                  d	k7  r|j#                  |j(                  «       Œ>d}ŒA |sy| j                  j                   dd D ]+  }|j*                  €J ‚|j%                  |j*                  «       Œ- t-        |«      | j                  _        yyyyyy)
z…
        Processing ``__slots__`` if defined in type.

        See: https://docs.python.org/3/reference/datamodel.html#slots
        r#  r   rü  Nc              3  ó8   K  — | ]  }|j                   d u –— Œ y ­wrj  )Úslots)r¢  rŠ  s     rf  r¥  z4SemanticAnalyzer.process__slots__.<locals>.<genexpr>©  s   è ø€ Ò@ q�1—7‘7˜d”?Ñ@ùrY  r®  TFÚ__dict__)r�  rl  rŠ   r’  r“  rg   r”  rA  r+   rm  r|   r`   r„   rw   rI   r­  r‘  r  r  rÔ  r|  rÈ  rM  )	re  r$  Úconcrete_slotsrm  ÚkeyrW  rÈ  rz  Ú
super_types	            rf  r¢  z!SemanticAnalyzer.process__slots__•  sä  € ô �t—y‘y¤(Õ+Ü�A—I‘I“ !Ó#Ü˜1Ÿ9™9 Q™<¬Õ2Ø—	‘	˜!‘×!Ñ! [Ó0Ø—	‘	˜!‘×!Ñ!¤TÓ)ô ˜aŸh™h¬´(¼IÄwÔPXÐ(YÔZð äÑ@¨D¯I©I¯M©M¸!¸BÐ,?Ô@Ô@ð à!ˆNØ')ˆFÜ˜!Ÿ(™(¤GÔ,Ø—‘˜aŸh™hÕ'Ü˜AŸH™H¤x´¼GÐ&DÔEØ—‘˜aŸh™hŸn™nÕ-ð  Ÿh™hŸn™nò /‘F�C˜Ù%¨#¨/ØŸ™ cÕ*à).™ð	/ð ˆEØò +�ô ˜d¤GÔ,°·±¸zÒ1IØ—L‘L §¡Õ,à%*‘Nð+ñ "ð ð #Ÿi™iŸm™m¨A¨bÐ1ò /�
Ø!×'Ñ'Ð3Ð3Ð3Ø—‘˜Z×-Ñ-Õ.ð/ô " %›jˆD�I‰I�Oð[ *ð 1ð 3ð $ð ,rh  c                ó¾   — |j                   ry | j                  dxx   dz  cc<   |j                  D ]  }| j                  |«       Œ | j                  dxx   dz  cc<   y )Nr®  r#  )Úis_unreachabler;  r�  r³  )re  r�  r$  s      rf  Úvisit_blockzSemanticAnalyzer.visit_blockÔ  sX   € Ø×ÒØØ×Ñ˜Ó Ñ!ÓØ—‘ò 	ˆAØ�K‰K˜�Nð	à×Ñ˜Ó Ñ!Ôrh  c                ó,   — |r| j                  |«       y y rj  )rÏ  )re  r�  s     rf  Úvisit_block_maybez"SemanticAnalyzer.visit_block_maybeÜ  s   € ÙØ×Ñ˜QÕð rh  c                óH   — || _         |j                  j                  | «       y rj  )rI  r÷  r³  r~  s     rf  Úvisit_expression_stmtz&SemanticAnalyzer.visit_expression_stmtà  s   € ØˆŒØ	�‰�‰�dÕrh  c                ó@  — | j                   }|| _         | j                  «       s| j                  d|«       | j                  r| j                  d|d¬«       |j                  r6|j                  j                  | «       | j                  |j                  «       || _         y )Nz"return" outside functionz%"return" not allowed in except* blockT©r�  )rI  rÓ  r¼  r[  r÷  r³  rÚ  )re  r$  ry  s      rf  Úvisit_return_stmtz"SemanticAnalyzer.visit_return_stmtä  sy   € Ø�n‰nˆØˆŒØ×!Ñ!Ô#Ø�I‰IÐ1°1Ô5Ø×4Ò4Ø�I‰IÐ=¸qÈ$ˆIÔOØ�6Š6Ø�F‰F�M‰M˜$ÔØ×-Ñ-¨a¯f©fÔ5Øˆ�rh  c                ó°   — || _         |j                  r|j                  j                  | «       |j                  r|j                  j                  | «       y y rj  )rI  r÷  r³  Ú	from_exprr~  s     rf  Úvisit_raise_stmtz!SemanticAnalyzer.visit_raise_stmtð  s>   € ØˆŒØ�6Š6Ø�F‰F�M‰M˜$ÔØ�;Š;Ø�K‰K×Ñ˜tÕ$ð rh  c                ó°   — || _         |j                  r|j                  j                  | «       |j                  r|j                  j                  | «       y y rj  )rI  r÷  r³  rP  r~  s     rf  Úvisit_assert_stmtz"SemanticAnalyzer.visit_assert_stmt÷  s<   € ØˆŒØ�6Š6Ø�F‰F�M‰M˜$ÔØ�5Š5Ø�E‰E�L‰L˜Õð rh  c                ó°  — || _         |j                  j                  | «       |j                  j                  | «       t	        |j                  t
        «      r|j                  j                  dk(  re|j                  j                  t        k(  rGt	        |j                  t        t        f«      r&| j                  |j                  j                  «       y y y y y )Nrÿ  )rI  rl  r³  rm  r�  rg   r”  rA  r&   r`   r„   rÁ  rÔ  r~  s     rf  Úvisit_operator_assignment_stmtz/SemanticAnalyzer.visit_operator_assignment_stmtþ  s”   € ØˆŒØ	�‰�‰˜ÔØ	�‰�‰˜Ôä�q—x‘x¤Ô*Ø—‘—‘ Ò*Ø—‘—‘¤Ò%Ü˜1Ÿ8™8¤h´	Ð%:Ô;à×Ñ˜QŸX™XŸ^™^Õ,ð <ð &ð +ð +rh  c                ó`  — || _         |j                  j                  | «       | j                  dxx   dz  cc<   | j	                  dd¬«      5  |j
                  j                  | «       d d d «       | j                  dxx   dz  cc<   | j                  |j                  «       y # 1 sw Y   Œ<xY w)Nr®  r#  FT©r|  r}  )rI  r÷  r³  rC  r  r�  rÑ  r‘  r~  s     rf  Úvisit_while_stmtz!SemanticAnalyzer.visit_while_stmt
  s‹   € ØˆŒØ	�‰�‰�dÔØ�‰˜Ó˜qÑ ÓØ×.Ñ.°UÈ$Ð.ÓOñ 	 Ø�F‰F�M‰M˜$Ô÷	 à�‰˜Ó˜qÑ ÓØ×Ñ˜qŸ{™{Õ+÷	 ð 	 ús   ÁB$Â$B-c                óº  — |j                   rY| j                  «       r| j                  d   j                  s0| j	                  t
        j                  |t        j                  ¬«       || _	        |j                  j                  | «       | j                  |j                  |j                  d ud¬«       |j                  r’| j                  |j                  «      r| j!                  |j                  «       t#        |j                  t$        «      }| j'                  |j                  |¬«      }|�#| j)                  |j                  |«       ||_        | j*                  dxx   dz  cc<   | j-                  dd¬«      5  | j/                  |j0                  «       d d d «       | j*                  dxx   dz  cc<   | j3                  |j4                  «       y # 1 sw Y   Œ<xY w)	Nr®  r4  T)rÔ  rA  ró  r#  Frß  )Úis_asyncrÓ  r@  rQ  r¼  r   ÚASYNC_FOR_OUTSIDE_COROUTINErC  r‚  rI  r÷  r³  r}  r  Ú
index_typer  r  r�  r„   rÜ  r÷  rC  r  rÏ  r�  rÑ  r‘  )re  r$  r;  rI  s       rf  Úvisit_for_stmtzSemanticAnalyzer.visit_for_stmt  sl  € Ø�:Š:Ø×%Ñ%Ô'¨t×/BÑ/BÀ2Ñ/F×/SÒ/SØ—	‘	Ô*×FÑFÈÔPU×P\ÑP\�	Ô]àˆŒØ	�‰�‰�dÔð 	×Ñ˜AŸG™G°1·<±<ÀtÐ3KÐZ^ÐÔ_Ø�<Š<Ø×Ñ §¡Ô-Ø×*Ñ*¨1¯7©7Ô3Ü",¨Q¯W©W´iÓ"@ÐØ—~‘~ a§l¡lÐH[�~Ó\ˆHØÐ#Ø×)Ñ)¨!¯'©'°8Ô<Ø'�”à�‰˜Ó˜qÑ ÓØ×.Ñ.°UÈ$Ð.ÓOñ 	%Ø×Ñ˜QŸV™VÔ$÷	%à�‰˜Ó˜qÑ ÓØ×Ñ˜qŸ{™{Õ+÷	%ð 	%ús   Å:GÇGc                ó¢   — || _         | j                  d   dk(  r| j                  d|dd¬«       | j                  r| j                  d|d¬«       y y )Nr®  r   z"break" outside loopT©r�  r
  z$"break" not allowed in except* blockrÕ  ©rI  rC  r¼  rZ  r~  s     rf  Úvisit_break_stmtz!SemanticAnalyzer.visit_break_stmt,  sP   € ØˆŒØ�?‰?˜2Ñ !Ò#Ø�I‰IÐ,¨a¸ÀtˆIÔLØ×(Ò(Ø�I‰IÐ<¸aÈˆIÕNð )rh  c                ó¢   — || _         | j                  d   dk(  r| j                  d|dd¬«       | j                  r| j                  d|d¬«       y y )Nr®  r   z"continue" outside loopTrç  z'"continue" not allowed in except* blockrÕ  rè  r~  s     rf  Úvisit_continue_stmtz$SemanticAnalyzer.visit_continue_stmt3  sP   € ØˆŒØ�?‰?˜2Ñ !Ò#Ø�I‰IÐ/°¸DÈ$ˆIÔOØ×(Ò(Ø�I‰IÐ?ÀÈDˆIÕQð )rh  c                ó2  — || _         t        || j                  «       t        t	        |j
                  «      «      D ]>  }|j
                  |   j                  | «       | j                  |j                  |   «       Œ@ | j                  |j                  «       y rj  )rI  r°   r1  rý  r’  r÷  r³  rÏ  r�  rÑ  r‘  )re  r$  r£  s      rf  Úvisit_if_stmtzSemanticAnalyzer.visit_if_stmt:  ss   € ØˆŒÜ*¨1¨d¯l©lÔ;Ü”s˜1Ÿ6™6“{Ó#ò 	(ˆAØ�F‰F�1‰I×Ñ˜TÔ"Ø×Ñ˜QŸV™V A™YÕ'ð	(ð 	×Ñ˜qŸ{™{Õ+rh  c                ó6   — || _         | j                  || «       y rj  )rI  Úanalyze_try_stmtr~  s     rf  Úvisit_try_stmtzSemanticAnalyzer.visit_try_stmtB  s   € ØˆŒØ×Ñ˜a Õ&rh  c                ó*  — |j                   j                  |«       t        |j                  |j                  |j
                  «      D ]o  \  }}}|r|j                  |«       |r| j                  |«       | j                  | j                  xs |j                  «      5  |j                  |«       d d d «       Œq |j                  r|j                  j                  |«       |j                  r|j                  j                  |«       y y # 1 sw Y   ŒËxY wrj  )r�  r³  rp  r¶  ÚvarsÚhandlersr}  r  rZ  Úis_starr‘  Úfinally_body)re  r$  rÐ  rl  ræ  Úhandlers         rf  rï  z!SemanticAnalyzer.analyze_try_stmtF  sÜ   € Ø	�‰�‰�gÔÜ"% a§g¡g¨q¯v©v°q·z±zÓ"Bò 	(ÑˆD�#�wÙØ—‘˜GÔ$ÙØ×#Ñ# CÔ(Ø×2Ñ2°4×3PÑ3PÒ3]ÐTU×T]ÑT]Ó^ñ (Ø—‘˜wÔ'÷(ð (ð	(ð �;Š;Ø�K‰K×Ñ˜wÔ'Ø�>Š>Ø�N‰N×!Ñ! 'Õ*ð ÷	(ð (ús   ÂD	Ä	D	c                ó  — || _         g }|j                  rY| j                  «       r| j                  d   j                  s0| j                  t        j                  |t        j                  ¬«       |j                  �rt        |j                  t        «      sJ ‚|j                  D �cg c]  }|€Œ|‘Œ	 }}t        |«      dk(  r| j                  d|«       n«t        |«      dk(  r|j                  g}n�t        |j                  t        «      rct        |«      t        |j                  j                   «      k(  r%|j                  j                   j#                  «       }n%| j                  d|«       n| j                  d|«       g }t%        |j&                  |j                  «      D ]·  \  }}|j)                  | «       |sŒ| j+                  ||j                  d u¬«       |sŒ<|j-                  d«      }| j/                  |«      r| j1                  |«       t        |t2        «      }| j5                  ||¬	«      }	|	€Œ•|j7                  |	«       | j9                  ||	«       Œ¹ ||_        | j=                  |j>                  «       y c c}w )
Nr®  r4  r   z5Invalid type comment: "with" statement has no targetsr#  z/Incompatible number of types for "with" targetsz3Multiple types expected for multiple "with" targets)rÔ  ró  ) rI  râ  rÓ  r@  rQ  r¼  r   ÚASYNC_WITH_OUTSIDE_COROUTINErC  r‚  rp  r�  rñ   rü  r’  rô   rÔ  rŽ  rp  r÷  r³  r}  rð  r  r  r„   rÜ  r  r÷  Úanalyzed_typesrÏ  r�  )
re  r$  r¶  râ  Úactual_targetsÚ	new_typesÚer½  r;  rI  s
             rf  Úvisit_with_stmtz SemanticAnalyzer.visit_with_stmtT  s  € ØˆŒØˆà�:Š:Ø×%Ñ%Ô'¨t×/BÑ/BÀ2Ñ/F×/SÒ/SØ—	‘	Ô*×GÑGÈÔQV×Q]ÑQ]�	Ô^à×ÓÜ˜a×/Ñ/´Ô<Ð<Ð<Ø)*¯©ÖC A°Q±]šaÐCˆNÐCÜ�>Ó" aÒ'à—	‘	ÐQÐSTÕUÜ�^Ó$¨Ò)à×*Ñ*Ð+‘Ü˜A×-Ñ-¬yÔ9ä�~Ó&¬#¨a×.?Ñ.?×.EÑ.EÓ*FÒFØ×-Ñ-×3Ñ3×8Ñ8Ó:‘Eð —I‘IÐOÐQRÕSð —	‘	ÐOÐQRÔSà "ˆ	Ü˜Ÿ™ §¡Ó)ò 	?‰DˆAˆqØ�H‰H�TŒNÚØ×#Ñ# A°Q×5FÑ5FÈdÐ5RÐ#ÔSò ØŸ	™	 !›�AØ×'Ñ'¨Ô*Ø×2Ñ2°1Ô5Ü*4°Q¼	Ó*BÐ'Ø#Ÿ~™~¨aÐEX˜~ÓY�HØÑ+à!×(Ñ(¨Ô2Ø×1Ñ1°!°XÕ>ð	?ð" %ˆÔà×Ñ˜Ÿ™Õ ùòM Ds   Â&I?Â.I?c                ó¤   — || _         |j                  j                  | «       | j                  |j                  «      s| j	                  d|«       y y )NzInvalid delete target)rI  r÷  r³  Úis_valid_del_targetr¼  r~  s     rf  Úvisit_del_stmtzSemanticAnalyzer.visit_del_stmt†  s?   € ØˆŒØ	�‰�‰�dÔØ×'Ñ'¨¯©Ô/Ø�I‰IÐ-¨qÕ1ð 0rh  c                ó¦   ‡ — t        |t        t        t        f«      ryt        |t        t
        f«      rt        ˆ fd„|j                  D «       «      S y)NTc              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrj  )rÿ  )r¢  rz  re  s     €rf  r¥  z7SemanticAnalyzer.is_valid_del_target.<locals>.<genexpr>�  s   øè ø€ ÒJ¸$�t×/Ñ/°×5ÑJùs   ƒF)r�  r\   rg   rd   r„   r`   rÔ  rÔ  r~  s   ` rf  rÿ  z$SemanticAnalyzer.is_valid_del_targetŒ  s>   ø€ Ü�aœ)¤X¬zÐ:Ô;ØÜ˜œI¤xÐ0Ô1ÜÓJÀ!Ç'Á'ÔJÓJÐJàrh  c                ó¾   — || _         |j                  D ]G  }|| j                  d   v r| j                  d|› d�|«       | j                  d   j                  |«       ŒI y )Nr®  úName "ú" is nonlocal and global)rI  r…  r7  r¼  r6  r#  )re  r  r”  s      rf  Úvisit_global_declz"SemanticAnalyzer.visit_global_decl”  s`   € ØˆŒØ—G‘Gò 	,ˆDØ�t×*Ñ*¨2Ñ.Ñ.Ø—	‘	˜F 4 &Ð(@ÐAÀ1ÔEØ×Ñ˜bÑ!×%Ñ% dÕ+ñ	,rh  c           	     ó†  — || _         | j                  «       r| j                  d|«       y |j                  D �]  }t	        t        | j                  d d «      t        | j                  d d «      «      D ]-  \  }}|€Œ	||v sŒ|t        k(  r| j                  d|› d�|«        n | j                  d|› d�|«       | j                  d   �2|| j                  d   v r!| j                  dj                  |«      |«       || j                  d   v r| j                  d|› d	�|«       | j                  d   j                  |«       �Œ
 y )
Nz0nonlocal declaration not allowed at module levelr®  z1nonlocal binding not allowed for type parameter "r[  zNo binding for nonlocal "z" foundzGName "{}" is already defined in local scope before nonlocal declarationr  r  )rI  ré  r¼  r…  rp  rÍ  r8  r:  r*  rÖ  r6  r7  r#  )re  rÈ  r”  Útablerƒ  s        rf  Úvisit_nonlocal_declz$SemanticAnalyzer.visit_nonlocal_decl›  sM  € ØˆŒØ×ÑÔ!Ø�I‰IÐHÈ!ÕLàŸ™ó 2�Ü),Ü˜TŸ[™[¨¨"Ð-Ó.´¸×9IÑ9IÈ#È2Ð9NÓ0Oó*ò 
LÑ%�E˜:ð Ñ(¨T°Uª]Ø%Ô)9Ò9Ø ŸI™IØ"SÐTXÐSYÐYZÐ [Ð]^ôñ ð
Lð —I‘IÐ 9¸$¸¸wÐGÈÔKà—;‘;˜r‘?Ð.°4¸4¿;¹;Àr¹?Ñ3JØ—I‘Ið<ß<B¹FÀ4»LØôð ˜4×,Ñ,¨RÑ0Ñ0Ø—I‘I  t fÐ,DÐEÀqÔIØ×#Ñ# BÑ'×+Ñ+¨DÖ1ñ-2rh  c                óv  — || _         t        || j                  «       |j                  j	                  | «       t        t        |j                  «      «      D ]`  }|j                  |   j	                  | «       |j                  |   }|�|j	                  | «       | j                  |j                  |   «       Œb y rj  )rI  r±   r1  Úsubjectr³  rý  r’  ÚpatternsÚguardsrÏ  Úbodies)re  r$  r£  Úguards       rf  Úvisit_match_stmtz!SemanticAnalyzer.visit_match_stmt¸  s�   € ØˆŒÜ-¨a°·±Ô>Ø	�	‰	×Ñ˜ÔÜ”s˜1Ÿ:™:“Ó'ò 	*ˆAØ�J‰J�q‰M× Ñ  Ô&Ø—H‘H˜Q‘KˆEØÐ Ø—‘˜TÔ"Ø×Ñ˜QŸX™X a™[Õ)ñ	*rh  c                ó‚  — |j                   ry || _        | j                  |j                  |«      }|€| j	                  |«       y |j                  D �cg c]  }|j
                  ‘Œ }}	 | j                  «       j                  |j
                  j
                  «      }|rœt        |j                  t        «      s‚t        |j                  t        «      r#|j                  j                  |j                  k(  sE| j                  |j
                  j
                  ||d«       	 | j                  |j                  «       y | j                  «       }| j!                  |j
                  j
                  |j"                  j%                  «       d||d¬«      \  }}}	}
}|st'        t(        j*                  «      }| j-                  «       s#t        |t.        «      xr t        |t0        «      }nt3        |«      }| j5                  |«      s|rO| j7                  |j
                  j
                  |j"                  d¬«       	 | j                  |j                  «       y t9        d„ |D «       «      r| j	                  «        | j;                  |	«       t=        || j>                  | j@                  | jB                  |¬«       tE        |«      }| j>                  jF                  r3tI        |«      r(| jB                  jK                  d||«       tM        |«      }| j-                  «       }t        |t.        «      rUt        |tN        «      rEtQ        || jR                  |
«      s.tU        || jR                  | jV                  d| j>                  ¬	«       t        || jY                  |j
                  j
                  «      | jZ                  |j                  |j\                  |d|d¬
«	      }||_/        ||_0        d}|rêt        |j                  t        t        f«      rÊ|j                  j                  |j                  k(  r§t        |j                  t        «      rƒd |j                  _1        |j                  jd                  |k7  s#|j                  jf                  |jf                  k7  rg||j                  _2        ||j                  _/        ||j                  _3        d}n1||_4        d}n'| jk                  |j
                  j
                  ||«       |r|j                  n|}t        |t        «      sJ ‚| jm                  |||j"                  «       |st3        |«      r)| jo                  |j
                  j
                  d||¬«       |j
                  jq                  | «       | j                  |j                  «       y c c}w # | j                  |j                  «       w xY w)NÚNameT)r7  r  r  r}  rL  c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrj  rQ  )r¢  r2  s     rf  r¥  z9SemanticAnalyzer.visit_type_alias_stmt.<locals>.<genexpr>ò  s   è ø€ Ò=¨2”? 2×&Ñ=ùrS  rO  r  Frò  r  r”  rŽ  )9r  rI  r  r  rÖ  r”  r!  rÛ  r�  r¤  r   rp   r¸  Úalready_definedr  rö  r  r|  r÷  rç   rø   r]  rÓ  rñ   rð   r»   rú  rø  r­  rH  rÇ   r1  rr  rP  r"  rú  rÌ   rû  r#  rê   rÎ   r¼  rË   rù  rÝ  r  r¹  rH  rý  r$  rü  rˆ  r%  rß  r&  r•  r³  )re  r$  r*  rŠ  r+  rä  rû  rð  rˆ  r  r  rH  r-  r  rý  r.  r/  s                    rf  Úvisit_type_alias_stmtz&SemanticAnalyzer.visit_type_alias_stmtÃ  sx  € Ø×$Ò$ØØˆŒØ×)Ñ)¨!¯+©+°qÓ9ˆØÐØ�J‰J�qŒMØØ12·±Ö =¨A §£Ð =ÐÐ =ði	,Ø×0Ñ0Ó2×6Ñ6°q·v±v·{±{ÓCˆHÙÜ˜8Ÿ=™=¬)Ô4Ü˜xŸ}™}¬oÔ>À8Ç=Á=×CUÑCUÐYZ×Y_ÑY_ÒC_à×$Ñ$ Q§V¡V§[¡[°!°X¸vÔFØðD ×Ñ˜qŸ{™{Õ+ðA ×,Ñ,Ó.ˆCØEI×EWÑEWØ—‘—‘Ø—‘—‘“Ø"&Ø#.Ø/DØ'+ð FXó FÑBˆC�˜j¨'°?ñ Üœi×2Ñ2Ó3�à×%Ñ%Ô'ô %/¨s´JÓ$?ò %ÄJØœóEÑ!ô %4°CÓ$8Ð!à×(Ñ(¨Ô-Ñ1Bð ×$Ñ$ Q§V¡V§[¡[°!·'±'ÈDÐ$ÔQØðL ×Ñ˜qŸ{™{Õ+ôI Ñ=°Ô=Ô=ð —
‘
”à×$Ñ$ ZÔ0Ü"Ø�T—\‘\ 4×#=Ñ#=¸t¿x¹xÐQRõô
 (¨Ó,ˆCØ�|‰|×3Ò3Ô8TÐUXÔ8YØ—‘×4Ñ4Ð5HÈ#ÈqÔQÜ-¨cÓ2�Ø×&Ñ&Ó(ˆEÜ˜#œzÔ*¬z¸#¼xÔ/HÜ(¨¨d¯i©i¸ÔAÜ Ø˜TŸY™Y¨¯	©	ÀÈtÏ|É|õô #ØØ×#Ñ# A§F¡F§K¡KÓ0Ø—‘Ø—‘Ø—‘Ø'ØØØ'+ô
ˆJð *9ˆJÔ&Ø%ˆAŒLàˆGáÜ˜xŸ}™}¬Ä	Ð.JÔKØ—M‘M×&Ñ&¨!¯&©&Ò0ä˜hŸm™m¬YÔ7à26�H—M‘MÔ/à Ÿ™×,Ñ,°Ò3Ø#Ÿ=™=×4Ñ4¸
×8NÑ8NÒNð 03˜Ÿ™Ô,Ø8G˜Ÿ™Ô5Ø4?˜Ÿ™Ô1Ø"&™ð &0�H”NØ"‘Gà—‘ §¡§¡¨Z¸Ô;á,4˜8Ÿ=š=¸*ˆLÜ˜l¬IÔ6Ð6Ð6Ø×2Ñ2°1°lÀAÇGÁGÔLÙœ/¨#Ô.Ø×(Ñ(¨¯©¯©°f¸aÐPWÐ(ÔXØ�F‰F�M‰M˜$Ôà×Ñ˜qŸ{™{Õ+ùòW !>øðV ×Ñ˜qŸ{™{Õ+ús!   ÁVÁ)B4V! Ä:C7V! ÉL2V! Ö!V>c                óf   — | j                  |j                  |«      }|r| j                  ||«       y y rj  )r·  r”  r\  )re  r÷  r½  s      rf  Úvisit_name_exprz SemanticAnalyzer.visit_name_expr<  s.   € Ø�K‰K˜Ÿ	™	 4Ó(ˆÙØ×Ñ  aÕ(ð rh  c                ó¦  — t        |j                  t        «      rH| j                  j	                  |«      r-| j
                  s!| j                  d|j                  › d�|«       yt        |j                  t        «      r| j                  |j                  d|«       y|j                  |_
        |j                  |_        |j                  xs d|_        y)z,Bind name expression to a symbol table node.r[  z3" is a type variable and only valid in type contextr”  rD  N)r�  r¤  rŒ   r?  Úget_bindingrX  r¼  r”  rp   r•  rA  r†  r­  s      rf  r\  zSemanticAnalyzer.bind_name_exprA  s”   € ô �s—x‘x¤Ô-Ø—‘×+Ñ+¨CÔ0Ø×,Ò,à�I‰I˜˜$Ÿ)™)˜Ð$WÐXÐZ^Õ_Ü˜Ÿ™¤/Ô2Ø×$Ñ$ T§Y¡Y°¸Õ=àŸ™ˆDŒIØŸ™ˆDŒIØŸL™LÒ.¨BˆD�Mrh  c                óè   — | j                   s)|j                  j                  s| j                  d|«       y | j                   |_        |j                  j                  D ]  }|j                  | «       Œ y )Nz"super" used outside class)rl  r¨  r|  r¼  r§  r³  )re  r÷  r(  s      rf  Úvisit_super_exprz!SemanticAnalyzer.visit_super_exprP  sS   € Ø�yŠy §¡§¢Ø�I‰IÐ2°DÔ9ØØ—I‘IˆŒ	Ø—9‘9—>‘>ò 	ˆCØ�J‰J�tÕñ	rh  c                óv   — |j                   D ]*  }t        |t        «      rd|_        |j	                  | «       Œ, y rw  ©rÔ  r�  rz   r¸  r³  ©re  r÷  rz  s      rf  Úvisit_tuple_exprz!SemanticAnalyzer.visit_tuple_exprX  ó2   € Ø—J‘Jò 	ˆDÜ˜$¤Ô)Ø!�”
Ø�K‰K˜Õñ	rh  c                óv   — |j                   D ]*  }t        |t        «      rd|_        |j	                  | «       Œ, y rw  r  r  s      rf  Úvisit_list_exprz SemanticAnalyzer.visit_list_expr^  r   rh  c                óv   — |j                   D ]*  }t        |t        «      rd|_        |j	                  | «       Œ, y rw  r  r  s      rf  Úvisit_set_exprzSemanticAnalyzer.visit_set_exprd  r   rh  c                ót   — |j                   D ])  \  }}|�|j                  | «       |j                  | «       Œ+ y rj  )rÔ  r³  )re  r÷  rË  r|  s       rf  Úvisit_dict_exprz SemanticAnalyzer.visit_dict_exprj  s6   € ØŸ*™*ò 	‰JˆC�ØˆØ—
‘
˜4Ô Ø�L‰L˜Õñ	rh  c                óÆ   — |j                   D ]R  }t        |t        «      r/|d   j                  | «       |d   €Œ-|d   j                  | «       ŒB|j                  | «       ŒT y )Nr   r'  )rÔ  r�  r4  r³  r  s      rf  Úvisit_template_str_exprz(SemanticAnalyzer.visit_template_str_exprp  sU   € Ø—J‘Jò 	"ˆDÜ˜$¤Ô&Ø�Q‘—‘˜tÔ$Ø˜‘7Ñ&Ø˜‘G—N‘N 4Õ(à—‘˜DÕ!ñ	"rh  c                ó|   — |j                   s| j                  d|d¬«       y |j                  j                  | «       y )Nz!can't use starred expression hereTr	  )r¸  r¼  r÷  r³  rí  s     rf  Úvisit_star_exprz SemanticAnalyzer.visit_star_expry  s.   € Ø�zŠzØ�I‰IÐ9¸4ÈˆIÕNà�I‰I×Ñ˜TÕ"rh  c                ó~  — | j                  «       s| j                  d|dd¬«       no| j                  d   t        k(  r| j                  d|dd¬«       nC| j                  d   j
                  r| j                  d|dd¬«       nd| j                  d   _        |j                  r|j                  j                  | «       y y )Nz"yield from" outside functionTrç  r®  z9"yield from" inside comprehension or generator expressionz"yield from" in async function)	rÓ  r¼  r:  r(  r@  rQ  Úis_generatorr÷  r³  ©re  rü  s     rf  Úvisit_yield_from_exprz&SemanticAnalyzer.visit_yield_from_expr  s°   € Ø×!Ñ!Ô#Ø�I‰IÐ5°qÀ$ÐPTˆIÕUØ×Ñ˜bÑ!Ô%8Ò8Ø�I‰IØKØØØð	 õ ð × Ñ  Ñ$×1Ò1Ø�I‰IÐ6¸À4ÐQUˆIÕVà37ˆD×Ñ Ñ#Ô0Ø�6Š6Ø�F‰F�M‰M˜$Õð rh  c           	     ó(  — |j                   j                  | «       t        |j                   d«      r£| j                  |dd«      sy	 | j	                  |j
                  d   «      }t        |j
                  d   |«      |_	        |j                  |j                  _
        |j                  |j                  _        |j                  j                  | «       yt        |j                   t        «      r£| j                  |dd«      sy	 | j	                  |j
                  d   «      }t        |j
                  d   |«      |_	        |j                  |j                  _
        |j                  |j                  _        |j                  j                  | «       yt        |j                   t        «      rÐ| j                  |dd
«      syd}| j                  d
|d¬«      }|r.t!        |j"                  t$        «      r|j&                  t(        v rd}t+        t,        |j
                  d   |¬«      |_	        |j                  |j                  _
        |j                  |j                  _        |j                  j                  | «       yt        |j                   d«      �rÄg }| j/                  «       rh| j0                  j3                  «       D ��cg c]B  \  }}t5        |j"                  dd«      r&t!        |j"                  t6        «      r|j"                  ‘ŒD }}}nâ| j9                  «       rc| j:                  �Æ| j:                  j<                  j?                  «       D �cg c])  }t!        |j"                  t6        «      sŒ|j"                  ‘Œ+ }}no| jA                  «       r_| jB                  �S| jB                  d   }	|	�B|	j?                  «       D �cg c])  }t!        |j"                  t6        «      sŒ|j"                  ‘Œ+ }}t+        tD        |¬«      |_	        |j                  |j                  _
        |j                  |j                  _        |j                  j                  | «       yt        |j                   d«      r| j                  d|«       yt        |j                   d«      rz| j                  |dd«      sy	 | j	                  |j
                  d   «      }tG        |«      |_	        |j                  |j                  _
        |j                  j                  | «       yt        |j                   d«      rut!        |j                   tH        «      rDt!        |j                   j"                  tJ        «      r |j                   j"                  jL                  r| jO                  |«      |_	        yt        |j                   d«      rw| j                  |dd«      sytQ        d|j
                  d   |j
                  d   «      |_	        |j                  |j                  _
        |j                  j                  | «       yt        |j                   d«      r=| jS                  «       5  |j
                  D ]  }
|
j                  | «       Œ 	 ddd«       yt        |j                   d«      r•| j                  |dd«      sy	 | j	                  |j
                  d   «      }t[        |«      |_	        |j                  |j                  _
        |j                  |j                  _        |j                  j                  | «       y|j
                  D ]$  }
|
j                  | «       | j]                  |
«       Œ& t!        |j                   t^        «      �rÅt!        |j                   j`                  tb        «      �rŸ|j                   j`                  jd                  dk(  �rz|j                   j`                  jf                  th        k(  �rQ|j                   jd                  d v �r7|j                   jd                  d!k(  r+|j
                  r| jk                  |j
                  d   «       y|j                   jd                  d"k(  rX|j
                  rLt!        |j
                  d   tl        tn        f«      r)| jk                  |j
                  d   j2                  «       y|j                   jd                  d#k(  rh|j
                  r[t!        |j
                  d   tp        «      r=| jr                  D �cg c]!  }||j
                  d   jt                  k7  sŒ |‘Œ# c}| _9        yyyyyyyyy# t        $ r | j                  d|«       Y yw xY w# t        $ r | j                  d	|«       Y yw xY wc c}}w c c}w c c}w # t        $ r | j                  d|«       Y yw xY w# 1 sw Y   yxY w# t        $ rJ | j                  d|«       t        |j
                  d   tU        tV        jX                  «      «      |_	        Y yw xY wc c}w )$z€Analyze a call expression.

        Some call expressions are recognized as special forms, including
        cast(...).
        ztyping.castr%  r   Nr   zCast target is not a typer#  Úassert_typez assert_type() type is not a typerž  FTrx  )rA  r÷  Úis_importedzbuiltins.reveal_localsrX  r®  )rA  Úlocal_nodesrÄ  z;Any(...) is no longer supported. Use cast(Any, ...) insteadztyping._promoteÚ_promotez$Argument 1 to _promote is not a typerÎ  zbuiltins.divmodÚdivmod)r3  r1  )ztyping.TypeFormztyping_extensions.TypeFormÚTypeFormzTypeForm argument is not a typerÿ  )r  r  r•  r  r  r•  );rÂ  r³  r½  Úcheck_fixed_argsr   r|  r   r¼  r?   rI  r¸  r¹  rÓ   r7   rÞ   r·  r�  r¤  r1   r†  rÙ   ru   r/   ré  r5  rÔ  Úgetattrr�   r9  rl  r…  r’  rÓ  r8  r.   rq   rs   r   rô  Útranslate_dict_callrk   rz  rç   rø   r]  r‰   rÚ  rd   r÷  rg   r”  rA  r&   rÁ  r`   r„   r|   rS  r|  )re  r÷  rü  Úreveal_importedÚreveal_type_noder2  r”  r½  ÚstÚsymbol_tablerˆ  r«  s               rf  Úvisit_call_exprz SemanticAnalyzer.visit_call_expr�  sË  € ð 	�‰×Ñ˜4Ô Ü˜dŸk™k¨=Ô9à×(Ñ(¨¨q°&Ô9ØðØ×5Ñ5°d·i±iÀ±lÓC�ô % T§Y¡Y¨q¡\°6Ó:ˆDŒMØ!%§¡ˆD�M‰MÔØ#'§;¡;ˆD�M‰MÔ Ø�M‰M× Ñ  Õ&Ü §¡Ô->Ô?Ø×(Ñ(¨¨q°-Ô@ØðØ×5Ñ5°d·i±iÀ±lÓC�ô +¨4¯9©9°Q©<¸Ó@ˆDŒMØ!%§¡ˆD�M‰MÔØ#'§;¡;ˆD�M‰MÔ Ø�M‰M× Ñ  Õ&Ü §¡Ô->Ô?Ø×(Ñ(¨¨q°-Ô@ØØ#ˆOØ#Ÿ{™{¨=¸$ÐPT˜{ÓUÐá ÜÐ/×4Ñ4Ô6KÔLØ$×-Ñ-Ô1KÑKà"&�Ü&Ü  t§y¡y°¡|ÀôˆDŒMð "&§¡ˆD�M‰MÔØ#'§;¡;ˆD�M‰MÔ Ø�M‰M× Ñ  Õ&Ü §¡Ð-EÕFð &(ˆKØ×#Ñ#Ô%ð $(§<¡<×#5Ñ#5Ó#7÷á˜˜aÜ˜qŸv™v }°eÔ<ÄÈAÏFÉFÔTWÔAXð —F“Fð�ò ð
 ×$Ñ$Ô&à—9‘9Ð(à*.¯)©)¯/©/×*@Ñ*@Ó*Bö#Ø$&ÄjÐQS×QXÑQXÔZ]ÕF^˜Ÿ›ð#�Kñ #ð ×#Ñ#Ô%à—;‘;Ð*Ø#'§;¡;¨r¡?�LØ#Ð/à.:×.AÑ.AÓ.Cö'Ø(*ÄzÐRT×RYÑRYÔ[^ÕG_˜BŸG›Gð'˜ð 'ô '¬MÀ{ÔSˆDŒMØ!%§¡ˆD�M‰MÔØ#'§;¡;ˆD�M‰MÔ Ø�M‰M× Ñ  Õ&Ü §¡¨\Ô:à�I‰IÐSÐUYÕZÜ §¡Ð->Ô?à×(Ñ(¨¨q°*Ô=ØðØ×5Ñ5°d·i±iÀ±lÓC�ô (¨Ó/ˆDŒMØ!%§¡ˆD�M‰MÔØ�M‰M× Ñ  Õ&Ü §¡¨_Ô=Ü�t—{‘{¤GÔ,Ü˜4Ÿ;™;×+Ñ+¬YÔ7Ø—K‘K×$Ñ$×,Ò,à ×4Ñ4°TÓ:ˆD�MÜ §¡Ð->Ô?Ø×(Ñ(¨¨q°(Ô;ØÜ" 8¨T¯Y©Y°q©\¸4¿9¹9ÀQ¹<ÓHˆDŒMØ!%§¡ˆD�M‰MÔØ�M‰M× Ñ  Õ&ÜØ�K‰KÐTô
ð ×-Ñ-Ó/ñ #ØŸ™ò #�AØ—H‘H˜T•Nñ#÷#ð #ô   §¡Ð-^Ô_à×(Ñ(¨¨q°*Ô=ØðØ×2Ñ2°4·9±9¸Q±<Ó@�ô )¨Ó-ˆDŒMØ!%§¡ˆD�M‰MÔØ#'§;¡;ˆD�M‰MÔ Ø�M‰M× Ñ  Õ&ð —Y‘Yò 5�Ø—‘˜”Ø×1Ñ1°!Õ4ð5ô
 ˜4Ÿ;™;¬
Õ3Ü˜tŸ{™{×/Ñ/´Õ:Ø—K‘K×$Ñ$×)Ñ)¨YÓ6Ø—K‘K×$Ñ$×)Ñ)¬TÓ1Ø—K‘K×$Ñ$Ð(FÒFà—;‘;×#Ñ# xÒ/°D·I²IØ×$Ñ$ T§Y¡Y¨q¡\Õ2à—K‘K×$Ñ$¨Ò0ØŸ	š	Ü" 4§9¡9¨Q¡<´(¼IÐ1FÔGà×$Ñ$ T§Y¡Y¨q¡\×%7Ñ%7Õ8à—K‘K×$Ñ$¨Ò0ØŸ	š	Ü" 4§9¡9¨Q¡<´Ô9à37×3CÑ3CÖ'_¨aÀqÈDÏIÉIÐVWÉL×L^ÑL^ÓG^ªÒ'_�DÕ$ð :ð "ð 1ð Gð 2ð 7ð ;ð 4øôG (ò Ø—	‘	Ð5°tÔ<Ùðûô (ò Ø—	‘	Ð<¸dÔCÙðüóDùò#ùò'øô" (ò Ø—	‘	Ð@À$ÔGÙðú÷*#ð #ûô (ò Ø—	‘	Ð;¸TÔBä (¨¯©°1©´w¼y×?SÑ?SÓ7TÓ U�”Ùð	üòJ (`s€   Ád: Äe ËAe<ÍfÍ/fÎ?fÏfÒ+f Ù#f-Ú&f9 ä!hä%hä:eåeåe9å8e9æf*æ)f*æ-f6æ9Ahèhc           	     ój  — t        d„ |j                  D «       «      s#|j                  D ]  }|j                  | «       Œ yt	        t        |j                  |j                  «      D ��cg c]  \  }}|�t        |«      nd|f‘Œ c}}«      }|j                  |«       |j                  | «       |S c c}}w )zTranslate 'dict(x=y, ...)' to {'x': y, ...} and 'dict()' to {}.

        For other variants of dict(...), return None.
        c              3  ó8   K  — | ]  }|t         t        fv –— Œ y ­wrj  )r!   r#   r  s     rf  r¥  z7SemanticAnalyzer.translate_dict_call.<locals>.<genexpr>;  s   è ø€ ÒM°d�4œI¤yÐ1Ô1ÑMùrY  N)	rÔ  rB  r|  r³  rI   rp  r^  r|   rê  )re  r¨  rˆ  rË  r|  r÷  s         rf  r8  z$SemanticAnalyzer.translate_dict_call6  sŸ   € ô
 ÑM¸d¿n¹nÔMÔMà—Y‘Yò �Ø—‘˜•ðàÜô #& d§n¡n°d·i±iÓ"@÷á�C˜ð "% ”˜”°d¸EÒBóó
ˆð 	�‰�dÔØ�‰�DÔØˆùós   Á(B/
c                óÞ   — d}|dk(  rd}t        |j                  «      |k7  r| j                  d|||fz  |«       y|j                  t        g|z  k7  r| j                  d|› d|› d|› �|«       yy	)
zsVerify that expr has specified number of positional args.

        Return True if the arguments are valid.
        r$  r#  rD  z"%s" expects %d argument%sFr[  z" must be called with z positional argumentT)r’  r|  r¼  rB  r"   )re  r÷  Únumargsr”  r$  s        rf  r6  z!SemanticAnalyzer.check_fixed_argsJ  s‚   € ð
 ˆØ�aŠ<ØˆAÜˆt�y‰y‹>˜WÒ$Ø�I‰IÐ2°d¸GÀQÐ5GÑGÈÔNØØ�>‰>œg˜Y¨Ñ0Ò0Ø�I‰I˜˜$˜Ð5°g°YÐ>RÐSTÐRUÐVÐX\Ô]ØØrh  c                ó@  — |j                   }|j                  | «       t        |t        «      rÄt        |j                  t
        «      rª| j                  |j                  |j                  «      }|r�t        |j                  t        «      r| j                  |j                  d|«       y | j                  |«       |j                  |_        |j                  xs d|_        |j                  |_        y y t        |t        «      �rd }t        |j                  t        «      r|j                  }�nXt        |j                  t        «      r¤| j                  r˜| j                   rŒ| j                   d   }|j"                  �r
|j$                  | j                  u ròt        |j                  t&        «      rØ|j(                  rÌ|j                  |j(                  d   j*                  u r§| j                  }nšt        |j                  t,        «      r€|j                  j.                  rjt        |j                  j0                  t2        «      sJ ‚t        |j                  j0                  t4        «      r |j                  j0                  j                  }|r—|j6                  j9                  |j                  «      }|�ot        |j                  t
        t        t,        f«      rI| j                  |«       |j                  |_        |j                  xs d|_        |j                  |_        y y y y y )NÚ	attributerD  r®  r   )r÷  r³  r�  rs   r¤  re   Úget_module_symbolr”  rp   r•  Úrecord_imported_symbolrA  r†  rŠ   r�   rl  r@  rk  r§  rè   r  r  r   rô  rü  rñ   rê   r…  rÛ  )re  r÷  rV  r}  Ú	type_infoÚfunc_defr½  s          rf  Úvisit_member_exprz"SemanticAnalyzer.visit_member_exprZ  s.  € Ø�y‰yˆØ�‰�DÔÜ�dœGÔ$¬°D·I±I¼xÔ)Hà×(Ñ(¨¯©°D·I±IÓ>ˆCÙÜ˜cŸh™h¬Ô8Ø×,Ñ,¨T¯Y©Y¸ÀTÔJØØ×+Ñ+¨CÔ0ØŸH™H�”	Ø #§¡Ò 2°�”ØŸH™H�•	ð ô ˜œgÕ&ð ˆIÜ˜$Ÿ)™)¤XÔ.à ŸI™I’	Ü˜DŸI™I¤sÔ+°·	²	¸d×>QÒ>Qà×.Ñ.¨rÑ2�à×5Ó5Ø Ÿ™¨¯©Ñ2Ü" 8§=¡=´,Ô?Ø ×*Ò*ØŸ	™	 X×%7Ñ%7¸Ñ%:×%CÑ%CÑCà $§	¡	‘IÜ˜DŸI™I¤yÔ1°d·i±i×6GÒ6GÜ! $§)¡)×"2Ñ"2´JÔ?Ð?Ð?Ü˜dŸi™i×.Ñ.´Ô9Ø $§	¡	× 0Ñ 0× 5Ñ 5�IáØ—O‘O×'Ñ'¨¯	©	Ó2�Ø�=¤Z°·±¼Ä8ÌYÐ8WÔ%XØ×/Ñ/°Ô2Ø !§¡�D”IØ$%§J¡JÒ$4°"�D”MØ !§¡�D•Ið	 &Y�=ð ð9 'rh  c                óÒ  — |j                   j                  | «       |j                  dv r£t        |j                   | j                  «      }|t
        t        fv r|j                  dk(  s|t        t        fv r|j                  dk(  rd|_	        y |t        t        fv r|j                  dk(  s|t
        t        fv r|j                  dk(  rd|_
        |j                  j                  | «       y )N)ÚandrV  rJ  rV  T)rº  r³  r¸  r¯   r1  r«   r­   r¬   r®   Úright_unreachableÚright_alwaysr»  )re  r÷  rZ  s      rf  Úvisit_op_exprzSemanticAnalyzer.visit_op_exprŒ  s·   € Ø�	‰	×Ñ˜Ôà�7‰7�mÑ#Ü,¨T¯Y©Y¸¿¹ÓEˆHØœ\¬:Ð6Ñ6¸4¿7¹7ÀeÒ;KØœ[¬)Ð4Ñ4¸¿¹ÀDºà)-�Ô&ØØœ{¬IÐ6Ñ6¸4¿7¹7ÀeÒ;KØœ\¬:Ð6Ñ6¸4¿7¹7Àdº?à$(�Ô!à�
‰
×Ñ˜$Õrh  c                óH   — |j                   D ]  }|j                  | «       Œ y rj  )Úoperandsr³  )re  r÷  Úoperands      rf  Úvisit_comparison_exprz&SemanticAnalyzer.visit_comparison_expr�  s!   € Ø—}‘}ò 	!ˆGØ�N‰N˜4Õ ñ	!rh  c                ó:   — |j                   j                  | «       y rj  ©r÷  r³  rí  s     rf  Úvisit_unary_exprz!SemanticAnalyzer.visit_unary_expr¡  s   € Ø�	‰	×Ñ˜Õrh  c                óÂ  — |j                   }|j                  | «       t        |t        «      rPt        |j                  t
        «      r6|j                  j                  «       s|j                  j                  | «       y t        |t        «      rt        |j                  t        «      st        |«      r| j                  |«       y |j                  j                  | «       y rj  )rV  r³  r�  rs   r¤  rŠ   Ú
is_genericr  r   Úrefers_to_class_or_functionÚanalyze_type_application)re  r÷  rV  s      rf  Úvisit_index_exprz!SemanticAnalyzer.visit_index_expr¤  s’   € Ø�y‰yˆØ�‰�DÔä�tœWÔ%Ü˜4Ÿ9™9¤hÔ/Ø—I‘I×(Ñ(Ô*à�J‰J×Ñ˜dÕ#ä�tœWÔ%¬*°T·Y±YÄ	Ô*JÜ(¨Ô.ð ×)Ñ)¨$Õ/à�J‰J×Ñ˜dÕ#rh  c                ó.  — | j                  |«      }|€y|j                  }t        ||«      |_        |j                  |j                  _        |j
                  |j                  _        t        |t        «      r|j                  dk(  rt        ||| «       yyy)zNAnalyze special form -- type application (either direct or via type aliasing).Nzlibrt.vecs.vec)
Úanalyze_type_application_argsrV  r‡   rI  r¸  r¹  r�  rs   r†  rÈ   )re  r÷  r¶  rV  s       rf  rX  z)SemanticAnalyzer.analyze_type_application¶  s|   € à×2Ñ2°4Ó8ˆØˆ=ØØ�y‰yˆÜ'¨¨eÓ4ˆŒØ!ŸY™Yˆ�‰ÔØ#Ÿ{™{ˆ�‰Ôä�dœGÔ$¨¯©Ð:JÒ)Jä  t¨TÕ2ð *KÐ$rh  c                ó  — |j                   }| j                  «       }| j                  |«       | j                  |«      ry| j                  ryg }t        |t        «      rj|j                  }t        |j                  t        «      xr |j                  j                  dk(  }|r*t        |«      dk(  rt        |d   t        «      r	|dd }n|g}|j                  }t        |t        «      rwt        |j                  t        «      r]|j                  j                  du}|j                  }	t!        d„ |	j"                  D «       «      rd}
t        |	j"                  «      }nœd}
d}n—t        |t        «      r�t        |j                  t$        «      rg|j                  j&                  xs |j                  j                  dk(  }|j                  j(                  }
t        |j                  j*                  «      }nd}d}
d}|D ]K  }	 | j-                  |d¬«      }| j3                  || j4                  d|
|¬
«      }|€ y|j7                  |«       ŒM |r*t9        |«      }| j;                  «       j=                  |«      }|
ru|dk(  rp|rnt?        |d   «      }t        |«      dk(  xr t        |t@        «      }|s>t!        d„ |D «       «      s,tC        |tD        gt        |«      z  dgt        |«      z  «      g}|S # t.        $ r | j1                  d	|«       Y  yw xY w)zoAnalyze type arguments (index) in a type application.

        Return None if anything was incomplete.
        Nr8  r%  r®  c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrj  )r�  rï   ©r¢  râ  s     rf  r¥  zASemanticAnalyzer.analyze_type_application_args.<locals>.<genexpr>à  s   è ø€ ÒK°A”:˜a¤×/ÑKùrÈ  TF©r<  zType expected within [...])rX  r7  r:  r<  r#  r   c              3  óH   K  — | ]  }t        |t        t        f«      –— Œ y ­wrj  )r�  rî   rï   r^  s     rf  r¥  zASemanticAnalyzer.analyze_type_application_args.<locals>.<genexpr>  s   è ø€ Ò%`ÐUV¤j°´ZÄÐ4O×&PÑ%`ùó   ‚ ")#r  rö  r¹  rú  rW  r�  r„   rÔ  rV  rs   r†  r’  rK   r¤  r   r‰  r­  rˆ  rŠ   Úhas_type_var_tuple_typeÚhas_param_spec_typer  r   r   r¼  rÜ  rX  r  r  r?  Úcheck_unpacks_in_listr  rç   rî   r"   )re  r÷  r  rû  r¶  rÔ  Úis_tuplerV  r<  rí  Úhas_param_specÚnum_argsrz  ÚtypeargrI  Úflattened_itemsÚ	first_argÚ
single_anys                     rf  r[  z.SemanticAnalyzer.analyze_type_application_argsÄ  sº  € ð
 —
‘
ˆØ×(Ñ(Ó*ˆØ×Ñ˜uÔ%Ø×$Ñ$ SÔ)ØØ×'Ò'àØˆÜ�eœYÔ'Ø—K‘KˆEÜ! $§)¡)¬WÓ5Ò`¸$¿)¹)×:LÑ:LÐP`Ñ:`ˆHÙœC ›J¨!šO´
¸5À¹9ÄlÔ0SØ˜c˜r˜
‘à�GˆEð �y‰yˆÜ�dœGÔ$¬°D·I±I¼yÔ)IØŸ9™9×5Ñ5¸TÐAˆLØ—I‘IˆEÜÑK¸×9JÑ9JÔKÔKØ!%�Ü˜u×0Ñ0Ó1‘à!&�Ø‘Ü˜œgÔ&¬:°d·i±iÄÔ+Jà—	‘	×1Ñ1Ò[°T·Y±Y×5GÑ5GÐK[Ñ5[ð ð "ŸY™Y×:Ñ:ˆNÜ˜4Ÿ9™9×.Ñ.Ó/‰Hà ˆLØ"ˆNØˆHàò 	#ˆDðØ×6Ñ6°tÈ$Ð6ÓO�ð —~‘~Øð %)×$<Ñ$<Ø"&Ø*8Ø)ð &ó 	ˆHð ÐÙØ�L‰L˜Õ"ð%	#ñ( ä3°EÓ:ˆOØ×&Ñ&Ó(×>Ñ>¸ÓOˆEÙ˜h¨!šm±Ü'¨¨a©Ó1ˆIÜ˜U› q™ÒK¬Z¸	Ä7Ó-KˆJÙ¤#Ñ%`ÐZ_Ô%`Ô"`Ü# E¬G¨9´s¸5³zÑ+AÀDÀ6ÌCÐPUËJÑCVÓWÐX�àˆøô7 (ò Ø—	‘	Ð6¸Ô=Úðús   Ç<K+Ë+L
Ì	L
c                óð   — |j                   r|j                   j                  | «       |j                  r|j                  j                  | «       |j                  r|j                  j                  | «       y y rj  )Úbegin_indexr³  Ú	end_indexÚstriderí  s     rf  Úvisit_slice_exprz!SemanticAnalyzer.visit_slice_expr  sV   € Ø×ÒØ×Ñ×#Ñ# DÔ)Ø�>Š>Ø�N‰N×!Ñ! $Ô'Ø�;Š;Ø�K‰K×Ñ˜tÕ$ð rh  c                ó„   — |j                   j                  | «       | j                  |j                  «      }|�||_        y y rj  ©r÷  r³  rÜ  rl  ©re  r÷  rI  s      rf  Úvisit_cast_exprz SemanticAnalyzer.visit_cast_expr  ó8   € Ø�	‰	×Ñ˜ÔØ—>‘> $§)¡)Ó,ˆØÐØ ˆD�Ið  rh  c                óN   — | j                  |j                  «      }|�||_        y y rj  )rÜ  rl  rs  s      rf  Úvisit_type_form_exprz%SemanticAnalyzer.visit_type_form_expr  s&   € Ø—>‘> $§)¡)Ó,ˆØÐØ ˆD�Ið  rh  c                ó„   — |j                   j                  | «       | j                  |j                  «      }|�||_        y y rj  rr  rs  s      rf  Úvisit_assert_type_exprz'SemanticAnalyzer.visit_assert_type_expr$  ru  rh  c                ó|   — |j                   t        k(  r)|j                  �|j                  j                  | «       y y y rj  )rA  r/   r÷  r³  rí  s     rf  Úvisit_reveal_exprz"SemanticAnalyzer.visit_reveal_expr*  s4   € Ø�9‰9œÒ#Ø�y‰yÐ$Ø—	‘	× Ñ  Õ&ð %ð
 rh  c                óà   — |j                   j                  | «       t        t        |j                  «      «      D ]2  }| j                  |j                  |   «      }|€Œ$||j                  |<   Œ4 y rj  )r÷  r³  rý  r’  r¶  rÜ  )re  r÷  r£  rI  s       rf  Úvisit_type_applicationz'SemanticAnalyzer.visit_type_application3  sY   € Ø�	‰	×Ñ˜ÔÜ”s˜4Ÿ:™:“Ó'ò 	)ˆAØ—~‘~ d§j¡j°¡mÓ4ˆHØÑ#Ø (�—
‘
˜1’ñ	)rh  c                óB  — t        |j                  j                  «      re| j                  «       r%| j                  r| j                  d   j
                  s0| j                  t        j                  |t        j                  ¬«       |j                  j                  | «       y ©Nr®  r4  ©r­  Ú	generatorrâ  rÓ  r@  rQ  r¼  r   rã  rC  r‚  r³  rí  s     rf  Úvisit_list_comprehensionz)SemanticAnalyzer.visit_list_comprehension:  óo   € Üˆt�~‰~×&Ñ&Ô'à×&Ñ&Ô(Ø×*Ò*Ø×*Ñ*¨2Ñ.×;Ò;à—	‘	Ô*×FÑFÈÔSX×S_ÑS_�	Ô`à�‰×Ñ˜dÕ#rh  c                óB  — t        |j                  j                  «      re| j                  «       r%| j                  r| j                  d   j
                  s0| j                  t        j                  |t        j                  ¬«       |j                  j                  | «       y r  r€  rí  s     rf  Úvisit_set_comprehensionz(SemanticAnalyzer.visit_set_comprehensionE  rƒ  rh  c                ó  — t        |j                  «      re| j                  «       r%| j                  r| j                  d   j                  s0| j                  t        j                  |t        j                  ¬«       | j                  |«      5  | j                  |«       |j                  �|j                  j                  | «       |j                  j                  | «       d d d «       | j                  |«       y # 1 sw Y   ŒxY wr  )r­  râ  rÓ  r@  rQ  r¼  r   rã  rC  r‚  rÿ  Úanalyze_comp_forrË  r³  r|  Úanalyze_comp_for_2rí  s     rf  Úvisit_dictionary_comprehensionz/SemanticAnalyzer.visit_dictionary_comprehensionP  sÂ   € Üˆt�}‰}Ôà×&Ñ&Ô(Ø×*Ò*Ø×*Ñ*¨2Ñ.×;Ò;à—	‘	Ô*×FÑFÈÔSX×S_ÑS_�	Ô`à�Z‰Z˜Óñ 	$Ø×!Ñ! $Ô'Ø�x‰xÐ#Ø—‘—‘ Ô%Ø�J‰J×Ñ˜dÔ#÷		$ð
 	×Ñ Õ%÷	$ð 	$ús   ÂAC:Ã:Dc                ó   — t        |j                  t        «      rd|j                  _        | j	                  |«      5  | j                  |«       |j                  j                  | «       d d d «       | j                  |«       y # 1 sw Y   ŒxY wrw  )r�  Ú	left_exprrz   r¸  rÿ  r‡  r³  rˆ  rí  s     rf  Úvisit_generator_exprz%SemanticAnalyzer.visit_generator_expr`  sm   € Ü�d—n‘n¤hÔ/Ø#'ˆD�N‰NÔ Ø�Z‰Z˜Óñ 	(Ø×!Ñ! $Ô'Ø�N‰N×!Ñ! $Ô'÷	(ð 	×Ñ Õ%÷	(ð 	(ús   ½-BÂBc                ó  — t        t        |j                  |j                  |j                  «      «      D ]J  \  }\  }}}|dkD  r|j                  | «       | j                  |d¬«       |D ]  }|j                  | «       Œ ŒL y)zÓAnalyses the 'comp_for' part of comprehensions (part 1).

        That is the part after 'for' in (x for x in l if p). This analyzes
        variables and conditions which are analyzed in a local scope.
        r   T)rA  N)r®  rp  ÚindicesÚ	sequencesÚ	condlistsr³  r}  )re  r÷  r£  r  ÚsequenceÚ
conditionsÚconds          rf  r‡  z!SemanticAnalyzer.analyze_comp_forh  s   € ô 1:Ü�—‘˜dŸn™n¨d¯n©nÓ=ó1
ò 	"Ñ,ˆAÑ,��x ð �1ŠuØ—‘ Ô%à×Ñ °DÐÔ9Ø"ò "�Ø—‘˜DÕ!ñ"ñ	"rh  c                ó@   — |j                   d   j                  | «       y)zÎAnalyses the 'comp_for' part of comprehensions (part 2).

        That is the part after 'for' in (x for x in l if p). This analyzes
        the 'l' part which is analyzed in the surrounding scope.
        r   N)r�  r³  rí  s     rf  rˆ  z#SemanticAnalyzer.analyze_comp_for_2x  s   € ð 	�‰�qÑ× Ñ  Õ&rh  c                ó˜   — | j                  |«       | j                  dd¬«      5  | j                  |«       d d d «       y # 1 sw Y   y xY w)NF)r}  )rK  r  rL  rí  s     rf  Úvisit_lambda_exprz"SemanticAnalyzer.visit_lambda_expr€  sF   € Ø×%Ñ% dÔ+Ø×.Ñ.¨uÀEÐ.ÓJñ 	-Ø×&Ñ& tÔ,÷	-÷ 	-ñ 	-ús   ¥A Á A	c                ó¦   — |j                   j                  | «       |j                  j                  | «       |j                  j                  | «       y rj  )Úif_exprr³  r“  Ú	else_exprrí  s     rf  Úvisit_conditional_exprz'SemanticAnalyzer.visit_conditional_expr…  s8   € Ø�‰×Ñ˜DÔ!Ø�	‰	×Ñ˜ÔØ�‰×Ñ˜dÕ#rh  c                ó|   — | j                  |j                  «      }|�t        |t        «      sJ d«       ‚||_        y y )Nz&Cannot use type aliases for promotions)rÜ  rl  r�  rñ   rs  s      rf  Úvisit__promote_exprz$SemanticAnalyzer.visit__promote_exprŠ  s<   € Ø—>‘> $§)¡)Ó,ˆØÐÜ˜h¬
Ô3Ð]Ð5]Ó]Ð3Ø ˆD�Ið  rh  c                ó¤  — | j                  «       s| j                  d|dd¬«       n‚| j                  d   t        k(  r| j                  d|dd¬«       nV| j                  d   j
                  r)d| j                  d   _        d| j                  d   _        nd| j                  d   _        |j                  r|j                  j                  | «       y y )Nz"yield" outside functionTrç  r®  z4"yield" inside comprehension or generator expression)
rÓ  r¼  r:  r(  r@  rQ  r,  rR  r÷  r³  r-  s     rf  Úvisit_yield_exprz!SemanticAnalyzer.visit_yield_expr�  s¿   € Ø×!Ñ!Ô#Ø�I‰IÐ0°!¸TÈ4ˆIÕPØ×Ñ˜bÑ!Ô%8Ò8Ø�I‰IØFØØØð	 õ ð × Ñ  Ñ$×1Ò1Ø37ˆD×Ñ Ñ#Ô0Ø9=ˆD×Ñ Ñ#Õ6à37ˆD×Ñ Ñ#Ô0Ø�6Š6Ø�F‰F�M‰M˜$Õð rh  c                ó2  — | j                  «       r| j                  s$| j                  d|dt        j                  ¬«       n<| j                  d   j
                  s#| j                  d|dt        j                  ¬«       |j                  j                  | «       y )Nz"await" outside functionT)r�  r5  r®  z'"await" outside coroutine ("async def"))	rÓ  r@  r¼  rC  ÚTOP_LEVEL_AWAITrQ  ÚAWAIT_NOT_ASYNCr÷  r³  rí  s     rf  Úvisit_await_exprz!SemanticAnalyzer.visit_await_expr¢  s~   € Ø×!Ñ!Ô#¨4×+>Ò+>ð �I‰IÐ0°$ÀÌ5×K`ÑK`ˆIÕaØ×$Ñ$ RÑ(×5Ò5Ø�I‰IØ9ØØÜ×*Ñ*ð	 ô ð 	�	‰	×Ñ˜Õrh  c                ó¢   — |j                   �|j                   j                  | «       |j                  �| j                  |j                  «       y y rj  )Úpatternr³  r”  r}  ©re  rŠ  s     rf  Úvisit_as_patternz!SemanticAnalyzer.visit_as_patternµ  s?   € Ø�9‰9Ð Ø�I‰I×Ñ˜TÔ"Ø�6‰6ÐØ×Ñ §¡Õ'ð rh  c                óH   — |j                   D ]  }|j                  | «       Œ y rj  ©r  r³  ©re  rŠ  r¤  s      rf  Úvisit_or_patternz!SemanticAnalyzer.visit_or_pattern»  ó!   € Ø—z‘zò 	!ˆGØ�N‰N˜4Õ ñ	!rh  c                ó:   — |j                   j                  | «       y rj  rS  r¥  s     rf  Úvisit_value_patternz$SemanticAnalyzer.visit_value_pattern¿  s   € Ø	�‰�‰�dÕrh  c                óH   — |j                   D ]  }|j                  | «       Œ y rj  r¨  r©  s      rf  Úvisit_sequence_patternz'SemanticAnalyzer.visit_sequence_patternÂ  r«  rh  c                óT   — |j                   �| j                  |j                   «       y y rj  )Úcapturer}  r¥  s     rf  Úvisit_starred_patternz&SemanticAnalyzer.visit_starred_patternÆ  s#   € Ø�9‰9Ð Ø×Ñ §	¡	Õ*ð !rh  c                óÜ   — |j                   D ]  }|j                  | «       Œ |j                  D ]  }|j                  | «       Œ |j                  �| j	                  |j                  «       y y rj  )rY  r³  r’  Úrestr}  )re  rŠ  rË  r|  s       rf  Úvisit_mapping_patternz&SemanticAnalyzer.visit_mapping_patternÊ  sa   € Ø—6‘6ò 	ˆCØ�J‰J�tÕð	à—X‘Xò 	ˆEØ�L‰L˜Õð	à�6‰6ÐØ×Ñ §¡Õ'ð rh  c                óÂ   — |j                   j                  | «       |j                  D ]  }|j                  | «       Œ |j                  D ]  }|j                  | «       Œ y rj  )Ú	class_refr³  ÚpositionalsÚkeyword_values)re  rŠ  Úposr¬  s       rf  Úvisit_class_patternz$SemanticAnalyzer.visit_class_patternÒ  sS   € Ø	�‰×Ñ˜4Ô Ø—=‘=ò 	ˆCØ�J‰J�tÕð	à×!Ñ!ò 	ˆAØ�H‰H�T�Nñ	rh  c                óR   — | j                  |||«      }|�| j                  |«       |S rj  )Ú_lookuprE  )re  r”  r>  ry  r¤  s        rf  r·  zSemanticAnalyzer.lookupÝ  s1   € ð �|‰|˜D # Ó7ˆØÐð ×'Ñ'¨Ô-Øˆrh  c                óÄ  — |j                   t        k(  s|j                  €y|j                  }t        |t        «      s|j
                  sy|j
                  j                  d«      ryt        |t        «      r|j
                  }�n(t        |t        «      r|j                  }�n
t        |t        «      r|j                  }nít        |t        t        t        t        f«      rbt        |t        «      r|j                   j"                  n|j"                  }|r|j                  }nŒ|j
                  j%                  dd¬«      d   }nk|j
                  j%                  dd¬«      d   }|| j&                  k(  ryd|v r7|| j(                  vr)|j%                  dd¬«      d   }d|v r|| j(                  vrŒ)|| j&                  k7  r&| j*                  j,                  j/                  |«       yy)zOIf the symbol was not defined in current module, add its module to module_refs.N)r�  útyping.r�  r#  ©Úmaxsplitr   )rA  r*   r¤  r�  rp   r†  rS  re   rŠ   Úmodule_namer   rM  r�   rS   rl   rG   ræ  r§  r  r  r4  r2  Úmodule_refsr#  )re  r}  r¤  r†  r§  s        rf  rE  z'SemanticAnalyzer.record_imported_symbolç  s|  € à�8‰8”tÒ˜sŸx™xÐ/ØØ�x‰xˆÜ�dœOÔ,°D·M²MàØ�=‰=×#Ñ#Ð$<Ô=àä�dœHÔ%Ø—}‘}ŠHÜ˜œhÔ'Ø×'Ñ'ŠHÜ˜œiÔ(Ø—{‘{‰HÜ˜œs¤GÔ->Ä	ÐJÔKä$.¨t´YÔ$?�4—8‘8—=’=ÀTÇYÁYˆDÙØ×+Ñ+‘ð  Ÿ=™=×/Ñ/°¸aÐ/Ó@ÀÑC‘ð —}‘}×+Ñ+¨C¸!Ð+Ó<¸QÑ?ˆHØ˜4Ÿ?™?Ò*ØØ˜‘/ h°d·l±lÑ&BØ#Ÿ?™?¨3¸˜?Ó;¸AÑ>�ð ˜‘/ h°d·l±lÒ&Bà�t—‘Ò&Ø×Ñ×)Ñ)×-Ñ-¨hÕ7ð 'rh  c                óÀ  — d}|| j                   d   v r2|| j                  v r| j                  |   S |s| j                  ||«       y|| j                  d   v r@t	        | j
                  dd «      D ]  }|€Œ||v sŒ||   c S  |s| j                  ||«       y| j                  rn| j                  «       s^|| j                  j                  v rF| j                  j                  |   }|j                  s| j                  |j                  «      r|S d}|}| j                  rT| j                  «       sD|dv r@t        || j                  «       «      }| j                  |«      |_        t!        t"        |«      S t	        | j
                  «      D ]  }|€Œ||v sŒ||   c S  || j                  v r| j                  |   S | j                  j%                  dd«      }	|	rpt'        |	j                  t(        «      sJ ‚|	j                  j                  }||v r:t+        |«      dkD  r%|d   d	k(  r|d   d	k7  r|s| j                  ||«       y||   }|S |s|s| j                  ||«       y|rS y)
a_  Look up an unqualified (no dots) name in all active namespaces.

        Note that the result may contain a PlaceholderNode. The caller may
        want to defer in that case.

        Generate an error if the name is not defined unless suppress_errors
        is true or the current namespace is incomplete. In the latter case
        defer.
        Fr®  NT>   Ú
__module__Ú__qualname__r‚  r#  r   rW  )r6  r5  r]  r7  rÍ  r8  rl  rÓ  r…  rd  Úis_active_symbol_in_class_bodyr¤  r�   rá  rÝ  r£  r€   r+   rÛ  r�  re   r’  )
re  r”  r>  ry  Úimplicit_namer  r¤  Úimplicit_noder¬  r�  s
             rf  r½  zSemanticAnalyzer._lookup  sL  € ð ˆà�4×$Ñ$ RÑ(Ñ(Ø�t—|‘|Ñ#Ø—|‘| DÑ)Ð)Ù"Ø×%Ñ% d¨CÔ0Øà�4×&Ñ& rÑ*Ñ*Ü! $§+¡+¨c¨rÐ"2Ó3ò '�ØÑ$¨°ªØ  ™;Ò&ð'ñ #Ø×%Ñ% d¨CÔ0Øà�9Š9˜T×/Ñ/Ô1°d¸d¿i¹i¿o¹oÑ6MØ—9‘9—?‘? 4Ñ(ˆDØ—=’=Ø×6Ñ6°t·y±yÔAØ�Kð !%�Ø $�à�9Š9˜T×/Ñ/Ô1°dÐ>\Ñ6\Ü�D˜$Ÿ-™-›/Ó*ˆAØ×-Ñ-¨dÓ3ˆAŒKÜ"¤4¨Ó+Ð+ä˜dŸk™kÓ*ò 	#ˆEØÑ  T¨U¢]Ø˜T‘{Ò"ð	#ð
 �4—<‘<ÑØ—<‘< Ñ%Ð%à�L‰L×Ñ˜^¨TÓ2ˆÙÜ˜aŸf™f¤hÔ/Ð/Ð/Ø—F‘F—L‘LˆEØ�u‰}Ü�t“9˜q’= T¨!¡W°¢^¸¸Q¹À3ºÙ*Ø×-Ñ-¨d°CÔ8ØØ˜T‘{�Ø�á¡_Ø×!Ñ! $¨Ô,ð ñ Ø$Ð$Ørh  c                ór  — | j                   €y|�,| j                  |«      s| j                  |j                  «      sy| j	                  |«      rj|j
                  | j                  vry| j                  |j
                     }| j                  |j                  «      sy| j	                  |j                  «       S y)a/  Can a symbol defined in class body accessed at current statement?

        Only allow access to class attributes textually after
        the definition, so that it's possible to fall back to the
        outer scope. Example:

            class X: ...

            class C:
                X = X  # Initializer refers to outer scope

        Nested classes are an exception, since we want to support
        arbitrary forward references in type annotations. Also, we
        allow forward references to type aliases to support recursive
        types.
        TF)	rI  Úis_textually_before_statementÚis_defined_in_current_moduler†  Úis_type_liker”  r5  Úis_textually_before_classr¤  )re  r¤  Úglobal_nodes      rf  rÇ  z/SemanticAnalyzer.is_active_symbol_in_class_bodyU  s¢   € ð& �>‰>Ð!ààˆLØ×1Ñ1°$Ô7Ø×4Ñ4°T·]±]ÔCàØ×Ñ˜TÔ"ð �y‰y §¡Ñ,ØØŸ,™, t§y¡yÑ1ˆKØ×1Ñ1°+×2BÑ2BÔCØØ×(Ñ(¨×)9Ñ)9Ó:Ð:Ð:Ørh  c                ón   — t        |t        t        f«      xs t        |t        «      xr |j                  S rj  )r�  rŠ   r   rp   rM  ©re  r¤  s     rf  rÍ  zSemanticAnalyzer.is_type_like|  s0   € Ü˜$¤¬9Ð 5Ó6ò 
Ü�tœ_Ó-ÒG°$×2GÑ2Gð	
rh  c                ó  — | j                   sJ ‚| j                   j                  |j                  z
  }| j                  || j                   «      ryt        |t        «      r$|j
                  s|t        |j                  «      kD  S |dkD  S )z©Check if a node is defined textually before the current statement

        Note that decorated functions' line number are the same as
        the top decorator.
        Fr   )rI  r¸  Úis_overloaded_itemr�  rG   r"  r’  r  )re  r¤  Ú	line_diffs      rf  rË  z.SemanticAnalyzer.is_textually_before_statement�  ss   € ð �~Š~Ðˆ~Ø—N‘N×'Ñ'¨$¯)©)Ñ3ˆ	ð
 ×"Ñ" 4¨¯©Ô8ØÜ˜œiÔ(°×1AÒ1AØœs 4×#;Ñ#;Ó<Ñ<Ð<à˜q‘=Ð rh  c                ó~   — | j                   €J ‚|€y|j                  | j                   j                  j                  k  S )zFSimilar to above, but check if a node is defined before current class.F)rl  r¸  r  rÑ  s     rf  rÎ  z*SemanticAnalyzer.is_textually_before_class”  s7   € à�y‰yÐ$Ð$Ð$Øˆ<ØØ�y‰y˜4Ÿ9™9Ÿ>™>×.Ñ.Ñ.Ð.rh  c                ór  — t        |t        «      r¢t        |t        «      r’||j                  D �ch c]   }t        |t        «      r|j
                  n|’Œ" c}v }|j                  duxrD t        |j                  t        «      xr ||j                  j
                  u xs ||j                  u }|xs |S yc c}w )z=Check whether the function belongs to the overloaded variantsNF)r�  rl   rS   rÔ  rG   rs  rª  )re  r¤  rI  rz  Úin_itemsÚin_impls         rf  rÓ  z#SemanticAnalyzer.is_overloaded_item›  s§   € ä�dÔ-Ô.´:¸iÌÔ3QØ ØOSÏzÉzö%ØGKœZ¨¬iÔ8�—	’	¸dÑBò%ð ˆHð —i‘i tÐ+ò Ü˜DŸI™I¤yÓ1ÒQ°iÀ4Ç9Á9Ç>Á>Ð6Qò *Ø §	¡	Ð)ð ð Ò&˜wÐ&Øùò%s   °%B4c                óN   — |syt        | j                  |«      | j                  k(  S r´  )r  r4  r  r-  s     rf  rÌ  z-SemanticAnalyzer.is_defined_in_current_module¨  s"   € ÙØÜ˜TŸ\™\¨8Ó4¸¿¹ÑGÐGrh  c                ó  — d|vr| j                  |||¬«      S |j                  d«      }| j                  }| j                  |d   ||¬«      }|�rœt        dt	        |«      «      D �]ƒ  }|j
                  }||   }	t        |t        «      r|j                  |	«      }
�n$t        |t        «      r| j                  ||	«      }
|j                  }nõt        |t        «      r|c S t        |t        «      rk|j                  r_t        |j                  t         «      sJ ‚t        |j                  t"        «      r&|j                  j$                  j                  |	«      }
nid}
nft        |t&        «      r>t)        |j$                  «      }t        |t*        «      r| j-                  ||||d |«      c S t        |t.        «      r|	dv r yd}
|
r|
j0                  r|s| j3                  |||¬«        y|
}�Œ† |�| j5                  |«       |S )aS  Lookup a qualified name in all activate namespaces.

        Note that the result may contain a PlaceholderNode. The caller may
        want to defer in that case.

        Generate an error if the name is not defined unless suppress_errors
        is true or the current namespace is incomplete. In the latter case
        defer.
        r�  rx  r   r#  N)r|  Úkwargs)r3  )r·  ré  r  rý  r’  r¤  r�  rŠ   rÛ  re   rD  r†  rp   r   rô  rü  rñ   rê   rl  r�   r  rç   Úimplicit_symbolrn   r  r]  rE  )re  r”  r>  ry  Úpartsr3  r}  r£  r¤  ÚpartÚnextsymr«  s               rf  r{  z!SemanticAnalyzer.lookup_qualified­  s»  € ð �d‰?à—;‘;˜t S¸/�;ÓJÐJØ—
‘
˜3“ˆØ—O‘Oˆ	Ø�k‰k˜% ™( C¸ˆkÓIˆÚÜ˜1œc %›jÓ)ó !�Ø—x‘x�Ø˜Q‘x�Ü˜d¤HÔ-Ø"Ÿh™h t›n’GÜ ¤hÔ/Ø"×4Ñ4°T¸4Ó@�GØ $§¡‘IÜ ¤oÔ6Ø’JÜ ¤iÔ0°T·\²\Ü% d§k¡k´:Ô>Ð>Ð>Ü! $§+¡+¬xÔ8Ø"&§+¡+×"2Ñ"2×"6Ñ"6°tÓ"<™à"&™ä! $¬Ô,Ü-¨d¯i©iÓ8˜Ü% c¬7Ô3à#'×#7Ñ#7¸¸TÀ5ÈÈÀ9ÈcÓ#RÒRô " $¬Ô6¸4ÐCUÑ;UÙ#à"�GÙ '×"7Ò"7Ù*Ø×-Ñ-¨d°CÀ9Ð-ÔMÙØ’ðC!ðD ˆ?Ø×'Ñ'¨Ô,Øˆ
rh  c                ó¦   — 	 | j                  |«      }t        |t        «      r | j	                  |j
                  |d¬«      }|S y # t        $ r Y y w xY w©NTrx  )r   r   r�  rÿ   r{  r”  )re  r÷  râ  r½  s       rf  r¬  z!SemanticAnalyzer.lookup_type_nodeæ  sZ   € ð	Ø×,Ñ,¨TÓ2ˆAô �aœÔ%Ø×%Ñ% a§f¡f¨dÀDÐ%ÓIˆAØˆHØøô $ò 	Ùð	ús   ‚A Á	AÁAc                óH  — |j                   }|j                  }|j                  |«      }|sè|dz   |z   }|| j                  v r1| j	                  ||«      rt        t        | j                  |   «      }|S | j                  |«      r| j                  «        |S d|v r*| j                  |d   ||«      }|r`t        t        |«      }|S | j                  |«      r=t        t        j                  «      }t        ||¬«      }	||	_        t        t        |	«      }|S |j                   rd}|S )zcLook up a symbol from a module.

        Return None if no matching symbol could be bound.
        r�  rC  ©rl  N)r†  r…  rÛ  r4  Úis_visible_importr€   r&   rX  rË  rH  Úis_missing_modulerç   rø   Úfrom_unimported_typer�   r£  r  )
re  r¤  r”  rM  r…  r}  r†  rP  Úvar_typer¬  s
             rf  rD  z"SemanticAnalyzer.get_module_symbolð  s$  € ð
 —‘ˆØ—
‘
ˆØ�i‰i˜‹oˆÙØ ‘| dÑ*ˆHØ˜4Ÿ<™<Ñ'¨D×,BÑ,BÀ6È8Ô,TÜ%¤d¨D¯L©L¸Ñ,BÓC�ð  ˆ
ð ×-Ñ-¨fÔ5Ø×*Ñ*Ô,ð ˆ
ð  %Ñ'Ø×.Ñ.¨u°]Ñ/CÀTÈ8ÓT�ÙÜ)¬$°Ó5�Cð ˆ
ð ×'Ñ'¨Ô1ô #¤9×#AÑ#AÓB�Ü˜ 8Ô,�Ø&�”Ü%¤d¨AÓ.�ð ˆ
ð ×ÒØˆCØˆ
rh  c                ó  — || j                   | j                     v ry|| j                  vr| j                  |«       | j                  | j                  vr| j                  | j                  «       || j                  | j                     v S rw  )rO  r  rb  Ú add_transitive_submodule_imports)re  r>  r‘  s      rf  rä  z"SemanticAnalyzer.is_visible_import  sv   € à�—‘ §¡Ñ1Ñ1àØ˜$×;Ñ;Ñ;ð
 ×1Ñ1°'Ô:Ø�?‰? $×"CÑ"CÑCØ×1Ñ1°$·/±/ÔBØ�T×6Ñ6°t·±ÑGÐGÐGrh  c                ól  — || j                   vry | j                   |   }|h}|h}|r|j                  «       }||v rŒ|j                  |«       d|v r|j                  |«       || j                  v r|| j                  |   z  }Œ^|| j                   v r|| j                   |   z  }|rŒ|| j                  |<   y rá  )rO  rð  r#  rb  )re  Úmod_idÚtodoÚseenrU  Údeps         rf  ré  z1SemanticAnalyzer.add_transitive_submodule_imports  s¾   € Ø˜Ÿ™Ñ(ØØ�‰˜vÑ&ˆØˆxˆØ�ˆÙØ—(‘(“*ˆCØ�d‰{ØØ�H‰H�SŒMØ�c‰zØ—
‘
˜3”Ø�d×7Ñ7Ñ7Ø˜$×;Ñ;¸CÑ@Ñ@�ØØ�d—o‘oÑ%Ø˜Ÿ™¨Ñ,Ñ,�ò ð 5;ˆ×)Ñ)¨&Ò1rh  c                ó   — || j                   v S rj  )rQ  )re  rM  s     rf  rå  z"SemanticAnalyzer.is_missing_module0  s   € Ø˜×-Ñ-Ð-Ð-rh  c                ó  — |j                   €d}n|j                   j                  }|€|}n|dz   dj                  |«      z   }t        t        j
                  |«      }t        |d   |«      }||_        t        t        |«      S )z>Create symbol for a qualified name reference through Any type.Nr�  r®  )
r¤  r†  r`  rç   rø   Úfrom_another_anyr�   r£  r€   r&   )	re  r}  r”  rÝ  Úsource_typeÚbasenamer†  rç  ræ  s	            rf  rÜ  z SemanticAnalyzer.implicit_symbol3  sy   € ð �8‰8ÐØ‰Hà—x‘x×(Ñ(ˆHØÐØ‰Hà #‘~¨¯©°«Ñ7ˆHÜœ9×5Ñ5°{ÓCˆÜ�%˜‘)˜XÓ&ˆØ ˆŒÜœt SÓ)Ð)rh  c                ó(  — t        |j                  t        t        f«      rrt	        |j                  j
                  «      }t        |t        «      r|j                  }nt        t        j                  «      }t        ||¬«      }||_        d|_        |S y)a¦  Create a dummy variable using module-level __getattr__ return type.

        If not possible, return None.

        Note that multiple Var nodes can be created for a single name. We
        can use the from_module_getattr and the fullname attributes to
        check if two dummy Var nodes refer to the same thing. Reusing Var
        nodes would require non-local mutable state, which we prefer to
        avoid.
        rã  TN)r�  r¤  rS   r�   r  rl  rè   r1  rç   rø   r]  r£  Úfrom_module_getattr)re  Úgetattr_defnr”  r†  Ú	node_typer«  r¬  s          rf  rH  z#SemanticAnalyzer.create_getattr_varD  sv   € ô �l×'Ñ'¬'´3¨Ô8Ü'¨×(9Ñ(9×(>Ñ(>Ó?ˆIÜ˜)¤\Ô2Ø×(Ñ(‘äœi×2Ñ2Ó3�Ü�D˜sÔ#ˆAØ"ˆAŒKØ$(ˆAÔ!ØˆHØrh  c                ó:   — | j                  |«      }|€J |«       ‚|S rj  )r÷  )re  r†  Úrets      rf  Úlookup_fully_qualifiedz'SemanticAnalyzer.lookup_fully_qualified]  s&   € Ø×1Ñ1°(Ó;ˆØˆÐ( Ó(ˆØˆ
rh  c                óT  — |j                  dd¬«      \  }}|| j                  v rO| j                  |   }|j                  j                  |«      }|€!| j	                  |«      r| j                  «        |S |j                  d«      }g }|r\dj                  |«      | j                  vr?|j                  |j                  «       «       |rdj                  |«      | j                  vrŒ?|r|sy|j                  «        dj                  |«      }| j                  |   }|j                  j                  |d   «      }|€!| j	                  |«      r| j                  «        |dd D ]E  }|�@t        |j                  t        «      r&|j                  j                  j                  |«      }ŒE y |S )aT  Lookup a fully qualified name that refers to a module-level definition.

        Don't assume that the name is defined. This happens in the global namespace --
        the local module namespace is ignored. This does not dereference indirect
        refs.

        Note that this can't be used for names nested in class namespaces.
        r�  r#  rÀ  Nr   )r  r4  r…  rÛ  rX  rË  ré  r`  r  rð  Úreverser�  r¤  rŠ   )	re  r†  rM  r”  ÚfilenoderU  Úsplitted_modulesr…  rÞ  s	            rf  r÷  z/SemanticAnalyzer.lookup_fully_qualified_or_noneb  s  € ð  —‘ s°Q�Ó7‰ˆ�à�T—\‘\Ñ!ð —|‘| FÑ+ˆHØ—^‘^×'Ñ'¨Ó-ˆFØˆ~ $×">Ñ">¸vÔ"Fà×*Ñ*Ô,ØˆMð  (Ÿ~™~¨cÓ2ÐØˆEá" s§x¡xÐ0@Ó'AÈÏÉÑ'UØ—‘Ð-×1Ñ1Ó3Ô4ñ # s§x¡xÐ0@Ó'AÈÏÉÒ'Uñ $©5àð �M‰MŒOà—X‘XÐ.Ó/ˆFØ—|‘| FÑ+ˆHØ—^‘^×'Ñ'¨¨a©Ó1ˆFàˆ~ $×">Ñ">¸vÔ"Fà×*Ñ*Ô,à˜a˜b˜	ò  �ØÐ%¬*°V·[±[Ä(Ô*KØ#Ÿ[™[×.Ñ.×2Ñ2°4Ó8‘Fáð	 ð
 ˆMrh  c                ó^   — | j                   €| j                  d«      | _         | j                   S )NrÐ  )r^  rþ  rk  s    rf  rB  zSemanticAnalyzer.object_type•  s,   € Ø×ÑÐ$Ø $§¡Ð0AÓ BˆDÔØ× Ñ Ð rh  c                ó^   — | j                   €| j                  d«      | _         | j                   S )NrÊ  )r\  rþ  rk  s    rf  rá  zSemanticAnalyzer.str_typeš  s&   € Ø�>‰>Ð!Ø!Ÿ_™_¨^Ó<ˆDŒNØ�~‰~Ðrh  c                ó^   — | j                   €| j                  d«      | _         | j                   S )Nzbuiltins.function)r]  rþ  rk  s    rf  rÏ   zSemanticAnalyzer.function_typeŸ  s,   € Ø×ÑÐ&Ø"&§/¡/Ð2EÓ"FˆDÔØ×"Ñ"Ð"rh  c                ó   — | j                  |«      }|sJ d«       ‚|j                  }t        |t        «      sJ |«       ‚|rt	        ||«      S t	        |t        t        j                  «      gt        |j                  j                  «      z  «      S )Nz3Internal error: attempted to construct unknown type)rú  r¤  r�  rŠ   rê   rç   rø   r¥  r’  r  r  ©re  r†  r|  r}  r¤  s        rf  rþ  zSemanticAnalyzer.named_type¤  s}   € Ø×)Ñ)¨(Ó3ˆÙÐIÐIÓIˆsØ�x‰xˆÜ˜$¤Ô)Ð/¨4Ó/Ð)Ùä˜D $Ó'Ð'Ü˜œw¤y×'=Ñ'=Ó>Ð?Ä#ÀdÇiÁi×FYÑFYÓBZÑZÓ[Ð[rh  c                óÌ  — | j                  |«      }|rt        |j                  t        «      ry |j                  }t        |t        «      r2t        |j
                  t        «      sJ ‚|j
                  j                  }t        |t        «      sJ |«       ‚|�t        ||«      S t        |t        t        j                  «      gt        |j                  j                  «      z  «      S rj  )r÷  r�  r¤  rp   r   rü  rê   rl  rŠ   rç   rø   Úunannotatedr’  r  r  r  s        rf  rÓ  z#SemanticAnalyzer.named_type_or_none®  s²   € Ø×1Ñ1°(Ó;ˆÙ”j §¡¬?Ô;ØØ�x‰xˆÜ�dœIÔ&Ü˜dŸk™k¬8Ô4Ð4Ð4Ø—;‘;×#Ñ#ˆDÜ˜$¤Ô)Ð/¨4Ó/Ð)ØÐä˜D $Ó'Ð'Ü˜œw¤y×'<Ñ'<Ó=Ð>ÄÀTÇYÁY×EXÑEXÓAYÑYÓZÐZrh  c                ó$   — | j                  |«      S )z,Legacy function -- use named_type() instead.)rþ  )re  Úfully_qualified_names     rf  Úbuiltin_typezSemanticAnalyzer.builtin_type¼  s   € à�‰Ð3Ó4Ð4rh  c                óô   — | j                   d   �| j                   d   j                  |«      S | j                  �%| j                  j                  j                  |«      S | j                  j                  |«      S ©Nr®  )r8  rÛ  rl  r…  r5  ©re  r”  s     rf  Úlookup_current_scopez%SemanticAnalyzer.lookup_current_scopeÀ  sa   € Ø�;‰;�r‰?Ð&Ø—;‘;˜r‘?×&Ñ& tÓ,Ð,Ø�Y‰YÐ"Ø—9‘9—?‘?×&Ñ& tÓ,Ð,à—<‘<×#Ñ# DÓ)Ð)rh  c
           	     ó®   — | j                  «       rt        }
n| j                  �t        }
nt        }
t        |
|||¬«      }| j                  |||||||	«      S )aà  Add symbol to the currently active symbol table.

        Generally additions to symbol table should go through this method or
        one of the methods below so that kinds, redefinitions, conditional
        definitions, and skipped names are handled consistently.

        Return True if we actually added the symbol, or False if we refused to do so
        (because something is not ready).

        If can_defer is True, defer current target if adding a placeholder.
        r6  )rÓ  r*   rl  r+   r&   r€   Úadd_symbol_table_node)re  r”  r¤  r'  r   r  rN  rz  r-  r.  rA  r@  s               rf  rß  zSemanticAnalyzer.add_symbolÌ  sb   € ð. ×ÑÔÜ‰DØ�Y‰YÐ"Ü‰DäˆDÜ Ø�$ mÀ=ô
ˆð ×)Ñ)Ø�&˜' 9Ð.CÀ[ÐR\ó
ð 	
rh  c                óf   — t        t        |«      | j                  t        ||j                  «      <   y)a£  Add symbol to a global namespace.

        This doesn't check for previous definition and is only used
        for serialization of classes nested in functions/methods.

        Classes defined within methods can be exposed through an
        attribute type, but method-level symbol tables aren't serialized.
        This method can be used to add such classes to an enclosing,
        serialized symbol table.
        N)r€   r&   r5  r•   r¸  )re  r”  r>  r¤  s       rf  ræ  z"SemanticAnalyzer.add_global_symbolð  s&   € ô :IÌÈtÓ9Tˆ�‰Ô% d¨C¯H©HÓ5Ò6rh  c                ó  — | j                  ||¬«      }|j                  |«      }	t        |j                  t        «      r(|r&|�| j                  |d|«       n| j                  «        |	�ð|�ît        |	|«      sâ|	j                  }
|j                  }t        |t        «      ryt        |
|«      s¬t        |t        t        t        t        f«      r| j                  |||«       t        |
t        «      r*t        |
«      r|
j                   rR| j#                  d|«       yt        |t        t        f«      r| j%                  |
|«      sd|vr| j'                  |||	«       y|s"|| j(                  d   vr d| j(                  d   vr|||<   |sd| _        yy)	aæ  Add symbol table node to the currently active symbol table.

        Return True if we actually added the symbol, or False if we refused
        to do so (because something is not ready or it was a no-op).

        Generate an error if there is an invalid redefinition.

        If context is None, unconditionally add node, since we can't report
        an error. Note that this is used by plugins to forcibly replace nodes!

        TODO: Prevent plugins from replacing nodes, as it could cause problems?

        Args:
            name: short name of symbol
            symbol: Node to add
            can_defer: if True, defer current target if adding a placeholder
            context: error context (see above about None value)
        )rz  r.  r”  Fz.InitVar with default value cannot be redefinedú@r®  rt  T)r!  rÛ  r�  r¤  rp   r•  rÖ  Úis_valid_replacementÚis_same_symbolrS   rG   rl   rŠ   Úadd_redefinitionr�   Úis_init_onlyr{  r¼  r‚  rÌ  rA  Úprogress)re  r”  r@  r'  rN  rz  r-  r.  r…  rä  ry  r�  s               rf  r  z&SemanticAnalyzer.add_symbol_table_nodeý  s|  € ð8 ×)Ñ)Ø"7ÀJð *ó 
ˆð —9‘9˜T“?ˆÜ�f—k‘k¤?Ô3¹	ØÐ"Ø×(Ñ(¨¨v°wÕ?ð —
‘
”ð Ð ØÐ#Ü(¨°6Ô:ð —-‘-ˆCØ—+‘+ˆCÜ˜#œÔ/àÜ! # sÔ+Ü˜c¤G¬YÔ8IÌ8Ð#TÔUØ×)Ñ)¨%°°vÔ>Ü˜c¤3Ô'¬L¸Ô,=Ø×-Ò-ØŸ	™	Ð"RÐT[Ô\ð ô $ C¬'´9Ð)=Ô>À4×CXÑCXÐY\Ð^aÔCbà 4™à×-Ñ-¨d°G¸XÔFð ñ Ø˜×*Ñ*¨2Ñ.Ñ.°3¸d×>PÑ>PÐQSÑ>TÑ3Tà ˆE�$‰KÙØ $�”ØØrh  c                óª   — d}d|_         	 |dk(  r|› d�}n|› d|› �}|j                  |«      }|€|||<   y|j                  |j                  u ry|dz  }ŒJ)aO  Add a symbol table node that reflects a redefinition as a function or a class.

        Redefinitions need to be added to the symbol table so that they can be found
        through AST traversal, but they have dummy names of form 'name-redefinition[N]',
        where N ranges over 2, 3, ... (omitted for the first redefinition).

        Note: we always store redefinitions independently of whether they are valid or not
        (so they will be semantically analyzed), the caller should give an error for invalid
        redefinitions (such as e.g. variable redefined as a class).
        r#  Tz-redefinitionN)ru  rÛ  r¤  )re  r…  r”  r@  r£  Únew_namerä  s          rf  r  z!SemanticAnalyzer.add_redefinitionG  sz   € ð ˆð
 #ˆÔØØ�AŠvØ"˜V =Ð1‘à"˜V =°°Ð4�Ø—y‘y Ó*ˆHØÐØ"(��h‘ØØ—‘ &§+¡+Ñ-àØ�‰FˆAð rh  c                ót   — | j                  «       sJ ‚|j                  }||_        | j                  |||«       y)zAdd local variable or function.N)rÓ  r”  r£  rß  )re  r¤  r'  r”  s       rf  r   zSemanticAnalyzer.add_localf  s4   € à×!Ñ!Ô#Ð#Ð#Ø�y‰yˆØˆŒØ�‰˜˜d GÕ,rh  c                ó  — |€y d„ }t         ||«      t        t        t        f«      �r`| j	                  «       j                  |«      }|�‚t         ||j                  «      t        t        t        f«      rWt         ||j                  «       |t        «      «      s% ||j                  «       ||«      j                  k(  r|j                  S t         ||«      t        t        f«      r,t        t        j                  «      }| j                  d|«       n ||«      j                  }t        ||«      }| j                  |«      |_        | j                  €J ‚| j                  |_        |j                  |_        |j                   |_        |S )Nc                ó   — | S rj  © ©Úxs    rf  r  zDSemanticAnalyzer._get_node_for_class_scoped_import.<locals>.<lambda>v  s   € ¨q€ rh  zUnsupported class scoped import)r�  rG   rR   r�   r!  rÛ  r¤  rl  rç   rø   r]  r¼  rÝ  r£  r§  r¸  r¹  )re  r”  Úsymbol_noder'  Úfrä  r«  s          rf  Ú!_get_node_for_class_scoped_importz2SemanticAnalyzer._get_node_for_class_scoped_importm  sA  € ð ÐØñ
 &1ˆÜ‘a˜“n¤y´(¼CÐ&@ÕAð ×0Ñ0Ó2×6Ñ6°tÓ<ˆHð Ð$Ü™q §¡Ó/´)¼XÄsÐ1KÔLä™q §¡Ó/±´7³Ô<Ù˜Ÿ™Ó'©1¨[«>×+>Ñ+>Ò>ð  —}‘}Ð$ô ™!˜K›.¬8´YÐ*?Ô@ô $+¬9×+?Ñ+?Ó#@�Ø—	‘	Ð;¸WÕEá˜“n×)Ñ)�Ü˜d C›.ˆKØ$(×$7Ñ$7¸Ó$=ˆKÔ!Ø—9‘9Ð(Ð(Ð(Ø#Ÿy™yˆKÔØ&Ÿ|™|ˆKÔØ!(§¡ˆKÔØÐrh  c                ó~  — |r|rJ ‚| j                  |«      }|rIt        |j                  t        «      s/t        |j                  t        «      s| j	                  ||||«      ry|j                  }| j                  «       r| j                  |||«      }t        |j                  |||¬«      }| j                  |||«       y)z2Add an alias to an existing symbol through import.Nr6  )
r  r�  r¤  rp   ro  r9  r!  r€   rA  r  )	re  r”  r¤  r'  r   r  ri  r  r@  s	            rf  r:  z$SemanticAnalyzer.add_imported_symbol—  s¯   € ñ !©Ð5Ð5à×3Ñ3°DÓ9ˆáÜ˜×3Ñ3´_ÔEÜ˜tŸy™y¬/Ô:ð ×5Ñ5°d¸OÈTÐSZÔ[Øà)-¯©ˆà×ÑÔ Ø×@Ñ@ÀÀ{ÐT[Ó\ˆKä Ø�I‰I�{°-È}ô
ˆð 	×"Ñ" 4¨°Õ9rh  c                óH  — | j                  «       j                  |«      }|r1t        |j                  t        «      r|j                  j
                  ryt	        |«      }| j                  j                  r
|�||_        nU| j                  r3| j                  j                  dz   |z   |_        | j                  |_        n| j                  |«      |_        d|_        t        t        j                   |j                  ¬«      }||_	        d|_        | j#                  |||||¬«       y)a¯  Add symbol that we don't know what it points to because resolving an import failed.

        This can happen if a module is missing, or it is present, but doesn't have
        the imported attribute. The `target_name` is the name of symbol in the namespace
        it is imported from. For example, for 'from mod import x as y' the target_name is
        'mod.x'. This is currently used only to track logical dependencies.
        Nr�  T©Úmissing_import_namer6  )r!  rÛ  r�  r¤  r�   Úis_suppressed_importr1  Úlogical_depsr£  rl  r†  r§  rÝ  rÞ  rç   rø   ræ  rß  )	re  r”  r'  rî  r   r  rä  ræ  rW  s	            rf  r;  z,SemanticAnalyzer.add_unknown_imported_symbol¶  sç   € ð ×,Ñ,Ó.×2Ñ2°4Ó8ˆÙœ
 8§=¡=´#Ô6¸8¿=¹=×;]Ò;]àÜ�$‹iˆØ�<‰<×$Ò$¨Ð)@ð
 (ˆC�MØ�YŠYØ ŸI™I×.Ñ.°Ñ4°tÑ;ˆCŒMØ—y‘yˆC�Hà ×/Ñ/°Ó5ˆCŒMØˆŒÜœ9×9Ñ9ÈsÏ}É}Ô]ˆØˆŒØ#'ˆÔ Ø�‰Ø�#�w¨mÈ=ð 	õ 	
rh  c              #  óH   K  — | j                   }|| _         d –— || _         y ­wrj  )r?  )re  ÚframeÚ	old_scopes      rf  r<  z!SemanticAnalyzer.tvar_scope_frameá  s    è ø€ à—O‘Oˆ	ØˆŒÛØ#ˆ�ùra  c                óü   — | j                   rJ d«       ‚|rd| _        d| _        |r|j                  n#| j                  r| j                  j                  nd}| j
                  j                  | j                  |f«       y)a]  Defer current analysis target to be analyzed again.

        This must be called if something in the current target is
        incomplete or has a placeholder node. However, this must *not*
        be called during the final analysis iteration! Instead, an error
        should be generated. Often 'process_placeholder' is a good
        way to either defer or generate an error.

        NOTE: Some methods, such as 'anal_type', 'mark_incomplete' and
              'record_incomplete_ref', call this implicitly, or when needed.
              They are usually preferable to a direct defer() call.
        z%Must not defer during final iterationTr®  N)ru  r  r¯  r¸  rI  rV  r  r  )re  Údebug_contextr�  r¸  s       rf  rÖ  zSemanticAnalyzer.deferè  sr   € ð ×'Ò'ÐPÐ)PÓPÐ'Ùð !ˆDŒMØˆŒñ #0ˆM×ÒÈDÏNÊN°T·^±^×5HÒ5HÐ`bð 	ð 	×#Ñ#×*Ñ*¨D¯O©O¸TÐ+BÕCrh  c                ó   — | j                   S )zHReturn tag that can be used for tracking references to incomplete names.©r  rk  s    rf  rö  z&SemanticAnalyzer.track_incomplete_refs  s   € à×'Ñ'Ð'rh  c                ó    — | j                   |k7  S )zDHave we encountered an incomplete reference since starting tracking?r.  )re  rû  s     rf  rú  z%SemanticAnalyzer.found_incomplete_ref  s   € à×'Ñ'¨3Ñ.Ð.rh  c                óN   — | j                  «        | xj                  dz  c_        y)zRRecord the encounter of an incomplete reference and defer current analysis target.r#  N)rÖ  r  rk  s    rf  rË  z&SemanticAnalyzer.record_incomplete_ref  s   € à�
‰
ŒØ× Ò  AÑ%Ö rh  c                ó^  — | j                  |«       |dk(  rd| _        nq| j                  |«      s`| j                  |«      }| j                  sJ ‚t        ||| j                  j                  |¬«      }| j                  ||||t        «       ¬«       | j                  d   j                  |«       y)aÕ  Mark a definition as incomplete (and defer current analysis target).

        Also potentially mark the current namespace as incomplete.

        Args:
            name: The name that we weren't able to define (or '*' if the name is unknown)
            node: The node that refers to the name (definition or lvalue)
            becomes_typeinfo: Pass this to PlaceholderNode (used by special forms like
                named tuples that will create TypeInfos).
        rt  TrL  rD  r®  N)rÖ  r°  rK  rÝ  rI  rp   r¸  rß  rà  rA  r#  )re  r”  r¤  rM  r   r  r†  rq  s           rf  rø  z SemanticAnalyzer.mark_incomplete  s¥   € ð$ 	�
‰
�4ÔØ�3Š;Ø"ˆD�OØ×+Ñ+¨DÔ1Ø×*Ñ*¨4Ó0ˆHØ—>’>Ð!�>Ü)Ø˜$ §¡× 3Ñ 3ÐFVôˆKð �O‰OØØØ+Ø+Ü%›ð ô ð 	×Ñ˜2Ñ×"Ñ" 4Õ(rh  c                ó   — || j                   v S )zÂIs a module or class namespace potentially missing some definitions?

        If a name is missing from an incomplete namespace, we'll need to defer the
        current analysis target.
        )rR  r-  s     rf  rX  z(SemanticAnalyzer.is_incomplete_namespace5  s   € ð ˜4×5Ñ5Ð5Ð5rh  c                ój   — | j                   r| j                  |||«       y| j                  ||¬«       y)a  Process a reference targeting placeholder node.

        If this is not a final iteration, defer current node,
        otherwise report an error.

        The 'kind' argument indicates if this a name or attribute expression
        (used for better error message).
        rŽ  N)ru  Úcannot_resolve_namerÖ  )re  r”  rA  r>  r�  s        rf  r•  z$SemanticAnalyzer.process_placeholder=  s/   € ð ×ÒØ×$Ñ$ T¨4°Õ5à�J‰J�s¨>ˆJÕ:rh  c                óŽ   — |rd|› d�nd}| j                  d|› |› d�|«       | j                  «       r| j                  d|«       y y )Nrò  r[  rD  zCannot resolve z (possible cyclic definition)z1Recursive types are not allowed at function scope)r¼  rÓ  rù  )re  r”  rA  r>  Úname_formats        rf  r4  z$SemanticAnalyzer.cannot_resolve_nameM  sP   € Ù&*˜˜4˜& ‘l°ˆØ�	‰	�O D 6¨+¨Ð6SÐTÐVYÔZØ×ÑÔØ�I‰IÐIÈ3ÕOð  rh  c                óš   — | j                   �| j                   j                  dz   |z   S | j                  «       r|S | j                  dz   |z   S rá  )rl  r£  rÓ  r  r  s     rf  rÝ  zSemanticAnalyzer.qualified_nameS  sK   € Ø�9‰9Ð Ø—9‘9×&Ñ&¨Ñ,¨tÑ3Ð3Ø×ÑÔ!ØˆKà—?‘? SÑ(¨4Ñ/Ð/rh  c              #  ó.  K  — | j                   j                  |t        «       «      }| j                  j	                  |«       t        |t        t        f«      }| j                  j	                  |st        nt        «       | j                  j	                  t        «       «       | j                  j	                  t        «       «       | j                  j	                  d«       | j                  j	                  d«       | j                   j	                  t        «       «       	 d–— | j                  j#                  «        | j                  j#                  «        | j                  j#                  «        | j                  j#                  «        | j                  j#                  «        | j                  j#                  «        | j                   j#                  «        y# | j                  j#                  «        | j                  j#                  «        | j                  j#                  «        | j                  j#                  «        | j                  j#                  «        | j                  j#                  «        | j                   j#                  «        w xY w­w)z3Enter a function, generator or comprehension scope.r®  r   N)rL  rÝ  r   r8  r  r�  rU   rJ   r:  r&  r(  r6  rM  r7  r;  rC  rA  rð  )re  r   r…  Úis_comprehensions       rf  rÿ  zSemanticAnalyzer.enter[  sÄ  è ø€ ð
 ×!Ñ!×,Ñ,¨X´{³}ÓEˆØ�‰×Ñ˜5Ô!Ü% h´Ô@WÐ0XÓYÐØ×Ñ×ÑÑ2B¥
ÔH[Ô\Ø×Ñ× Ñ ¤£Ô'Ø×Ñ×"Ñ"¤3£5Ô)à×Ñ×Ñ Ô#Ø�‰×Ñ˜qÔ!Ø×Ñ×!Ñ!¤#£%Ô(ð		%Ûà�K‰K�O‰OÔØ×Ñ× Ñ Ô"Ø×Ñ×!Ñ!Ô#Ø×Ñ×#Ñ#Ô%Ø×Ñ× Ñ Ô"Ø�O‰O×ÑÔ!Ø×Ñ×"Ñ"Õ$øð �K‰K�O‰OÔØ×Ñ× Ñ Ô"Ø×Ñ×!Ñ!Ô#Ø×Ñ×#Ñ#Ô%Ø×Ñ× Ñ Ô"Ø�O‰O×ÑÔ!Ø×Ñ×"Ñ"Õ$üs    ‚DJÄG Ä#B7JÇB8JÊJc                ól   — | j                   d   }|t        k(  r| j                   d   }|t        t        fv S )Nr®  éþÿÿÿ)r:  r*  r&  r(  )re  rƒ  s     rf  rÓ  zSemanticAnalyzer.is_func_scopeu  s<   € Ø×%Ñ% bÑ)ˆ
ØÔ)Ò)Ø×)Ñ)¨"Ñ-ˆJØœjÔ*=Ð>Ð>Ð>rh  c                ó:   — t        d„ | j                  D «       «      S )zJAre we underneath a function scope, even if we are in a nested class also?c              3  ó8   K  — | ]  }|t         t        fv –— Œ y ­wrj  )r&  r(  )r¢  r$  s     rf  r¥  z?SemanticAnalyzer.is_nested_within_func_scope.<locals>.<genexpr>}  s   è ø€ ÒT¸a�1œÔ%8Ð9Ô9ÑTùrY  )r­  r:  rk  s    rf  râ  z,SemanticAnalyzer.is_nested_within_func_scope{  s   € äÑTÀ4×CSÑCSÔTÓTÐTrh  c                óD   — | j                   d uxr | j                  «        S rj  )rl  rÓ  rk  s    rf  r9  zSemanticAnalyzer.is_class_scope  s"   € Ø�y‰y Ð$ÒA¨T×-?Ñ-?Ó-AÐ)AÐArh  c                óH   — | j                  «       xs | j                  «        S rj  )r9  rÓ  rk  s    rf  ré  z SemanticAnalyzer.is_module_scope‚  s"   € Ø×'Ñ'Ó)ÒA¨T×-?Ñ-?Ó-AÐBÐBrh  c                ór   — | j                  «       rt        }|S | j                  «       rt        }|S t        }|S rj  )r9  r+   rÓ  r*   r&   )re  rA  s     rf  rG  z$SemanticAnalyzer.current_symbol_kind…  s@   € Ø×ÑÔ ÜˆDð
 ˆð	 ×ÑÔ!ÜˆDð ˆô ˆDØˆrh  c                óº  — |r+| j                   d   t        k(  r| j                  d   }|€J ‚|S | j                  «       rí| j                   d   t        k(  r| j                  d   }n| j                  d   }|€J ‚|rªt	        | j                  «      t	        | j                   «      k(  sJ ‚t        t        | j                   «      «      D ]U  \  }}|t        k7  sŒ|t	        | j                  «      dz
  k(  r| j                  }n| j                  d|z
     }|€J d«       ‚|} n
 J d«       ‚|}|€J ‚|S | j                  �| j                  j                  }|S | j                  }|S )Nr®  r;  r#  z)Escaping comprehension from invalid scopez0Should have at least one non-comprehension scope)r:  r*  r8  rÓ  r’  r®  rÍ  r(  r5  rl  r…  )re  rz  r.  r½  r£  rƒ  r…  Únames_candidates           rf  r!  z%SemanticAnalyzer.current_symbol_tableŽ  st  € ñ ˜$×*Ñ*¨2Ñ.Ô2BÒBØ—‘˜B‘ˆAØ�=Ð �=ØˆHØ×ÑÔ!Ø×Ñ Ñ#Ô'7Ò7Ø—K‘K ‘O‘à—K‘K ‘O�Ø�=Ð �=Ù$Ü˜4Ÿ;™;Ó'¬3¨t×/?Ñ/?Ó+@Ò@Ð@Ð@ä%.¬x¸×8HÑ8HÓ/IÓ%Jò U‘M�A�zØ!Ô%8Ó8Ø¤ D§K¡KÓ 0°1Ñ 4Ò4à$(§L¡L™Eà.2¯k©k¸"¸q¹&Ñ.A˜Oà /Ð ;ðKàJóKØ ;à$3˜EÙðUð UÐ"TÓT˜5à�ØÐ$Ð$Ð$ð
 ˆð	 �Y‰YÐ"Ø—I‘I—O‘OˆEð ˆð —L‘LˆEØˆrh  c                ón   — | j                  «       xr$ || j                  d   v xs || j                  d   v S r
  )rÓ  r6  r7  r  s     rf  rK  z&SemanticAnalyzer.is_global_or_nonlocalµ  s@   € Ø×!Ñ!Ó#ò 
Ø�D×%Ñ% bÑ)Ð)ÒL¨T°T×5HÑ5HÈÑ5LÐ-Lð	
rh  c                ó¨   — t        |t        «      r|gn|}|D ]8  }t        |t        «      sŒ| j                  j	                  |j
                  «       Œ: y rj  )r�  rM   r|   rS  r  r|  )re  Úexp_or_expsÚexpsÚexps       rf  rÁ  zSemanticAnalyzer.add_exportsº  sE   € Ü *¨;¼
Ô C�‰}ÈˆØò 	3ˆCÜ˜#œwÕ'Ø× Ñ ×'Ñ'¨¯	©	Õ2ñ	3rh  c                óæ  — | j                  |xs | j                  «      }|€E| j                  r9| j                  «       s)| j                  r| j                  d   r| j
                  sd}|r| j                  «        y d|› d�}| j                  j                  «       s»d|vr·|j                  d«      r|j                  d«      s•d|› �t        vrŠ|j                  | j                  j                  j                  | j                  j                   i «      vrD| j#                  «       }|j%                  |«       t'        ||d¬	«      }|r|d
t)        |d«      › d�z  }| j+                  ||t,        j.                  ¬«       d|› �t        v r2d|› �}| j1                  |«      €| j                  j3                  ||«       t4        D �ch c]  }|j7                  dd«      d   ’Œ }	}t4        D �ci c]  }|j9                  «       |“Œ }
}|	D ]g  }|› d› �j9                  «       }||
vrŒdj;                  ||
|   j=                  dd«      d   ¬«      }| j?                  ||t,        j.                  ¬«       Œi y c c}w c c}w )Nr®  Tr  z" is not definedr�  rH  r�  r'  rU  z; did you mean rV  rW  r4  r#  r   zXDid you forget to import it from "{module}"? (Suggestion: "from {module} import {name}"))rM  r”  ) rX  r  rl  rÓ  rN  ru  rË  rP  r\  rS  r	  r   r¸  rG  Úignored_linesrÛ  ÚfileÚ_get_names_in_scoper_  r   r   r¼  rC  ÚNAME_DEFINEDr÷  r_  r   ré  r  rÖ  r  rù  )re  r”  r>  r3  r°  rb  rc  rd  r†  Úmodules_with_unimported_hintsÚ
lowercasedrM  Úhints                rf  r]  z!SemanticAnalyzer.name_not_definedÀ  sa  € Ø×1Ñ1°)Ò2N¸t¿¹ÓOˆ
àÐØ—	’	Ø×&Ñ&Ô(Ø×*Ò*Ø×*Ñ*¨2Ò.Ø×(Ò(ð ˆJÙð ×&Ñ&Ô(ØØ˜4˜&Ð 0Ð1ˆà—‘×/Ñ/Ô1Ø˜4‘Ø—_‘_ TÔ*¨t¯}©}¸TÔ/BØ˜D˜6Ð"Ô*AÑAØ—‘ §¡× 9Ñ 9× =Ñ =¸d¿k¹k×>NÑ>NÐPRÓ SÑSà×3Ñ3Ó5ˆLØ× Ñ  Ô&Ü" 4¨¸Ô;ˆGÙØ˜_¬Z¸ÀÓ-FÐ,GÀqÐIÑI�Ø�	‰	�'˜3¤U×%7Ñ%7ˆ	Ô8à�t�fÐÔ!8Ñ8à" 4 &Ð)ˆHØ×2Ñ2°8Ó<ÐDà—‘×)Ñ)¨(°CÔ8ô /Iö)
Ø&*ˆD�J‰J�s˜AÓ˜qÓ!ð)
Ð%ð )
ô 6PÖP¨T�d—j‘j“l DÑ(ÐPˆ
ÐPØ3ò 		:ˆFØ ˜  4 &Ð)×/Ñ/Ó1ˆHØ˜zÑ)Øð?ç‰f˜F¨°HÑ)=×)DÑ)DÀSÈ!Ó)LÈRÑ)PˆfÓQð ð �I‰I�d˜C¤e×&8Ñ&8ˆIÕ9ñ		:ùò	)
ùò Qs   Æ<I)Ç"I.c                óä  — t        «       }| j                  D ]$  }|€Œ|j                  |j                  «       «       Œ& | j	                  «       rA| j
                  €J ‚|j                  | j
                  j                  j                  «       «       |j                  | j                  j                  «       «       | j                  j                  dd«      }|rut        |j                  t        «      sJ ‚|j                  j                  j                  «       D ]2  }t        |«      dkD  r|d   dk(  r	|d   dk7  rŒ"|j                  |«       Œ4 |D �ch c]  }|j                  d«      rŒ|’Œ c}S c c}w )a%  Collect all names visible in the current scope for fuzzy matching suggestions.

        This includes:
        - Local variables (from function scopes)
        - Class attributes (only when directly in class body, not in methods)
        - Global/module-level names
        - Builtins
        Nr‚  r#  r   rW  rH  )rM  r8  ÚupdaterY  r9  rl  r…  r5  rÛ  r�  r¤  re   r’  r#  rS  )re  r…  r  r�  Úbuiltin_namer½  s         rf  rK  z$SemanticAnalyzer._get_names_in_scopeö  s)  € ô ›%ˆà—[‘[ò 	+ˆEØÑ Ø—‘˜UŸZ™Z›\Õ*ð	+ð ×ÑÔ Ø—9‘9Ð(Ð(Ð(Ø�L‰L˜Ÿ™Ÿ™×-Ñ-Ó/Ô0à�‰�T—\‘\×&Ñ&Ó(Ô)à�L‰L×Ñ˜^¨TÓ2ˆÙÜ˜aŸf™f¤hÔ/Ð/Ð/Ø !§¡§¡× 1Ñ 1Ó 3ò ,�ä˜Ó%¨Ò)¨l¸1©oÀÒ.DÈÐVWÉÐ\_ÓI_à—I‘I˜lÕ+ð	,ð !Ö;�a¨¯©°TÕ(:’Ò;Ð;ùÒ;s   ÅE-Å&E-c                ó¤  — t        |t        «      r|j                  }nt        |t        «      r|}nd }t        |t        «      rt        |j                  t        «      rd}n>|r:|j
                  dk7  r+| j                  |j                  «      rd|j
                  › �}nd}| j                  |› dt        |«      › d|› �|t        j                  ¬«       y )Nz (by an import)r®  z	 on line z (possibly by an import)rò  z" already definedr4  )r�  r€   r¤  r~   re   r¸  Úis_local_namer†  r¼  r  rC  ÚNO_REDEF)re  r”  r>  Úoriginal_ctxÚnounr¤  Ú	extra_msgs          rf  r  z SemanticAnalyzer.already_defined  s¶   € ô �l¤OÔ4Ø&2×&7Ñ&7‰DÜ˜¤jÔ1Ø‰DàˆDä�l¤OÔ4¼ÀL×DUÑDUÔW_Ô9`ð *‰IÙ�d—i‘i 2’o¨$×*<Ñ*<¸T¿]¹]Ô*Kð $ D§I¡I ;Ð/‰Ià2ˆIØ�	‰	Øˆf�B”x “~Ð&Ð&7¸	°{ÐCÀSÌuÏ~É~ð 	õ 	
rh  c                ó.   — | j                  |||d¬«       y )Nr  ©rW  ©r  ©re  r”  r>  rV  s       rf  rÌ  z%SemanticAnalyzer.name_already_defined0  s   € ð 	×Ñ˜T 3¨¸6ÐÕBrh  c                ó.   — | j                  |||d¬«       y )NÚ	AttributerZ  r[  r\  s       rf  re  z*SemanticAnalyzer.attribute_already_defined5  s   € ð 	×Ñ˜T 3¨¸;ÐÕGrh  c                ó0   — | j                  |«      xs d|vS )zDDoes name look like reference to a definition in the current module?r�  )rÌ  r  s     rf  rT  zSemanticAnalyzer.is_local_name:  s   € à×0Ñ0°Ó6ÒI¸#ÀT¸/ÐIrh  c                óú   — | j                   j                  s| j                  syt        | j                  «      dz
  }|dk\  r;| j                  |   }t	        |t
        «      s|j                  «        S |dz  }|dk\  rŒ;y)zÁShould we type-check the current function?

        - Yes if --check-untyped-defs is set.
        - Yes outside functions.
        - Yes in annotated functions.
        - No otherwise.
        Tr#  r   )r1  Úcheck_untyped_defsr@  r’  r�  r^   r  )re  Úcurrent_indexÚcurrent_funcs      rf  Úin_checked_functionz$SemanticAnalyzer.in_checked_function>  s€   € ð �<‰<×*Ò*°$×2EÒ2EØä˜D×/Ñ/Ó0°1Ñ4ˆØ˜qÒ Ø×.Ñ.¨}Ñ=ˆLÜ˜l¬JÔ7Ø'×2Ñ2Ó4Ð4Ð4ð
 ˜QÑˆMð ˜qÓ ð rh  )r5  r
  c          	     ó$  — |s| j                  «       sy |€J |«       ‚t        |t        «      r|€|j                  }|j                  }| j
                  j                  |j                  |j                  ||||j                  |j                  ¬«       y )N)r
  r5  rº  r»  )rd  r�  r   r5  r|  rG  Úreportr¸  r¹  rº  r»  )re  rP  r>  r�  r5  r
  s         rf  r¼  zSemanticAnalyzer.failX  s�   € ñ ˜t×7Ñ7Ô9ØàˆÐ# Ó#ˆÜ�cœ<Ô(Øˆ|Ø—x‘x�Ø—)‘)ˆCØ�‰×ÑØ�H‰HØ�J‰JØØØØ—\‘\Ø—~‘~ð 	õ 	
rh  c                óŽ   — | j                  «       sy | j                  j                  |j                  |j                  |d|¬«       y )Nrù  )Úseverityr5  )rd  rG  rf  r¸  r¹  )re  rP  r>  r5  s       rf  rù  zSemanticAnalyzer.notes  s6   € Ø×'Ñ'Ô)ØØ�‰×Ñ˜3Ÿ8™8 S§Z¡Z°¸vÈDÐÕQrh  c                óh   — || j                   j                  vr| j                  d|› d|› d�|«       yy)Nr[  z;" support is experimental, use --enable-incomplete-feature=z
 to enableFT)r1  Úenable_incomplete_featurer¼  )re  Úfeaturer>  s      rf  Úincomplete_feature_enabledz+SemanticAnalyzer.incomplete_feature_enabledx  sD   € Ø˜$Ÿ,™,×@Ñ@Ñ@Ø�I‰IØ�G�9ð 4Ø4;°9¸JðHàôð
 Ørh  c                óÖ   — 	 |j                  | «       y # t        $ rK}t        || j                  j                  |j
                  | j                  | j                  «       Y d }~y d }~ww xY wrj  )r³  Ú	Exceptionr   rG  rJ  r¸  r1  )re  r¤  Úerrs      rf  r³  zSemanticAnalyzer.accept‚  sR   € ð	_Ø�K‰K˜ÕøÜò 	_Ü! # t§{¡{×'7Ñ'7¸¿¹ÀDÇKÁKÐQU×Q]ÑQ]×^Ñ^ûð	_ús   ‚ ”	A(�AA#Á#A(c
           
     óè  — |�Çt        |t        «      r·|j                  | «       | j                  j	                  ||«      \  }
}}|r$| j                  d|«       | j                  d|«       |
€
t        «       ‚|s| j                  |«       y |j                  sJ d«       ‚t        |g «      }t        |j                  j                  |¬«      S | j                  |«      }| j                  ||||||||	¬«      S )Nz>Generic named tuples are not supported for legacy class syntaxz:Use either Python 3 class syntax, or the assignment syntaxzNamedTuple without tuple type)rŠ  )r9  r7  rï  rX  r:  r<  r=  )r�  r>   r³  r  rÌ  r¼  rù  r   rÖ  r›  rê   rô   rÔ  r   rÜ  )re  r÷  r9  r7  rï  rX  r:  r<  rð  r=  rÎ  r§  rs  rŠ  r«  s                  rf  ró  z&SemanticAnalyzer.expr_to_analyzed_typeˆ  sþ   € ð Ð"¤z°$¼Ô'Að �K‰K˜ÔØ-1×-FÑ-F×-WÑ-WØ�kó.Ñ*ˆM˜4 ñ Ø—	‘	ÐZÐ\`ÔaØ—	‘	ÐVÐX\Ô]ØÐ$ô +Ó,Ð,ÙØ—
‘
˜4Ô ØØ—?’?ÐCÐ$CÓC�?Ü  bÓ)ˆHÜ˜TŸ_™_×2Ñ2¸XÔFÐFØ×*Ñ*¨4Ó0ˆØ�~‰~ØØ!5Ø/Ø)Ø 3Ø&?Ø%Ø1ð ó 	
ð 		
rh  c                óÌ   — | j                  t        «       «      5  | j                  «       5  |j                  | «       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY wrj  )r<  rÀ   rz  r³  rí  s     rf  r¹  z"SemanticAnalyzer.analyze_type_exprµ  sW   € ð ×"Ñ"Ô#3Ó#5Ó6ñ 	¸×8TÑ8TÓ8Vñ 	Ø�K‰K˜Ô÷	÷ 	÷ 	ñ 	ú÷ 	ð 	ús!   šA«A½AÁA	ÁAÁA#)r?  r;  rX  r7  Úallow_typed_dict_special_formsÚallow_finalr:  r<  r9  Úprohibit_self_typeÚ"prohibit_special_class_field_typesrï  r=  c               óz  — |€| j                   }t        | || j                  | j                  | j                  | j
                  f|||	||||||
|||| j                  d   dœŽ}t        | j                  xr | j                  d   j                  «       «      |_
        | j                   xr | j                   |_        |S )Nr®  )rX  r;  r9  r7  rr  rs  r:  r<  rt  ru  rï  r=  r	  )r?  rÃ   rH  r1  r2  rr  rd  r  r@  r  r  rl  r  )re  r?  r;  rX  r7  rr  rs  r:  r<  r9  rt  ru  rï  r=  Útpans                  rf  r?  zSemanticAnalyzer.type_analyzer¿  sÌ   € ð" ÐØŸ™ˆJÜØØØ�K‰KØ�L‰LØ×ÑØ×&Ñ&ð
ð !4Ø 3Ø!5Ø/Ø+IØ#Ø&?Ø%Ø1Ø/QØ)Ø1Ø ×2Ñ2°2Ñ6ò'
ˆô*  $ D×$7Ñ$7Ò$`¸D×<OÑ<OÐPRÑ<S×<^Ñ<^Ó<`ÓaˆÔØ $§	¡	˜MÒE°$×2EÑ2EÐ.EˆÔØˆrh  c                óH   — t        || j                  | j                  |¬«      S )Nr_  )r   r1  ro  )re  r¤  r<  s      rf  r   z(SemanticAnalyzer.expr_to_unanalyzed_typeë  s"   € Ü&Ø�$—,‘, × 1Ñ 1Àô
ð 	
rh  c               óB  ‡ ‡— t        ‰ˆ ˆfd„«      }|r‰ j                  r|€‰ j                  «        ‰ j                  ||||||||	|
||||¬«      }‰ j	                  «       }‰j                  |«      Š‰ j                  |«      ry‰ j                  |j                  «       ‰S )aî  Semantically analyze a type.

        Args:
            typ: Type to analyze (if already analyzed, this is a no-op)
            allow_placeholder: If True, may return PlaceholderType if
                encountering an incomplete definition

        Return None only if some part of the type couldn't be bound *and* it
        referred to an incomplete namespace or definition. In this case also
        defer as needed. During a final iteration this won't return None;
        instead report an error if the type can't be analyzed and return
        AnyType.

        In case of other errors, report an error message and return AnyType.

        NOTE: The caller shouldn't defer even if this returns None or a
              placeholder type.
        c                ó,   •— ‰j                  | ‰d¬«      S rá  r  )r”  re  r«  s    €€rf  r  z,SemanticAnalyzer.anal_type.<locals>.<lambda>  s   ø€ ˜d×3Ñ3°D¸#ÈtÐ3ÓT€ rh  N)r?  rX  r;  r7  rr  rs  r:  r<  r9  rt  ru  rï  r=  )	rÊ   rl  r…  r?  rö  r³  rú  rH  rI  )re  r«  r?  r;  rX  r7  rr  rs  r:  r<  r9  rt  ru  rï  r=  rS  rˆ  rû  s   ``                rf  rÜ  zSemanticAnalyzer.anal_typeð  s´   ù€ ôH 'ØÔTó
ˆñ ˜TŸYšYÐ+=Ð+EØ× Ñ Ô"Ø×ÑØ!Ø 3Ø 3Ø/Ø+IØ#Ø&?Ø%Ø!5Ø1Ø/QØ)Ø1ð ó 
ˆð ×(Ñ(Ó*ˆØ�j‰j˜‹mˆØ×$Ñ$ SÔ)àØ× Ñ  §¡Ô0Øˆ
rh  c                ó,   — t        j                  |«      S rj  )rú   Úmake_normalized)re  rF  s     rf  rn  zSemanticAnalyzer.class_type0  s   € Ü×'Ñ'¨	Ó2Ð2rh  c                ó>   — | j                   j                  ||f«       y rj  )r0  r  )re  ÚpriorityÚpatchs      rf  r  zSemanticAnalyzer.schedule_patch3  s   € Ø�‰×Ñ˜X uÐ-Õ.rh  c                ó¢   — t        d«       | j                  D ]  \  }}t        d|› d|› �«       Œ | j                  j                  dddd¬«       y )NzDeferral trace:z    ú:r®  zAINTERNAL ERROR: maximum semantic analysis iteration count reachedTr	  )ÚprintrV  rG  rf  )re  rO  r¸  s      rf  Úreport_hangzSemanticAnalyzer.report_hang6  s\   € ÜÐÔ Ø×4Ñ4ò 	'‰IˆC�Ü�D˜˜˜Q˜t˜fÐ%Õ&ð	'à�‰×ÑØØØOØð	 	õ 	
rh  c                ó¶   — |€| j                   j                  «       }| j                  j                  j	                  |t        «       «      j                  |«       y)zyAdd dependency from trigger to a target.

        If the target is not given explicitly, use the current target.
        N)rU  Úcurrent_targetr2  Úplugin_depsrÝ  rM  r#  )re  Útriggerrü  s      rf  Úadd_plugin_dependencyz&SemanticAnalyzer.add_plugin_dependencyA  sD   € ð
 ˆ>Ø—Z‘Z×.Ñ.Ó0ˆFØ×Ñ×%Ñ%×0Ñ0°¼#»%Ó@×DÑDÀVÕLrh  c                ó’   — |sy|€| j                   j                  «       }| j                  j                  |   j	                  |«       y)zøAdd full names of type aliases on which the current node depends.

        This is used by fine-grained incremental mode to re-check the corresponding nodes.
        If `target` is None, then the target node used will be the current scope.
        N)rU  r…  r2  Ú
alias_depsrQ  )re  rI  rü  s      rf  rH  z$SemanticAnalyzer.add_type_alias_depsJ  s@   € ñ ØØˆ>Ø—Z‘Z×.Ñ.Ó0ˆFØ×Ñ×$Ñ$ VÑ,×3Ñ3°LÕArh  c                ó6   — t        |«      dz   | j                  v S ©NrR  )r  r5  r  s     rf  rS  z"SemanticAnalyzer.is_mangled_globalX  s   € ä˜‹~ Ñ# t§|¡|Ð3Ð3rh  c                ó$   — |t        |«      dz   k(  S rŒ  )r  r  s     rf  rT  z*SemanticAnalyzer.is_initial_mangled_global\  s   € à”x “~¨Ñ+Ñ+Ð+rh  c                ó   — t        |«      S rj  )r¼   rí  s     rf  r¼   zSemanticAnalyzer.parse_bool`  s   € ä˜$ÓÐrh  c                ó$  — t        |t        «      r|j                  S t        |t        «      rdt        |j                  t
        «      rJ|j                  j                  �4t        |j                  j                  «      }|�t        |«      dk(  r|d   S y)zzAttempt to find the string literal value of the given expression. Returns `None` if no
        literal value can be found.Nr#  r   )	r�  r|   r|  rs   r¤  r�   rl  rÑ   r’  )re  r÷  r’  s      rf  Úparse_str_literalz"SemanticAnalyzer.parse_str_literald  sl   € ô �dœGÔ$Ø—:‘:ÐÜ�dœGÔ$¬°D·I±I¼sÔ)CÈÏ	É	ÏÉÐHbÜ7¸¿	¹	¿¹ÓGˆFØÐ!¤c¨&£k°QÒ&6Ø˜a‘yÐ Ørh  c                óˆ   — |t         v r:| j                  | j                     j                  j	                  t         |   «       y y rj  )r  r4  r  Úfuture_import_flagsr#  )re  rÂ  s     rf  rF  z(SemanticAnalyzer.set_future_import_flagso  s6   € Øœ.Ñ(Ø�L‰L˜Ÿ™Ñ)×=Ñ=×AÑAÄ.ÐQ\ÑB]Õ^ð )rh  c                óR   — | j                   | j                     j                  |«      S rj  )r4  r  Úis_future_flag_set)re  Úflags     rf  r”  z#SemanticAnalyzer.is_future_flag_sets  s    € Ø�|‰|˜DŸO™OÑ,×?Ñ?ÀÓEÐErh  c                ó\  — t        «       }t        |j                  |j                  «      D ]~  \  }}|€Œ	|dk(  r| j	                  |«      |_        Œ%t        | ||«      }|€Œ5|dk(  r||_        ŒB|dk(  r||_        ŒO|dk(  r||_	        Œ\|dk(  r||_
        Œi| j                  d|› d�|«       Œ€ |S )zqBuild a DataclassTransformSpec from the arguments passed to the given call to
        typing.dataclass_transform.Úfield_specifiersÚ
eq_defaultÚorder_defaultÚkw_only_defaultÚfrozen_defaultz,Unrecognized dataclass_transform parameter "r[  )rF   rp  r^  r|  Ú*parse_dataclass_transform_field_specifiersr—  r½   r˜  r™  rš  r›  r¼  )re  r¨  Ú
parametersr”  r|  Úbooleans         rf  r  z/SemanticAnalyzer.parse_dataclass_transform_specv  sÙ   € ô ,Ó-ˆ
Ü˜tŸ~™~¨t¯y©yÓ9ò 	X‰KˆD�%ð ˆ|Øð Ð)Ò)Ø.2×.]Ñ.]Øó/�
Ô+ð ä3°D¸%ÀÓFˆGØˆØà�|Ò#Ø(/�
Õ%Ø˜Ò(Ø+2�
Õ(ØÐ*Ò*Ø-4�
Õ*ØÐ)Ò)Ø,3�
Õ)à—	‘	ÐHÈÈÈaÐPÐRVÕWð7	Xð: Ðrh  c                ó  — t        |t        «      s| j                  d|«       yg }|j                  D ]A  }t        |t        «      s| j                  d|«        y|j                  |j                  «       ŒC t        |«      S )Nz3"field_specifiers" argument must be a tuple literalr  z0"field_specifiers" must only contain identifiers)r�  r„   r¼  rÔ  rs   r  r†  r4  )re  r(  r…  Ú	specifiers       rf  rœ  z;SemanticAnalyzer.parse_dataclass_transform_field_specifiers™  sp   € Ü˜#œyÔ)Ø�I‰IÐKÈSÔQØàˆØŸ™ò 	-ˆIÜ˜i¬Ô1Ø—	‘	ÐLÈiÔXÙØ�L‰L˜×+Ñ+Õ,ð		-ô
 �U‹|Ðrh  c                ó   — y rj  r  ©re  Úos     rf  Úvisit_int_exprzSemanticAnalyzer.visit_int_expr§  ó   € Ørh  c                ó   — y rj  r  r¢  s     rf  Úvisit_str_exprzSemanticAnalyzer.visit_str_exprª  r¥  rh  c                ó   — y rj  r  r¢  s     rf  Úvisit_bytes_exprz!SemanticAnalyzer.visit_bytes_expr­  r¥  rh  c                ó   — y rj  r  r¢  s     rf  Úvisit_float_exprz!SemanticAnalyzer.visit_float_expr°  r¥  rh  c                ó   — y rj  r  r¢  s     rf  Úvisit_complex_exprz#SemanticAnalyzer.visit_complex_expr³  r¥  rh  c                ó   — y rj  r  r¢  s     rf  Úvisit_ellipsiszSemanticAnalyzer.visit_ellipsis¶  r¥  rh  c                ó   — y rj  r  r¢  s     rf  Úvisit_temp_nodez SemanticAnalyzer.visit_temp_node¹  r¥  rh  c                ó   — y rj  r  r¢  s     rf  Úvisit_pass_stmtz SemanticAnalyzer.visit_pass_stmt¼  r¥  rh  c                ó   — y rj  r  r¢  s     rf  Úvisit_singleton_patternz(SemanticAnalyzer.visit_singleton_pattern¿  r¥  rh  c                óp  — | xj                   dz  c_         t        |t        «      syt        |t        t        f«      ryt        |t
        «      r| j                  |«      �s>d|_        yt        |t        «      rôt        |j                  t        «      rQt        |j                  j                  t        «      rè| j                  |j                  j                  «      sÃd|_        yt        |j                  t        «      rg|j                  }	 |j                  }t        |t        «      sn|}Œ t        |t        «      r"t        |j                  t        «      rJd|_        yd|_        yd|_        yt        |t        «      r|j                  dk7  rd|_        yt!        |«       | j#                  «       5  	 | j%                  |«      }| j&                  j)                  «       rd}t,        r^|€\t/        | j&                  j0                  «      }	 | j&                  j3                  «       }|| j&                  _        t5        d|› d|›�«       ddd«       �| xj6                  dz  c_        ||_        y| xj8                  dz  c_        ||_        y# t*        $ r d}Y Œµw xY w# || j&                  _        w xY w# 1 sw Y   ŒlxY w)aü  Try to parse a value Expression as a type expression.
        If success then annotate the Expression with the type that it spells.
        If fails then emit no errors and take no further action.

        A value expression that is parsable as a type expression may be used
        where a TypeForm is expected to represent the spelled type.

        Unlike ExpressionChecker.try_parse_as_type_expression()
        (used in the later TypeChecker pass), this function can recognize
        ALL kinds of type expressions, including type expressions containing
        string annotations.

        If the provided Expression will be parsable later in
        ExpressionChecker.try_parse_as_type_expression(), this function will
        skip parsing the Expression to improve performance, because the later
        function is called many fewer times (i.e. only lazily in a rare TypeForm
        type context) than this function is called (i.e. eagerly for EVERY
        expression in certain syntactic positions).
        r#  Nr´  z5SA.try_parse_as_type_expression: Full parse failure: z	, errors=)r_  r�  rc   rg   rd   r|   Ústring_could_be_type_expressionÚas_typer\   rV  r¤  r�   Ú var_could_be_typing_special_formr÷  rk   r¸  r   Úisolated_error_analysisró  rG  Ú	is_errorsr   r  rM  Úflushed_filesÚnew_messagesr‚  r`  ra  )re  Úmaybe_type_exprÚnext_leftmostÚleftmostrâ  Úoriginal_flushed_filesrG  s          rf  rÚ  z-SemanticAnalyzer.try_parse_as_type_expressionÂ  sj  € ð* 	×(Ò(¨AÑ-Õ(ô ˜/Ô+>Ô?Øä�o¬´*Ð'=Ô>ð Ü˜¬Ô1Ø×7Ñ7¸ÕHà*.�Ô'ØÜ˜¬Ô3Ü˜/×.Ñ.´Ô9ÜØ#×(Ñ(×-Ñ-¬sôà×?Ñ?À×@TÑ@T×@YÑ@YÔZà.2�OÔ+ØÜ˜O×0Ñ0´*Ô=Ø /× 4Ñ 4�ØØ,×1Ñ1�HÜ% h´
Ô;ØØ$,�Mð	 ô
 ˜h¬Ô1Ü! (§-¡-´Ô5à26˜Ô/Øð /3�OÔ+Øð +/�Ô'ØÜ˜¬Ô0Ø×!Ñ! SÒ(à*.�Ô'Øä˜Ô)à×)Ñ)Ó+ñ 	ðØ×.Ñ.¨Ó?�Ø—;‘;×(Ñ(Ô*Ø�Aõ
 9¸Q¸YÜ),¨T¯[©[×-FÑ-FÓ)GÐ&ðGØ!Ÿ[™[×5Ñ5Ó7�Fà0F�D—K‘KÔ-äØKÈOÐK\Ð\eÐflÐeoÐpô÷!	ð* ˆ=Ø×9Ò9¸QÑ>Õ9ð #$ˆÕð ×9Ò9¸QÑ>Õ9à"#ˆÕøô+ (ò à’ðûð 1G�D—K‘KÕ-ú÷	ð 	úsH   Æ.J,Æ0-JÇ'J,ÈJÈ"J,ÊJÊJ,ÊJÊJ,ÊJ)Ê)J,Ê,J5c                óì  — |j                   }|j                  «       rÖ| j                  |t        |«      d¬«      }|€y|j                  }t        |t        t        t        f«      xr | j                  j                  |«      d u }|ryt        |t        «      r#| j                  |«      r| j                  |«      syt        |t        t        t         f«      ryt        |t"        «      r|j$                  syyt'        |«      x}�[| j                  |t        |«      d¬«      }|€y|j                  }t        |t"        «      r|j$                  syt        |t        «      ryyd|v sd|v rd|vr yt)        |«      dk  s|j+                  «       ryt,        j/                  |«      ry|j1                  d«      }|j1                  d«      }|dkD  r|dz  dk(  s)|dkD  r|dz  dk(  s|d   d	k(  s|d
   d	k(  st3        |«      ryy)NTrx  Fr[  rR  ú[r%  r   r�  r®  )r|  Úisidentifierr·  rÿ   r¤  r�  rŒ   rŽ   rn   r?  r  r�   Úvar_type_is_knownr¹  rS   rl   re   rp   rM  Údotted_identifier_leftmostr’  ÚisspaceÚ_MULTIPLE_WORDS_NONTYPE_REÚmatchr6  Úhas_nontype_char)	re  r¾  Ú	str_valuer}  r¤  Úunbound_tvar_or_paramspecÚleftmost_nameÚsqÚdqs	            rf  r·  z0SemanticAnalyzer.string_could_be_type_expression'   s  € Ø#×)Ñ)ˆ	Ø×!Ñ!Ô#ð —+‘+˜i¬°YÓ)?ÐQU�+ÓVˆCØˆ{àà—x‘x�ô ˜t¤kÔ3CÄ]Ð%SÓTò AØŸ™×3Ñ3°CÓ8¸DÐ@ð *ñ -ð !ä˜t¤SÔ)Ø×.Ñ.¨tÔ4Ø ×AÑAÀ$ÔGð !Ü˜d¤WÔ.?ÄÐ$JÔKà Ü˜d¤OÔ4¸T×=RÒ=Rð !ðj ôi  :¸)ÓDÐDˆmÐQð
 —+‘+˜m¬[¸Ó-GÐY]�+Ó^ˆCØˆ{àØ—8‘8ˆDÜ˜$¤Ô0¸×9NÒ9Nð Ü˜$¤Ô$ð ðD ðA �iÑ 3¨)Ñ#3à˜iÑ'à Ü�Y“ !Ò# y×'8Ñ'8Ô':ð ô *×/Ñ/°	Ô:ð ð
 —‘ Ó%ˆBØ—‘ Ó%ˆBØ˜!’V  Q¡¨!¢°°a²¸BÀ¹FÀaºKð ˜Q‘< 3Ò&¨)°B©-¸3Ò*>ÔBRÐS\ÔB]Ø Ørh  c                ó¬   — | j                   j                  d«      xs8 | j                   j                  d«      xs | j                   j                  d«      S )Nr¿  ztyping_extensions.zmypy_extensions.)r†  rS  )ræ  s    rf  r¹  z1SemanticAnalyzer.var_could_be_typing_special_formˆ   sK   € ð �L‰L×#Ñ# IÓ.ò ;Ø�|‰|×&Ñ&Ð';Ó<ò;à�|‰|×&Ñ&Ð'9Ó:ð	
rh  c                óp   — t        | j                  «      x}d u xs t        |t        t        t
        f«       S rj  )r  rl  r�  rç   rð   rÿ   )ræ  Ú	var_typ_ps     rf  rÅ  z"SemanticAnalyzer.var_type_is_known�   s;   € ô *¨#¯(©(Ó3Ð3ˆY¸Ð<ò NÜ˜)¤g¬ÄÐ%LÓMð
ð 	
rh  c              #  ó†  K  — | j                   }| j                  }| j                  }| j                  }t	        | j
                  «      }t        t        «       «      | _         	 d–— || _         || _        || _        || _        | j
                  |d…= y# || _         || _        || _        || _        | j
                  |d…= w xY w­w)a¡  
        Context manager for performing error analysis that should not
        affect the main SemanticAnalyzer state.

        Upon entering this context, `self.errors` will start empty.
        Within this context, you can analyze expressions for errors.
        Upon exiting this context, the original `self.errors` will be restored,
        and any errors collected during the analysis will be discarded.
        N)rG  r  r  r¯  r’  rV  r   r�   )re  Úoriginal_errorsÚoriginal_num_incomplete_refsÚoriginal_progressÚoriginal_deferredÚ#original_deferral_debug_context_lens         rf  rº  z(SemanticAnalyzer.isolated_error_analysis—   s¼   è ø€ ð Ÿ+™+ˆØ'+×'?Ñ'?Ð$Ø ŸM™MÐØ ŸM™MÐÜ.1°$×2MÑ2MÓ.NÐ+äœW›YÓ'ˆŒð	RÛð *ˆDŒKØ'CˆDÔ$Ø-ˆDŒMØ-ˆDŒMØ×+Ñ+Ð,OÑ,PÑQøð	 *ˆDŒKØ'CˆDÔ$Ø-ˆDŒMØ-ˆDŒMØ×+Ñ+Ð,OÑ,PÑQüs   ‚ACÁ!B Á%,CÂ-B>Â>C)r4  r3  rQ  zdict[str, int]rR  rE  rG  r   rH  r¨   rO  zdict[str, set[str]]rš  r›  )rš  r<  )rš  r  )rš  úIterator[None])F)r|  r  r}  r  rš  rÙ  )r‰  re   rš  r›  )r‰  re   r˜  zdict[str, str]rš  r›  rj  )r¤  z&MypyFile | FuncDef | OverloadedFuncDefr0  rB  ru  r  r‰  re   r1  r�   r´  r<  rš  r›  )rP  r  rš  r›  )rì  re   rš  r›  )
rì  re   rî  r  rí  r  r”  r  rš  r›  )rš  r›  )r‰  re   r1  r�   r´  r<  rš  rÙ  )r  rS   rš  r›  )r†  r  rš  r  )r  rS   r«  rè   rš  rè   )rs  rS   r§  rŠ   rS  r  rš  r›  )r«  rõ   rw  r  rš  r  )r€  zNode | Noner�  zFuncDef | Decoratorrš  r  )r‡  rè   r  rT   rš  r  )r  rl   rš  r›  )rz  z
int | Nonerš  rÙ  )rÃ  rM   rš  ú
str | None)r  rl   rš  z9tuple[list[CallableType], OverloadPart | None, list[int]])r  rl   r·  r9  rŸ  r  rš  r›  )r  rl   rš  zCallableType | None)rø  rM   rù  r  rš  zTypeGuard[MemberExpr])rs  zFuncDef | OverloadedFuncDefrš  r›  )r  rT   rš  r›  )r«  rñ   rš  r›  )r  rT   rš  r›  )rÇ  rG   rš  r›  )r&  r  r'  rD   rš  r›  )r  r@   rš  r›  )r  úlist[TypeParam] | Noner'  rD   rš  z(list[tuple[str, TypeVarLikeExpr]] | None)r”  r  rš  r  )r.  r‹   r'  rD   rš  zTypeVarLikeExpr | None)r  rÛ  rš  r›  )rr  úlist[Expression]rš  r›  )r  r@   rs  úlist[TypeVarLikeType]rš  r›  )r  r@   rš  r  )r  r@   rs  rÝ  rš  r  )r÷  rM   rš  rÚ  )r§  rŠ   rš  r›  )r  r@   r&  rM   rš  r›  )r  r@   r[  rÜ  r'  rD   rš  zWtuple[list[Expression], list[TypeVarLikeType], bool, list[tuple[str, TypeVarLikeExpr]]])rV  rõ   r¾  r  rš  z#tuple[TypeVarLikeList, bool] | None)râ  rõ   rš  ú"tuple[str, TypeVarLikeExpr] | None)FF)râ  rÿ   rÇ  r  rÍ  r  rš  rÞ  )râ  rõ   rš  rÅ   )r[  rÜ  r!  r9  rš  rÅ   )r¿  rÅ   r'  rD   rš  rÝ  )rÞ  rÜ  rš  rÝ  )r”  r  r¸  r   rš  r  )r  r@   r§  r<  rš  r›  )r  r@   rš  rŠ   )rô  r  r[  rÜ  rš  z7tuple[list[tuple[ProperType, Expression]], bool] | None)r  r@   rr  z#list[tuple[ProperType, Expression]]rš  r›  )r  r@   rV  rô   rš  rê   )r  r@   r  zCallable[[], Instance] | Nonerš  r›  )râ  rŠ   r$  rŠ   rš  r  )r”  r  r+  zExpression | Nonerš  z"tuple[Instance | None, bool, bool])r  r@   rx  úInstance | Nonerš  r›  )r£  rX   rš  r›  )rK  r[   rš  r›  )r¤  r€   rL  r  r‘  r  r?  r  r†  r  r   r  r'  rZ   rš  r›  )T)r`  r  ra  r  r?  r  r   r  r  r  r'  rh   r;  r  rš  r›  )
r?  r  ri  r€   rj  r€   rk  rZ   rš  r  )r¤  zImportFrom | ImportAllrš  r  )r£  rY   rš  r›  )r$  r8   rš  r›  )r$  r8   rš  r  )r$  r9   rš  r›  )r$  r9   rš  r  )ræ  r�   rm  rM   rš  zLiteralType | None)r¯  rM   rš  r  )r¯  rM   rµ  r  rš  r  )r¯  rM   r²  r  rš  r  ©r¤  rM   rš  r  )r“  rÜ  rš  rÜ  )rm  rM   rÙ  r  rš  úType | None)FNNF)r”  r  rm  rM   r7  r  r  zTypeVarLikeList | Noner  zlist[str] | Noner}  r  rš  z_tuple[Type | None, list[TypeVarLikeType], set[str], bool, dict[str, set[TypeAlias | TypeInfo]]])rm  rM   r”  r  rš  zTypeGuard[CallExpr])rm  r>   rš  z!tuple[TypeVarLikeList, list[str]])r$  zAssignmentStmt | TypeAliasStmtr/  r   r>  rD   rš  r›  )FFFFFF)rØ  ra   r2  r  rÔ  r  rÙ  r  rz  r  r{  r  rA  r  rš  r›  )rl  rg   rÔ  r  rÙ  r  rz  r  r{  r  rA  r  rš  r›  )rA  r   r”  r  rš  r  )rl  rg   rA  r   rZ  r  r{  r  rA  r  rš  r�   )rØ  rg   rÔ  r  rÙ  r  rš  r›  )rØ  r„   rÔ  r  rš  r›  )
rØ  rd   rÔ  r  rÙ  r  r{  r  rš  r›  )rk  rd   rš  r  )r¤  zExpression | SymbolNode | Noner>  rD   rš  r›  )rl  ra   r«  rõ   rš  r›  )r”  rõ   r'  rD   rš  rõ   )r¨  r>   r”  r  r'  rD   rš  r  )r$  r9   rŠ  útuple[str, ...]rš  zCallExpr | None)r|  rÜ  r…  zlist[str | None]r”  zlist[ArgKind]r•  r   r'  rD   rš  ztuple[int, Type, Type] | None)rœ  zTypeInfo | TypeAliasrš  r›  )r   r  r˜  r  r—  rM   r'  rD   rX  r  r:  r  r<  r  rž  r  rš  rá  )r$  r9   r¨  r>   rš  rÚ  )r”  r  r©  rê   r¸  r   rš  rŠ   )rÔ  rÜ  rš  z
list[Type])r«  rõ   rš  r  )r«  rá  rš  r  )r'  rD   rš  r›  )r¹  zlist[Lvalue]rº  rM   r>  r9   rš  r›  )r�  r;   rš  r›  )r�  zBlock | Nonerš  r›  )r$  rN   rš  r›  )r$  rt   rš  r›  )r$  rr   rš  r›  )r$  r6   rš  r›  )r$  rj   rš  r›  )r$  r‘   rš  r›  )r$  rQ   rš  r›  )r$  r<   rš  r›  )r$  rE   rš  r›  )r$  rW   rš  r›  )r$  rƒ   rš  r›  )r$  rƒ   rÐ  zNodeVisitor[None]rš  r›  )r$  r’   rš  r›  )r$  rH   rš  r›  )r$  rM   rš  r  )r  rV   rš  r›  )rÈ  ri   rš  r›  )r$  rb   rš  r›  )r$  r†   rš  r›  )r÷  rg   rš  r›  )r÷  rg   r}  r€   rš  r›  )r÷  r}   rš  r›  )r÷  r„   rš  r›  )r÷  r`   rš  r›  )r÷  rw   rš  r›  )r÷  rI   rš  r›  )r÷  r�   rš  r›  )r÷  rz   rš  r›  )rü  r”   rš  r›  )r÷  r>   rš  r›  )r¨  r>   rš  zDictExpr | None)r÷  r>   rA  r   r”  r  rš  r  )r÷  rd   rš  r›  )r÷  rk   rš  r›  )r÷  rA   rš  r›  )r÷  r�   rš  r›  )r÷  r\   rš  r›  )r÷  r\   rš  úlist[Type] | None)r÷  rx   rš  r›  )r÷  r?   rš  r›  )r÷  r‰   rš  r›  )r÷  r7   rš  r›  )r÷  ru   rš  r›  )r÷  r‡   rš  r›  )r÷  r_   rš  r›  )r÷  rv   rš  r›  )r÷  rJ   rš  r›  )r÷  rU   rš  r›  )r÷  z'GeneratorExpr | DictionaryComprehensionrš  r›  )r÷  r^   rš  r›  )r÷  rC   rš  r›  )r÷  rq   rš  r›  )rü  r“   rš  r›  )r÷  r:   rš  r›  )rŠ  rž   rš  r›  )rŠ  r¡   rš  r›  )rŠ  r¥   rš  r›  )rŠ  r¢   rš  r›  )rŠ  r¤   rš  r›  )rŠ  r    rš  r›  )rŠ  rŸ   rš  r›  )r”  r  r>  rD   ry  r  rš  úSymbolTableNode | None)r}  r€   rš  r›  )r¤  úSymbolNode | Nonerš  r  )r¤  r~   rš  r  )r¤  r~   rI  r{   rš  r  )r†  rÚ  rš  r  )r÷  rM   rš  rä  )r¤  re   r”  r  rš  rä  )r>  r  r‘  r  rš  r  )rë  r  rš  r›  )rM  r  rš  r  )
r}  r€   r”  r  rÝ  z	list[str]rò  rç   rš  r€   )rö  r€   r”  r  r†  r  rš  z
Var | None)r†  r  rš  r€   )r†  r  rš  rä  )rš  rê   )r†  r  r|  rã  rš  rê   )r†  r  r|  rã  rš  rß  )r  r  rš  rê   )r”  r  rš  rä  )TFTFFF)r”  r  r¤  r~   r'  rD   r   r  r  r  rN  r  rz  r  r-  r  r.  r  rš  r  )r”  r  r>  rD   r¤  r~   rš  r›  )NTFFF)r”  r  r@  r€   r'  úContext | NonerN  r  rz  r  r-  r  r.  r  rš  r  )r…  r   r”  r  r@  r€   rš  r›  )r¤  z!Var | FuncDef | OverloadedFuncDefr'  rD   rš  r›  )r”  r  r  rå  r'  rD   rš  rå  )r”  r  r¤  r€   r'  rZ   r   r  r  r  rš  r›  )r”  r  r'  rD   rî  rÚ  r   r  r  r  rš  r›  )r)  rÀ   rš  rÙ  r´  )r,  ræ  r�  r  rš  r›  )rš  r,  )rû  r,  rš  r  )FTF)r”  r  r¤  rh   rM  r  r   r  r  r  rš  r›  )r†  r  rš  r  )
r”  rÚ  rA  r  r>  rD   r�  r  rš  r›  )r”  rÚ  rA  r  r>  rD   rš  r›  )r”  r  rš  r  )r   z2FuncItem | GeneratorExpr | DictionaryComprehensionrš  rÙ  )rš  r   )rz  r  r.  r  rš  r   )rE  z!Iterable[Expression] | Expressionrš  r›  )r”  r  r>  rD   r3  rÚ  rš  r›  )rš  rE  )
r”  r  r>  rD   rV  ú#SymbolTableNode | SymbolNode | NonerW  r  rš  r›  )r”  r  r>  rD   rV  rç  rš  r›  )rP  zstr | ErrorMessager>  rD   r�  r  r5  úErrorCode | Noner
  r  rš  r›  )rP  r  r>  rD   r5  rè  rš  r›  )rk  r  r>  rD   rš  r  )r¤  rh   rš  r›  )TFFFFFNF)r÷  rM   r9  r  r7  r  rï  r  rX  r  r:  r  r<  r  rð  rÚ  r=  r  rš  rá  )r÷  rM   rš  r›  )r?  úTypeVarLikeScope | Noner;  r  rX  r  r7  r  rr  r  rs  r  r:  r  r<  r  r9  r  rt  rÚ  ru  rÚ  rï  r  r=  r  rš  rÃ   )r¤  rM   r<  r  rš  rñ   )r«  rõ   r?  ré  r;  r  rX  r  r7  r  rr  r  rs  r  r:  r  r<  r  r9  r  rt  rÚ  ru  rÚ  rï  r  r=  r  rš  rá  )rF  rõ   rš  rõ   )r~  r   r  zCallable[[], None]rš  r›  )r‡  r  rü  rÚ  rš  r›  )rI  zCollection[str]rü  rÚ  rš  r›  )r÷  rM   rš  zbool | None)rÂ  r  rš  r›  )r•  r  rš  r  )r¨  r>   rš  rF   )r(  rM   rš  râ  )r£  r]   rš  r›  )r£  r|   rš  r›  )r£  r=   rš  r›  )r£  rP   rš  r›  )r£  rB   rš  r›  )r£  rK   rš  r›  )r£  r‚   rš  r›  )r£  ro   rš  r›  )r£  r£   rš  r›  )r¾  rM   rš  r›  )r¾  r|   rš  r  )ræ  r�   rš  r  ([  Ú__name__rÅ  rÆ  rË  rÃ  rÍ  r=  r  r¯  r°  rt  r  rn  rq  rI  rJ  rg  r  rl  ro  rr  ru  r   rz  r  rŠ  rˆ  r‡  rµ  r¾  r²  rÄ  rÅ  rÆ  rê  rÇ  r±  r)  r.  r'  rE  r;  rq  r‚  r8  r…  r›  r�  r™  r°  rå  r¾  r³  r©  r«  r¬  r±  r²  r§  rí  r#  rK  rL  r>  rJ  r$  r  r+  r  r0  r/  r  r*  r_  re  rf  rZ  rp  rd  rg  r’  rž  r`  r  r  ro  r—  r^  rº  rÃ  rÈ  rÑ  r»  r½  rß  rã  rh  rå  rì  ra  rl  r÷  rý  rÿ  r   r]  rü  rþ  r  rb  rm  rA  rQ  rI  rJ  ro  r  rx  r  r|  r¥  r”  r˜  r«  r…  rˆ  r¹  r†  r‡  r¶  r·  r“  r’  r�  r�  rÉ  r—  r�  rž  r•  r™  rš  rë  rœ  rõ  rö  r  r½  rŠ  r  r   r&  r}  rC  rM  rI  rL  rN  rE  rD  ræ  rh  r^  r÷  rŒ  rD  rE  rF  r5  rv  ry  r�  r’  rw  r�  rŽ  r«  rx  r›  r  rÕ  r  rŸ  r   r¡  r¢  rÏ  rÑ  rÓ  rÖ  rÙ  rÛ  rÝ  rà  rå  ré  rë  rí  rð  rï  rý  r   rÿ  r  r	  r  r  r  r\  r  r  r"  r$  r&  r(  r*  r.  r=  r8  r6  rH  rM  rQ  rT  rY  rX  r[  rp  rt  rw  ry  r{  r}  r‚  r…  r‰  rŒ  r‡  rˆ  r–  rš  rœ  rž  r¢  r¦  rª  r­  r¯  r²  rµ  r»  r·  rE  r½  rÇ  rÍ  rË  rÎ  rÓ  rÌ  r{  r¬  rD  rä  ré  rå  rÜ  rH  rú  r÷  rB  rá  rÏ   rþ  rÓ  r  r  rß  ræ  r  r  r   r!  r:  r;  r<  rÖ  rö  rú  rË  rø  rX  r•  r4  rÝ  rÿ  rÓ  râ  r9  ré  rG  r!  rK  rÁ  r]  rK  r  rÌ  re  rT  rd  r¼  rù  rl  r³  ró  r¹  r?  r   rÜ  rn  r  rƒ  rˆ  rH  rS  rT  r¼   r�  rF  r”  r  rœ  r¤  r§  r©  r«  r­  r¯  r±  r³  rµ  rÚ  r·  r¹  rÅ  rº  r  rh  rf  r/  r/  |  sz  … ñò ;€Mð !Ó àÓà Ó à"Ó"à$Ó$àÓàÓà!€Eˆ?Ó!à%Ó%à Ó àÓð #Ó"ð
 €HØ€HØ€Jð Ðð "Ó!à1Ó1ØÓØ€JØ€MØ"ÐØÓð ƒNØƒNØ"&€IÐÓ&ð 68ÐÐ2Ó7ðj?à$ðj?ð (ðj?ð  (ð	j?ð
 ðj?ð ðj?ð (ðj?ð 
ôj?ð\ óó ðð ó"ó ð"ð ó+ó ð+ð ó%ó ð%ð ó+ó ð+ð à16ñQØðQØ*.ðQà	óQó ðQô,	Pôô>$=ðb (,ñà4ðð 6ðð ð	ð
 ðð ðð %ðð 
ôô0ôô.KôZ>ô*>ô( %ôD,ð àTXñ3Ø!ð3Ø,3ð3ØBQð3à	ó3ó ð3ôr,ô::ô
r+ôhNô2'CôRô.ô.!ô.
ô:3ð ó.ó ð.ôM)ô^ð: óó ðô,ð ,1Ø%ð,1à	Bô,1ð\ àð ð (ð ð #'ð	 ð
 
ô ôBô4!ô&.ð>3 Ø%ð3 à	ô3 ðjØðØ/2ðà	ôô"/ô1ô&ô:ô
SôeRôNHô)ðØ/ðØ:Aðà	1ôô.ðVØ#ðVØ.5ðVà	ôVôpôd1ôLô"ô(Kô"Sôôð. Øð Ø)>ð à	ô ôD!<ôFô ô)ô!ô`ôSð(_GØð_GØ/?ð_GØJQð_Gà	`ô_GðB%Øð%Ø.2ð%à	,ô%ôNð" UZñ$Øð$Ø+/ð$ØMQð$à	+ô$ô4&ð
"Ø/ð"Ø:Cð"à	ô"ð Ø$ðØ/6ðà	ôô<ô,+ö?ôô 
ð3Øð3Ø.>ð3à	@ô3ðj=9Øð=9Ø%Hð=9à	ô=9ô~%ô,ô
3ð IMñDØðDØ(EðDà	ôDô,/%ôbôôðD0ØðD0Ø):ðD0à	+ôD0ôL@ô,(ôT\ð|,
àð,
ð ð,
ð ð	,
ð
 ð,
ð ð,
ð ð,
ð ð,
ð 
ô,
ðl -1ñCàðCð ðCð ð	Cð
 ðCð ðCð ðCð &*ðCð 
ôCðJàðð )ðð 'ð	ð
  ðð 
ôô@ô"ôP[ôô,Z!ôxô2ô$

ô'ôRö:ô.ô,3ö5ônô2
1ô<ô)ôVô@Jôô24ô"@ôH?ôBô*92ôvô):ôV
ôðD #(Ø59Ø;?Ø',ñWMàðWMð ðWMð  ð	WMð
 3ðWMð )9ðWMð !%ðWMð
ôWMôrôJôXð$H7ØðH7à	*ôH7ðT Ø/ð Ø?Hð ØOVð à	ô ð< Ø#ØØ&+Ø#(Ø"ñ09àð09ð ð09ð ð	09ð
 ð09ð  $ð09ð !ð09ð ð09ð 
ô09ðdMYàðMYð ðMYð ð	MYð
  $ðMYð !ðMYð ðMYð 
ôMYô^ôIð,àðð ðð ð	ð
 !ðð ðð 
ôð8$,Øð$,Ø-1ð$,Ø=Að$,à	ô$,öLð(L4ØðL4Ø/3ðL4Ø?CðL4ØY]ðL4à	ôL4ô\6ô5ôCô ôD\ô|ôô&ôð&ØðØ4Cðà	ôð$E.àðE.ð  ðE.ð ð	E.ð
 ðE.ð ðE.ð 
'ôE.ôN$ð %*Ø*/Ø"Ø+/ñ3àð3ð ð3ð  ð	3ð
 ð3ð "ð3ð $(ð3ð ð3ð %)ð3ð 
ô3ôjôHôTDôLô0ô.ô>6ô5ôHðF5Ø!ðF5Ø)3ðF5Ø:HðF5à	ôF5ôP	-ô3ô.9)ô~"ô ôô
ô%ôô
-ô,ô,ô2OôRô,ô'ô+ô0!ôd2ôô,ô2ô:	*ôs,ôr)ô
/ôôôôôô"ô#ô ô"d`ôLô(ô 0'ôd ô"!ôô$ô$3ôKôZ%ô!ô!ô
!õõ)õ	$õ	$õ&õ &õ"õ 'õ-õ
$õ
!õ õ$õ&(õ!õõ!õ+õ(õð @EñØðØ%ðØ8<ðà	õõ%8ðP @EñEØðEØ%ðEØ8<ðEà	õEõN%õN
ö
!ö&/ööHð @Eñ7Øð7Ø%ð7Ø8<ð7à	ö7öröö:Hö;ö(.ð*Ø"ð*Ø*-ð*Ø6?ð*ØNUð*à	ö*ð"Ø+ðØ36ðØBEðà	öö2ö
1öf!ö
ö
#÷
\ð \÷[ð [ö5ö*ð" #Ø#ØØ&+Ø!Ø ñ"
àð"
ð ð"
ð ð	"
ð
 ð"
ð ð"
ð ð"
ð  $ð"
ð ð"
ð ð"
ð 
ö"
öHUð" #'ØØ&+Ø!Ø ñHàðHð  ðHð  ð	Hð
 ðHð  $ðHð ðHð ðHð 
öHöTö>-ð(Øð(Ø&7ð(ØBIð(à	ö(ðT:àð:ð ð:ð ð	:ð
 ð:ð ð:ð 
ö:ð>%
àð%
ð ð%
ð  ð	%
ð
 ð%
ð ð%
ð 
ö%
ðV ô$ó ñ$÷Dð Dö8(ö/ö&ð "'Ø"Ø#ñ")àð")ð ð")ð ð	")ð
 ð")ð ð")ð 
ö")öH6ð QVñ;Øð;Ø&)ð;Ø07ð;ØIMð;à	ö;ö Pö0ð ð%ØJð%à	ô%ó ñ%ö2?öUöBöCöð GLñ%Ø%)ð%Ø?Cð%à	ö%öN
ö
3÷4:ð 4:öl<ðB
Øð
Ø%ð
Ø5Xð
Ø`cð
à	ö
ð4 \`ñCØðCØ%ðCØ5XðCà	öCð \`ñHØðHØ%ðHØ5XðHà	öHö
Jöð< ñ	
ð "&Øò
àð
ð ð
ð ð	
ð ð
ð ð
ð 
ö
÷6Rð Rö
ö_ð &*Ø"'Ø$Ø$)Ø*/Ø"Ø"&Ø#(ñ+
àð+
ð #ð+
ð  ð	+
ð
 ð+
ð "ð+
ð $(ð+
ð ð+
ð  ð+
ð !ð+
ð 
ö+
öZð /3Ø$)Ø$)Ø"'Ø/4Ø!Ø*/Ø"Ø%)Ø)-Ø9=Ø$Ø#(ò*ð ,ð*ð "ð	*ð
 "ð*ð  ð*ð )-ð*ð ð*ð $(ð*ð ð*ð #ð*ð 'ð*ð -7ð*ð ð*ð !ð*ð  
ö!*÷X
ð 
ð /3Ø$)Ø$)Ø"'Ø/4Ø!Ø*/Ø"Ø%)Ø)-Ø9=Ø$Ø#(ò!>àð>ð ,ð	>ð
 "ð>ð "ð>ð  ð>ð )-ð>ð ð>ð $(ð>ð ð>ð #ð>ð 'ð>ð -7ð>ð ð>ð  !ð!>ð" 
ö#>ö@3ö/ö	
÷Mð Mð CGñBØ+ðBØ5?ðBà	öBö4ö,ö ö	ö_öFö!öFööööööööööc$öJ_ðB ô
ó ñ
ð ô
ó ñ
ð ôRó òRrh  r/  c                ó@  — t        | t        «      r=t        | j                  «      dk(  r| S | j	                  |g| j                  dd  z   ¬«      S t        | t
        «      r;t        | j                  D �cg c]  }t        t        t        ||«      «      ‘Œ c}«      S J ‚c c}w )Nr   r#  rY  )	r�  rè   r’  rZ  r:  rí   rÔ  r   ro  )r  r�  r£  s      rf  ro  ro  µ   s�   € Ü�#”|Ô$Üˆs�}‰}Ó Ò"ØˆJØ× Ñ ¨C¨5°3·=±=ÀÀÐ3DÑ+DÐ ÓEÐEÜ	�CœÔ	$ÜØNQÏiÉiÖXÈŒT”,Ô ;¸A¸sÓ CÕDÒXó
ð 	
ð 	ˆuùò Ys   Á1!Bc                ó
  — t        |t        «      s|f}t        | t        «      sy| j                  |v ryt        | j                  t
        «      r6| j                  j                  s t        | j                  j                  |«      S y)z=Is node a name or member expression with the given full name?FT)	r�  r4  rs   r†  r¤  r   r}  r  rü  )r¤  Ú	fullnamess     rf  r½  r½  Â   sc   € ä�i¤Ô'Ø�Lˆ	ä�dœGÔ$ØØ‡}�}˜	Ñ!ØÜ�$—)‘)œYÔ'°·	±	×0PÒ0PÜ  §¡×!1Ñ!1°9Ó=Ð=Ørh  c                óp   — t        | t        «      xr% t        | j                  t        t        t
        f«      S )z1Does semantically analyzed node refer to a class?)r�  rs   r¤  rŠ   rS   rl   )r¤  s    rf  rW  rW  Ð   s.   € ä�dœGÓ$ò ¬Ø�	‰	”HœgÔ'8Ð9ó*ð rh  c                óZ   — t        dt        | «      «      D ]  }| |   | d| v sŒ| |   c S  y)z[If the list has duplicates, return one of the duplicates.

    Otherwise, return None.
    r#  N)rý  r’  )r‡  r£  s     rf  r  r  ×   s>   € ô
 �1”c˜$“iÓ ò ˆØ�‰7�d˜2˜A�hÒØ˜‘7ŠNðð rh  c                óè   — g }| j                  «       D ]S  \  }}|j                  €Œ|j                  j                  }|d|j                  d«       }||k7  sŒC|j	                  |«       ŒU |D ]  }| |= Œ y)z<Remove all imported names from the symbol table of a module.Nr�  )rÔ  r¤  r†  Úrfindr  )r…  rM  r!  r”  r¤  r†  r  s          rf  Ú#remove_imported_names_from_symtablerò  â   s~   € à€GØ—k‘k“mò !‰
ˆˆdØ�9‰9ÐØØ—9‘9×%Ñ%ˆØÐ/˜HŸN™N¨3Ó/Ð0ˆØ�VÓØ�N‰N˜4Õ ð!ð ò ˆØ�$‰Kñrh  c                ó4   — | j                  t        «       «      S )zSReplace all Any types within in with Any that has attribute 'explicit' set to False)r³  ÚMakeAnyNonExplicit©râ  s    rf  r"  r"  ð   s   € à�8‰8Ô&Ó(Ó)Ð)rh  c                  ó   — e Zd Zdd„Zdd„Zy)rô  c                ó~   — |j                   t        j                  k(  r|j                  t        j                  «      S |S rj  )Útype_of_anyrø   r×  r:  r¥  ©re  râ  s     rf  Ú	visit_anyzMakeAnyNonExplicit.visit_anyö   s.   € Ø�=‰=œI×.Ñ.Ò.Ø—?‘?¤9×#9Ñ#9Ó:Ð:Øˆrh  c                ó~   — |j                  |j                  D �cg c]  }|j                  | «      ‘Œ c}¬«      S c c}w ©N)r|  ©r:  r|  r³  ©re  râ  rˆ  s      rf  Úvisit_type_alias_typez(MakeAnyNonExplicit.visit_type_alias_typeû   ó-   € Ø�‰¸Q¿V¹VÖ$D¸ Q§X¡X¨d¥^Ò$DˆÓEÐEùÒ$Dó   š:N©râ  rç   rš  rõ   ©râ  rö   rš  rõ   ©rê  rÅ  rÆ  rú  rÿ  r  rh  rf  rô  rô  õ   ó   „ óô
Frh  rô  c                ó4   — | j                  t        «       «      S )zLReplace all Any types that come from unimported types with special form Any.)r³  ÚMakeAnyNonUnimportedrõ  s    rf  r#  r#  ÿ   s   € à�8‰8Ô(Ó*Ó+Ð+rh  c                  ó   — e Zd Zdd„Zdd„Zy)r  c                ó‚   — |j                   t        j                  k(  r!|j                  t        j                  d ¬«      S |S )Nr$  )rø  rø   ræ  r:  r¥  rù  s     rf  rú  zMakeAnyNonUnimported.visit_any!  s2   € Ø�=‰=œI×:Ñ:Ò:Ø—?‘?¤9×#9Ñ#9Èt�?ÓTÐTØˆrh  c                ó~   — |j                  |j                  D �cg c]  }|j                  | «      ‘Œ c}¬«      S c c}w rü  rý  rþ  s      rf  rÿ  z*MakeAnyNonUnimported.visit_type_alias_type
!  r   r  Nr  r  r  r  rh  rf  r  r  !  r  rh  r  c                óB   — t        | d„ ¬«      }|D ]  \  }} |«        Œ y)zeCall patch callbacks in the right order.

    This should happen after semantic analyzer pass 3.
    c                ó   — | d   S )Nr   r  r  s    rf  r  z1apply_semantic_analyzer_patches.<locals>.<lambda>!  s
   € ¸¸!¹€ rh  )rË  N)ra  )r0  Úpatches_by_priorityr~  Ú
patch_funcs       rf  Úapply_semantic_analyzer_patchesr  !  s*   € ô
 ! ©nÔ=ÐØ 3ò Ñˆ�*Ù�ñrh  c                óH   — g }| j                   D ]  }|t        |«      z  }Œ |S )zLReturn all unqualified (short) names assigned to in an assignment statement.)r“  Únames_modified_in_lvalue)r$  rU  rl  s      rf  r‰  r‰  !  s/   € à€FØ—)‘)ò 3ˆØÔ*¨6Ó2Ñ2‰ð3à€Mrh  c                óè   — t        | t        «      r| gS t        | t        «      rt        | j                  «      S t        | t
        t        f«      r#g }| j                  D ]  }|t        |«      z  }Œ |S g S )z4Return all NameExpr assignment targets in an Lvalue.)r�  rg   rz   r  r÷  r`   r„   rÔ  )rl  rU  rz  s      rf  r  r   !  sm   € ä�&œ(Ô#ØˆxˆÜ	�FœHÔ	%Ü'¨¯©Ó4Ð4Ü	�FœX¤yÐ1Ô	2Ø!#ˆØ—L‘Lò 	5ˆDØÔ.¨tÓ4Ñ4‰Fð	5àˆØ€Irh  c                ó´   — t        | t        «      xrG | j                  xr9 t        |t        «      xr' |j                  xr | j                  |j                  k(  S )zIDo n1 and n2 refer to the same Var derived from module-level __getattr__?)r�  r�   rõ  r†  )Ún1Ún2s     rf  Úis_same_var_from_getattrr  .!  sW   € ô 	�2”sÓò 	'Ø×"Ñ"ò	'ä�rœ3Óò	'ð ×"Ñ"ò	'ð �K‰K˜2Ÿ;™;Ñ&ðrh  c                 óF   — t        t        t        j                  «      «      S rj  )r‚   rç   rø   r¥  r  rh  rf  rà  rà  9!  s   € Ü”GœI×2Ñ2Ó3Ó4Ð4rh  c                óÌ   — t        | j                  t        «      rJt        |j                  t        «      r/| j                  j                   xr |j                  j                  S yy)zþCan symbol table node replace an existing one?

    These are the only valid cases:

    1. Placeholder gets replaced with a non-placeholder
    2. Placeholder that isn't known to become type replaced with a
       placeholder that can become a type
    TF)r�  r¤  rp   rM  )ry  r�  s     rf  r  r  =!  sH   € ô �#—(‘(œOÔ,Ü�c—h‘h¤Ô0Ø—x‘x×0Ñ0Ð0ÒN°S·X±X×5NÑ5NÐNàØrh  c                óp   — | |k(  xs0 t        | t        «      xr t        |t        «      xs t        | |«      S rj  )r�  rp   r  )rˆ  r�  s     rf  r  r  N!  s8   € à	ˆQ‰ò 	*Ü�qœ/Ó*ÒM¬z¸!¼_Ó/Mò	*ä# A qÓ)ðrh  c                ó  — | j                   }|syt        |d   t        «      r,t        |d   j                  t        «      r| j                   dd }t        |«      dk(  ryt        |«      dkD  ry|d   }t        |t        «      rL|j                  }|€yt        |t        «      r|j                  }t        |t        «      xr |j                  dk(  S t        |t        «      xs, t        |t        «      xr t        |j                  t        «      S )aY  Returns 'true' if the given body is "trivial" -- if it contains just a "pass",
    "..." (ellipsis), or "raise NotImplementedError()". A trivial body may also
    start with a statement containing just a string (e.g. a docstring).

    Note: Functions that raise other kinds of exceptions do not count as
    "trivial". We use this function to help us determine when it's ok to
    relax certain checks on body, but functions that raise arbitrary exceptions
    are more likely to do non-trivial work. For example:

       def halt(self, reason: str = ...) -> NoReturn:
           raise MyCustomError("Fatal error: " + reason, self.line, self.context)

    A function that raises just NotImplementedError is much less likely to be
    this complex.

    Note: If you update this, you may also need to update
    mypy.fastparse.is_possible_trivial_body!
    Fr   r#  NTzbuiltins.NotImplementedError)r�  r�  rN   r÷  r|   r’  rr   r>   rÂ  rg   r†  ro   rK   )Úblockr�  r—  r÷  s       rf  rP  rP  V!  sâ   € ð& �:‰:€DÙð ô �$�q‘'œ>Ô*¬z¸$¸q¹'¿,¹,ÌÔ/PØ�z‰z˜!˜"ˆ~ˆä
ˆ4ƒy�A‚~àÜ	ˆT‹�QŠØà�‰7€Dä�$œ	Ô"Ø�y‰yˆØˆ<ØÜ�dœHÔ%Ø—;‘;ˆDä˜$¤Ó)Ò]¨d¯m©mÐ?]Ñ.]Ð]ä�dœHÓ%ò Ü�4œÓ(ÒP¬Z¸¿	¹	Ä<Ó-Pðrh  c                ó‚   — t        t        | j                  «      x}t        «      xr |j                  j                  dk(  S )Nzdataclasses.InitVar)r�  r  rl  rê   r†  )r¤  rl  s     rf  r  r  ‰!  s7   € äœ?¨4¯9©9Ó5Ð5�4´xÓ@ò 	8Ø�I‰I×ÑÐ"7Ñ7ðrh  c                ó€   — d | _         | j                  D ]  }d |_        d |j                  _        Œ d | _        d | _        y rj  )r  r  Útype_annotationr  rl  rp  )rs  r(  s     rf  r  r  �!  sA   € Ø€D„NØ�~‰~ò !ˆØ"ˆÔØ ˆ�‰Õð!ð €D„IØ€DÕrh  c                ó    — d| _         t        | t        «      r7| j                  D ]'  }t        |t        «      r|n|j
                  }d|_         Œ) yy)zŒMark a function to be processed as part of module top level.

    A non-trivial part here is that we want to keep overloads as a whole.
    TN)r$  r�  rl   rÔ  rS   rs  )rs  rz  r  s      rf  r`  r`  ™!  sK   € ð
 "€DÔÜ�$Ô)Ô*Ø—J‘Jò 	*ˆDÜ% d¬GÔ4‘4¸$¿)¹)ˆDØ%)ˆDÕ"ñ	*ð +rh  c                óö   — | j                  d«      }|dk(  ry| d| }|j                  «       sy|dz   }	 | j                  d|«      }|dk(  r| |d j                  «       sy|S | || j                  «       sy|dz   }ŒG)a¡  The leftmost component of s, if s is a dotted identifier, else None.

    A dotted identifier is two or more identifiers joined by ".", such as
    "builtins.tuple" or "typing.Mapping". A bare identifier is not a dotted
    identifier: callers are expected to handle that case separately.

    Returns the leftmost component (which is never empty) so that callers
    need not split s a second time to obtain it.
    r�  r®  Nr#  )ÚfindrÄ  )r$  ÚdotrÀ  rs  s       rf  rÆ  rÆ  ¥!  s•   € ð �&‰&�‹+€CØ
ˆb‚yØØ��#ˆw€HØ× Ñ Ô"ØØ�!‰G€EØ
Ø�f‰f�S˜%Ó ˆØ�"Š9Ø�U�V�9×)Ñ)Ô+ØØˆOØ��sˆ|×(Ñ(Ô*ØØ�a‘ˆð rh  c                óþ   — t         D ]  }|| v sŒ y | j                  d«      }|dk7  rV|dz
  }|dk\  r| |   dk(  r|dz  }|dk\  r	| |   dk(  rŒ|dk  s| |   dk7  r	| |   dk7  ry| j                  d|dz   «      }|dk7  rŒVy	)
zÞWhether s contains a character that cannot appear in a type expression.

    Callers must exclude strings that may contain a quoted Literal[...]
    component first, since quoted content can hold arbitrary characters.
    Tú-r®  r#  r   r¹  rÃ  ú,F)r-  r!  )r$  Úchr£  Újs       rf  rÊ  rÊ  Ã!  s«   € ô ò ˆØ�Š7Ùðð 	
�‰ˆs‹€AØ
ˆrŠ'à�‰EˆØ�1Šf˜˜1™ šØ�‰FˆAð �1Šf˜˜1™ ›àˆqŠ5�Q�q‘T˜S’[ Q q¡T¨S¢[Øð �F‰F�3˜˜A™Óˆð ˆr‹'ð rh  )r  ré   r�  rõ   rš  ré   )r¤  rM   rí  zstr | tuple[str, ...]rš  r  rà  )r‡  zlist[T]rš  zT | None)r…  r   rM  r  rš  r›  )râ  rõ   rš  rõ   )r0  rB  rš  r›  )r$  r9   rš  úlist[NameExpr])rl  ra   rš  r(  )r  rå  r  rå  rš  r  )rš  rD   )ry  r€   r�  r€   rš  r  )rˆ  rå  r�  rå  rš  r  )r  r;   rš  r  )r¤  r�   rš  r  )rs  rS   rš  r›  )rs  rR   rš  r›  )r$  r  rš  rÚ  )r$  r  rš  r  (\  rË  Ú
__future__r   ÚreÚcollections.abcr   r   r   r   Ú
contextlibr   rƒ  r	   r
   r   r+  r   r   r   r„  r   Úmypyr   rC  r   Úmypy.constant_foldr   Úmypy.errorcodesr   r   Úmypy.errorsr   r   Úmypy.exprtotyper   r   Úmypy.message_registryr   Úmypy.messagesr   r   r   r   r   Úmypy.mror   r    Ú
mypy.nodesr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   Úmypy.optionsr�   Úmypy.patternsrž   rŸ   r    r¡   r¢   r£   r¤   r¥   Úmypy.pluginr¦   r§   r¨   r©   Úmypy.pluginsrª   r   Úmypy.reachabilityr«   r¬   r­   r®   r¯   r°   r±   Ú
mypy.scoper²   Úmypy.semanal_enumr³   Úmypy.semanal_namedtupler´   Úmypy.semanal_newtyperµ   Úmypy.semanal_sharedr¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   Úmypy.semanal_typeddictr¿   Úmypy.tvar_scoperÀ   Úmypy.typeanalrÁ   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   rÉ   rÊ   rË   rÌ   rÍ   rÎ   Úmypy.typeopsrÏ   rÐ   rÑ   Ú
mypy.typesrÒ   rÓ   rÔ   rÕ   rÖ   r×   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rß   rà   rá   râ   rã   rä   rå   ræ   rç   rè   ré   rê   rë   rì   rí   rî   rï   rð   rñ   rò   ró   rô   rõ   rö   r÷   rø   rù   rú   rû   rü   rý   rþ   rÿ   r   r  r  r  r  r  r  r  r  Úmypy.types_utilsr	  r
  Úmypy.typevarsr  Ú	mypy.utilr  r  r  r  r  Úmypy.visitorr  r  r  rÍ  r  r!  r"  r$  r&  r(  r*  r   r,  ÚcompilerÈ  r4  r-  r/  ro  r½  rW  r  rò  r"  rô  r#  r  r  r‰  r  r  rà  r  r  rP  r  r  r`  rÆ  rÊ  r  rh  rf  ú<module>rJ     sy  ðò0õd #ã 	ß DÓ DÝ %ß P× PÝ *ç 6Ý 1ß 9ß 5ß IÝ .÷õ ÷ -÷~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~÷ ~õ ~õ~ !÷	÷ 	ó 	÷ó õ ;÷÷ ñ õ Ý .Ý 6Ý 0÷
÷ 
õ 
õ 5Ý ,÷÷ ÷ ÷ ÷  ZÑ Y÷8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8÷ 8ñ 8÷r MÔ Lß 'Ð 'ß c× c× cÐ cß $Ð $áˆCƒL�ð 49Ñ )¨5Ô 8ð !0Ø)Ø%Ø"3Ø!1Ø!1Ø#5Ø!1Ø!1Ø+ñ��ô ò  =Ñ �eÔ <ð �ˆeÔ Ø�ˆUÔ Ø�
ˆEÔ ØÑ �UÔ ØÑ �%Ô ñ �€ZÔ ð (˜RŸZšZÐ(JÓKÑ ò Ð0Ó1��Ô 1ôv|RÙ�ÑÐ0Ð2QÐScõv|Rôry
ôôôôô*ô
FÑ7õ Fô,ô
FÑ9õ Fôôôôô5ôô"ô0ôfô ô	*ôõ<rh  