Ë
    pPêjT  ã                  óà  — U d Z ddl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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 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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 dd
l8m9Z9 e:e;z  e<z  e=z  Z>de?d<   e@ee>df   df   ZAde?d<   e@eBdf   ZCde?d<   	 	 	 	 	 	 	 	 dd„ZDdd„ZEdd„ZFdd„ZGd d„ZHd!d„ZIdd„ZJd"d„ZK G d„ de3eA   «      ZLd#d„ZMy)$ab	  Utilities for comparing two versions of a module symbol table.

The goal is to find which AST nodes have externally visible changes, so
that we can fire triggers and re-process other parts of the program
that are stale because of the changes.

Only look at detail at definitions at the current module -- don't
recurse into other modules.

A summary of the module contents:

* snapshot_symbol_table(...) creates an opaque snapshot description of a
  module/class symbol table (recursing into nested class symbol tables).

* compare_symbol_table_snapshots(...) compares two snapshots for the same
  module id and returns fully qualified names of differences (which act as
  triggers).

To compare two versions of a module symbol table, take snapshots of both
versions and compare the snapshots. The use of snapshots makes it easy to
compare two versions of the *same* symbol table that is being mutated.

Summary of how this works for certain kinds of differences:

* If a symbol table node is deleted or added (only present in old/new version
  of the symbol table), it is considered different, of course.

* If a symbol table node refers to a different sort of thing in the new version,
  it is considered different (for example, if a class is replaced with a
  function).

* If the signature of a function has changed, it is considered different.

* If the type of a variable changes, it is considered different.

* If the MRO of a class changes, or a non-generic class is turned into a
  generic class, the class is considered different (there are other such "big"
  differences that cause a class to be considered changed). However, just changes
  to attributes or methods don't generally constitute a difference at the
  class level -- these are handled at attribute level (say, 'mod.Cls.method'
  is different rather than 'mod.Cls' being different).

* If an imported name targets a different name (say, 'from x import y' is
  replaced with 'from z import y'), the name in the module is considered
  different. If the target of an import continues to have the same name,
  but it's specifics change, this doesn't mean that the imported name is
  treated as changed. Say, there is 'from x import y' in 'm', and the
  type of 'x.y' has changed. This doesn't mean that that 'm.y' is considered
  changed. Instead, processing the difference in 'm' will be handled through
  fine-grained dependencies.
é    )Úannotations)ÚSequence)Ú	TypeAliasÚUnion)Úexpand_type)ÚSYMBOL_FUNCBASE_TYPESÚUNBOUND_IMPORTEDÚ	DecoratorÚFuncDefÚFuncItemÚMypyFileÚOverloadedFuncDefÚParamSpecExprÚ
SymbolNodeÚSymbolTabler   ÚTypeInfoÚTypeVarExprÚTypeVarTupleExprÚVar)Úfind_dataclass_transform_spec)Ústate)ÚAnyTypeÚCallableTypeÚDeletedTypeÚ
ErasedTypeÚInstanceÚLiteralTypeÚNoneTypeÚ
OverloadedÚ
ParametersÚParamSpecTypeÚPartialTypeÚ	TupleTypeÚTypeÚTypeAliasTypeÚTypedDictTypeÚTypeTypeÚ	TypeVarIdÚTypeVarLikeTypeÚTypeVarTupleTypeÚTypeVarTypeÚTypeVisitorÚUnboundTypeÚUninhabitedTypeÚ	UnionTypeÚ
UnpackType)Ú
get_prefixÚ
_TypeAliasÚ	PrimitiveÚSnapshotItem.ÚSymbolSnapshotc                óF  — |D �ch c]	  }| › d|› �’Œ }}|D �ch c]	  }| › d|› �’Œ }}||z  }t        |j                  «       «      t        |j                  «       «      z  D ]³  }||   }||   }|d   }	|d   }
| › d|› �}|	|
k7  r|j                  |«       Œ5|	dk(  r]|dd |dd k7  r|j                  |«       t        |d   t        «      sJ ‚t        |d   t        «      sJ ‚|t        ||d   |d   «      z  }Œ—||   ||   k7  sŒ£|j                  |«       Œµ |S c c}w c c}w )a—  Return names that are different in two snapshots of a symbol table.

    Only shallow (intra-module) differences are considered. References to things defined
    outside the module are compared based on the name of the target only.

    Recurse into class symbol tables (if the class is defined in the target module).

    Return a set of fully-qualified names (e.g., 'mod.func' or 'mod.Class.method').
    ú.r   r   Néÿÿÿÿ)ÚsetÚkeysÚaddÚ
isinstanceÚdictÚcompare_symbol_table_snapshots)Úname_prefixÚ	snapshot1Ú	snapshot2ÚnameÚnames1Únames2ÚtriggersÚitem1Úitem2Úkind1Úkind2Ú	item_names               úX/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/server/astdiff.pyr>   r>   {   sX  € ð 3<Ö<¨$��˜Q˜t˜fÒ%Ð<€FÐ<Ø2;Ö<¨$��˜Q˜t˜fÒ%Ð<€FÐ<Ø˜‰€Hô �I—N‘NÓ$Ó%¬¨I¯N©NÓ,<Ó(=Ñ=ò (ˆØ˜$‘ˆØ˜$‘ˆØ�a‘ˆØ�a‘ˆØ"�m 1 T FÐ+ˆ	Ø�EŠ>à�L‰L˜Õ#Ø�jÒ Ø�S�bˆz˜U 3 B˜ZÒ'à—‘˜YÔ'ä˜e B™i¬Ô.Ð.Ð.Ü˜e B™i¬Ô.Ð.Ð.ØÔ6°yÀ%ÈÁ)ÈUÐSUÉYÓWÑW‰Hð ˜‰ )¨D¡/Ó1Ø—‘˜YÕ'ð)(ð, €Oùò7 =ùÚ<s
   …D™Dc           	     óH  — i }|j                  «       D �]  \  }}|j                  }|r|j                  nd}||j                  |j                  f}t        |t        «      rd|f||<   ŒTt        |t        «      r\d|j                  |j                  D �cg c]  }t        |«      ‘Œ c}t        |j                  «      t        |j                  «      f||<   ŒÀt        |t        «      rFdt        |j                  «      |j                   |j"                  t%        |j&                  «      f||<   �Œt        |t(        «      r;d|j                  t        |j                  «      t        |j                  «      f||<   �Œat        |t*        «      r;d|j                  t        |j                  «      t        |j                  «      f||<   �Œ¬|j                  t,        k7  sJ ‚|r5t/        |j                  «      | k7  rd|t1        |«      j2                  f||<   �Œøt5        ||«      ||<   �Œ	 |S c c}w )am  Create a snapshot description that represents the state of a symbol table.

    The snapshot has a representation based on nested tuples and dicts
    that makes it easy and fast to find differences.

    Only "shallow" state is included in the snapshot -- references to
    things defined in other modules are represented just by the names of
    the targets.
    NÚ	ModulerefÚTypeVarr   Ú	ParamSpecÚTypeVarTupleÚCrossRef)ÚitemsÚnodeÚfullnameÚkindÚmodule_publicr<   r   r   ÚvarianceÚvaluesÚsnapshot_typeÚupper_boundÚdefaultr   Úsnapshot_typesÚalias_tvarsÚ
normalizedÚno_argsÚsnapshot_optional_typeÚtargetr   r   r	   r1   ÚtypeÚ__name__Úsnapshot_definition)	r?   ÚtableÚresultrB   ÚsymbolrS   rT   ÚcommonÚvalues	            rK   Úsnapshot_symbol_tablerj   ¦   s×  € ð )+€FØŸ™›ó 1A‰ˆˆfØ�{‰{ˆá$(�4—=’=¨dˆØ˜FŸK™K¨×)=Ñ)=Ð>ˆÜ�dœHÔ%ð
 (¨Ð0ˆF�4ŠLÜ˜œkÔ*àØ—‘Ø37·;±;Ö?¨%”˜uÕ%Ò?Ü˜d×.Ñ.Ó/Ü˜dŸl™lÓ+ðˆF�4ŠLô ˜œiÔ(àÜ˜t×/Ñ/Ó0Ø—‘Ø—‘Ü& t§{¡{Ó3ðˆF�4‹Lô ˜œmÔ,àØ—‘Ü˜d×.Ñ.Ó/Ü˜dŸl™lÓ+ð	ˆF�4‹Lô ˜Ô.Ô/àØ—‘Ü˜d×.Ñ.Ó/Ü˜dŸl™lÓ+ð	ˆF�4‹Lð —;‘;Ô"2Ò2Ð2Ð2Ùœ
 4§=¡=Ó1°[Ò@ð !+¨F´D¸³J×4GÑ4GÐH��t“ä2°4¸Ó@��t“ðc1Aðd €MùòG @s   ÂH
c                ó‚  — t        | t        «      �rÝ| j                  rt        | j                  «      }nt	        | «      }d}t        | t
        «      r| }nH| j                  r<t        | j                  t        «      r| j                  j                  n| j                  }d}t        | t        «      r`| j                  rT| j                  d   }t        |t        «      r5|j                  j                  rt        |j                  j                  «      }|r|j                  nd}t!        | «      }d}t        | t
        «      r| j"                  }n]t        | t        «      rM| j"                  g| j                  D �	cg c])  }	t        |	t        «      sŒ|	j                  j"                  ‘Œ+ c}	z   }d|| j                  | j$                  | j&                  | j(                  |||�|j+                  «       ||fS d||fS t        | t,        «      r#d|t        | j                  «      | j$                  fS t        | t        «      rAd| j.                  t        | j                  j                  «      t1        | j                  |«      fS t        | t2        «      �r™| j4                  }|€t!        | «      }| j6                  | j8                  | j:                  | j<                  | j>                  | j@                  | jB                  t        | jD                  «      t        | jF                  «      t        | jH                  «      | jJ                  D �
cg c]  }
|
jL                  ‘Œ c}
tO        d„ | jP                  jR                  D «       «      | jT                  D �
cg c]  }
t        |
«      ‘Œ c}
| jV                  D �cg c]  }t        |«      ‘Œ c}|�|j+                  «       nd| j"                  f}| jL                  }tY        || jZ                  «      }dtO        t]        | j^                  «      «      f|d	<   d
|||fS J t        | «      «       ‚c c}	w c c}
w c c}
w c c}w )z£Create a snapshot description of a symbol table node.

    The representation is nested tuples and dicts. Only externally
    visible attributes are included.
    Nr   FÚFuncr   r
   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­w©N©rY   )Ú.0Útdefs     rK   ú	<genexpr>z&snapshot_definition.<locals>.<genexpr>=  s   è ø€ ÒF¨$”- ×%ÑFùó   ‚ÚAbstractz
(abstract)r   )0r<   r   rb   rY   Úsnapshot_untyped_signaturer   Úimplr
   Úfuncr   rR   Úis_propertyr`   ÚvarÚsetter_typeÚis_trivial_bodyr   Ú
deprecatedÚis_finalÚis_classÚ	is_staticÚ	serializer   Úis_overloadrd   r   Údataclass_transform_specÚis_abstractÚis_enumÚis_protocolÚfallback_to_anyÚmeta_fallback_to_anyÚis_named_tupleÚ
is_newtypeÚmetaclass_typeÚ
tuple_typeÚtypeddict_typeÚmrorT   ÚtupleÚdefnÚ	type_varsÚbasesÚ_promoterj   ÚnamesÚsortedÚabstract_attributes)rS   rh   Ú	signaturerv   rz   Ú
first_itemr{   r‚   r|   ÚiÚbaseÚpÚattrsÚprefixÚsymbol_tables                  rK   rd   rd   æ   sx  € ô �$Ô-Õ.à�9Š9Ü,9¸$¿)¹)Ó,D‰Iä2°4Ó8ˆIØ#ˆÜ�dœGÔ$Ø‰DØ�YŠYÜ%/°·	±	¼9Ô%E�4—9‘9—>’>È4Ï9É9ˆDØˆÜ�dÔ-Ô.°4·:²:ØŸ™ A™ˆJÜ˜*¤iÔ0°Z·_±_×5PÒ5PÜ4°Z·^±^×5OÑ5OÓP�Ù26˜$×.Ò.¸EˆÜ#@ÀÓ#FÐ à48ˆ
Ü�dœGÔ$ØŸ™‰JÜ˜Ô/Ô0ØŸ/™/Ð*Ø+/¯:©:ö.Ø&'¼ÀAÄyÕ9Q�—‘×!Ó!ò.ñ ˆJð
 ØØ×ÑØ�M‰MØ�M‰MØ�N‰NØØØ4LÐ4XÐ$×.Ñ.Ó0ØØð
ð 	
ð _cØØð
ð 	
ô 
�Dœ#Ô	Ø�vÔ5°d·i±iÓ@À$Ç-Á-ÐPÐPÜ	�Dœ)Ô	$ð Ø×ÑÜ" 4§8¡8§=¡=Ó1Ü §	¡	¨6Ó2ð	
ð 	
ô 
�Dœ(Õ	#Ø#'×#@Ñ#@Ð Ø#Ð+Ü'DÀTÓ'JÐ$ð ×ÑØ�L‰LØ×ÑØ× Ñ Ø×%Ñ%Ø×ÑØ�O‰Oä" 4×#6Ñ#6Ó7Ü" 4§?¡?Ó3Ü" 4×#6Ñ#6Ó7Ø'+§x¡xÖ0˜tˆT�]‹]Ò0ô ÑF°$·)±)×2EÑ2EÔFÓFØ-1¯Z©ZÖ8 TŒ]˜4Õ Ò8Ø'+§}¡}Ö5 !Œ]˜1ÕÒ5Ø4LÐ4XÐ$×.Ñ.Ô0Ð^bØ�O‰Oð3
ˆð6 —‘ˆÜ,¨V°T·Z±ZÓ@ˆà&0´%¼¸t×?WÑ?WÓ8XÓ2YÐ%Zˆ�\Ñ"Ø˜F E¨<Ð8Ð8ð 	!”d˜4“jÓ ˆuùòO.ùòb 1ùò 9ùÚ5s   Å2P-ÆP-Ì4P2Í<P7ÎP<c                ó4   — | j                  t        «       «      S )z?Create a snapshot representation of a type using nested tuples.)ÚacceptÚSnapshotTypeVisitor©Útyps    rK   rY   rY   M  s   € à�:‰:Ô)Ó+Ó,Ð,ó    c                ó   — | rt        | «      S y)N)z	<not set>ro   r¡   s    rK   r`   r`   R  s   € Ù
Ü˜SÓ!Ð!àr£   c                ó&   — t        d„ | D «       «      S )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrn   ro   )rp   Úitems     rK   rr   z!snapshot_types.<locals>.<genexpr>Z  s   è ø€ Ò7¨”˜t×$Ñ7ùrs   )rŽ   )Útypess    rK   r\   r\   Y  s   € ÜÑ7°Ô7Ó7Ð7r£   c                ó.   — t        | «      j                  fS rn   )rb   rc   r¡   s    rK   Úsnapshot_simple_typerª   ]  s   € Ü�‹I×ÑÐ Ð r£   c                ó   — | €y| S )Nz<None>© )Úss    rK   Úencode_optional_strr®   a  s   € Ø€yØàˆr£   c                  óÀ   — e Zd Z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y)/r    a<  Creates a read-only, self-contained snapshot of a type object.

    Properties of a snapshot:

    - Contains (nested) tuples and other immutable primitive objects only.
    - References to AST nodes are replaced with full names of targets.
    - Has no references to mutable or non-primitive objects.
    - Two snapshots represent the same object if and only if they are
      equal.
    - Results must be sortable. It's important that tuples have
      consistent types and can't arbitrarily mix str and None values,
      for example, since they can't be compared.
    c                ór   — d|j                   |j                  |j                  t        |j                  «      fS )Nr-   )rB   ÚoptionalÚempty_tuple_indexr\   Úargs©Úselfr¢   s     rK   Úvisit_unbound_typez&SnapshotTypeVisitor.visit_unbound_typew  s2   € àØ�H‰HØ�L‰LØ×!Ñ!Ü˜3Ÿ8™8Ó$ð
ð 	
r£   c                ó   — t        |«      S rn   ©rª   r´   s     rK   Ú	visit_anyzSnapshotTypeVisitor.visit_any€  ó   € Ü# CÓ(Ð(r£   c                ó   — t        |«      S rn   r¸   r´   s     rK   Úvisit_none_typez#SnapshotTypeVisitor.visit_none_typeƒ  rº   r£   c                ó   — t        |«      S rn   r¸   r´   s     rK   Úvisit_uninhabited_typez*SnapshotTypeVisitor.visit_uninhabited_type†  rº   r£   c                ó   — t        |«      S rn   r¸   r´   s     rK   Úvisit_erased_typez%SnapshotTypeVisitor.visit_erased_type‰  rº   r£   c                ó   — t        |«      S rn   r¸   r´   s     rK   Úvisit_deleted_typez&SnapshotTypeVisitor.visit_deleted_typeŒ  rº   r£   c                ó’  ‡ — |j                   r_t        t        ˆ fd„|j                   j                  j	                  «       D «       «      «      t        |j                   j
                  «      f}nd}dt        |j                  j                  «      t        |j                  «      |j                  €d|fS t        |j                  «      |fS )Nc              3  óJ   •K  — | ]  \  }}||j                  ‰«      f–— Œ y ­wrn   )rŸ   )rp   ÚkÚvrµ   s      €rK   rr   z5SnapshotTypeVisitor.visit_instance.<locals>.<genexpr>“  s"   øè ø€ Ò[±T°Q¸˜a §¡¨$£Ô0Ñ[ùs   ƒ #r¬   r   )ÚNone)Úextra_attrsrŽ   r”   r›   rR   Ú	immutabler®   rb   rT   r\   r³   Úlast_known_valuerY   )rµ   r¢   rÈ   s   `  rK   Úvisit_instancez"SnapshotTypeVisitor.visit_instance�  sª   ø€ à�?Š?ä”fÓ[¸S¿_¹_×=RÑ=R×=XÑ=XÓ=ZÔ[Ó[Ó\Ü�c—o‘o×/Ñ/Ó0ð‰Kð
 ˆKàÜ §¡× 1Ñ 1Ó2Ü˜3Ÿ8™8Ó$Ø×-Ñ-Ð5ˆIØð
ð 	
ô <IÈ×I]ÑI]Ó;^Øð
ð 	
r£   c           
     ó  — d|j                   |j                  |j                  j                  |j                  j                  t        |j                  «      t        |j                  «      t        |j                  «      |j                  f	S )NrN   )rB   rT   ÚidÚraw_idÚ
meta_levelr\   rX   rY   rZ   r[   rW   r´   s     rK   Úvisit_type_varz"SnapshotTypeVisitor.visit_type_var   s`   € àØ�H‰HØ�L‰LØ�F‰F�M‰MØ�F‰F×ÑÜ˜3Ÿ:™:Ó&Ü˜#Ÿ/™/Ó*Ü˜#Ÿ+™+Ó&Ø�L‰Lð

ð 
	
r£   c           	     óê   — d|j                   j                  |j                   j                  |j                  t	        |j
                  «      t	        |j                  «      t	        |j                  «      fS )NrO   )rÍ   rÎ   rÏ   ÚflavorrY   rZ   r[   rœ   r´   s     rK   Úvisit_param_specz$SnapshotTypeVisitor.visit_param_spec­  sR   € àØ�F‰F�M‰MØ�F‰F×ÑØ�J‰JÜ˜#Ÿ/™/Ó*Ü˜#Ÿ+™+Ó&Ü˜#Ÿ*™*Ó%ð
ð 	
r£   c                ó¬   — d|j                   j                  |j                   j                  t        |j                  «      t        |j
                  «      fS )Nr*   )rÍ   rÎ   rÏ   rY   rZ   r[   r´   s     rK   Úvisit_type_var_tuplez(SnapshotTypeVisitor.visit_type_var_tuple¸  s?   € àØ�F‰F�M‰MØ�F‰F×ÑÜ˜#Ÿ/™/Ó*Ü˜#Ÿ+™+Ó&ð
ð 	
r£   c                ó0   — dt        |j                  «      fS )Nr0   )rY   rb   r´   s     rK   Úvisit_unpack_typez%SnapshotTypeVisitor.visit_unpack_typeÁ  s   € Øœm¨C¯H©HÓ5Ð6Ð6r£   c                óœ   — dt        |j                  «      t        d„ |j                  D «       «      t        d„ |j                  D «       «      fS )Nr    c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrn   ©r®   ©rp   rB   s     rK   rr   z7SnapshotTypeVisitor.visit_parameters.<locals>.<genexpr>È  ó   è ø€ ÒF°Ô% d×+ÑFùrs   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrn   ©ri   ©rp   rÅ   s     rK   rr   z7SnapshotTypeVisitor.visit_parameters.<locals>.<genexpr>É  ó   è ø€ Ò1˜a�!—'•'Ñ1ùó   ‚)r\   Ú	arg_typesrŽ   Ú	arg_namesÚ	arg_kindsr´   s     rK   Úvisit_parametersz$SnapshotTypeVisitor.visit_parametersÄ  s?   € àÜ˜3Ÿ=™=Ó)ÜÑF¸¿¹ÔFÓFÜÑ1 3§=¡=Ô1Ó1ð	
ð 	
r£   c                óð  — |j                  «       r| j                  |«      }dt        |j                  «      t	        |j
                  «      t        d„ |j                  D «       «      t        d„ |j                  D «       «      |j                  «       |j                  t        |j                  «      |j                  t        |j                  «      t        |j                  «      t        |j                   «      fS )Nr   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrn   rÚ   rÛ   s     rK   rr   z:SnapshotTypeVisitor.visit_callable_type.<locals>.<genexpr>Ó  rÜ   rs   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrn   rÞ   rß   s     rK   rr   z:SnapshotTypeVisitor.visit_callable_type.<locals>.<genexpr>Ô  rà   rá   )Ú
is_genericÚnormalize_callable_variablesr\   râ   rY   Úret_typerŽ   rã   rä   Úis_type_objÚis_ellipsis_argsÚ	variablesÚis_boundr`   Ú
type_guardÚtype_isÚinstance_typer´   s     rK   Úvisit_callable_typez'SnapshotTypeVisitor.visit_callable_typeÌ  s±   € Ø�>‰>ÔØ×3Ñ3°CÓ8ˆCàÜ˜3Ÿ=™=Ó)Ü˜#Ÿ,™,Ó'ÜÑF¸¿¹ÔFÓFÜÑ1 3§=¡=Ô1Ó1Ø�O‰OÓØ× Ñ Ü˜3Ÿ=™=Ó)Ø�L‰LÜ" 3§>¡>Ó2Ü" 3§;¡;Ó/Ü" 3×#4Ñ#4Ó5ð
ð 	
r£   c                ó  — g }i }t        |j                  «      D ]�  \  }}t        d|z
  «      }t        |t        «      r|j                  |¬«      }nGt        |t        «      r|j                  |¬«      }n$t        |t        «      sJ ‚|j                  |¬«      }|j                  |«       |||j                  <   ŒŸ t        j                  d«      5  t        ||«      j                  |¬«      cddd«       S # 1 sw Y   yxY w)zBNormalize all type variable ids to run from -1 to -len(variables).r8   )rÍ   T)rî   N)Ú	enumeraterî   r(   r<   r+   Úcopy_modifiedr*   r!   ÚappendrÍ   r   Ústrict_optional_setr   )rµ   r¢   ÚtvsÚtvmapr˜   rÆ   ÚtidÚtvs           rK   rê   z0SnapshotTypeVisitor.normalize_callable_variablesÞ  sä   € àˆØ')ˆÜ˜cŸm™mÓ,ò 
	‰DˆAˆqÜ˜B ™FÓ#ˆCÜ˜!œ[Ô)Ø&'§o¡o¸ oÓ&=‘Ü˜AÔ/Ô0Ø—_‘_¨�_Ó,‘ä! !¤]Ô3Ð3Ð3Ø—_‘_¨�_Ó,�Ø�J‰J�rŒNØˆE�!—$‘$ŠKð
	ô ×&Ñ& tÓ,ñ 	HÜ˜s EÓ*×8Ñ8À3Ð8ÓG÷	H÷ 	Hò 	Hús   ÃC5Ã5C>c                ó0   — dt        |j                  «      fS )Nr#   ©r\   rR   r´   s     rK   Úvisit_tuple_typez$SnapshotTypeVisitor.visit_tuple_typeð  s   € Øœ^¨C¯I©IÓ6Ð7Ð7r£   c                óð   — t        d„ |j                  j                  «       D «       «      }t        t        |j                  «      «      }t        t        |j                  «      «      }d||||j
                  fS )Nc              3  ó<   K  — | ]  \  }}|t        |«      f–— Œ y ­wrn   ro   )rp   ÚkeyÚ	item_types      rK   rr   z;SnapshotTypeVisitor.visit_typeddict_type.<locals>.<genexpr>ô  s   è ø€ Ò^¹.¸#¸y�sœM¨)Ó4Ô5Ñ^ùs   ‚r&   )rŽ   rR   r”   Úrequired_keysÚreadonly_keysÚ	is_closed)rµ   r¢   rR   ÚrequiredÚreadonlys        rK   Úvisit_typeddict_typez(SnapshotTypeVisitor.visit_typeddict_typeó  s\   € ÜÑ^ÈCÏIÉIÏOÉOÓL]Ô^Ó^ˆÜœ × 1Ñ 1Ó2Ó3ˆÜœ × 1Ñ 1Ó2Ó3ˆØ ¨°(¸C¿M¹MÐJÐJr£   c                óF   — dt        |j                  «      |j                  fS )Nr   )rY   Úfallbackri   r´   s     rK   Úvisit_literal_typez&SnapshotTypeVisitor.visit_literal_typeù  s   € Øœ}¨S¯\©\Ó:¸C¿I¹IÐFÐFr£   c                ó€   — |j                   D �ch c]  }t        |«      ’Œ }}t        t        |«      «      }d|fS c c}w )Nr/   )rR   rY   rŽ   r”   )rµ   r¢   r§   rR   r^   s        rK   Úvisit_union_typez$SnapshotTypeVisitor.visit_union_typeü  s>   € ð 25·±Ö;¨”˜tÕ$Ð;ˆÐ;Üœ6 %›=Ó)ˆ
Ø˜ZÐ(Ð(ùò <s   �;c                ó0   — dt        |j                  «      fS )Nr   rþ   r´   s     rK   Úvisit_overloadedz$SnapshotTypeVisitor.visit_overloaded  s   € Øœn¨S¯Y©YÓ7Ð8Ð8r£   c                ó   — t         ‚rn   )ÚRuntimeErrorr´   s     rK   Úvisit_partial_typez&SnapshotTypeVisitor.visit_partial_type  s
   € ô Ðr£   c                óF   — dt        |j                  «      |j                  fS )Nr'   )rY   r§   Úis_type_formr´   s     rK   Úvisit_type_typez#SnapshotTypeVisitor.visit_type_type  s   € ØœM¨#¯(©(Ó3°S×5EÑ5EÐFÐFr£   c                óv   — |j                   €J ‚d|j                   j                  t        |j                  «      fS )Nr%   )ÚaliasrT   r\   r³   r´   s     rK   Úvisit_type_alias_typez)SnapshotTypeVisitor.visit_type_alias_type  s2   € Ø�y‰yÐ$Ð$Ð$Ø §¡×!3Ñ!3´^ÀCÇHÁHÓ5MÐNÐNr£   N)r¢   r-   Úreturnr4   )r¢   r   r  r4   )r¢   r   r  r4   )r¢   r.   r  r4   )r¢   r   r  r4   )r¢   r   r  r4   )r¢   r   r  r4   )r¢   r+   r  r4   )r¢   r!   r  r4   )r¢   r*   r  r4   )r¢   r0   r  r4   )r¢   r    r  r4   )r¢   r   r  r4   )r¢   r   r  r   )r¢   r#   r  r4   )r¢   r&   r  r4   )r¢   r   r  r4   )r¢   r/   r  r4   )r¢   r   r  r4   )r¢   r"   r  r4   )r¢   r'   r  r4   )r¢   r%   r  r4   )rc   Ú
__module__Ú__qualname__Ú__doc__r¶   r¹   r¼   r¾   rÀ   rÂ   rË   rÐ   rÓ   rÕ   r×   rå   ró   rê   rÿ   r	  r  r  r  r  r  r  r¬   r£   rK   r    r    h  sz   „ ñó
ó)ó)ó)ó)ó)ó
ó"
ó	
ó
ó7ó
ó
ó$Hó$8óKóGó)ó9óó
GôOr£   r    c                ó´  — t        | t        «      r*t        | j                  «      t        | j                  «      fS g }| j
                  D ]ƒ  }t        |t        «      rW|j                  j                  r/|j                  t        |j                  j                  «      «       ŒX|j                  d«       Œj|j                  t        |«      «       Œ… t        |«      S )a’  Create a snapshot of the signature of a function that has no explicit signature.

    If the arguments to a function without signature change, it must be
    considered as different. We have this special casing since we don't store
    the implicit signature anywhere, and we'd rather not construct new
    Callable objects in this module (the idea is to only read properties of
    the AST here).
    )ÚDecoratorWithoutType)r<   r   rŽ   rã   rä   rR   r
   ry   rb   r÷   rY   ru   )rw   rf   r§   s      rK   ru   ru     sž   € ô �$œÔ!Ü�d—n‘nÓ%¤u¨T¯^©^Ó'<Ð=Ð=à')ˆØ—J‘Jò 	@ˆDÜ˜$¤	Ô*Ø—8‘8—=’=Ø—M‘M¤-°·±·±Ó">Õ?à—M‘MÐ";Õ<à—‘Ô8¸Ó>Õ?ð	@ô �V‹}Ðr£   N)r?   Ústrr@   údict[str, SymbolSnapshot]rA   r!  r  zset[str])r?   r   re   r   r  r!  )rS   zSymbolNode | Nonerh   r5   r  r5   )r¢   r$   r  r4   )r¢   zType | Noner  r4   )r¨   zSequence[Type]r  r4   )r­   z
str | Noner  r   )rw   zOverloadedFuncDef | FuncItemr  r5   )Nr  Ú
__future__r   Úcollections.abcr   Útypingr   r2   r   Úmypy.expandtyper   Ú
mypy.nodesr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Úmypy.semanal_sharedr   Ú
mypy.stater   Ú
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/   r0   Ú	mypy.utilr1   r   ÚfloatÚintÚboolr3   Ú__annotations__rŽ   r4   Úobjectr5   r>   rj   rd   rY   r`   r\   rª   r®   r    ru   r¬   r£   rK   ú<module>r0     s  ðò2õh #å $ß 1å '÷÷ ÷ ÷ ñ õ" >Ý ÷÷ ÷ ÷ ÷ ÷ õ õ6 !ð ˜e™ cÑ)¨DÑ0€	ˆ:Ó 0Ø   y°.Ð'@Ñ!AÀ3Ð!FÑG€ˆjÓ Gð # 6¨3 ;Ñ/€�
Ó /ð(Øð(Ø!:ð(ØG`ð(àó(óV=ó@d!óN-ó
ó8ó!óôhO˜+ lÑ3ô hOôVr£   