Ë
    pPêjîÅ  ã                  ó’  — d 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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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@mAZA dd	lBmCZC dd
lDmEZE ddlFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZb ddlcmdZd ddlemfZf 	 	 	 	 	 	 	 	 	 	 dd„Zg	 	 	 	 	 	 	 	 	 	 	 	 dd„Zh G d„ deC«      Zi	 d	 	 	 	 	 	 	 dd„Zj G d„ de]ekel      «      Zmdd„Zndd„Zod d„Zp	 	 	 	 	 	 	 	 	 	 d!d„Zqy)"aÖ  Generate fine-grained dependencies for AST nodes, for use in the daemon mode.

Dependencies are stored in a map from *triggers* to *sets of affected locations*.

A trigger is a string that represents a program property that has changed, such
as the signature of a specific function. Triggers are written as '<...>' (angle
brackets). When a program property changes, we determine the relevant trigger(s)
and all affected locations. The latter are stale and will have to be reprocessed.

An affected location is a string than can refer to a *target* (a non-nested
function or method, or a module top level), a class, or a trigger (for
recursively triggering other triggers).

Here's an example representation of a simple dependency map (in format
"<trigger> -> locations"):

  <m.A.g> -> m.f
  <m.A> -> <m.f>, m.A, m.f

Assuming 'A' is a class, this means that

1) if a property of 'm.A.g', such as the signature, is changed, we need
   to process target (function) 'm.f'

2) if the MRO or other significant property of class 'm.A' changes, we
   need to process target 'm.f', the entire class 'm.A', and locations
   triggered by trigger '<m.f>' (this explanation is a bit simplified;
   see below for more details).

The triggers to fire are determined using mypy.server.astdiff.

Examples of triggers:

* '<mod.x>' represents a module attribute/function/class. If any externally
  visible property of 'x' changes, this gets fired. For changes within
  classes, only "big" changes cause the class to be triggered (such as a
  change in MRO). Smaller changes, such as changes to some attributes, don't
  trigger the entire class.
* '<mod.Cls.x>' represents the type and kind of attribute/method 'x' of
  class 'mod.Cls'. This can also refer to an attribute inherited from a
  base class (relevant if it's accessed through a value of type 'Cls'
  instead of the base class type).
* '<package.mod>' represents the existence of module 'package.mod'. This
  gets triggered if 'package.mod' is created or deleted, or if it gets
  changed into something other than a module.

Examples of locations:

* 'mod' is the top level of module 'mod' (doesn't include any function bodies,
  but includes class bodies not nested within a function).
* 'mod.f' is function 'f' in module 'mod' (module-level variables aren't separate
  locations but are included in the module top level). Functions also include
  any nested functions and classes -- such nested definitions aren't separate
  locations, for simplicity of implementation.
* 'mod.Cls.f' is method 'f' of 'mod.Cls'. Non-method attributes aren't locations.
* 'mod.Cls' represents each method in class 'mod.Cls' + the top-level of the
  module 'mod'. (To simplify the implementation, there is no location that only
  includes the body of a class without the entire surrounding module top level.)
* Trigger '<...>' as a location is an indirect way of referring to all
  locations triggered by the trigger. These indirect locations keep the
  dependency map smaller and easier to manage.

Triggers can be triggered by program changes such as these:

* Addition or deletion of an attribute (or module).
* Change of the kind of thing a name represents (such as a change from a function
  to a class).
* Change of the static type of a name.

Changes in the body of a function that aren't reflected in the signature don't
cause the function to be triggered. More generally, we trigger only on changes
that may affect type checking results outside the module that contains the
change.

We don't generate dependencies from builtins and certain other stdlib modules,
since these change very rarely, and they would just increase the size of the
dependency map significantly without significant benefit.

Test cases for this module live in 'test-data/unit/deps*.test'.
é    )Úannotations)Údefaultdict)0ÚGDEFÚLDEFÚMDEFÚSYMBOL_FUNCBASE_TYPESÚAssertTypeExprÚAssignmentStmtÚ	AwaitExprÚBlockÚCallExprÚCastExprÚClassDefÚComparisonExprÚ	DecoratorÚDelStmtÚDictionaryComprehensionÚEnumCallExprÚ
ExpressionÚForStmtÚFuncBaseÚFuncDefÚGeneratorExprÚImportÚ	ImportAllÚ
ImportFromÚ	IndexExprÚ
MemberExprÚMypyFileÚNamedTupleExprÚNameExprÚNewTypeExprÚNodeÚOperatorAssignmentStmtÚOpExprÚOverloadedFuncDefÚRefExprÚStarExprÚ	SuperExprÚ	TupleExprÚTypeAliasExprÚTypeApplicationÚTypedDictExprÚTypeFormExprÚTypeInfoÚTypeVarExprÚ	UnaryExprÚVarÚWithStmtÚYieldFromExpr)Ú
op_methodsÚops_with_inplace_methodÚreverse_op_methodsÚunary_op_methods)ÚOptions)ÚScope)Úmake_triggerÚmake_wildcard_trigger)ÚTraverserVisitor)Ú	bind_self)ÚAnyTypeÚCallableTypeÚDeletedTypeÚ
ErasedTypeÚFunctionLikeÚInstanceÚLiteralTypeÚNoneTypeÚ
OverloadedÚ
ParametersÚParamSpecTypeÚPartialTypeÚ
ProperTypeÚSentinelValueÚ	TupleTypeÚTypeÚTypeAliasTypeÚTypedDictTypeÚ	TypeOfAnyÚTypeTypeÚTypeVarTupleTypeÚTypeVarTypeÚTypeVisitorÚUnboundTypeÚUninhabitedTypeÚ	UnionTypeÚ
UnpackTypeÚget_proper_type)Ú
type_state)Úcorrect_relative_importc                ól   — t        ||| j                  |«      }| j                  |«       |j                  S )z,Get all dependencies of a node, recursively.)ÚDependencyVisitorÚ
alias_depsÚacceptÚmap)ÚtargetÚtype_mapÚpython_versionÚoptionsÚvisitors        úU/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/server/deps.pyÚget_dependenciesrh   µ   s0   € ô   ¨.¸&×:KÑ:KÈWÓU€GØ
‡M�M�'ÔØ�;‰;Ðó    c           	     óX  — t        |||j                  «      }|j                  j                  | «      5  t	        |t
        «      rD|j                  D ]4  }t	        |t        t        t        t        f«      rŒ$|j                  |«       Œ6 nmt	        |t        «      rL|j                  r@|j                  j                  |j                  «      5  |j                  |«       ddd«       n|j                  |«       ddd«       |j                  S # 1 sw Y   ŒxY w# 1 sw Y   |j                  S xY w)zDGet dependencies of a target -- don't recursive into nested targets.N)r^   r_   ÚscopeÚmodule_scopeÚ
isinstancer   Údefsr   r   r   r&   r`   r   ÚinfoÚclass_scopera   )Ú	module_idÚmodule_treerb   rc   rd   rf   Údefns          rg   Úget_dependencies_of_targetrt   Á   sï   € ô   ¨.¸+×:PÑ:PÓQ€GØ	�‰×	#Ñ	# IÓ	.ñ #Ü�fœhÔ'ð Ÿ™ò )�ä! $¬´9¼gÔGXÐ(YÕZØ—K‘K Õ(ñ)ô ˜¤Ô)¨f¯kªkð —‘×*Ñ*¨6¯;©;Ó7ñ 'Ø—‘˜gÔ&÷'ð 'ð �M‰M˜'Ô"÷#ð �;‰;Ð÷	'ð 'ú÷#ð �;‰;Ðús+   ³A DÁ4ADÃ	D	ÃDÄ	D	ÄDÄD)c                  ó2  ‡ — e Zd Z	 d4	 	 	 	 	 	 	 	 	 d5d„Zd6ˆ fd„Zd7ˆ fd„Zd8ˆ fd„Zd9ˆ fd„Zd:d„Zd;d„Z	d<d„Z
d=d	„Zd>d
„Zd?ˆ fd„Zd@ˆ fd„ZdAd„ZdBd„ZdCd„ZdDˆ fd„ZdEˆ fd„ZdFˆ fd„ZdGˆ fd„ZdHd„ZdId„ZdJˆ fd„ZdKd„ZdLˆ fd„ZdMˆ fd„ZdMˆ fd„ZdNˆ fd„ZdOˆ fd„ZdPˆ fd„ZdQˆ fd„Z dRˆ fd„Z!dSˆ fd „Z"dTˆ fd!„Z#dUˆ fd"„Z$dVd#„Z%dWd$„Z&dXd%„Z'dYˆ fd&„Z(dZˆ fd'„Z)d[ˆ fd(„Z*d\ˆ fd)„Z+d]ˆ fd*„Z,d^d+„Z-d4d_d,„Z.d4d`d-„Z/dad.„Z0dbd/„Z1dcd0„Z2ddd1„Z3ded2„Z4dfd3„Z5ˆ xZ6S )gr^   c                óv   — t        «       | _        || _        || _        i | _        d| _        d| _        || _        y )NF)r:   rk   rc   r_   ra   Úis_classÚis_package_init_filere   )Úselfrc   rd   r_   re   s        rg   Ú__init__zDependencyVisitor.__init__Þ   s:   € ô “WˆŒ
Ø ˆŒð %ˆŒØ(*ˆŒØˆŒØ$)ˆÔ!Øˆ�ri   c                ó¾  •— | j                   j                  |j                  «      5  |j                  «       | _        | j	                  | j                   j                  «       «       |j                  j                  «       D ]8  \  }}| j                  j                  |t        «       «      j                  |«       Œ: t        ‰| �5  |«       d d d «       y # 1 sw Y   y xY w©N)rk   rl   Úfullnamerx   Úadd_type_alias_depsÚcurrent_targetÚplugin_depsÚitemsra   Ú
setdefaultÚsetÚupdateÚsuperÚvisit_mypy_file)ry   ÚoÚtriggerÚtargetsÚ	__class__s       €rg   r†   z!DependencyVisitor.visit_mypy_fileù   s«   ø€ Ø�Z‰Z×$Ñ$ Q§Z¡ZÓ0ñ 	'Ø()×(>Ñ(>Ó(@ˆDÔ%Ø×$Ñ$ T§Z¡Z×%>Ñ%>Ó%@ÔAØ$%§M¡M×$7Ñ$7Ó$9ò DÑ �˜Ø—‘×#Ñ# G¬S«UÓ3×:Ñ:¸7ÕCðDä‰GÑ# AÔ&÷	'÷ 	'ñ 	'ús   §B#CÃCc                ó¬  •— | j                   j                  |«      5  | j                   j                  «       }|j                  r‹| j                  r0t        |j                  t        «      rt        |j                  «      }n|j                  }| j                  |«      D ]/  }| j                  |«       | j                  |t        |«      ¬«       Œ1 |j                  rmt        |j                  «      D ]U  }| j                  «       r|j                  dvsŒ"| j                  t        |j                  dz   |j                  z   «      «       ŒW | j!                  | j                   j                  «       «       t"        ‰| �I  |«       t'        |j(                  «      |hz
  }|D ]"  }t        |t*        «      sŒt"        ‰| �I  |«       Œ$ 	 d d d «       y # 1 sw Y   y xY w)N©rb   ©rz   Ú__new__ú.)rk   Úfunction_scoper   Útyperw   rm   rC   r>   Úget_type_triggersÚadd_dependencyr;   ro   Únon_trivial_basesÚuse_logical_depsÚnamer}   r~   r…   Úvisit_func_defrƒ   Úexpandedr   )	ry   r‡   rb   Ú	signaturerˆ   ÚbaseÚvariantsÚexrŠ   s	           €rg   r—   z DependencyVisitor.visit_func_def  sv  ø€ Ø�Z‰Z×&Ñ& qÓ)ñ 	/Ø—Z‘Z×.Ñ.Ó0ˆFØ�vŠvØ—=’=¤Z°·±¼Ô%EÜ&/°·±Ó&7‘Ià !§¡�IØ#×5Ñ5°iÓ@ò N�GØ×'Ñ'¨Ô0Ø×'Ñ'¨¼ÀVÓ8LÐ'ÕMðNð �vŠvÜ-¨a¯f©fÓ5ò X�Dð  ×0Ñ0Ô2°a·f±fÐD[Ò6[Ø×+Ñ+¬L¸¿¹ÈÑ9LÈqÏvÉvÑ9UÓ,VÕWð	Xð
 ×$Ñ$ T§Z¡Z×%>Ñ%>Ó%@ÔAÜ‰GÑ" 1Ô%Ü˜1Ÿ:™:“¨!¨Ñ,ˆHØò /�Ü˜b¤'Õ*Ü‘GÑ*¨2Õ.ñ/÷'	/÷ 	/ñ 	/ús   �C4G
ÄBG
Æ/G
Ç
Gc                óœ  •— | j                  «       s`|j                  j                  �s| j                  j	                  «       €û| j                  t        |j                  j                  «      «       nÌ|j                  D ]½  }d }t        |t        «      r|j                  r|j                  }t        |t        «      rFt        |j                  t        «      r,|j                  j                  r|j                  j                  }|€Œ†| j                  t        |«      t        |j                  j                  «      «       Œ¿ t        ‰| �9  |«       y r|   )r•   ÚfuncÚis_overloadrk   Úcurrent_function_namer“   r;   r}   Ú
decoratorsrm   r'   r   Úcalleer…   Úvisit_decorator)ry   r‡   ÚdÚtnamerŠ   s       €rg   r£   z!DependencyVisitor.visit_decorator  sì   ø€ Ø×$Ñ$Ô&ð —6‘6×%Ó%¨$¯*©*×*JÑ*JÓ*LÐ*TØ×#Ñ#¤L°·±·±Ó$AÕBð —\‘\ò \�Ø$(�Ü˜a¤Ô)¨a¯jªjØŸJ™J�EÜ˜a¤Ô*¬z¸!¿(¹(ÄGÔ/LÐQR×QYÑQY×QbÒQbØŸH™H×-Ñ-�EØÑ$Ø×'Ñ'¬°UÓ(;¼\È!Ï&É&Ï/É/Ó=ZÕ[ð\ô 	‰Ñ Õ"ri   c                óØ  •— | j                   j                  |j                  «      5  | j                   j                  «       }| j	                  t        |«      |«       | j                  }d| _        |j                  D ]'  }| j	                  t        |j                  «      |«       Œ) | j                  |j                  «       t        ‰| �-  |«       || _        d d d «       y # 1 sw Y   y xY w)NT)rk   rp   ro   Úcurrent_full_targetr“   r;   rw   Ú	type_varsr}   Úprocess_type_infor…   Úvisit_class_def)ry   r‡   rb   Úold_is_classÚtvrŠ   s        €rg   rª   z!DependencyVisitor.visit_class_def1  s¹   ø€ Ø�Z‰Z×#Ñ# A§F¡FÓ+ñ 
	)Ø—Z‘Z×3Ñ3Ó5ˆFØ×Ñ¤¨VÓ 4°fÔ=ØŸ=™=ˆLØ ˆDŒMà—k‘kò G�Ø×#Ñ#¤L°·±Ó$=¸vÕFðGà×"Ñ" 1§6¡6Ô*Ü‰GÑ# AÔ&Ø(ˆDŒM÷
	)÷ 
	)ñ 
	)ús   §B0C Ã C)c                óÈ   — |j                   rJ| j                  j                  |j                   «      5  | j                  |j                   «       d d d «       y y # 1 sw Y   y xY wr|   )ro   rk   rp   r©   ©ry   r‡   s     rg   Úvisit_newtype_exprz$DependencyVisitor.visit_newtype_expr>  sP   € Ø�6Š6Ø—‘×'Ñ'¨¯©Ó/ñ /Ø×&Ñ& q§v¡vÔ.÷/ð /ð ÷/ð /ús   ²AÁA!c           	     óz  — | j                   j                  «       }|j                  D ]  }| j                  ||¬«       Œ |j                  r&| j                  |j                  t        |«      ¬«       |j                  r&| j                  |j                  t        |«      ¬«       |j                  r&| j                  |j                  t        |«      ¬«       |j                  rC|j                  d d D ]1  }| j                  t        |j                  «      t        |«      ¬«       Œ3 | j                  | j                   j                  «       «       |j                  j!                  «       D ]À  \  }}t#        |j$                  t&        «      sŒ!|j$                  j(                  r5t+        |«      r*| j                  t        |j                  dz   |z   «      «       t-        |«      D ]G  }| j                  t        |j                  dz   |z   «      t        |j                  dz   |z   «      ¬«       ŒI ŒÂ t-        |«      D �]ƒ  }|j                  j!                  «       D ]n  \  }}| j/                  «       r||j                  vrŒ%|dv rŒ*| j                  t        |j                  dz   |z   «      t        |j                  dz   |z   «      ¬«       Œp | j/                  «       rŒ | j                  t        |j                  dz   «      t        |j                  dz   «      ¬«       | j                  t        |j                  dz   «      t        |j                  dz   «      ¬«       | j                  t        |j                  dz   «      t        |j                  dz   «      ¬«       | j                  t        |j                  dz   «      «       �Œ† y )NrŒ   éÿÿÿÿr�   r�   ú	.__init__ú.__new__z.(abstract))rk   r§   ÚbasesÚadd_type_dependenciesÚ
tuple_typer;   Útypeddict_typeÚdeclared_metaclassÚis_protocolÚmror“   r<   r}   r~   r   Únamesr�   rm   Únoder2   Úis_initialized_in_classÚhas_user_basesr”   r•   )ry   ro   rb   rš   Ú	base_infor–   r¼   s          rg   r©   z#DependencyVisitor.process_type_infoC  sO  € Ø—‘×/Ñ/Ó1ˆØ—J‘Jò 	<ˆDØ×&Ñ& t°FÐ&Õ;ð	<à�?Š?Ø×&Ñ& t§¡¼|ÈFÓ?SÐ&ÔTØ×ÒØ×&Ñ& t×':Ñ':Ä<ÐPVÓCWÐ&ÔXØ×"Ò"Ø×&Ñ& t×'>Ñ'>Ä|ÐTZÓG[Ð&Ô\Ø×ÒØ!ŸX™X c r˜]ò �	ð ×#Ñ#Ü)¨)×*<Ñ*<Ó=ÄlÐSYÓFZð $õ ðð" 	× Ñ  §¡×!:Ñ!:Ó!<Ô=ØŸ*™*×*Ñ*Ó,ò 	‰JˆD�$Ü˜$Ÿ)™)¤SÕ)à—9‘9×4Ò4¼ÈÔ9MØ×'Ñ'¬°T·]±]ÀSÑ5HÈ4Ñ5OÓ(PÔQÜ!2°4Ó!8ò �Ið ×'Ñ'Ü$ Y×%7Ñ%7¸#Ñ%=ÀÑ%DÓEÜ+¨D¯M©M¸CÑ,?À$Ñ,FÓGð (õ ñð	ô +¨4Ó0ó +	VˆIØ'Ÿo™o×3Ñ3Ó5ò ‘
��dØ×(Ñ(Ô*ð  4§:¡:Ñ-Ø ð Ð6Ñ6Ø Ø×#Ñ#Ü  ×!3Ñ!3°cÑ!9¸DÑ!@ÓAÜ'¨¯©¸Ñ(;¸dÑ(BÓCð $õ ð#ð* ×(Ñ(Õ*ð ×#Ñ#Ü  ×!3Ñ!3°kÑ!AÓBÜ'¨¯©¸Ñ(CÓDð $ô ð ×#Ñ#Ü  ×!3Ñ!3°jÑ!@ÓAÜ'¨¯©¸
Ñ(BÓCð $ô ð ×#Ñ#Ü  ×!3Ñ!3°mÑ!CÓDÜ'¨¯©¸Ñ(CÓDð $ô ð ×#Ñ#¤L°×1CÑ1CÀmÑ1SÓ$TÖUñW+	Vri   c                ó’   — |j                   D ]8  \  }}| j                  t        |«      | j                  j	                  «       «       Œ: y r|   )Úidsr“   r;   rk   r   )ry   r‡   ÚidÚas_ids       rg   Úvisit_importzDependencyVisitor.visit_import™  s=   € ØŸ™ò 	O‰IˆB�Ø×Ñ¤¨RÓ 0°$·*±*×2KÑ2KÓ2MÕNñ	Ori   c                óP  — | j                  «       ry t        | j                  j                  «       |j                  |j
                  | j                  «      \  }}| j                  t        |«      «       |j                  D ]%  \  }}| j                  t        |dz   |z   «      «       Œ' y ©Nr�   )
r•   r\   rk   Úcurrent_module_idÚrelativerÂ   rx   r“   r;   r»   )ry   r‡   rq   Ú_r–   Úas_names         rg   Úvisit_import_fromz#DependencyVisitor.visit_import_from�  s�   € Ø× Ñ Ô"àÜ.Ø�J‰J×(Ñ(Ó*¨A¯J©J¸¿¹¸d×>WÑ>Wó
‰ˆ	�1ð 	×ÑœL¨Ó3Ô4ØŸW™Wò 	F‰MˆD�'Ø×Ñ¤¨Y¸©_¸tÑ-CÓ DÕEñ	Fri   c                óÆ   — t        | j                  j                  «       |j                  |j                  | j
                  «      \  }}| j                  t        |«      «       y r|   )r\   rk   rÇ   rÈ   rÂ   rx   r“   r<   )ry   r‡   rq   rÉ   s       rg   Úvisit_import_allz"DependencyVisitor.visit_import_all¨  sJ   € Ü.Ø�J‰J×(Ñ(Ó*¨A¯J©J¸¿¹¸d×>WÑ>Wó
‰ˆ	�1ð
 	×ÑÔ1°)Ó<Õ=ri   c                ó>   •— |j                   st        ‰| �	  |«       y y r|   )Úis_unreachabler…   Úvisit_block©ry   r‡   rŠ   s     €rg   rÐ   zDependencyVisitor.visit_block°  s   ø€ Ø×ÒÜ‰GÑ Õ"ð  ri   c                ón  •— |j                   }t        |t        «      ržt        |j                  t        «      r„|j                  }| j                  |j                  t        |j                  «      ¬«       |j                  D ](  }| j                  |t        |j                  «      ¬«       Œ* t        ‰| �-  |«       �n~t        |t        «      �rt        |j                  t        «      rù|j                  j                  }| j                  j                  «       › d|j                   › �}|j"                  j%                  «       D ]›  \  }}|j'                  d«      rŒt        |j(                  t*        «      sŒ3|j(                  j,                  }	|	sŒL| j                  |	«       | j                  |	t        |«      ¬«       t        |› d|› �«      }
| j                  |	|
¬«       Œ� �nZt        |t        «      r�t        |j                  t.        «      ru|j                  j                  }|j0                  €J ‚| j                  j                  «       › d|j                   › �}| j                  |j0                  t        |«      ¬«       �n»t        |t        «      r©t        |j                  t2        «      r�|j                  j                  j"                  j%                  «       D ]\  \  }}t        |j(                  t*        «      sŒ!|j(                  j,                  sŒ8| j                  |j(                  j,                  «       Œ^ �n|j4                  �rAt7        |j8                  «      dk(  sJ ‚|j8                  d   }t        |t:        «      sJ ‚t=        | j>                  jA                  |«      «      }	t        |	tB        «      rd|	jE                  «       rT|	jG                  «       j                  }| jI                  t        |dz   «      «       | jI                  t        |dz   «      «       t        |tJ        «      rJt        |j                  tL        «      r0| j                  |j                  j(                  jN                  «       nÈ|	rÆ| j                  |	«       n´t        ‰| �¡  |«       |j8                  D ]  }| jS                  |«       Œ |j8                  |gz   }tU        t7        |«      dz
  «      D ]2  }||   }||dz      }t        |tV        «      sŒ!| jY                  |d«       Œ4 |j,                  r| j                  |j,                  «       | j[                  «       �rk|j\                  �€]t        |t        «      �rKt        |j^                  t`        «      �r/|j^                  j                  �rd }t        |j^                  j(                  tb        «      rX|j^                  j(                  jA                  d	«      }|rGt        |j(                  td        «      r-|j(                  j                  }n|j^                  j                  }|sy |j8                  D ]p  }t        |t`        «      sŒ|j                  sŒ!|jf                  sŒ.|jh                  tj        k(  r y | jI                  t        |«      t        |j                  «      «       Œr y y y y y y )
NrŒ   r�   rÉ   é   r   r²   r³   Ú__iter__rz   )6Úrvaluerm   r   Úanalyzedr0   rµ   Úupper_boundr;   r}   Úvaluesr…   Úvisit_call_exprr    ro   rk   r§   r–   r»   r�   Ú
startswithr¼   r2   r‘   r-   r·   r   Úis_alias_defÚlenÚlvaluesr!   rZ   rc   ÚgetrC   Úis_type_objÚtype_objectr“   r   r+   rb   Úvisit_assignment_stmtÚprocess_lvalueÚranger*   Ú!add_attribute_dependency_for_exprr•   Úunanalyzed_typer¢   r'   r/   r   Ú
is_new_defÚkindr   )ry   r‡   rÕ   rÖ   Úvalro   Úprefixr–   ÚsymnodeÚtypÚattr_targetÚlvalueÚ
class_namer�   ÚiÚfnameÚinitÚlvrŠ   s                     €rg   rá   z'DependencyVisitor.visit_assignment_stmt´  s  ø€ Ø—‘ˆÜ�fœhÔ'¬J°v·±ÌÔ,TØ—‘ˆHØ×&Ñ&Ø×$Ñ$¬\¸(×:KÑ:KÓ-Lð 'ô ð  —‘ò X�Ø×*Ñ*¨3´|ÀH×DUÑDUÓ7VÐ*ÕWðXô ‰GÑ# FÖ+Ü˜¤Õ)¬j¸¿¹Ì.Ô.Yà—?‘?×'Ñ'ˆDØŸ
™
×6Ñ6Ó8Ð9¸¸4¿9¹9¸+ÐFˆFØ!%§¡×!1Ñ!1Ó!3ò L‘��gØ—‘ sÕ+´
¸7¿<¹<ÌÕ0MØ!Ÿ,™,×+Ñ+�CÚØ×2Ñ2°3Ô7Ø×2Ñ2°3¼|ÈFÓ?SÐ2ÔTÜ&2°f°X¸Q¸t¸fÐ3EÓ&F˜Ø×2Ñ2°3¸{Ð2ÕKòLô ˜¤Ô)¬j¸¿¹Ì-Ô.Xà—?‘?×'Ñ'ˆDØ×&Ñ&Ð2Ð2Ð2ØŸ
™
×6Ñ6Ó8Ð9¸¸4¿9¹9¸+ÐFˆFØ×&Ñ& t×':Ñ':Ä<ÐPVÓCWÐ&ÖXÜ˜¤Ô)¬j¸¿¹Ì,Ô.Wà!'§¡×!5Ñ!5×!;Ñ!;×!AÑ!AÓ!Cò B‘��gÜ˜gŸl™l¬CÕ0°W·\±\×5FÓ5FØ×.Ñ.¨w¯|©|×/@Ñ/@ÕAòBð �^‹^Ü�q—y‘y“> QÒ&Ð&Ð&Ø—Y‘Y˜q‘\ˆFÜ˜f¤hÔ/Ð/Ð/Ü! $§-¡-×"3Ñ"3°FÓ";Ó<ˆCÜ˜#œ|Ô,°·±Ô1BØ Ÿ_™_Ó.×7Ñ7�
Ø×#Ñ#¤L°¸kÑ1IÓ$JÔKØ×#Ñ#¤L°¸jÑ1HÓ$IÔJÜ˜&¤)Ô,´¸F¿O¹OÌ]Ô1[Ø×*Ñ*¨6¯?©?×+?Ñ+?×+FÑ+FÕGÙØ×*Ñ*¨3Õ/ô ‰GÑ)¨!Ô,ØŸ)™)ò ,�Ø×#Ñ# FÕ+ð,à—I‘I  Ñ(ˆEÜœ3˜u›:¨™>Ó*ò O�Ø˜q™�Ø˜q 1™u™�Ü˜f¤iÕ0Ø×:Ñ:¸6À:ÕNð	Oð
 �vŠvØ×*Ñ*¨1¯6©6Ô2Ø× Ñ Õ" q×'8Ñ'8Ñ'@ô ˜6¤8Õ,Ü˜vŸ}™}¬gÕ6Ø—M‘M×*Ó*à$(�Ü˜fŸm™m×0Ñ0´(Ô;à!Ÿ=™=×-Ñ-×1Ñ1°*Ó=�DÙ¤
¨4¯9©9Ô6KÔ LØ $§	¡	× 2Ñ 2™à"ŸM™M×2Ñ2�EÙØØŸ)™)ò \�BÜ! "¤gÕ.°2·;³;À2Ç=Ã=ØŸ7™7¤dš?Ù"Ø×+Ñ+¬L¸Ó,?ÄÈbÏkÉkÓAZÕ[ñ	\ð +ð 7ð -ð (AÐ"ri   c                ó°  — t        |t        «      r| j                  |j                  d«       yt        |t        «      r‡|j
                  t        t        fv rn| j                  |«      }| j                  |«      }t        | j                  j                  «       › d|j                  › �«      }|D ]  }| j                  ||«       Œ yyt        |t        «      �r"| j!                  |«      ru|j"                  ri|j$                  }t        |t&        «      rM|j(                  }|r?t+        |«      r4| j                  t        |j,                  dz   |j                  z   «      «       |j
                  €�|j.                  | j0                  vry| j0                  |j.                     }| j                  |«      }| j                  |«      }| j3                  ||j                  «      D ]  }|D ]  }| j                  ||«       Œ Œ yyt        |t4        «      r#|j6                  D ]  }	| j9                  |	«       Œ yt        |t:        «      r| j9                  |j.                  «       yy)z/Generate additional dependencies for an lvalue.Ú__setitem__r�   N)rm   r   Úadd_operator_method_dependencyrš   r!   rç   r   r   Úget_non_partial_lvalue_typer’   r;   rk   r§   r–   r“   r   Úis_self_member_refræ   r¼   r2   ro   r¾   r}   Úexprrc   Úattribute_triggersr*   r�   râ   r(   )
ry   rí   Úlvalue_typeÚtype_triggersÚattr_triggerÚtype_triggerr¼   ro   Úobject_typeÚitems
             rg   râ   z DependencyVisitor.process_lvalue
  s   € ä�fœiÔ(Ø×/Ñ/°·±¸]ÕKÜ˜¤Ô)Ø�{‰{œt¤T˜lÑ*ð #×>Ñ>¸vÓF�Ø $× 6Ñ 6°{Ó C�Ü+¨t¯z©z×/MÑ/MÓ/OÐ.PÐPQÐRX×R]ÑR]ÐQ^Ð,_Ó`�Ø$1ò D�LØ×'Ñ'¨°lÕCñDð +ô ˜¤
Õ+Ø×&Ñ& vÔ.°6×3DÒ3DØ—{‘{�Ü˜d¤CÔ(ØŸ9™9�DÙ¤¨tÔ 4à×+Ñ+¬L¸¿¹ÈÑ9LÈvÏ{É{Ñ9ZÓ,[Ô\Ø�{‰{Ð"à—;‘; d§m¡mÑ3àØ"Ÿm™m¨F¯K©KÑ8�Ø"×>Ñ>¸vÓF�Ø $× 6Ñ 6°{Ó C�Ø$(×$;Ñ$;¸KÈÏÉÓ$Uò H�LØ(5ò H˜Ø×+Ñ+¨L¸,ÕGñHñHð #ô ˜¤	Ô*ØŸ™ò *�Ø×#Ñ# DÕ)ñ*ä˜¤Ô)Ø×Ñ §¡Õ,ð *ri   c                ó    — t        |j                  t        «      sy|j                  j                  }t        |t        «      xr |j
                  S )z1Does memberexpr to refer to an attribute of self?F)rm   rø   r!   r¼   r2   Úis_self)ry   Ú
memberexprr¼   s      rg   r÷   z$DependencyVisitor.is_self_member_ref0  s8   € ä˜*Ÿ/™/¬8Ô4ØØ�‰×#Ñ#ˆÜ˜$¤Ó$Ò5¨¯©Ð5ri   c                óp  — || j                   vr
t        «       S t        | j                   |   «      }t        |t        «      rut        |j
                  t        «      rC|j
                  j                  r!t        |j
                  j                  «      }|S t        «       }|S |j                  rJ ‚t        «       S |S r|   )	rc   rW   rZ   rm   rJ   r¼   r2   r‘   ræ   )ry   rí   rú   s      rg   rö   z-DependencyVisitor.get_non_partial_lvalue_type7  s�   € Ø˜Ÿ™Ñ&ä"Ó$Ð$Ü% d§m¡m°FÑ&;Ó<ˆÜ�k¤;Ô/Ü˜&Ÿ+™+¤sÔ+Ø—;‘;×#Ò#Ü"1°&·+±+×2BÑ2BÓ"C�Kð Ðô #2Ó"3�Kð Ðð "×,Ò,Ð,Ð,Ü&Ó(Ð(ØÐri   c                ó&  •— t         ‰| �  |«       | j                  |j                  «       t        |j
                     }| j                  |j                  |«       |j
                  t        v r%d|dd  z   }| j                  |j                  |«       y y )NÚ__ié   )r…   Úvisit_operator_assignment_stmtrâ   rí   r5   Úoprä   r6   )ry   r‡   ÚmethodÚinplace_methodrŠ   s       €rg   r  z0DependencyVisitor.visit_operator_assignment_stmtL  sz   ø€ Ü‰Ñ.¨qÔ1Ø×Ñ˜AŸH™HÔ%Ü˜AŸD™DÑ!ˆØ×.Ñ.¨q¯x©x¸Ô@Ø�4‰4Ô*Ñ*Ø" V¨A¨B ZÑ/ˆNØ×2Ñ2°1·8±8¸^ÕLð +ri   c                ó¤  •— t         ‰| �  |«       |j                  sa| j                  |j                  d«       | j                  |j                  d«       |j
                  ra| j                  |j
                  d«       nD| j                  |j                  d«       |j
                  r| j                  |j
                  d«       | j                  |j                  «       t        |j                  t        «      r2|j                  }|r$| j                  |d«       | j                  |d«       |j                  r| j                  |j                  «       y y )NrÔ   Ú__getitem__Ú__next__Ú	__aiter__Ú	__anext__)r…   Úvisit_for_stmtÚis_asyncrä   rø   Úinferred_iterator_typeÚadd_attribute_dependencyrâ   Úindexrm   r*   Úinferred_item_typeÚ
index_typerµ   )ry   r‡   Ú	item_typerŠ   s      €rg   r  z DependencyVisitor.visit_for_stmtU  sÿ   ø€ Ü‰Ñ˜qÔ!Ø�zŠzð ×2Ñ2°1·6±6¸:ÔFØ×2Ñ2°1·6±6¸=ÔIØ×'Ò'Ø×-Ñ-¨a×.FÑ.FÈ
ÕSà×2Ñ2°1·6±6¸;ÔGØ×'Ò'Ø×-Ñ-¨a×.FÑ.FÈÔTà×Ñ˜AŸG™GÔ$Ü�a—g‘gœyÔ)à×,Ñ,ˆIÙà×-Ñ-¨i¸ÔDØ×-Ñ-¨i¸ÔGØ�<Š<Ø×&Ñ& q§|¡|Õ4ð ri   c                ó4  •— t         ‰| �  |«       |j                  D ]W  }|j                  s%| j	                  |d«       | j	                  |d«       Œ4| j	                  |d«       | j	                  |d«       ŒY |j
                  D ]  }| j                  |«       Œ y )NÚ	__enter__Ú__exit__Ú
__aenter__Ú	__aexit__)r…   Úvisit_with_stmtrø   r  rä   Úanalyzed_typesrµ   )ry   r‡   Úerë   rŠ   s       €rg   r  z!DependencyVisitor.visit_with_stmtn  s‘   ø€ Ü‰Ñ Ô"Ø—‘ò 	GˆAØ—:’:Ø×6Ñ6°q¸+ÔFØ×6Ñ6°q¸*ÕEà×6Ñ6°q¸,ÔGØ×6Ñ6°q¸+ÕFð	Gð ×#Ñ#ò 	,ˆCØ×&Ñ& sÕ+ñ	,ri   c                ó¦   •— t         ‰| �  |«       t        |j                  t        «      r'| j                  |j                  j                  d«       y y )NÚ__delitem__)r…   Úvisit_del_stmtrm   rø   r   rä   rš   rÑ   s     €rg   r"  z DependencyVisitor.visit_del_stmtz  s;   ø€ Ü‰Ñ˜qÔ!Ü�a—f‘fœiÔ(Ø×2Ñ2°1·6±6·;±;ÀÕNð )ri   c                ó˜  — |j                   r$| j                  t        |j                   «      «       t        | j                  j                  |«      «      }t        |t        «      rf|j                  «       rU|j                  «       j                   }| j                  t        |dz   «      «       | j                  t        |dz   «      «       y y y )Nr²   r³   )
r}   r“   r;   rZ   rc   rÞ   rm   rC   rß   rà   )ry   r‡   rë   rî   s       rg   Úprocess_global_ref_exprz)DependencyVisitor.process_global_ref_expr�  s˜   € Ø�:Š:Ø×Ñ¤¨Q¯Z©ZÓ 8Ô9ô ˜dŸm™m×/Ñ/°Ó2Ó3ˆÜ�cœ<Ô(¨S¯_©_Ô->ØŸ™Ó*×3Ñ3ˆJØ×Ñ¤¨Z¸+Ñ-EÓ FÔGØ×Ñ¤¨Z¸*Ñ-DÓ EÕFð .?Ð(ri   c                óv   — |j                   t        k(  ry |j                   t        k(  ry | j                  |«       y r|   )rç   r   r   r$  r®   s     rg   Úvisit_name_exprz!DependencyVisitor.visit_name_expr�  s0   € Ø�6‰6”TŠ>ð Ø�6‰6”TŠ>ð Ø×$Ñ$ QÕ'ri   c                ó¼  •— t        |j                  t        «      r]t        |j                  j                  t        «      r9| j                  t        |j                  j                  j                  «      «       nt        ‰| �%  |«       |j                  �š| j                  |«       t        |j                  t        «      rnt        |j                  j                  t        «      rI| j                  t        |j                  j                  j                  dz   |j                  z   «      «       y y y |j                  | j                  vry t        |j                  t        «      rmt        |j                  j                  t        «      rI| j                  t        |j                  j                  j                  dz   |j                  z   «      «       y t        | j                  |j                     «      }| j!                  ||j                  «       | j#                  «       rAt        |t$        «      r0| j'                  ||«      }|�| j                  t        |«      «       y y y y rÆ   )rm   rø   r'   r¼   r/   r“   r;   r}   r…   Úvisit_member_exprrç   r$  r   r–   rc   rZ   r  r•   r?   Úget_unimported_fullname)ry   r  rë   r–   rŠ   s       €rg   r(  z#DependencyVisitor.visit_member_exprš  s¤  ø€ Ü�a—f‘fœgÔ&¬:°a·f±f·k±kÄ8Ô+Là×Ñ¤¨Q¯V©V¯[©[×-AÑ-AÓ BÕCä‰GÑ% aÔ(Ø�6‰6Ðà×(Ñ(¨Ô+Ü˜!Ÿ&™&¤'Ô*¬z¸!¿&¹&¿+¹+ÄxÔ/Pð ×#Ñ#¤L°·±·±×1EÑ1EÈÑ1KÈaÏfÉfÑ1TÓ$UÕVð 0QÐ*ð �v‰v˜TŸ]™]Ñ*ð Ü˜!Ÿ&™&¤'Ô*¬z¸!¿&¹&¿+¹+ÄxÔ/Pà×#Ñ#¤L°·±·±×1EÑ1EÈÑ1KÈaÏfÉfÑ1TÓ$UÔVØÜ! $§-¡-°·±Ñ"7Ó8ˆCØ×)Ñ)¨#¨q¯v©vÔ6Ø×$Ñ$Ô&¬:°c¼7Ô+CØ×3Ñ3°A°sÓ;�ØÐ#ð ×'Ñ'¬°TÓ(:Õ;ð $ð ,DÐ&ri   c                óN  — d}|j                   t        j                  k(  r¾t        |j                  t
        «      r¤d|j                  z   |z   }|j                  }|j                  | j                  vryt        | j                  |j                     «      }t        |t        «      sy|}|j                   t        j                  k(  rt        |j                  t
        «      rŒ¤|j                   t        j                  k(  r+|j                  r|j                  dz   |j                  z   |z   S y)z¼If e refers to an unimported definition, infer the fullname of this.

        Return None if e doesn't refer to an unimported definition or if we can't
        determine the name.
        Ú r�   N)Útype_of_anyrQ   Úfrom_another_anyrm   rø   r   r–   rc   rZ   r?   Úfrom_unimported_typeÚmissing_import_name)ry   r  rë   ÚsuffixÚobj_types        rg   r)  z)DependencyVisitor.get_unimported_fullnameÂ  sâ   € ð ˆð
 �o‰o¤×!;Ñ!;Ò;Ä
È1Ï6É6ÔS]Ô@^Ø˜1Ÿ6™6‘\ FÑ*ˆFØ—‘ˆAØ�v‰v˜TŸ]™]Ñ*ØÜ& t§}¡}°Q·V±VÑ'<Ó=ˆHÜ˜h¬Ô0àØˆCð �o‰o¤×!;Ñ!;Ò;Ä
È1Ï6É6ÔS]Õ@^ð �?‰?œi×<Ñ<Ò<À×AXÒAXà×*Ñ*¨SÑ0°1·6±6Ñ9¸FÑBÐBØri   c                ó  •— | j                  «       st        ‰| �	  |«       |j                  �a|j                  }t        |j                  «      D ]<  }| j                  t        |j                  dz   |z   «      «       ||j                  v sŒ< y  y y rÆ   )
r•   r…   Úvisit_super_exprro   r–   r”   r“   r;   r}   r»   )ry   r  r–   rš   rŠ   s       €rg   r3  z"DependencyVisitor.visit_super_exprÜ  s~   ø€ à×$Ñ$Ô&Ü‰GÑ$ QÔ'Ø�6‰6ÐØ—6‘6ˆDÜ)¨!¯&©&Ó1ò �Ø×#Ñ#¤L°·±ÀÑ1DÀtÑ1KÓ$LÔMØ˜4Ÿ:™:Ò%ñ ñð ri   c                óZ  •— t        |j                  t        «      r+|j                  j                  dk(  r| j	                  |«       y t
        ‰| �  |«       | j                  j                  |j                  «      }|�/t        |«      }t        |t        «      s| j                  |d«       y y y )Nzbuiltins.isinstanceÚ__call__)rm   r¢   r'   r}   Úprocess_isinstance_callr…   rÙ   rc   rÞ   rZ   rC   r  ©ry   r  rë   rŠ   s      €rg   rÙ   z!DependencyVisitor.visit_call_exprê  s‰   ø€ Ü�a—h‘h¤Ô(¨Q¯X©X×->Ñ->ÐBWÒ-WØ×(Ñ(¨Õ+ä‰GÑ# AÔ&Ø—-‘-×#Ñ# A§H¡HÓ-ˆCØˆÜ% cÓ*�Ü! #¤|Ô4Ø×1Ñ1°#°zÕBð 5ð ri   c                óN  •— t        |j                  «      dk(  r}|j                  d   }t        |t        «      r^|j                  t
        k(  rKt        |j                  t        «      r1|j                  r%| j                  t        |j                  «      «       yt        ‰| �1  |«       y)zDProcess "isinstance(...)" in a way to avoid some extra dependencies.r  rÓ   N)rÜ   Úargsrm   r'   rç   r   r¼   r/   r}   r“   r;   r…   rÙ   )ry   r  ÚargrŠ   s      €rg   r6  z)DependencyVisitor.process_isinstance_callõ  sv   ø€ äˆq�v‰v‹;˜!ÒØ—&‘&˜‘)ˆCä˜3¤Ô(Ø—H‘H¤Ò$Ü˜sŸx™x¬Ô2Ø—L’Lð ×#Ñ#¤L°·±Ó$>Ô?Øô 	‰Ñ Õ"ri   c                óZ   •— t         ‰| �  |«       | j                  |j                  «       y r|   )r…   Úvisit_cast_exprrµ   r‘   ©ry   r  rŠ   s     €rg   r<  z!DependencyVisitor.visit_cast_expr  s"   ø€ Ü‰Ñ Ô"Ø×"Ñ" 1§6¡6Õ*ri   c                óZ   •— t         ‰| �  |«       | j                  |j                  «       y r|   )r…   Úvisit_type_form_exprrµ   r‘   r=  s     €rg   r?  z&DependencyVisitor.visit_type_form_expr
  s"   ø€ Ü‰Ñ$ QÔ'Ø×"Ñ" 1§6¡6Õ*ri   c                óZ   •— t         ‰| �  |«       | j                  |j                  «       y r|   )r…   Úvisit_assert_type_exprrµ   r‘   r=  s     €rg   rA  z(DependencyVisitor.visit_assert_type_expr  s"   ø€ Ü‰Ñ& qÔ)Ø×"Ñ" 1§6¡6Õ*ri   c                óh   •— t         ‰| �  |«       |j                  D ]  }| j                  |«       Œ y r|   )r…   Úvisit_type_applicationÚtypesrµ   r7  s      €rg   rC  z(DependencyVisitor.visit_type_application  s1   ø€ Ü‰Ñ& qÔ)Ø—7‘7ò 	,ˆCØ×&Ñ& sÕ+ñ	,ri   c                ó\   •— t         ‰| �  |«       | j                  |j                  d«       y )Nr  )r…   Úvisit_index_exprrõ   rš   r=  s     €rg   rF  z"DependencyVisitor.visit_index_expr  s$   ø€ Ü‰Ñ  Ô#Ø×+Ñ+¨A¯F©F°MÕBri   c                ó¨   •— t         ‰| �  |«       |j                  t        vry t        |j                     }| j	                  |j
                  |«       y r|   )r…   Úvisit_unary_exprr  r8   rõ   rø   )ry   r  r	  rŠ   s      €rg   rH  z"DependencyVisitor.visit_unary_expr  sB   ø€ Ü‰Ñ  Ô#Ø�4‰4Ô'Ñ'ØÜ! !§$¡$Ñ'ˆØ×+Ñ+¨A¯F©F°FÕ;ri   c                ó†   •— t         ‰| �  |«       | j                  |j                  |j                  |j
                  «       y r|   )r…   Úvisit_op_exprÚprocess_binary_opr  ÚleftÚrightr=  s     €rg   rJ  zDependencyVisitor.visit_op_expr"  s.   ø€ Ü‰Ñ˜aÔ Ø×Ñ˜qŸt™t Q§V¡V¨Q¯W©WÕ5ri   c                óÆ   •— t         ‰| �  |«       t        |j                  «      D ]9  \  }}|j                  |   }|j                  |dz      }| j                  |||«       Œ; y )NrÓ   )r…   Úvisit_comparison_exprÚ	enumerateÚ	operatorsÚoperandsrK  )ry   r  rï   r  rL  rM  rŠ   s         €rg   rO  z'DependencyVisitor.visit_comparison_expr&  s]   ø€ Ü‰Ñ% aÔ(Ü˜qŸ{™{Ó+ò 	4‰EˆAˆrØ—:‘:˜a‘=ˆDØ—J‘J˜q 1™uÑ%ˆEØ×"Ñ" 2 t¨UÕ3ñ	4ri   c                óÜ   — t        j                  |«      }|rU|dk(  r| j                  ||«       y | j                  ||«       t        j                  |«      }|r| j                  ||«       y y y )NÚin)r5   rÞ   rõ   r7   )ry   r  rL  rM  r	  Ú
rev_methods         rg   rK  z#DependencyVisitor.process_binary_op-  sg   € Ü—‘ Ó#ˆÙØ�TŠzØ×3Ñ3°E¸6ÕBà×3Ñ3°D¸&ÔAÜ/×3Ñ3°FÓ;�
ÙØ×7Ñ7¸¸zÕJð ð ri   c                óv   — t        | j                  j                  |«      «      }|�| j                  ||«       y y r|   )rZ   rc   rÞ   Ú'add_operator_method_dependency_for_type)ry   r  r	  rë   s       rg   rõ   z0DependencyVisitor.add_operator_method_dependency8  s5   € Ü˜dŸm™m×/Ñ/°Ó2Ó3ˆØˆ?Ø×8Ñ8¸¸fÕEð ri   c                ó  — t        |t        «      rt        |j                  «      }t        |t        «      r|j
                  }t        |t        «      r7t        |j                  j                  dz   |z   «      }| j                  |«       y t        |t        «      r-|j                  D ]  }| j                  t        |«      |«       Œ y t        |t        «      r-|j                  «       r| j                  |j                   |«       y t        |t"        «      rmt        |j$                  t        «      rR|j$                  j                  j&                  �1| j                  |j$                  j                  j&                  |«       y y y y rÆ   )rm   rT   rZ   r×   rM   Úpartial_fallbackrD   r;   r‘   r}   r“   rX   r�   rW  rC   rß   ÚfallbackrR   rÿ   Úmetaclass_type)ry   rë   r	  rˆ   rÿ   s        rg   rW  z9DependencyVisitor.add_operator_method_dependency_for_type=  s  € ô �cœ;Ô'Ü! #§/¡/Ó2ˆCÜ�cœ9Ô%Ø×&Ñ&ˆCÜ�cœ8Ô$Ü" 3§8¡8×#4Ñ#4°sÑ#:¸VÑ#CÓDˆGØ×Ñ Õ(Ü˜œYÔ'ØŸ	™	ò \�Ø×<Ñ<¼_ÈTÓ=RÐTZÕ[ñ\ä˜œ\Ô*¨s¯©Ô/@Ø×8Ñ8¸¿¹ÀvÕNÜ˜œXÔ&Ü˜#Ÿ(™(¤HÔ-°#·(±(·-±-×2NÑ2NÐ2ZØ×<Ñ<¸S¿X¹X¿]¹]×=YÑ=YÐ[aÕbð 3[Ð-ð 'ri   c                óh   •— t         ‰| �  |«       |j                  D ]  }| j                  |«       Œ y r|   )r…   Úvisit_generator_exprÚ	sequencesÚadd_iter_dependency©ry   r  ÚseqrŠ   s      €rg   r]  z&DependencyVisitor.visit_generator_exprP  s1   ø€ Ü‰Ñ$ QÔ'Ø—;‘;ò 	*ˆCØ×$Ñ$ SÕ)ñ	*ri   c                óh   •— t         ‰| �  |«       |j                  D ]  }| j                  |«       Œ y r|   )r…   Úvisit_dictionary_comprehensionr^  r_  r`  s      €rg   rc  z0DependencyVisitor.visit_dictionary_comprehensionU  s1   ø€ Ü‰Ñ.¨qÔ1Ø—;‘;ò 	*ˆCØ×$Ñ$ SÕ)ñ	*ri   c                óZ   •— t         ‰| �  |«       | j                  |j                  «       y r|   )r…   Úvisit_star_exprr_  rø   r=  s     €rg   re  z!DependencyVisitor.visit_star_exprZ  s"   ø€ Ü‰Ñ Ô"Ø× Ñ  §¡Õ(ri   c                óZ   •— t         ‰| �  |«       | j                  |j                  «       y r|   )r…   Úvisit_yield_from_exprr_  rø   r=  s     €rg   rg  z'DependencyVisitor.visit_yield_from_expr^  s"   ø€ Ü‰Ñ% aÔ(Ø× Ñ  §¡Õ(ri   c                ó\   •— t         ‰| �  |«       | j                  |j                  d«       y )NÚ	__await__)r…   Úvisit_await_exprrä   rø   r=  s     €rg   rj  z"DependencyVisitor.visit_await_exprb  s$   ø€ Ü‰Ñ  Ô#Ø×.Ñ.¨q¯v©v°{ÕCri   c                ó~   — || j                   v r/| j                   |   D ]  }| j                  t        |«      «       Œ y y r|   )r_   r“   r;   )ry   rb   Úaliass      rg   r~   z%DependencyVisitor.add_type_alias_depsh  s@   € ð �T—_‘_Ñ$ØŸ™¨Ñ0ò 9�Ø×#Ñ#¤L°Ó$7Õ8ñ9ð %ri   c                óÆ   — |j                  d«      ry|€| 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.
        )z
<builtins.z<typing.z<mypy_extensions.z<typing_extensions.N)rÚ   rk   r   ra   r‚   rƒ   Úadd)ry   rˆ   rb   s      rg   r“   z DependencyVisitor.add_dependencyo  sR   € ð
 ×ÑØRô
ð Øˆ>Ø—Z‘Z×.Ñ.Ó0ˆFØ�‰×Ñ˜G¤S£UÓ+×/Ñ/°Õ7ri   c                óT   — | j                  |«      D ]  }| j                  ||«       Œ y)z¹Add dependencies to all components of a type.

        Args:
            target: If not None, override the default (current) target of the
                generated dependency.
        N)r’   r“   )ry   rë   rb   rˆ   s       rg   rµ   z'DependencyVisitor.add_type_dependencies€  s.   € ð ×-Ñ-¨cÓ2ò 	1ˆGØ×Ñ ¨Õ0ñ	1ri   c                óX   — | j                  ||«      }|D ]  }| j                  |«       Œ y)z;Add dependencies for accessing a named attribute of a type.N)rù   r“   )ry   rë   r–   r‰   rb   s        rg   r  z*DependencyVisitor.add_attribute_dependencyŠ  s1   € à×)Ñ)¨#¨tÓ4ˆØò 	(ˆFØ×Ñ Õ'ñ	(ri   c                óú  — t        |«      }t        |t        «      rt        |j                  «      }t        |t        «      r|j
                  }t        |t        «      r'|j                  j                  › d|› �}t        |«      gS t        |t        «      rh|j                  «       rX|j                  «       j                  › d|› �}t        |«      g}|j                  | j                  |j                  |«      «       |S t        |t         «      r6g }|j"                  D ]#  }|j                  | j                  ||«      «       Œ% |S t        |t$        «      r©| j                  |j&                  |«      }t        |j&                  t        «      rq|j&                  j                  j(                  �Q|j+                  t        |j&                  j                  j(                  j                  j                  › d|› �«      «       |S g S )z<Return all triggers associated with the attribute of a type.r�   )rZ   rm   rT   r×   rM   rY  rD   r‘   r}   r;   rC   rß   rà   Úextendrù   rZ  rX   r�   rR   rÿ   r[  Úappend)ry   rë   r–   ÚmemberÚtriggersr‰   rÿ   s          rg   rù   z$DependencyVisitor.attribute_triggers�  s—  € ä˜cÓ"ˆÜ�cœ;Ô'Ü! #§/¡/Ó2ˆCÜ�cœ9Ô%Ø×&Ñ&ˆCÜ�cœ8Ô$ØŸ™×)Ñ)Ð*¨!¨D¨6Ð2ˆFÜ  Ó(Ð)Ð)Ü˜œ\Ô*¨s¯©Ô/@ØŸ™Ó)×2Ñ2Ð3°1°T°FÐ;ˆFÜ$ VÓ,Ð-ˆHØ�O‰O˜D×3Ñ3°C·L±LÀ$ÓGÔHØˆOÜ˜œYÔ'ØˆGØŸ	™	ò D�Ø—‘˜t×6Ñ6°t¸TÓBÕCðDàˆNÜ˜œXÔ&Ø×.Ñ.¨s¯x©x¸Ó>ˆHÜ˜#Ÿ(™(¤HÔ-°#·(±(·-±-×2NÑ2NÐ2ZØ—‘Ü  C§H¡H§M¡M×$@Ñ$@×$EÑ$E×$NÑ$NÐ#OÈqÐQUÐPVÐ!WÓXôð ˆOàˆIri   c                ód   — | j                   j                  |«      }|�| j                  ||«       y y r|   ©rc   rÞ   r  )ry   r  r–   rë   s       rg   rä   z3DependencyVisitor.add_attribute_dependency_for_expr®  s0   € Ø�m‰m×Ñ Ó"ˆØˆ?Ø×)Ñ)¨#¨tÕ4ð ri   c                ód   — | j                   j                  |«      }|r| j                  |d«       y y )NrÔ   rw  )ry   r¼   rë   s      rg   r_  z%DependencyVisitor.add_iter_dependency³  s.   € Ø�m‰m×Ñ Ó%ˆÙØ×)Ñ)¨#¨zÕ:ð ri   c                óN   — | j                   d uxr | j                   j                  S r|   )re   Úlogical_deps)ry   s    rg   r•   z"DependencyVisitor.use_logical_deps¸  s    € Ø�|‰| 4Ð'ÒE¨D¯L©L×,EÑ,EÐEri   c                ó6   — t        || j                  «       «      S r|   )r’   r•   ©ry   rë   s     rg   r’   z#DependencyVisitor.get_type_triggers»  s   € Ü   d×&;Ñ&;Ó&=Ó>Ð>ri   r|   )
rc   údict[Expression, Type]rd   útuple[int, int]r_   zdefaultdict[str, set[str]]re   zOptions | NoneÚreturnÚNone)r‡   r   r  r€  )r‡   r   r  r€  )r‡   r   r  r€  )r‡   r   r  r€  )r‡   r"   r  r€  )ro   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  Úbool)rí   r'   r  rN   )r‡   r$   r  r€  )r‡   r   r  r€  )r‡   r3   r  r€  )r‡   r   r  r€  )r‡   r'   r  r€  )r‡   r!   r  r€  )r  r   r  r€  )r  r   rë   r?   r  ú
str | 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  r1   r  r€  )r  r%   r  r€  )r  r   r  r€  )r  ÚstrrL  r   rM  r   r  r€  )r  r   r	  rƒ  r  r€  )rë   rK   r	  rƒ  r  r€  )r  r   r  r€  )r  r   r  r€  )r  r(   r  r€  )r  r4   r  r€  )r  r   r  r€  )rb   rƒ  r  r€  )rˆ   rƒ  rb   r‚  r  r€  )rë   rN   rb   r‚  r  r€  )rë   rN   r–   rƒ  r  r€  )rë   rN   r–   rƒ  r  ú	list[str])r  r   r–   rƒ  r  r€  )r¼   r   r  r€  )r  r�  ©rë   rN   r  r„  )7Ú__name__Ú
__module__Ú__qualname__rz   r†   r—   r£   rª   r¯   r©   rÄ   rË   rÍ   rÐ   rá   râ   r÷   rö   r  r  r  r"  r$  r&  r(  r)  r3  rÙ   r6  r<  r?  rA  rC  rF  rH  rJ  rO  rK  rõ   rW  r]  rc  re  rg  rj  r~   r“   rµ   r  rù   rä   r_  r•   r’   Ú__classcell__)rŠ   s   @rg   r^   r^   Ý   sK  ø„ ð #'ðà(ðð (ðð /ð	ð
  ðð 
óõ6'õ/õ0#õ0)ó/ó
TVólOó	Fó>õ#õT\ól$-óL6óõ*Mõ5õ2
,õOóGó	(õ&<óPõ4õ	Cõ#õ"+õ+õ+õ,õ
Cõ<õ6õ4ó	KóFó
cõ&*õ
*õ
)õ)õDó9ô8ô"1ó(óó<5ó
;ó
F÷?ri   r^   Nc                ó8   — | j                  t        ||«      «      S )z=Return all triggers that correspond to a type becoming stale.)r`   ÚTypeTriggersVisitor)rë   r•   Úseen_aliasess      rg   r’   r’   ¿  s   € ð �:‰:Ô)Ð*:¸LÓIÓJÐJri   c                  óÒ   — e Zd Z	 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d0d„Zy)1r‹  Nc                óF   — g | _         |xs
 t        «       | _        || _        y r|   )Údepsrƒ   rŒ  r•   )ry   r•   rŒ  s      rg   rz   zTypeTriggersVisitor.__init__Ç  s"   € ð  "ˆŒ	Ø0<Ò0EÄÃˆÔØ 0ˆÕri   c                óD   — t        || j                  | j                  «      S r|   )r’   r•   rŒ  r|  s     rg   r’   z%TypeTriggersVisitor.get_type_triggersÎ  s   € Ü   d×&;Ñ&;¸T×=NÑ=NÓOÐOri   c                ó¸  — t        |j                  j                  «      }|g}|j                  D ]"  }|j	                  | j                  |«      «       Œ$ |j                  r*|j	                  | j                  |j                  «      «       |j                  rD|j                  j                  r.|j                  t        |j                  j                  «      «       |S r|   )r;   r‘   r}   r9  rr  r’   Úlast_known_valueÚextra_attrsÚmod_namers  r<   ©ry   rë   rˆ   ru  r:  s        rg   Úvisit_instancez"TypeTriggersVisitor.visit_instanceÑ  s¡   € Ü˜sŸx™x×0Ñ0Ó1ˆØ�9ˆØ—8‘8ò 	9ˆCØ�O‰O˜D×2Ñ2°3Ó7Õ8ð	9à×ÒØ�O‰O˜D×2Ñ2°3×3GÑ3GÓHÔIØ�?Š?˜sŸ™×7Ò7à�O‰OÔ1°#·/±/×2JÑ2JÓKÔLØˆri   c                ó†  — || j                   v rg S | j                   j                  |«       |j                  €J ‚t        |j                  j                  «      }|g}|j
                  D ]"  }|j                  | j                  |«      «       Œ$ |j                  | j                  |j                  j                  «      «       |S r|   )	rŒ  rn  rl  r;   r}   r9  rr  r’   rb   r•  s        rg   Úvisit_type_alias_typez)TypeTriggersVisitor.visit_type_alias_typeÝ  s¤   € Ø�$×#Ñ#Ñ#ØˆIØ×Ñ×Ñ˜cÔ"Ø�y‰yÐ$Ð$Ð$Ü˜sŸy™y×1Ñ1Ó2ˆØ�9ˆØ—8‘8ò 	9ˆCØ�O‰O˜D×2Ñ2°3Ó7Õ8ð	9à�‰˜×.Ñ.¨s¯y©y×/?Ñ/?Ó@ÔAØˆri   c                óJ   — |j                   �t        |j                   «      gS g S r|   )r/  r;   r|  s     rg   Ú	visit_anyzTypeTriggersVisitor.visit_anyé  s'   € Ø×"Ñ"Ð.Ü  ×!8Ñ!8Ó9Ð:Ð:Øˆ	ri   c                ó   — g S r|   © r|  s     rg   Úvisit_none_typez#TypeTriggersVisitor.visit_none_typeî  ó   € Øˆ	ri   c                ó  — g }|j                   D ]"  }|j                  | j                  |«      «       Œ$ |j                  | j                  |j                  «      «       |j                  �*|j                  | j                  |j                  «      «       |j
                  �*|j                  | j                  |j
                  «      «       |j                  �*|j                  | j                  |j                  «      «       |S r|   )Ú	arg_typesrr  r’   Úret_typeÚ
type_guardÚtype_isÚinstance_type©ry   rë   ru  r:  s       rg   Úvisit_callable_typez'TypeTriggersVisitor.visit_callable_typeñ  sÆ   € ØˆØ—=‘=ò 	9ˆCØ�O‰O˜D×2Ñ2°3Ó7Õ8ð	9à�‰˜×.Ñ.¨s¯|©|Ó<Ô=Ø�>‰>Ð%Ø�O‰O˜D×2Ñ2°3·>±>ÓBÔCØ�;‰;Ð"Ø�O‰O˜D×2Ñ2°3·;±;Ó?Ô@Ø×ÑÐ(Ø�O‰O˜D×2Ñ2°3×3DÑ3DÓEÔFð ˆri   c                ól   — g }|j                   D ]"  }|j                  | j                  |«      «       Œ$ |S r|   ©r�   rr  r’   ©ry   rë   ru  rÿ   s       rg   Úvisit_overloadedz$TypeTriggersVisitor.visit_overloaded   ó6   € ØˆØ—I‘Iò 	:ˆDØ�O‰O˜D×2Ñ2°4Ó8Õ9ð	:àˆri   c                ó   — J d«       ‚)Nz"Should not see an erased type hererœ  )ry   Úts     rg   Úvisit_erased_typez%TypeTriggersVisitor.visit_erased_type  s   € à:Ð:Ó:ˆuri   c                ó   — g S r|   rœ  r|  s     rg   Úvisit_deleted_typez&TypeTriggersVisitor.visit_deleted_type
  rž  ri   c                ó   — J d«       ‚)Nz"Should not see a partial type hererœ  r|  s     rg   Úvisit_partial_typez&TypeTriggersVisitor.visit_partial_type  s   € Ø:Ð:Ó:ˆuri   c                óÀ   — g }|j                   D ]"  }|j                  | j                  |«      «       Œ$ |j                  | j                  |j                  «      «       |S r|   )r�   rr  r’   rY  r©  s       rg   Úvisit_tuple_typez$TypeTriggersVisitor.visit_tuple_type  sS   € ØˆØ—I‘Iò 	:ˆDØ�O‰O˜D×2Ñ2°4Ó8Õ9ð	:à�‰˜×.Ñ.¨s×/CÑ/CÓDÔEØˆri   c                ó  — | j                  |j                  «      }| j                  s]|j                  «       }|D ]H  }|j	                  |j                  d«      dz   «       |j	                  |j                  d«      dz   «       ŒJ |S )Nú>z
.__init__>z	.__new__>)r’   rÿ   r•   Úcopyrs  Úrstrip)ry   rë   ru  Úold_triggersrˆ   s        rg   Úvisit_type_typez#TypeTriggersVisitor.visit_type_type  sv   € Ø×)Ñ)¨#¯(©(Ó3ˆØ×$Ò$Ø#Ÿ=™=›?ˆLØ'ò C�Ø—‘ §¡¨sÓ 3°lÑ BÔCØ—‘ §¡¨sÓ 3°kÑ AÕBðCð ˆri   c                ót  — g }|j                   r$|j                  t        |j                   «      «       |j                  | j	                  |j
                  «      «       |j                  | j	                  |j                  «      «       |j                  D ]"  }|j                  | j	                  |«      «       Œ$ |S r|   )r}   rs  r;   rr  r’   r×   ÚdefaultrØ   )ry   rë   ru  rè   s       rg   Úvisit_type_varz"TypeTriggersVisitor.visit_type_var   sˆ   € ØˆØ�<Š<Ø�O‰OœL¨¯©Ó6Ô7Ø�‰˜×.Ñ.¨s¯©Ó?Ô@Ø�‰˜×.Ñ.¨s¯{©{Ó;Ô<Ø—:‘:ò 	9ˆCØ�O‰O˜D×2Ñ2°3Ó7Õ8ð	9àˆri   c                óf  — g }|j                   r$|j                  t        |j                   «      «       |j                  | j	                  |j
                  «      «       |j                  | j	                  |j                  «      «       |j                  | j	                  |j                  «      «       |S r|   )r}   rs  r;   rr  r’   r×   r¼  ré   ©ry   rë   ru  s      rg   Úvisit_param_specz$TypeTriggersVisitor.visit_param_spec*  sy   € ØˆØ�<Š<Ø�O‰OœL¨¯©Ó6Ô7Ø�‰˜×.Ñ.¨s¯©Ó?Ô@Ø�‰˜×.Ñ.¨s¯{©{Ó;Ô<Ø�‰˜×.Ñ.¨s¯z©zÓ:Ô;Øˆri   c                ó  — g }|j                   r$|j                  t        |j                   «      «       |j                  | j	                  |j
                  «      «       |j                  | j	                  |j                  «      «       |S r|   )r}   rs  r;   rr  r’   r×   r¼  r¿  s      rg   Úvisit_type_var_tuplez(TypeTriggersVisitor.visit_type_var_tuple3  s^   € ØˆØ�<Š<Ø�O‰OœL¨¯©Ó6Ô7Ø�‰˜×.Ñ.¨s¯©Ó?Ô@Ø�‰˜×.Ñ.¨s¯{©{Ó;Ô<Øˆri   c                ó8   — |j                   j                  | «      S r|   )r‘   r`   r|  s     rg   Úvisit_unpack_typez%TypeTriggersVisitor.visit_unpack_type;  s   € Ø�x‰x�‰˜tÓ$Ð$ri   c                ól   — g }|j                   D ]"  }|j                  | j                  |«      «       Œ$ |S r|   )r   rr  r’   r¥  s       rg   Úvisit_parametersz$TypeTriggersVisitor.visit_parameters>  s6   € ØˆØ—=‘=ò 	9ˆCØ�O‰O˜D×2Ñ2°3Ó7Õ8ð	9àˆri   c                óÜ   — g }|j                   j                  «       D ]"  }|j                  | j                  |«      «       Œ$ |j                  | j                  |j                  «      «       |S r|   )r�   rØ   rr  r’   rZ  r©  s       rg   Úvisit_typeddict_typez(TypeTriggersVisitor.visit_typeddict_typeD  sZ   € ØˆØ—I‘I×$Ñ$Ó&ò 	:ˆDØ�O‰O˜D×2Ñ2°4Ó8Õ9ð	:à�‰˜×.Ñ.¨s¯|©|Ó<Ô=Øˆri   c                óÌ   — | j                  |j                  «      }t        |j                  t        «      r.|j                  t        |j                  j                  «      «       |S r|   )r’   rZ  rm   ÚvaluerL   rs  r;   r}   r¿  s      rg   Úvisit_literal_typez&TypeTriggersVisitor.visit_literal_typeK  sD   € Ø×)Ñ)¨#¯,©,Ó7ˆÜ�c—i‘i¤Ô/Ø�O‰OœL¨¯©×);Ñ);Ó<Ô=Øˆri   c                ó   — g S r|   rœ  r|  s     rg   Úvisit_unbound_typez&TypeTriggersVisitor.visit_unbound_typeQ  rž  ri   c                ó   — g S r|   rœ  r|  s     rg   Úvisit_uninhabited_typez*TypeTriggersVisitor.visit_uninhabited_typeT  rž  ri   c                ól   — g }|j                   D ]"  }|j                  | j                  |«      «       Œ$ |S r|   r¨  r©  s       rg   Úvisit_union_typez$TypeTriggersVisitor.visit_union_typeW  r«  ri   r|   )r•   r�  rŒ  úset[TypeAliasType] | Noner  r€  r…  )rë   rD   r  r„  )rë   rO   r  r„  )rë   r?   r  r„  )rë   rF   r  r„  )rë   r@   r  r„  )rë   rG   r  r„  )r­  rB   r  r„  )rë   rA   r  r„  )rë   rJ   r  r„  )rë   rM   r  r„  )rë   rR   r  r„  )rë   rT   r  r„  )rë   rI   r  r„  )rë   rS   r  r„  )rë   rY   r  r„  )rë   rH   r  r„  )rë   rP   r  r„  )rë   rE   r  r„  )rë   rV   r  r„  )rë   rW   r  r„  )rë   rX   r  r„  )r†  r‡  rˆ  rz   r’   r–  r˜  rš  r�  r¦  rª  r®  r°  r²  r´  rº  r½  rÀ  rÂ  rÄ  rÆ  rÈ  rË  rÍ  rÏ  rÑ  rœ  ri   rg   r‹  r‹  Æ  s‘   „ àPTð1Ø $ð1Ø4Mð1à	ó1óPó
ó
óó
óóó;óó;óóóóóó%óóóóóôri   r‹  c                ó†   — | j                  «       D ].  \  }}|j                  |t        «       «      j                  |«       Œ0 y r|   )r�   r‚   rƒ   r„   )Únew_depsr�  rˆ   r‰   s       rg   Úmerge_dependenciesrÕ  ^  s8   € Ø$ŸN™NÓ,ò 8Ñˆ�Ø�‰˜¤£Ó'×.Ñ.¨wÕ7ñ8ri   c                óf   — | j                   dd  D �cg c]  }|j                  dk7  sŒ|‘Œ c}S c c}w )NrÓ   zbuiltins.object)rº   r}   )ro   rš   s     rg   r”   r”   c  s,   € Ø!ŸX™X a b˜\ÖP�T¨T¯]©]Ð>OÓ-OŠDÒPÐPùÒPs   ’.§.c                ó@   — t        d„ | j                  dd  D «       «      S )Nc              3  ó8   K  — | ]  }|j                   d v–— Œ y­w))ÚbuiltinsÚtypingÚenumN)Úmodule_name)Ú.0rš   s     rg   ú	<genexpr>z!has_user_bases.<locals>.<genexpr>h  s   è ø€ Ò_È$ˆt×ÑÐ'EÔEÑ_ùs   ‚rÓ   )Úanyrº   )ro   s    rg   r¾   r¾   g  s#   € ÜÑ_ÐRV×RZÑRZÐ[\Ð[]ÐR^Ô_Ó_Ð_ri   c                óâ  — i }| j                  «       D ]x  \  }}|dv sd|j                  v rŒ||j                  k(  sJ ‚t        ||||«      }|j                  «       D ].  \  }}	|j	                  |t        «       «      j                  |	«       Œ0 Œz t        j                  |«       t        |j                  «       d„ ¬«      D ].  \  }}	t        |«       t        |	«      D ]  }
t        d|
› �«       Œ Œ0 y)zKGenerate dependencies for all interesting modules and print them to stdout.)rÙ  rÚ  z
/typeshed/c                ó   — | d   S )Nr   rœ  )Úxs    rg   ú<lambda>z'dump_all_dependencies.<locals>.<lambda>~  s
   € À1ÀQÁ4€ ri   )Úkeyz    N)r�   Úpathr}   rh   r‚   rƒ   r„   r[   Úadd_all_protocol_depsÚsortedÚprint)Úmodulesrc   rd   re   Úall_depsrÂ   r¼   r�  rˆ   r‰   rb   s              rg   Údump_all_dependenciesrë  k  sò   € ð %'€HØ—M‘M“Oò @‰ˆˆDð Ð'Ñ'¨<¸4¿9¹9Ñ+DØØ�T—]‘]Ò"Ð"Ð"Ü  h°ÀÓHˆØ $§
¡
£ò 	@ÑˆG�WØ×Ñ ¬«Ó/×6Ñ6°wÕ?ñ	@ð@ô ×$Ñ$ XÔ.ä" 8§>¡>Ó#3¹ÔHò #Ñˆ�ÜˆgŒÜ˜W“oò 	#ˆFÜ�D˜˜�/Õ"ñ	#ñ#ri   )
rb   r   rc   r}  rd   r~  re   r9   r  údict[str, set[str]])rq   rƒ  rr   r   rb   r#   rc   r}  rd   r~  r  rì  r|   )rë   rN   r•   r�  rŒ  rÒ  r  r„  )rÔ  rì  r�  rì  r  r€  )ro   r/   r  zlist[TypeInfo])ro   r/   r  r�  )
ré  zdict[str, MypyFile]rc   r}  rd   r~  re   r9   r  r€  )rÚ__doc__Ú
__future__r   Úcollectionsr   Ú
mypy.nodesr   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/   r0   r1   r2   r3   r4   Úmypy.operatorsr5   r6   r7   r8   Úmypy.optionsr9   Ú
mypy.scoper:   Úmypy.server.triggerr;   r<   Úmypy.traverserr=   Úmypy.typeopsr>   Ú
mypy.typesr?   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   Úmypy.typestater[   Ú	mypy.utilr\   rh   rt   r^   r’   Úlistrƒ  r‹  rÕ  r”   r¾   rë  rœ  ri   rg   ú<module>rû     s®  ðñOõb #å #÷1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1÷ 1ó 1÷dó õ !Ý ß CÝ +Ý "÷÷ ÷ ÷ ÷ ÷ ÷ ó õ< &Ý -ð	Øð	à$ð	ð $ð	ð ð		ð
 ó	ðØðàðð ðð %ð	ð
 $ðð óô8_?Ð(ô _?ðF RVðKØ	ðKØ!%ðKØ5NðKàóKôU˜+ d¨3¡iÑ0ô Uóp8ó
Qó`ð#Ø ð#à$ð#ð $ð#ð ð	#ð
 
ô#ri   