Ë
    pPêj…&  ã                  ó$  — d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
mZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddl m!Z!m"Z"m#Z# 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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<  G d„ d	«      Z=y
)z>Maintain a mapping from mypy concepts to IR/compiled concepts.é    )Úannotations)ÚARG_STARÚ	ARG_STAR2ÚGDEFÚArgKindÚFuncDefÚRefExprÚ
SymbolNodeÚTypeInfo)ÚAnyTypeÚCallableTypeÚInstanceÚLiteralTypeÚNoneTypÚ
OverloadedÚPartialTypeÚ	TupleTypeÚTypeÚTypedDictTypeÚTypeTypeÚTypeVarLikeTypeÚUnboundTypeÚUninhabitedTypeÚ	UnionTypeÚfind_unpack_in_listÚget_proper_type)ÚClassIR)ÚFuncDeclÚFuncSignatureÚ
RuntimeArg)ÚKNOWN_NATIVE_TYPESÚ	RInstanceÚRTupleÚRTypeÚRUnionÚRVecÚbool_rprimitiveÚbytearray_rprimitiveÚbytes_rprimitiveÚdict_rprimitiveÚfloat_rprimitiveÚfrozenset_rprimitiveÚint16_rprimitiveÚint32_rprimitiveÚint64_rprimitiveÚint_rprimitiveÚlist_rprimitiveÚnone_rprimitiveÚobject_rprimitiveÚrange_rprimitiveÚset_rprimitiveÚstr_rprimitiveÚtuple_rprimitiveÚuint8_rprimitivec                  óH   — 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
y	)ÚMappera  Keep track of mappings from mypy concepts to IR concepts.

    For example, we keep track of how the mypy TypeInfos of compiled
    classes map to class IR objects.

    This state is shared across all modules being compiled in all
    compilation groups.
    c                óZ   — || _         i | _        i | _        t        «       | _        i | _        y ©N)Ú	group_mapÚ
type_to_irÚfunc_to_declÚsetÚsymbol_fullnamesÚfdef_to_generator)Úselfr=   s     úY/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypyc/irbuild/mapper.pyÚ__init__zMapper.__init__A   s*   € Ø"ˆŒØ35ˆŒØ8:ˆÔÜ*-«%ˆÔà9;ˆÕó    c                óV  — |€t         S t        |«      }t        |t        «      �rZ|j                  j
                  ret        |j                  j                  «      dk(  sJ |j                  j                  «       ‚| j                  |j                  j                  d   «      S |j                  j                  dk(  rt        S |j                  j                  dk(  rt        S |j                  j                  dk(  rt        S |j                  j                  dk(  rt        S |j                  j                  dk(  rt        S |j                  j                  dk(  rt        S |j                  j                  d	k(  rt         S t#        d
„ |j                  j$                  D «       «      rt&        S |j                  j                  dk(  rt(        S |j                  j                  dk(  rt*        S |j                  j                  dk(  rt,        S |j                  j                  dk(  rt.        S |j                  | j0                  v rKt3        | j0                  |j                     «      }|j                  j4                  rt7        |t         g«      S |S |j                  j                  dk(  rt8        S |j                  j                  dk(  rt:        S |j                  j                  dk(  rt<        S |j                  j                  dk(  rt>        S |j                  j                  dk(  r'tA        | j                  |jB                  d   «      «      S |j                  j                  tD        v rtD        |j                  j                     S t         S t        |tF        «      rp|jH                  j                  j                  dk(  rGtK        |jL                  «      €2tO        |jL                  D �cg c]  }| j                  |«      ‘Œ c}«      S t,        S t        |tP        «      rt         S t        |tR        «      rtT        S t        |tV        «      r<t7        jX                  |jL                  D �cg c]  }| j                  |«      ‘Œ c}«      S t        |tZ        «      rt         S t        |t\        «      rt         S t        |t^        «      r| j                  |j`                  «      S t        |tb        «      r=|jd                  j                  €J ‚| j                  |jd                  j                  «      S t        |tf        «      rt         S t        |th        «      rt&        S t        |tj        «      r| j                  |jl                  «      S t        |tn        tp        f«      rt         S J dt	        |«      z  «       ‚c c}w c c}w )Né   r   zbuiltins.intzbuiltins.floatzbuiltins.boolzbuiltins.strzbuiltins.byteszbuiltins.bytearrayzbuiltins.listc              3  ó:   K  — | ]  }|j                   d k(  –— Œ y­w)zbuiltins.dictN)Úfullname)Ú.0Úclss     rD   ú	<genexpr>z'Mapper.type_to_rtype.<locals>.<genexpr>d   s   è ø€ ÒM¸�S—\‘\ _Õ4ÑMùs   ‚zbuiltins.setzbuiltins.frozensetzbuiltins.tuplezbuiltins.rangezmypy_extensions.i64zmypy_extensions.i32zmypy_extensions.i16zmypy_extensions.u8zlibrt.vecs.veczunexpected type %s)9r3   r   Ú
isinstancer   ÚtypeÚ
is_newtypeÚlenÚbasesÚtype_to_rtyperJ   r0   r+   r'   r6   r)   r(   r1   ÚanyÚmror*   r5   r,   r7   r4   r>   r"   Úis_protocolr%   r/   r.   r-   r8   r&   Úargsr!   r   Úpartial_fallbackr   Úitemsr#   r   r   r2   r   Úmake_simplified_unionr   r   r   Úupper_boundr   Úvarr   r   r   Úfallbackr   r   )rC   ÚtypÚinstÚtÚitems        rD   rS   zMapper.type_to_rtypeI   sW  € Øˆ;Ü$Ð$ä˜cÓ"ˆÜ�cœ8Õ$Ø�x‰x×"Ò"ä˜3Ÿ8™8Ÿ>™>Ó*¨aÒ/Ð?°·±·±Ó?Ð/Ø×)Ñ)¨#¯(©(¯.©.¸Ñ*;Ó<Ð<Ø�x‰x× Ñ  NÒ2Ü%Ð%Ø—‘×"Ñ"Ð&6Ò6Ü'Ð'Ø—‘×"Ñ" oÒ5Ü&Ð&Ø—‘×"Ñ" nÒ4Ü%Ð%Ø—‘×"Ñ"Ð&6Ò6Ü'Ð'Ø—‘×"Ñ"Ð&:Ò:Ü+Ð+Ø—‘×"Ñ" oÒ5Ü&Ð&ô ÑMÀÇÁÇÁÔMÔMÜ&Ð&Ø—‘×"Ñ" nÒ4Ü%Ð%Ø—‘×"Ñ"Ð&:Ò:Ü+Ð+Ø—‘×"Ñ"Ð&6Ò6Ü'Ð'Ø—‘×"Ñ"Ð&6Ò6Ü'Ð'Ø—‘˜TŸ_™_Ñ,Ü  §¡°·±Ñ!:Ó;�ð —8‘8×'Ò'Ü! 4Ô):Ð";Ó<Ð<à�KØ—‘×"Ñ"Ð&;Ò;Ü'Ð'Ø—‘×"Ñ"Ð&;Ò;Ü'Ð'Ø—‘×"Ñ"Ð&;Ò;Ü'Ð'Ø—‘×"Ñ"Ð&:Ò:Ü'Ð'Ø—‘×"Ñ"Ð&6Ò6Ü˜D×.Ñ.¨s¯x©x¸©{Ó;Ó<Ð<Ø—‘×"Ñ"Ô&8Ñ8Ü)¨#¯(©(×*;Ñ*;Ñ<Ð<ä(Ð(Ü˜œYÔ'ð ×$Ñ$×)Ñ)×2Ñ2Ð6FÒFÜ'¨¯	©	Ó2Ð:ä¸c¿i¹iÖH¸˜t×1Ñ1°!Õ4ÒHÓIÐIä'Ð'Ü˜œ\Ô*Ü$Ð$Ü˜œWÔ%Ü"Ð"Ü˜œYÔ'Ü×/Ñ/ÐVY×V_ÑV_Ö0`Èd°×1CÑ1CÀDÕ1IÒ0`ÓaÐaÜ˜œWÔ%Ü$Ð$Ü˜œXÔ&Ü$Ð$Ü˜œ_Ô-ð ×%Ñ% c§o¡oÓ6Ð6Ü˜œ[Ô)Ø—7‘7—<‘<Ð+Ð+Ð+Ø×%Ñ% c§g¡g§l¡lÓ3Ð3Ü˜œZÔ(Ü$Ð$Ü˜œ]Ô+Ü"Ð"Ü˜œ[Ô)Ø×%Ñ% c§l¡lÓ3Ð3Ü˜œo¬{Ð;Ô<ä$Ð$ð 	7Ð*¬T°#«YÑ6Ó6ˆuùòA Iùò 1as   ÏV!ÑV&c                ó`   — |t         k(  rt        S |t        k(  rt        S | j	                  |«      S r<   )r   r7   r   r*   rS   )rC   r^   Úkinds      rD   Úget_arg_rtypezMapper.get_arg_rtype®   s/   € Ø”8ÒÜ#Ð#Ø”YÒÜ"Ð"à×%Ñ% cÓ*Ð*rF   c                ó  — t        |j                  t        «      r¡t        |j                  j                  |j                  j
                  «      D ��cg c]  \  }}| j                  ||«      ‘Œ }}}|j                  j                  D �cg c]  }|d u ‘Œ }}| j                  |j                  j                  «      }nu|j                  D �	cg c]  }	t        ‘Œ
 }}	|j                  D �
cg c]  }
|
j                  ‘Œ }}
|j                  dk(  xr t        |j                  «      }|rt         }nt        }t#        |d«      r.|j                  D �
cg c]  }
|
j$                  j                  ‘Œ }}
n|j                  D �cg c]  }|xs d‘Œ
 }}t        ||j
                  ||«      D ����cg c]  \  }}}}t'        ||||«      ‘Œ }}}}}|s|j                  dv rt        }t)        ||«      S c c}}w c c}w c c}	w c c}
w c c}
w c c}w c c}}}}w )NrE   Ú	argumentsÚ )Ú__eq__Ú__ne__Ú__lt__Ú__gt__Ú__le__Ú__ge__)rN   rO   r   ÚzipÚ	arg_typesÚ	arg_kindsrd   Ú	arg_namesrS   Úret_typerf   r3   Úpos_onlyÚnameÚboolÚinfor2   ÚhasattrÚvariabler    r   )rC   ÚfdefÚstrict_dunders_typingr^   rc   ro   rt   Úarg_pos_onlysÚretÚ_ÚargÚis_init_methodrq   Úarg_nameÚarg_kindÚarg_typeÚarg_pos_onlyrW   s                     rD   Úfdef_to_sigzMapper.fdef_to_sig¶   sÒ  € Ü�d—i‘i¤Ô.ô "% T§Y¡Y×%8Ñ%8¸$¿)¹)×:MÑ:MÓ!N÷á�C˜ð ×"Ñ" 3¨Õ-ðˆIñ ð 7;·i±i×6IÑ6IÖJ¨d˜T Tš\ÐJˆMÐJØ×$Ñ$ T§Y¡Y×%7Ñ%7Ó8‰Cð 59·N±NÖC¨qÖ*ÐCˆIÐCØ59·^±^ÖD¨c˜SŸ\›\ÐDˆMÐDà!ŸY™Y¨*Ñ4ÒH¼¸d¿i¹i»ˆNÙÜ%‘ä'�ô �4˜Ô%Ø6:·n±nÖE¨s˜Ÿ™×*Ó*ÐEˆIÑEà04·±Ö?¨˜š ™Ð?ˆIÐ?ô ?BØ˜4Ÿ>™>¨9°mó?÷
ñ 
á:�˜( H¨lô �x ¨8°\ÕBð
ˆó 
ñ %ð
 �y‰yÐXÑXÜ'�ä˜T 3Ó'Ð'ùó[ùò Kùò DùÚDùò" Fùâ?ùõ
s*   ÁG&Â	G,Ã
G1Ã'G6ÅG;Å9H Æ%H
c                ó   — || j                   v S )z*Is the given module one compiled by mypyc?)r=   )rC   Úmodules     rD   Úis_native_modulezMapper.is_native_moduleç   s   € à˜Ÿ™Ð'Ð'rF   c                óà   — |j                   €yd|j                   j                  v rI|j                   j                  j                  d«      d   }| j                  |«      xs || j                  v S y)NFú.r   T)ÚnoderJ   Ú
rpartitionr‡   rA   )rC   Úexprrt   s      rD   Úis_native_ref_exprzMapper.is_native_ref_exprë   sd   € Ø�9‰9ÐØØ�$—)‘)×$Ñ$Ñ$Ø—9‘9×%Ñ%×0Ñ0°Ó5°aÑ8ˆDØ×(Ñ(¨Ó.ÒO°$¸$×:OÑ:OÐ2OÐOØrF   c                óN   — | j                  |«      xr |j                  t        k(  S r<   )r�   rc   r   )rC   rŒ   s     rD   Úis_native_module_ref_exprz Mapper.is_native_module_ref_expró   s!   € Ø×&Ñ& tÓ,ÒB°·±¼dÑ1BÐBrF   N)r=   zdict[str, str | None]ÚreturnÚNone)r^   zType | Noner�   r$   )r^   r   rc   r   r�   r$   )ry   r   rz   ru   r�   r   )r†   Ústrr�   ru   )rŒ   r	   r�   ru   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rE   rS   rd   r„   r‡   r�   r�   © rF   rD   r:   r:   7   s.   „ ñó<óc7óJ+ó/(ób(óôCrF   r:   N)>r–   Ú
__future__r   Ú
mypy.nodesr   r   r   r   r   r	   r
   r   Ú
mypy.typesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úmypyc.ir.class_irr   Úmypyc.ir.func_irr   r   r    Úmypyc.ir.rtypesr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r:   r—   rF   rD   ú<module>rž      si   ðÙ Då "ç a× aÓ a÷÷ ÷ ÷ õ õ& &ß @Ñ @÷÷ ÷ ÷ ÷ ÷ ó ÷8}Cò }CrF   