Ë
    pPêj[¤  ã                  óF  — d 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
 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 ddlmZ dd	l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+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC ddlDmEZE ddlFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN ddlOmPZP ddlQmRZR 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d:d„ZSd;d„ZTd<d„ZUd=d„ZV	 	 	 	 	 	 	 	 	 	 	 	 d>d„ZW	 d?	 	 	 	 	 	 	 	 	 	 	 d@d„ZX	 	 	 	 	 	 	 	 	 	 	 	 	 	 dAd„ZY	 	 	 	 	 	 	 	 	 	 	 	 	 	 dBd„ZZdCd„Z[dDd„Z\dEd „Z]dFd!„Z^	 	 	 	 	 	 	 	 	 	 dGd"„Z_dHd#„Z`dId$„ZadJd%„Zb	 	 	 	 	 	 	 	 	 	 	 	 	 	 dKd&„Zc	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dLd'„Zd	 	 	 	 	 	 	 	 	 	 dMd(„Ze	 	 	 	 	 	 	 	 	 	 	 	 	 	 dNd)„Zf	 	 	 	 	 	 	 	 	 	 dOd*„Zg	 	 	 	 	 	 	 	 	 	 dOd+„ZhdPd,„ZidQd-„Zj	 	 	 	 	 	 	 	 	 	 	 	 	 	 dKd.„Zkeleef   Zm G d/„ d0e«      Zn	 	 	 	 	 	 dRd1„Zo G d2„ d3e «      Zp G d4„ d5e«      Zq	 	 	 	 	 	 dSd6„Zr	 	 	 	 	 	 dTd7„ZsdUd8„Zty9)Vaß  Prepare for IR transform.

This needs to run after type checking and before generating IR.

For example, construct partially initialized FuncIR and ClassIR
objects for all functions and classes. This allows us to bind
references to functions and classes before we've generated full IR for
functions or classes.  The actual IR transform will then populate all
the missing bits, such as function bodies (basic blocks).

Also build a mapping from mypy TypeInfos to ClassIR objects.
é    )Úannotations)Údefaultdict)ÚIterable)Ú
NamedTuple)ÚGraph)ÚARG_STARÚ	ARG_STAR2ÚAssignmentStmtÚCallExprÚClassDefÚ	DecoratorÚ
ExpressionÚFuncDefÚ	IndexExprÚ
MemberExprÚMypyFileÚNameExprÚOverloadedFuncDefÚRefExprÚ
SymbolNodeÚTypeInfoÚVar)Úrefers_to_fullname)ÚTraverserVisitor)ÚInstanceÚTypeÚget_proper_type)ÚFAST_PREFIXÚGENERATOR_HELPER_NAMEÚMYPYC_DEFAULTS_SETUPÚPROPSET_PREFIXÚ	SELF_NAMEÚget_id_from_name)Úcatch_errors)ÚErrors)ÚClassIR)ÚFUNC_CLASSMETHODÚFUNC_NORMALÚFUNC_STATICMETHODÚFuncDeclÚFuncSignatureÚ
RuntimeArg)Ú	DeserMaps)Ú	RInstanceÚRTypeÚbool_rprimitiveÚdict_rprimitiveÚnone_rprimitiveÚobject_pointer_rprimitiveÚobject_rprimitiveÚtuple_rprimitive)ÚMapper)Údataclass_typeÚdefault_attr_nameÚget_func_defÚget_mypyc_attrsÚis_class_body_finalÚis_dataclassÚis_extension_classÚis_trait)ÚCompilerOptions)Úis_same_typec                ó
  — g }|D ]M  }|j                   D �cg c]  }t        |t        «      sŒ|‘Œ }	}|j                  |	D �
cg c]  }
||
f‘Œ c}
«       ŒO |D �]<  \  }}
t	        |
j
                  |j                  t        |
«      |
j                  j                  |
j                  j                  ¬«      }t        |j                  |
|«      |_        |j                  r)|
j                  j                  j                  «       |_        |j"                  sd |_        || j&                  |
j                  <   | j(                  j+                  |j                  «       |
j                  j,                  xr" t/        |
j                  j0                  «      dkD  |_        �Œ? |D ]š  \  }}
t3        |j                  |
j4                  «      5  | j&                  |
j                     j                  r%t7        |j                  |j                  |
|| |«       n$t9        |j                  |j                  |
|| |«       d d d «       Œœ |D ]i  \  }}
t3        |j                  |
j4                  «      5  | j&                  |
j                     j                  rt;        |j                  |
|| «       d d d «       Œk |D ]M  \  }}
| j&                  |
j                     }|j                  sŒ,t=        |
j                  ||j                  | «       ŒO |D ]N  \  }}
| j&                  |
j                     }|j                  sŒ,t?        |
|«      sŒ9tA        ||j                  «       ŒP |D ]l  \  }}
| j&                  |
j                     }|j                  sŒ,t3        |j                  |
j4                  «      5  tC        |j                  |
||«       d d d «       Œn |D ]+  }tE        |«      D ]  }tG        |j                  d || |«       Œ Œ- |D ]ë  \  }}
| j&                  |
j                     }|jH                  D ]¾  }|jJ                  dd  D ]ª  }||jH                  v sŒtM        |jH                  |   |jH                  |   «      rŒ9|
j                  jN                  |   jP                  }|€J ‚|j                  rdnd}|jS                  d|› d|› d|j
                  › d	�|j                  |j4                  «       Œ¬ ŒÀ Œí y c c}w c c}
w # 1 sw Y   �ŒVxY w# 1 sw Y   �ŒÄxY w# 1 sw Y   �Œ¾xY w)
N)Úis_abstractÚis_final_classr   é   ÚtraitÚclassz	Type of "z%" is incompatible with definition in z "ú")*ÚdefsÚ
isinstancer   Úextendr&   ÚnameÚfullnamer>   ÚinforB   Úis_finalr=   ÚpathÚis_ext_classÚdeletable_attributesÚcopyÚ	deletableÚglobal_optsÚchildrenÚ
type_to_irÚsymbol_fullnamesÚaddÚis_enumÚlenÚenum_membersr$   ÚlineÚprepare_class_defÚprepare_non_ext_class_defÚvalidate_acyclic_class_basesÚ#prepare_implicit_property_accessorsÚ_has_own_default_attrsÚ_register_defaults_setup_declÚ_check_deletable_declarationsÚget_module_func_defsÚprepare_func_defÚ
attributesÚmror@   ÚnamesÚnodeÚerror)ÚmapperÚmodulesÚgraphÚtypesÚoptionsÚerrorsÚclassesÚmoduleri   Úmodule_classesÚcdefÚclass_irÚfuncÚattrÚbase_irÚkinds                   úZ/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypyc/irbuild/prepare.pyÚbuild_type_mapr{   X   s™  € ð €GØò DˆØ+1¯;©;ÖU 4¼*ÀTÌ8Õ:Tš$ÐUˆÐUØ�‰°>ÖB¨4˜ šÒBÕCðDð  ó Q‰ˆ�ÜØ�I‰IØ�O‰OÜ�T‹NØŸ	™	×-Ñ-ØŸ9™9×-Ñ-ô
ˆô !3°6·;±;ÀÀfÓ MˆÔØ× Ò Ø!%§¡×!?Ñ!?×!DÑ!DÓ!FˆHÔà×"Ò"Ø $ˆHÔØ'/ˆ×Ñ˜$Ÿ)™)Ñ$Ø×Ñ×#Ñ# H×$5Ñ$5Ô6ØŸ9™9×,Ñ,ÒP´°T·Y±Y×5KÑ5KÓ1LÈqÑ1PˆÖð!Qð&  ò ‰ˆ�Ü˜&Ÿ+™+ t§y¡yÓ1ñ 	Ø× Ñ  §¡Ñ+×8Ò8Ü! &§+¡+¨v¯©ÀÀfÈfÐV]Õ^ä)Ø—K‘K §¡°$¸ÀÈô÷		ð 	ðð  ò P‰ˆ�Ü˜&Ÿ+™+ t§y¡yÓ1ñ 	PØ× Ñ  §¡Ñ+×8Ò8Ü,¨V¯[©[¸$ÀÈÔO÷	Pð 	PðPð  ò ^‰ˆ�Ø×$Ñ$ T§Y¡YÑ/ˆØ× Ó Ü/°·	±	¸8ÀVÇ_Á_ÐV\Õ]ð^ð  ò E‰ˆ�Ø×$Ñ$ T§Y¡YÑ/ˆØ× Ó Ô%;¸DÀ(Õ%KÜ)¨(°F·O±OÕDðEð  ò S‰ˆ�Ø×$Ñ$ T§Y¡YÑ/ˆØ× Ó Ü˜fŸk™k¨4¯9©9Ó5ñ SÜ-¨f¯k©k¸4ÀÈ6ÔR÷Sð SðSð ò KˆÜ(¨Ó0ò 	KˆDÜ˜VŸ_™_¨d°D¸&À'ÕJñ	KðKð  ò ‰ˆ�Ø×$Ñ$ T§Y¡YÑ/ˆØ×'Ñ'ò 	ˆDØ#Ÿ<™<¨¨Ð+ò �Ø˜7×-Ñ-Ò-Ü'¨×(;Ñ(;¸DÑ(AÀ7×CUÑCUÐVZÑC[Õ\Ø#Ÿy™yŸ™¨tÑ4×9Ñ9˜Ø#Ð/Ð/Ð/Ø*1×*:Ò*:™wÀ˜ØŸ™Ø'¨ vð .-Ø-1¨F°"°W·\±\°NÀ!ðEà"ŸK™KØ ŸI™Iõ	ññ	ñùòS VùÚB÷0	ñ 	ú÷	Pñ 	Pú÷2Sñ Sús5   –S¬SÁS 
Æ?A-S%É<S2ÎS?Ó%S/	Ó2S<	Ó?T		c                óT   — | j                   |j                   dz   | j                  z   k(  S )Nú.)rL   rK   )ri   rr   s     rz   Úis_from_moduler~   ½   s#   € Ø�=‰=˜FŸO™O¨cÑ1°D·I±IÑ=Ñ=Ð=ó    c                óˆ  — |D �]T  }|j                   j                  «       D �]3  }t        |j                  t        «      sŒt        |j                  |«      sŒ6|j                  j                  rŒM|j                  j                  rŒd|j                  j                  �Œ{|j                  j                  |j                  j                  «      }|€Œ­|| j                  |j                  <   | j                  j                  |j                  j                  «       |j                  r�Œ|j                   r�Œ|j"                  | j$                  |j                  <   �Œ6 �ŒW |D ]c  }t'        |«      D ]S  }t)        |j*                  |j                  |j,                  «      }|j.                  |   j0                  | j$                  |<   ŒU Œe y)z>Populate a Mapper with deserialized IR from a list of modules.N)rh   ÚvaluesrI   ri   r   r~   Ú
is_newtypeÚis_named_tupleÚtypeddict_typerq   ÚgetrL   rV   rW   rX   r>   Úbuiltin_baseÚctorÚfunc_to_declrd   r#   rK   r\   Ú	functionsÚdecl)rk   rl   Ú	deser_ctxrr   ri   Úirrv   Úfunc_ids           rz   Úload_type_maprŽ   Á   sZ  € àó =ˆØ—L‘L×'Ñ'Ó)ó 	=ˆDä˜4Ÿ9™9¤hÕ/Ü" 4§9¡9¨fÕ5ØŸ	™	×,Ó,ØŸ	™	×0Ó0Ø—I‘I×,Ñ,Ñ4ð ×&Ñ&×*Ñ*¨4¯9©9×+=Ñ+=Ó>�Ø�:ØØ/1�×!Ñ! $§)¡)Ñ,Ø×'Ñ'×+Ñ+¨D¯I©I×,>Ñ,>Ô?ð
 —{”{¨2¯?¬?Ø57·W±W�F×'Ñ'¨¯	©	Ó2ò-	=ð=ð2 ò JˆÜ(¨Ó0ò 	JˆDÜ& t§y¡y°$·-±-ÀÇÁÓKˆGØ(1×(;Ñ(;¸GÑ(D×(IÑ(IˆF×Ñ Ò%ñ	JñJr   c              #  óò   K  — | j                   j                  «       D ]V  }t        |j                  t        t
        t        f«      sŒ)t        |j                  | «      sŒ@t        |j                  «      –— ŒX y­w)z?Collect all of the (non-method) functions declared in a module.N)	rh   r�   rI   ri   r   r   r   r~   r9   )rr   ri   s     rz   rd   rd   â   s\   è ø€ à—‘×#Ñ#Ó%ò *ˆô �d—i‘i¤'¬9Ô6GÐ!HÕIÌnØ�I‰I�võO
ô ˜tŸy™yÓ)Ó)ñ*ùs   ‚AA7ÁA7ÁA7c           	     ó  — |j                   rt        n|j                  rt        nt        }|j                  ||j                  «      }t        |j                  || |||j                  |j                  ¬«      }||j                  |<   |S )N)Úis_generatorÚis_coroutine)Úis_classr'   Ú	is_staticr)   r(   Úfdef_to_sigÚstrict_dunders_typingr*   rK   r‘   r’   rˆ   )Úmodule_nameÚ
class_nameÚfdefrk   ro   ry   ÚsigrŠ   s           rz   re   re   î   s�   € ð �=Š=õ 	à#'§>¢>Õ´{ð 	ð
 ×
Ñ
˜T 7×#@Ñ#@Ó
A€CÜØ�	‰	ØØØØØ×&Ñ&Ø×&Ñ&ô€Dð !%€F×Ñ˜ÑØ€Kr   c                ó  — |j                   s|j                  sJ ‚dj                  d„ |j                  |fD «       «      dz   |z   }t	        || d|du ¬«      }d|_        ||j                  |<   t        t        t        t        «      t        dt        «      t        dt        «      t        d	t        «      t        d
t        «      t        dt        «      ft        «      }t        t        || |d¬«      }||j                  |j                  <   |S )zÀFor a generator/async function, declare a generator class.

    Each generator and async function gets a dedicated class that implements the
    generator protocol with generated methods.
    Ú_c              3  ó&   K  — | ]	  }|sŒ|–— Œ y ­w©N© )Ú.0Úxs     rz   ú	<genexpr>z2create_generator_class_for_func.<locals>.<genexpr>  s   è ø€ Ò<˜!º!”AÑ<ùs   ‚ŠÚ_genTN)Úis_generatedrC   ÚtypeÚvalueÚ	tracebackÚargÚstop_iter_ptr)Úinternal)r’   r‘   ÚjoinrK   r&   Úreuse_freed_instanceÚfdef_to_generatorr+   r,   r"   r4   r3   r*   r   Úmethod_decls)	r—   r˜   r™   rk   Úname_suffixrK   ÚcirÚ
helper_sigÚhelper_fn_decls	            rz   Úcreate_generator_class_for_funcr³     s÷   € ð ×Ò × 1Ò 1Ð1Ð1Ø�8‰8Ñ< §	¡	¨:Ð6Ô<Ó<¸vÑEÈÑS€DÜ
�$˜°$ÀzÐUYÐGYÔ
Z€CØ#€CÔØ%(€F×Ñ˜TÑ"ää”yÔ"3Ó4Ü�vÔ0Ó1Ü�wÔ 1Ó2Ü�{Ô$5Ó6Ü�uÔ/Ó0ä�Ô(AÓBð	
ô 	ó€Jô Ô3°T¸;È
Ð]aÔb€NØ,:€C×Ñ�^×(Ñ(Ñ)Ø€Jr   c                óT  — t        |t        «      r1t        ||j                  |||«      | j                  |j                  <   y t        |t
        «      �rVt        ||j                  |j                  ||«      }|j                  s|| j                  |j                  <   n–t        |j                  d   t        «      ry|j                  d   j                  dk(  r]t        |j                  z   |_        d|_
        d|j                  j                  d   _        || j                  t        |j                  z   <   |j                  j                  r`|j                  j                  sJ d|j                  › d�«       ‚d|_        |j                  j"                  | j$                  |j                  <   y y y )Nr   ÚsetterTrD   z.Expected return type annotation for property 'ú')rI   r   re   rK   r®   r   rv   Ú
decoratorsr   r!   Úis_prop_setterrš   ÚargsÚpos_onlyÚis_propertyr¥   Úis_prop_getterÚret_typeÚproperty_types)rŒ   r—   rt   rk   ri   ro   rŠ   s          rz   Úprepare_method_defr¿   )  sJ  € ô �$œÔ Ü%5Ø˜Ÿ™ D¨&°'ó&
ˆ�‰˜Ÿ	™	Ò"ô 
�Dœ)Õ	$ô   ¨T¯Y©Y¸¿	¹	À6È7ÓSˆØ�ŠØ)-ˆB�O‰O˜DŸI™IÒ&Ü˜Ÿ™¨Ñ*¬JÔ7¸D¿O¹OÈAÑ<N×<SÑ<SÐW_Ò<_ô '¨¯©Ñ2ˆDŒIØ"&ˆDÔà(,ˆD�H‰H�M‰M˜!ÑÔ%Ø:>ˆB�O‰OœN¨T¯Y©YÑ6Ñ7à�9‰9× Ò Ø—9‘9—>’>Ð`Ð%SÐTX×T]ÑT]ÐS^Ð^_Ð#`Ó`�>Ø"&ˆDÔØ+/¯8©8×+<Ñ+<ˆB×Ñ˜dŸi™iÒ(ð !ð! 
%r   c                óF  — | j                   r•t        |t        «      r|j                  ry|j                  }t        |t
        «      syt        |j                  z   }|j                  ||j                  «      }t        ||j                  ||t        «      }|| j                  |<   y)z?Add fast (direct) variants of methods in non-extension classes.N)rY   rI   r   r»   Úimplr   r   rK   r•   r–   r*   r(   r®   )	rŒ   r—   rt   rk   ri   ro   rK   rš   rŠ   s	            rz   Úprepare_fast_pathrÂ   K  s‰   € ð 
‡z‚zô �dÔ-Ô.Ø×ÒØØ—9‘9ˆDÜ˜$¤Ô(àô
 ˜TŸY™YÑ&ˆØ× Ñ   w×'DÑ'DÓEˆÜ˜˜dŸi™i¨°c¼;ÓGˆØ $ˆ�‰˜ÑØ
r   c                ó’  — t        | j                  «      dk7  ry| j                  d   }| j                  d   }t        |t        «      xr t        |t        «      xrm |j                  j
                  xrU t        |j                  «      dk(  xr; t        |j                  d   t        «      xr |j                  d   j                  dk(  S )Né   Fr   rD   rµ   )	rZ   ÚitemsrI   r   rv   r»   r·   r   rK   )ÚpropÚgetterrµ   s      rz   Úis_valid_multipart_property_defrÈ   i  s·   € ä
ˆ4�:‰:ƒ˜!ÒØà�Z‰Z˜‰]€FØ�Z‰Z˜‰]€Fô 	�6œ9Ó%ò 	2Ü�vœyÓ)ò	2à�K‰K×#Ñ#ò	2ô �×!Ñ!Ó" aÑ'ò	2ô �v×(Ñ(¨Ñ+¬ZÓ8ò		2ð
 ×Ñ˜aÑ ×%Ñ%¨Ñ1ðr   c                ó
   — | dv S )N)zbuiltins.Exceptionzbuiltins.LookupErrorzbuiltins.IndexErrorzbuiltins.Warningzbuiltins.UserWarningzbuiltins.ValueErrorúbuiltins.objectrŸ   )r†   s    rz   Úcan_subclass_builtinrË   {  s   € àð	
ð
ð 
r   c                ót   — t        | t        «      r| j                  } t        | t        «      r| j                  S y rž   )rI   r   Úbaser   rL   )Úexprs    rz   Úget_removed_base_fullnamerÏ   Š  s,   € Ü�$œ	Ô"Ø�y‰yˆÜ�$œÔ Ø�}‰}ÐØr   c                ó.  — | j                   ry| j                  D ]  }t        |«      x}r|c S  y | j                  j                  dd  D ]I  }|j
                  dk(  rŒ|j                  j                  |«      }|�|j                  rŒ=|j
                  c S  y )Nztyping.Genericza removed base classrD   rÊ   )	Ú	type_argsÚremoved_base_type_exprsrÏ   rM   rg   rL   rV   r…   Ú
is_acyclic)rt   rk   rÎ   rL   rÍ   rx   s         rz   Úfind_non_acyclic_baserÔ   ’  sŸ   € Ø‡~‚~Øà×,Ñ,ò &ˆÜ0°Ó6Ð6ˆ8Ð6ØŠOÙ%ð&ð
 —	‘	—‘˜a˜bÐ!ò ˆØ�=‰=Ð-Ò-Øà×#Ñ#×'Ñ'¨Ó-ˆØÐ 7×#5Ò#5Øà�}‰}Òðð r   c                ó°   — |j                   |j                     }|j                  sy t        ||«      x}r"|j	                  d|› d�| |j
                  «       y y )NzH"acyclic" can't be used in a class that inherits from non-acyclic type "rG   )rV   rM   rÓ   rÔ   rj   r\   )rO   rt   rp   rk   rŒ   rL   s         rz   r_   r_   ¨  s^   € ð 
×	Ñ	˜4Ÿ9™9Ñ	%€BØ�=Š=Øä(¨¨vÓ6Ð6€xÐ6Ø�‰ØWÐX`ÐWaÐabÐcØØ�I‰Iõ	
ð 7r   c                óÈ   ‡‡— ‰j                   s‰j                  ryt        | «      Št        ˆˆfd„| j                  j
                  j                  j                  D «       «      S )zîWhether this class's own body has any default attribute assignment
    that would be emitted into __mypyc_defaults_setup.

    Used during prepare to decide whether to register a
    __mypyc_defaults_setup FuncDecl ahead of IR build.
    Fc              3  ó\   •K  — | ]#  }t        |t        «      rt        |‰‰«      d u–— Œ% y ­wrž   )rI   r
   r8   )r    ÚstmtÚcls_typerŒ   s     €€rz   r¢   z)_has_own_default_attrs.<locals>.<genexpr>Á  s1   øè ø€ ò àÜ�dœNÔ+ô 	˜$  HÓ-°TÔ9ñùs   ƒ),)r†   r>   r7   ÚanyrM   ÚdefnrH   Úbody)rt   rŒ   rÙ   s    `@rz   ra   ra   ·  sM   ù€ ð 
‡‚˜"Ÿ+š+ØÜ˜dÓ#€HÜô à—I‘I—N‘N×'Ñ'×,Ñ,ôó ð r   c                ó®   — t        t        t        t        | «      «      gt        «      }t        t        | j                  ||«      | j                  t        <   y rž   )	r+   r,   r"   r.   r0   r*   r    rK   r®   )rŒ   r—   rš   s      rz   rb   rb   È  s=   € Ü
œ¤I¬y¸«}Ó=Ð>ÄÓ
P€CÜ,4Ü˜bŸg™g {°Có-€B‡O�OÔ(Ò)r   c           
     ó4  — |j                   syt        d„ |j                  j                  j                  j
                  D «       |j                  «      }|j                   D ]·  }||j                  vsŒ|j                  |«      s|j                  d|› d�| |«       Œ;|j                  D ])  }||j                  v sŒ|j                  d|› d�| |«        Œr |j                  |«      \  }}|j                  d|› d|j                  › d|j                  › d	�| |«       Œ¹ y)
zÅValidate that attributes listed in __deletable__ refer to definable
    attributes on the class.

    Runs in the prepare phase so we exit early on invalid programs before
    any IR is built.
    Nc              3  óÆ   K  — | ]Y  }t        |t        «      rGt        |j                  d    t        «      r*|j                  d    j                  dk(  r|j
                  –— Œ[ y­w)r   Ú__deletable__N)rI   r
   Úlvaluesr   rK   r\   )r    rØ   s     rz   r¢   z0_check_deletable_declarations.<locals>.<genexpr>Ù  sN   è ø€ ò 	
àÜ˜$¤Ô/Ü˜4Ÿ<™<¨™?¬HÔ5Ø—‘˜Q‘×$Ñ$¨Ò7ð	 �I�Iñ	
ùs   ‚AA!zAttribute "z" not definedzCannot make property "z" deletablez" not defined in "z" (defined in "z"))rS   ÚnextrM   rÛ   rH   rÜ   r\   rf   Úhas_attrrj   rg   r¾   Úattr_detailsrK   )rO   rt   rŒ   rp   r\   rw   rÍ   rœ   s           rz   rc   rc   Ï  s  € ð �<Š<ØÜñ	
àŸ	™	Ÿ™×+Ñ+×0Ñ0ô	
ð 	�	‰	ó	€Dð —‘ò ˆØ�r—}‘}Ò$Ø—;‘;˜tÔ$Ø—‘˜{¨4¨&°Ð>ÀÀdÔKØØŸ™ò �Ø˜4×.Ñ.Ò.Ø—L‘LÐ#9¸$¸¸{Ð!KÈTÐSWÔXÙðð
 Ÿ/™/¨$Ó/‘��4Ø—‘Ø! $ Ð'9¸"¿'¹'¸ð C$Ø$(§I¡I ;¨bð2àØõ	ñr   c           	     ó¼  — |j                   |j                     }|j                  }t        || |«      \  }}	|j                  d«      du rd|_        |j                  d«      du rd|_        |j                  d«      du rd|_        |j                  D ]¹  }
|
j                  dk(  rd|_	        Œ|
j                  dk(  rd|_	        Œ1|
j                  j                  d	«      sŒMt        |
j                  «      rŒc|j                  d
| |j                  «       |j                  d| |j                  «       |j                  d| |j                  «       Œ» |j                  d«      }|�…|	d   }|j                  r|j                  d| |«       |j                  r|j                  d| |«       |j                  r|j                  d| |«       |dk(  rd|_        n|j                  d|› �| |«       |j"                  D �cg c]4  }|j$                  |j                   v sŒ|j                   |j$                     ‘Œ6 }}t'        |«      dkD  r>t)        d„ |D «       «      r,|d   j                  r|j                  d| |j                  «       |D �cg c]  }|j                  sŒ|‘Œ c}|_        g }g }|j                  D ]Ž  }
|
|j                   vr|
j                  dk7  rd|_        Œ(|j                   |
   }|j                  s|j/                  |«       |j/                  |«       |
j0                  j2                  s|j4                  rŒˆd|_        Œ� |j                  sdnd}t'        |«      |kD  r
||   |_        ||_        ||_        t;        ||| ||||«       t=        ||||«       |D ]*  }|j>                  €Œ|j>                  j/                  |«       Œ, tA        |«      rd|_!        yyc c}w c c}w )zÈPopulate the interface-level information in a class IR.

    This includes attribute and method declarations, and the MRO, among other things, but
    method bodies are generated in a later pass.
    Úallow_interpreted_subclassesTÚserializableÚacycliczbuiltins.BaseExceptionÚPyBaseExceptionObjectzbuiltins.dictÚPyDictObjectú	builtins.z3Inheriting from most builtin types is unimplementedzEPotential workaround: @mypy_extensions.mypyc_attr(native_class=False)zVhttps://mypyc.readthedocs.io/en/stable/native_classes.html#defining-non-native-classesÚfree_list_lenNz)"free_list_len" can't be used with traitszK"free_list_len" can't be used in a class that allows interpreted subclasseszK"free_list_len" can't be used in a class that inherits from a built-in typerD   z'Unsupported value for "free_list_len": c              3  ó6   K  — | ]  }|j                    –— Œ y ­wrž   )r>   )r    Úcs     rz   r¢   z$prepare_class_def.<locals>.<genexpr>D  s   è ø€ Ò<° !§*¡*œnÑ<ùs   ‚r   z/Non-trait base must appear first in parent listrÊ   )"rV   rM   r:   r…   ræ   Ú_serializablerÓ   rg   rL   r†   Ú
startswithrË   rj   r\   Únoter>   r¬   Úbasesr¥   rZ   rÚ   ÚtraitsÚinherits_pythonÚappendrÛ   rÒ   rP   rÍ   Úbase_mroÚprepare_methods_and_attributesÚprepare_init_methodrU   r<   Úis_augmented)rO   r—   rt   rp   rk   ro   rŒ   rM   ÚattrsÚattrs_linesÚclsrì   r\   rÍ   rò   rî   rg   rö   rx   Úbase_idxs                       rz   r]   r]   õ  s�  € ð 
×	Ñ	˜4Ÿ9™9Ñ	%€BØ�9‰9€Dä(¨¨t°VÓ<Ñ€Eˆ;Ø‡y�yÐ/Ó0°DÑ8Ø*.ˆÔ'Ø‡y�y�Ó  DÑ(àˆÔà‡y�y�Ó˜tÑ#ØˆŒð �x‰xò ˆð �<‰<Ð3Ò3Ø5ˆB�OØ�\‰\˜_Ò,Ø,ˆB�OØ�\‰\×$Ñ$ [Õ1Ü'¨¯©Õ5ð
 —‘ØIÈ4ÐQU×QZÑQZôð —‘Ø[ØØ—I‘Iôð
 —‘ØlØØ—I‘Iõð+ð6 —I‘I˜oÓ.€MØÐ Ø˜?Ñ+ˆØ�;Š;Ø�L‰LÐEÀtÈTÔRØ×*Ò*Ø�L‰LØ^ØØôð
 �?Š?Ø�L‰LØ^ØØôð
 ˜AÒØ&*ˆBÕ#à�L‰LÐBÀ=À/ÐRÐTXÐZ^Ô_ð 7;·j±jÖc¨dÀDÇIÁIÐQW×QbÑQbÒDbˆV×Ñ˜tŸy™yÓ)Ðc€EÐcÜ
ˆ5ƒz�A‚~œ#Ñ<°eÔ<Ô<ÀÀqÁ×ARÒARð
 	�‰ÐFÈÈdÏiÉiÔXØ!Ö0�q Q§Z£Z’Ò0€B„Ià
€CØ€HØ�x‰xò &ˆØ�f×'Ñ'Ñ'Ø�|‰|Ð0Ò0Ø%)�Ô"ØØ×#Ñ# CÑ(ˆØ×ÒØ�O‰O˜GÔ$Ø�
‰
�7Ôà�8‰8×+Ò+°7×3GÓ3GØ!%ˆBÕð&ð Ÿš‰q¨€HÜ
ˆ8ƒ}�xÒØ˜8Ñ$ˆŒØ€B„FØ€B„Kä" 4¨¨T°;ÀÈÐPWÔXÜ˜˜b +¨vÔ6àò %ˆØ�=‰=Ñ$Ø�M‰M× Ñ  Õ$ð%ô �DÔØˆ�ð ùòK dùò 1s   Ç2OÈOÉ=OÊOc           
     óT  — | j                   }|j                  j                  «       D �]W  \  }}	|	j                  rŒt	        |	j
                  t        «      �r|	j
                  j                  s
J d|z  «       ‚|	j
                  j                  rŒf|dvsŒk|j                  |	j
                  j                  «      }
t        |	j
                  || |
«      r|
|j                  |<   Œ¸|j                  r(|
j                  rt        |||
|«       t        |||
|«       |
|j                   |<   |	j
                  j"                  s�Œ|j$                  j'                  |«       �Œ0t	        |	j
                  t(        t*        f«      rt-        ||| ||	j
                  |«       �Œlt	        |	j
                  t.        «      s�Œˆ|	j
                  j0                  rat3        |	j
                  «      r-|	j
                  j                  D ]  }t-        ||| |||«       Œ �Œà|j5                  d|| j6                  «       �Œÿ|	j
                  j8                  s|j5                  d|| j6                  «       �Œ4t-        ||| ||	j
                  j8                  |«       �ŒZ |j:                  r|j                   j=                  «        yy)z+Populate attribute and method declarations.zClass member %s missing type)Ú	__slots__rà   ú(Unsupported property decorator semanticsz2Overloads without implementation are not supportedN)rM   rh   rÅ   Úplugin_generatedrI   ri   r   r¥   Úis_classvarÚtype_to_rtyper;   Úclass_final_attributesr>   Úerror_overlapÚadd_getter_declarationÚadd_setter_declarationrf   rN   Úfinal_attributesrX   r   r   r¿   r   r»   rÈ   rj   r\   rÁ   r†   Úclear)rt   rŒ   rO   r—   rp   rk   ro   rM   rK   ri   Ú
attr_rtypeÚitems               rz   r÷   r÷   l  s  € ð �9‰9€DØ—j‘j×&Ñ&Ó(ó *_‰
ˆˆdà× Ò Øä�d—i‘i¤Õ%Ø—9‘9—>’>ÐHÐ#AÀDÑ#HÓH�>Ø—9‘9×(Ó(¨TÐ9WÒ-WØ#×1Ñ1°$·)±)·.±.ÓA�
Ü& t§y¡y°"°d¸JÔGð 7A�B×-Ñ-¨dÑ3ØØ—;’; :×#;Ò#;ô
 +¨2¨t°ZÀÔMÜ*¨2¨t°ZÀÔMØ&0�—‘˜dÑ#Ø—9‘9×%Ô%Ø×'Ñ'×+Ñ+¨DÖ1Ü˜Ÿ	™	¤G¬YÐ#7Ô8Ü˜r ;°°f¸d¿i¹iÈÖQÜ˜Ÿ	™	Ô#4Ö5à�y‰y×$Ò$Ü2°4·9±9Ô=Ø $§	¡	§¡ò Y˜Ü*¨2¨{¸DÀ&È$ÐPWÕXòYð —L‘LÐ!KÈTÐSW×S\ÑS\Ö]ð —y‘y—~’~Ø—L‘LØLÈdÐTX×T]ÑT]öô ' r¨;¸¸fÀdÇiÁiÇnÁnÐV]Ö^ðU*_ðX 
‡‚Ø
�‰×ÑÕð r   c           
     óp  — t        «       }|j                  D ]E  }|j                  j                  «       D ]&  \  }}|j	                  |«       t        | |||||«       Œ( ŒG |j                  dd  D ]F  }|j                  sŒ|j                  j                  «       D ]  \  }}||vsŒt        | |||||«       Œ ŒH y ©NrD   )Úsetrö   rf   rÅ   rX   Ú,add_property_methods_for_attribute_if_neededrg   r>   )rM   rŒ   r—   rk   Úconcrete_attributesrÍ   rK   r
  s           rz   r`   r`   §  sÄ   € ô ›%ÐØ—‘ò ˆØ $§¡× 5Ñ 5Ó 7ò 	ÑˆD�*Ø×#Ñ# DÔ)Ü8Ø�b˜$ 
¨K¸õñ	ðð —‘�q�r�
ò ˆØ�=‹=Ø$(§O¡O×$9Ñ$9Ó$;ò Ñ ��jØÐ2Ò2Ü@Ø˜b $¨
°KÀõññr   c                ó  — | j                   dd D ]ï  }||j                  v sŒ|j                  |   }|j                  j                  |«      }|€Œ?|j                  }	t        |	t        «      r'|	j                  |j                  vrt        ||||«       Œ‚t        |	t        «      r(t        |	«      rt        ||||«       t        ||||«       Œº|j                  sŒÇ|j                  sŒÔt        ||||«       t        ||||«       Œñ y)z¥Add getter and/or setter for attribute if defined as property in a base class.

    Only add declarations. The body IR will be synthesized later during irbuild.
    rD   N)rg   rV   rh   r…   ri   rI   r   rK   r®   r  r   rÈ   r  r>   r  )
rM   rŒ   Ú	attr_namer
  r—   rk   rÍ   rx   Únri   s
             rz   r  r  º  sä   € ð —‘˜˜�ò OˆØ�6×$Ñ$Ò$Ø×'Ñ'¨Ñ-ˆGØ—
‘
—‘˜yÓ)ˆAØˆyØØ—6‘6ˆDÜ˜$¤	Ô*¨t¯y©yÀÇÁÑ/Oä& r¨9°jÀ+ÕNÜ˜DÔ"3Ô4Ô9XÐY]Ô9^ä& r¨9°jÀ+ÔNÜ& r¨9°jÀ+ÕNØ×!Ó! j×&>Ó&>Ü& r¨9°jÀ+ÔNÜ& r¨9°jÀ+ÕNñ!Or   c                óÞ   — t        dt        | «      d¬«      }t        |g|«      }t        || j                  ||t
        «      }d|_        d|_        || j                  |<   || j                  |<   y )NÚselfT©rº   )
r,   r.   r+   r*   rK   r(   r¼   Úimplicitr®   r¾   )rŒ   r  r
  r—   Úself_argrš   rŠ   s          rz   r  r  Ù  sg   € ô ˜&¤)¨B£-¸$Ô?€HÜ
˜˜
 JÓ
/€CÜ�I˜rŸw™w¨°S¼+ÓF€DØ€DÔØ€D„MØ!%€B‡O�O�IÑØ#-€B×Ñ�iÒ r   c                óø   — t        dt        | «      d¬«      }t        d|d¬«      }t        ||gt        «      }t        |z   }t        || j                  ||t        «      }d|_        d|_	        || j                  |<   y )Nr  Tr  r¦   )r,   r.   r+   r2   r!   r*   rK   r(   r¸   r  r®   )	rŒ   r  r
  r—   r  Ú	value_argrš   Úsetter_namerŠ   s	            rz   r  r  å  sr   € ô ˜&¤)¨B£-¸$Ô?€HÜ˜7 J¸Ô>€IÜ
˜ 9Ð-¬Ó
?€CÜ  9Ñ,€KÜ�K §¡¨+°s¼KÓH€DØ€DÔØ€D„MØ#'€B‡O�O�KÒ r   c                ób  — t        | j                  «      | j                  z
  }t        |j                  «      |j                  z
  }||k7  ryt        d|«      D ]V  }| j                  |   }|j                  |   }|j                  |j                  k7  r y|j
                  |j
                  k7  sŒV y y)NFrD   T)rZ   r¹   Únum_bitmap_argsÚranger¥   ry   )Úinit_sigÚnew_sigÚnum_init_argsÚnum_new_argsÚidxÚinit_argÚnew_args          rz   Úcheck_matching_argsr&  ò  sœ   € Ü˜Ÿ™Ó&¨×)AÑ)AÑA€MÜ�w—|‘|Ó$ w×'>Ñ'>Ñ>€LØ˜Ò$Øä�Q˜Ó&ò ˆØ—=‘= Ñ%ˆØ—,‘,˜sÑ#ˆØ�=‰=˜GŸL™LÒ(Ùà�=‰=˜GŸL™LÓ(Ùðð r   c           	     ój  — | j                   d   j                  }d }| j                   j                  d«      }|r3|j                  r'|j                  j	                  d«      s|j                  }t        |t        t        f«      rt        |«      }|j                  �sš|j                  �sŒt        |t        «      �rz|j                  |d«      }d}t        |t        «      r|j                  |d«      }	t        ||	«      }|j                  j                  |j                   «      }
|
�%|
j                  r| j                   d   j                   r|j                   j                  dk7  s|sLt#        |j$                  d   t'        dt(        t*        «      t'        dt,        t.        «      g|j0                  «      }t3        |j$                  «      |j4                  z
  }t#        |j$                  d	| t7        |«      «      }t9        | j:                  d ||«      |_        |j<                  |j>                  | j                   <   y y y y )
NÚ__init__Ú__new__rë   TrÊ   r   r¹   ÚkwargsrD   ) rM   ri   r…   rL   rð   rI   r   r   r9   r>   r†   r   r•   r&  rV   rP   r  r+   r¹   r,   r5   r   r1   r	   r½   rZ   r  r.   r*   rK   r‡   rˆ   )rt   rŒ   r—   rk   Ú	init_nodeÚnew_nodeÚ
new_symbolr  Ú
args_matchr   Údefining_irÚlast_argÚctor_sigs                rz   rø   rø     sÆ  € à—	‘	˜*Ñ%×*Ñ*€Ià"&€HØ—‘—‘˜yÓ)€Jñ
 �j×)Ò)°*×2EÑ2E×2PÑ2PÐQ\Ô2]Ø—?‘?ˆÜ�(œYÔ(9Ð:Ô;Ü Ó)ˆØ�;‹;˜rŸ›´:¸iÌÕ3QØ×%Ñ% i°Ó6ˆØˆ
Ü�h¤Ô(Ø×(Ñ(¨°4Ó8ˆGÜ,¨X°wÓ?ˆJà×'Ñ'×+Ñ+¨I¯N©NÓ;ˆð Ð#Ø"×/Ò/Ø—9‘9˜ZÑ(×9Ò9à—‘×'Ñ'Ð+<Ò<ÙÜ$à—M‘M !Ñ$Ü˜vÔ'7¼ÓBÜ˜x¬¼)ÓDðð
 ×!Ñ!óˆHô �x—}‘}Ó%¨×(@Ñ(@Ñ@ˆÜ  §¡¨q°Ð!:¼IÀb»MÓJˆÜ˜4Ÿ9™9 d¨K¸ÓBˆŒØ)+¯©ˆ×Ñ˜DŸI™IÒ&ð? 4R˜ˆ;r   c           
     ó  ‡— ‰j                   |j                     }|j                  }|j                  j                  «       D �]	  }t	        |j
                  t        t        f«      rt        |||‰|j
                  |«       n±t	        |j
                  t        «      r—|j
                  j                  r^t        |j
                  «      s|j                  d| |j                  «       |j
                  j                  D ]  }	t        |||‰|	|«       Œ n#t        |||‰t        |j
                  «      |«       t!        |||‰|j
                  |«       �Œ t#        ˆfd„|j$                  D «       «      r|j                  d| |j                  «       y y )Nr   c              3  óp   •K  — | ]-  }|‰j                   v xr ‰j                   |   j                  –— Œ/ y ­wrž   )rV   rP   )r    rü   rk   s     €rz   r¢   z,prepare_non_ext_class_def.<locals>.<genexpr>O  s6   øè ø€ Ò
`ÐPSˆ3�&×#Ñ#Ð#ÒK¨×(9Ñ(9¸#Ñ(>×(KÑ(KÓKÑ
`ùs   ƒ36z<Non-extension classes may not inherit from extension classes)rV   rM   rh   r�   rI   ri   r   r   r¿   r   r»   rÈ   rj   r\   rÅ   r9   rÂ   rÚ   rg   )
rO   r—   rt   rp   rk   ro   rŒ   rM   ri   r  s
       `     rz   r^   r^   4  s?  ø€ ð 
×	Ñ	˜4Ÿ9™9Ñ	%€BØ�9‰9€Dà—
‘
×!Ñ!Ó#ó MˆÜ�d—i‘i¤'¬9Ð!5Ô6Ü˜r ;°°f¸d¿i¹iÈÕQÜ˜Ÿ	™	Ô#4Ô5à�y‰y×$Ò$Ü6°t·y±yÔAØ—L‘LÐ!KÈTÐSW×S\ÑS\Ô]Ø ŸI™IŸO™Oò U�DÜ& r¨;¸¸fÀdÈGÕTñUô # 2 {°D¸&Ä,ÈtÏyÉyÓBYÐ[bÔcä˜"˜k¨4°¸¿¹ÀGÖLðMô  Ó
`ÐW[×W_ÑW_Ô
`Ô`Ø�‰ØJÈDÐRV×R[ÑR[õ	
ð ar   c                  ó"   — e Zd ZU ded<   ded<   y)ÚSingledispatchInfoz%dict[FuncDef, list[RegisterImplInfo]]Úsingledispatch_implszdict[FuncDef, list[int]]Údecorators_to_removeN©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__rŸ   r   rz   r5  r5  X  s   … Ø?Ó?Ø2Ô2r   r5  c                óª   — t        |«      }| D ]$  }|j                  |_        |j                  |«       Œ& t	        |j
                  |j                  «      S rž   )ÚSingledispatchVisitorrO   Úcurrent_pathÚacceptr5  r6  r7  )rl   rp   Úvisitorrr   s       rz   Ú"find_singledispatch_register_implsrB  ]  sP   € ô $ FÓ+€GØò ˆØ%Ÿ{™{ˆÔØ�‰�gÕðô ˜g×:Ñ:¸G×<XÑ<XÓYÐYr   c                  óD   ‡ — e Zd ZU ded<   dˆ fd„Zdˆ fd„Zdˆ fd„Zˆ xZS )	r>  Ústrr?  c                ót   •— t         ‰| �  «        t        t        «      | _        i | _        || _        d| _        y )Nr   )Úsuperr(  r   Úlistr6  r7  rp   Úfunc_stack_depth)r  rp   Ú	__class__s     €rz   r(  zSingledispatchVisitor.__init__j  s:   ø€ Ü‰ÑÔô S^Ô^bÓRcˆÔ!ð ?AˆÔ!à$ˆŒØ !ˆÕr   c                óx   •— | xj                   dz  c_         t        ‰| �	  |«       | xj                   dz  c_         y r  )rH  rF  Úvisit_func_def)r  ÚorI  s     €rz   rK  z$SingledispatchVisitor.visit_func_defv  s2   ø€ Ø×Ò Ñ"ÕÜ‰Ñ˜qÔ!Ø×Ò Ñ"Ör   c                ó¢  •— |j                   �r²|j                   j                  «       }g }d }t        |«      D �]j  \  }}t        ||j                  «      }|�Ç| j
                  dkD  r1| j                  j                  d| j                  |j                  «       | j                  |j                     j                  |j                  |j                  f«       |j                  |«       |€Œ±| j                  j                  d| j                  ||   j                  «       Œæt        |d«      rw| j
                  dkD  r1| j                  j                  d| j                  |j                  «       |j                  |«       | j                  j                  |j                  g «       |}�Œm |r|| j                   |j                  <   t"        ‰| �I  |«       y )Nr   z*Registering nested functions not supportedz:Calling decorator after registering function not supportedzfunctools.singledispatchz-Nested singledispatch functions not supported)r·   rR   Ú	enumerateÚ%get_singledispatch_register_call_inforv   rH  rp   rj   r?  r\   r6  Úsingledispatch_funcrõ   Údispatch_typer   Ú
setdefaultr7  rF  Úvisit_decorator)	r  ÚdecÚdecorators_to_storer7  Úlast_non_registerÚiÚdrÁ   rI  s	           €rz   rS  z%SingledispatchVisitor.visit_decorator{  s£  ø€ Ø�>‹>Ø"%§.¡.×"5Ñ"5Ó"7ÐØ.0Ð ð -1ÐÜ!Ð"5Ó6ó "*‘��1Ü<¸QÀÇÁÓI�ØÐ#Ø×,Ñ,¨qÒ0ØŸ™×)Ñ)ØHÈ$×J[ÑJ[Ð]^×]cÑ]côð ×-Ñ-¨d×.FÑ.FÑG×NÑNØ×+Ñ+¨S¯X©XÐ6ôð )×/Ñ/°Ô2Ø(Ñ4ð
 Ÿ™×)Ñ)ØXØ ×-Ñ-Ø/Ð0AÑB×GÑGõô *¨!Ð-GÔHØ×0Ñ0°1Ò4Ø ŸK™K×-Ñ-Ø OØ $× 1Ñ 1Ø !§¡ôð
 -×3Ñ3°AÔ6ð ×1Ñ1×<Ñ<¸S¿X¹XÀrÔJØ()Ò%ðE"*ñH $ð 7K�×)Ñ)¨#¯(©(Ñ3ä‰Ñ Õ$r   )rp   r%   ÚreturnÚNone)rL  r   rY  rZ  )rT  r   rY  rZ  )r9  r:  r;  r<  r(  rK  rS  Ú__classcell__)rI  s   @rz   r>  r>  g  s   ø… ØÓõ
"õ#÷
1%ñ 1%r   r>  c                  ó"   — e Zd ZU ded<   ded<   y)ÚRegisteredImplr   rP  r   rQ  Nr8  rŸ   r   rz   r]  r]  ¯  s   … Ø Ó ØÔr   r]  c                ó  — t        | t        «      rˆt        | j                  «      dk(  rpt        | j                  d   t        «      rS| j
                  }| j                  d   j                  }t        |t        «      sy t        |t        «      rt        ||«      S y t        | t        «      rb|j                  sy t        |j                  d   j                  j                  «      }t        |t        «      sy |j                  }t        | |«      S y )NrD   r   )rI   r   rZ   r¹   r   Úcalleeri   r   r   Ú+registered_impl_from_possible_register_callÚ	argumentsr   Úvariabler¥   r   )Ú	decoratorrv   r_  rQ  Úarg_typerM   s         rz   rO  rO  ´  s×   € ô 	�9œhÔ'Ü�	—‘Ó 1Ò$Ü�y—~‘~ aÑ(¬'Ô2à×!Ñ!ˆØ!Ÿ™ qÑ)×.Ñ.ˆÜ˜-¬Ô2Øä�fœjÔ)Ü>¸vÀ}ÓUÐUð ô 
�IœzÔ	*ð �~Š~ØÜ" 4§>¡>°!Ñ#4×#=Ñ#=×#BÑ#BÓCˆÜ˜(¤HÔ-ØØ�}‰}ˆÜ:¸9ÀdÓKÐKØr   c                óÎ   — | j                   dk(  rVt        | j                  t        «      r<| j                  j                  }t        |t
        «      rt        |j                  |«      S y )NÚregister)rK   rI   rÎ   r   ri   r   r]  rv   )rÎ   rQ  ri   s      rz   r`  r`  Ô  sH   € ð ‡y�y�JÒ¤:¨d¯i©i¼Ô#BØ�y‰y�~‰~ˆÜ�dœIÔ&Ü! $§)¡)¨]Ó;Ð;Ør   c                óD  — g }| j                   j                  «       D �]‡  \  }}t        |t        «      sŒ|j                  s|j
                  sŒ1t        |j                  |j                  || «      }|j                  rŒ`|j                  }d}|j                  �˜| j                  |j                     }|j                  «       }|€d}nl|j                  rd}n]|D ]U  }	||	j                  v sŒ|	j                  |   }
|
j
                  |j
                  k7  s|
j                  |j                  k7  sŒTd}ŒW nd}|s�Œt!        |«      |j"                  _        |j&                  rt!        |«      |j&                  _        |€�Œ\|j)                  |«      rd|_        |j-                  |||f«       �ŒŠ i }|D ]r  \  }}}|j/                  «       }|€Œ|j1                  |«      sŒ,|j3                  |«      }t        |j$                  t         «      sŒX|j$                  j4                  }|||<   Œt |j                  «       D ]m  \  }}|j6                  �|j6                  j-                  |«       	 |j8                  j-                  |«       |j:                  j-                  |«       ||vrŒi||   }ŒA y)zÚMake optimizations and adjustments to generated generator classes of methods.

    This is a separate pass after type map has been built, since we need all classes
    to be processed to analyze class hierarchies.
    TNF)rˆ   rÅ   rI   r   r’   r‘   r³   r—   r˜   Úis_decoratedrK   rV   rM   Ú
subclassesr>   r®   r.   rš   r½   Ú	bound_sigÚis_method_finalrC   rõ   Ú	real_baseÚ
has_methodÚ
method_sigru   rU   rg   rö   )rk   Úgenerator_methodsr™   Úfn_irÚgen_irrK   Úprecise_ret_typeru   ÚsubclsÚsÚmÚ	new_basesÚgenrÍ   Úbase_sigÚbase_genÚderivs                    rz   Ú#adjust_generator_classes_of_methodsr{  Þ  sw  € ð Ðà×*Ñ*×0Ñ0Ó2ó +K‰ˆˆeÜ�dœGÕ$¨$×*;Ò*;¸t×?PÓ?PÜ4Ø×!Ñ! 5×#3Ñ#3°T¸6óˆFð ×$Ó$Ø—z‘z�Ø#'Ð Ø×#Ñ#Ð/Ø%×0Ñ0°·±Ñ;�HØ%×0Ñ0Ó2�FØ�~à+0Ñ(Ø!×*Ò*ð ,1Ñ(à!'ò 	=˜AØ# q§~¡~Ò5Ø$%§N¡N°4Ñ$8 à$%§N¡N°e×6HÑ6HÒ$HØ'(§~¡~¸×9KÑ9KÓ'Kð 8=Ñ$4ñ	=ð  $�Hã#ô *3°6Ó):�E—I‘IÔ&Ø—’Ü3<¸VÓ3D˜Ÿ™Ô0ØÒ+Ø#×3Ñ3°DÔ9Ø48˜FÔ1Ø)×0Ñ0°$¸À&Ð1IÖJðW+KðZ €Ià0ò 	.Ñˆˆh˜ð ×!Ñ!Ó#ˆØÑØ�‰˜tÕ$ØŸ?™?¨4Ó0�Ü˜h×/Ñ/´Õ;Ø'×0Ñ0×9Ñ9�HØ%-�I˜c’Nð	.ð !—‘Ó(ò #‰ˆˆtØ�=‰=Ð$Ø�M‰M× Ñ  Ô'ØØ�I‰I×Ñ˜TÔ"Ø�N‰N×!Ñ! $Ô'Ø˜9Ñ$ØØ˜T‘?ˆDð ñ#r   N)rk   r6   rl   úlist[MypyFile]rm   r   rn   zdict[Expression, Type]ro   r?   rp   r%   rY  rZ  )ri   r   rr   r   rY  Úbool)rk   r6   rl   r|  r‹   r-   rY  rZ  )rr   r   rY  zIterable[FuncDef])r—   rD  r˜   ú
str | Noner™   r   rk   r6   ro   r?   rY  r*   )Ú )r—   rD  r˜   r~  r™   r   rk   r6   r¯   rD  rY  r&   )rŒ   r&   r—   rD  rt   r   rk   r6   ri   zFuncDef | Decoratorro   r?   rY  rZ  )rŒ   r&   r—   rD  rt   r   rk   r6   ri   zSymbolNode | Nonero   r?   rY  rZ  )rÆ   r   rY  r}  )r†   rD  rY  r}  )rÎ   r   rY  r~  )rt   r   rk   r6   rY  r~  )
rO   rD  rt   r   rp   r%   rk   r6   rY  rZ  )rt   r   rŒ   r&   rY  r}  )rŒ   r&   r—   rD  rY  rZ  )
rO   rD  rt   r   rŒ   r&   rp   r%   rY  rZ  )rO   rD  r—   rD  rt   r   rp   r%   rk   r6   ro   r?   rY  rZ  )rt   r   rŒ   r&   rO   rD  r—   rD  rp   r%   rk   r6   ro   r?   rY  rZ  )
rM   r   rŒ   r&   r—   rD  rk   r6   rY  rZ  )rM   r   rŒ   r&   r  rD  r
  r/   r—   rD  rk   r6   rY  rZ  )
rŒ   r&   r  rD  r
  r/   r—   rD  rY  rZ  )r  r+   r   r+   rY  r}  )
rt   r   rŒ   r&   r—   rD  rk   r6   rY  rZ  )rl   r|  rp   r%   rY  r5  )rc  r   rv   r   rY  úRegisteredImpl | None)rÎ   r   rQ  r   rY  r€  )rk   r6   rY  rZ  )uÚ__doc__Ú
__future__r   Úcollectionsr   Úcollections.abcr   Útypingr   Ú
mypy.buildr   Ú
mypy.nodesr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úmypy.semanalr   Úmypy.traverserr   Ú
mypy.typesr   r   r   Úmypyc.commonr   r   r    r!   r"   r#   Úmypyc.crashr$   Úmypyc.errorsr%   Úmypyc.ir.class_irr&   Úmypyc.ir.func_irr'   r(   r)   r*   r+   r,   Úmypyc.ir.opsr-   Úmypyc.ir.rtypesr.   r/   r0   r1   r2   r3   r4   r5   Úmypyc.irbuild.mapperr6   Úmypyc.irbuild.utilr7   r8   r9   r:   r;   r<   r=   r>   Úmypyc.optionsr?   Úmypyc.sametyper@   r{   r~   rŽ   rd   re   r³   r¿   rÂ   rÈ   rË   rÏ   rÔ   r_   ra   rb   rc   r]   r÷   r`   r  r  r  r&  rø   r^   ÚtupleÚRegisterImplInfor5  rB  r>  r]  rO  r`  r{  rŸ   r   rz   ú<module>r˜     s³  ðñõ #å #Ý $Ý å ÷÷ ÷ ÷ õ õ& ,Ý +ß 6Ñ 6÷÷ õ %Ý Ý %÷÷ õ #÷	÷ 	ó 	õ (÷	÷ 	ó 	õ *Ý 'ðbØðbàðbð ðbð "ð	bð
 ðbð ðbð 
óbóJ>óJóB	*ðØðàðð ðð ð	ð
 ðð óð6 acðØðØ",ðØ4;ðØEKðØZ]ðàóðB=Øð=àð=ð ð=ð ð	=ð
 ð=ð ð=ð 
ó=ðDØðàðð ðð ð	ð
 ðð ðð 
óó<ó$óóð,
Ø
ð
Øð
Ø'-ð
Ø7=ð
à	ó
óó"ó#ðLtØ
ðtàðtð ðtð ð	tð
 ðtð ðtð 
ótðn8Ø
ð8àð8ð ð8ð ð	8ð
 ð8ð ð8ð ð8ð 
ó8ðvØ
ðØðØ.1ðØ;Aðà	óð&OØ
ðOàðOð ðOð ð	Oð
 ðOð ðOð 
óOð>	.Øð	.Øð	.Ø-2ð	.ØADð	.à	ó	.ð
(Øð
(Øð
(Ø-2ð
(ØADð
(à	ó
(óó$-1ð`
Ø
ð
àð
ð ð
ð ð	
ð
 ð
ð ð
ð 
ó
ðB ˜ 7Ð*Ñ+Ð ô3˜ô 3ð
ZØðZØ%+ðZàóZôE%Ð,ô E%ôP�Zô ð
ØðØ!(ðàóð@Ø
ðØ%-ðàóôL#r   