Ë
    pPêjØr  ã                  óô   — d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
mZmZ ddlmZmZ ddlmZmZmZmZmZ ddlmZmZ  G d	„ d
e«      Zee   Z G d„ d«      Z G d„ d«      Zdd„Zdd„Zdd„Z dd„Z!dd„Z"y)z'Intermediate representation of classes.é    )Úannotations)Ú
NamedTuple)ÚPROPSET_PREFIXÚJsonDict)ÚFuncDeclÚFuncIRÚFuncSignatureÚ
RuntimeArg)Ú	DeserMapsÚValue)Ú	RInstanceÚRTypeÚc_int_rprimitiveÚdeserialize_typeÚobject_rprimitive)ÚNameGeneratorÚexported_namec                  ó6   — e Zd ZU ded<   ded<   ded<   ded<   y	)
ÚVTableMethodz	'ClassIR'ÚclsÚstrÚnamer   ÚmethodúFuncIR | NoneÚshadow_methodN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úV/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypyc/ir/class_ir.pyr   r   H   s   … Ø	ƒNØ
ƒIØƒNØ Ô r!   r   c                  óV  — e Zd ZdZ	 	 	 	 	 d"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d#d„Zd$d„Zed$d„«       Zd%d„Zd&d„Z	d'd„Z
d(d	„Zd)d
„Zed*d„«       Zd*d„Zd+d„Zd,d„Zd-d„Zd)d„Zd)d„Zd)d„Zd)d„Zd)d„Zd.d„Zd.d„Zddœ	 	 	 	 	 d/d„Zddœd0d„Zd)d„Zd*d„Zd1d„Zd2d„Zd*d„Zd3d„Z e!d4d „«       Z"y!)5ÚClassIRzpIntermediate representation of a class.

    This also describes the runtime structure of native instances.
    Fc                ój  — || _         || _        || _        || _        || _        || _        || _        d| _        d| _        d| _	        d| _
        d| _        d| _        d | _        t        |d |t        g t!        | «      «      «      | _        t        d|z   dz   d |t        t%        dt&        «      gt!        | «      «      «      | _        t        |dz   d |t        t%        dt!        | «      «      gt*        «      d¬«      | _        t        |d	z   d |t        t%        dt!        | «      «      gt*        «      d¬«      | _        i | _        t3        «       | _        t3        «       | _        i | _        g | _        i | _        i | _        i | _         i | _!        i | _"        d | _#        g | _$        i | _%        d | _&        g | _'        | g| _(        | g| _)        g | _*        t3        «       | _+        t3        «       | _,        t3        «       | _-        d| _.        g | _/        d | _0        d| _1        d| _2        d| _3        d | _4        d| _5        d| _6        y )
NFÚ	__mypyc__Ú_setupÚtypeÚ_clearÚselfT)ÚinternalÚ_clear_on_completion)7r   Úmodule_nameÚis_traitÚis_generatedÚis_abstractÚis_ext_classÚis_final_classÚis_augmentedÚinherits_pythonÚhas_dictÚallow_interpreted_subclassesÚneeds_getsetersÚ_serializableÚbuiltin_baser   r	   r   Úctorr
   r   Úsetupr   ÚclearÚclear_on_completionÚ
attributesÚsetÚ!attrs_to_keep_alive_on_completionÚfinal_attributesÚclass_final_attributesÚ	deletableÚmethod_declsÚmethodsÚglue_methodsÚ
propertiesÚproperty_typesÚvtableÚvtable_entriesÚtrait_vtablesÚbaseÚtraitsÚmroÚbase_mroÚchildrenÚattrs_with_defaultsÚ_always_initialized_attrsÚ_sometimes_initialized_attrsÚinit_self_leakÚbitmap_attrsÚenv_user_functionÚreuse_freed_instanceÚ
is_acyclicÚis_enumÚcoroutine_nameÚhas_running_flagÚhas_private_generator_frame)r*   r   r-   r.   r/   r0   r1   r2   s           r"   Ú__init__zClassIR.__init__X   sd  € ð ˆŒ	Ø&ˆÔØ ˆŒØ(ˆÔØ&ˆÔØ(ˆÔØ,ˆÔð "ˆÔà$ˆÔàˆŒà,1ˆÔ)ð  %ˆÔð #ˆÔð )-ˆÔä˜T 4¨´mÀBÌ	ÐRVËÓ6XÓYˆŒ	ô
 Ø˜$Ñ Ñ)ØØÜœ: fÔ.?Ó@ÐAÄ9ÈTÃ?ÓSó	
ˆŒ
ô Ø�8‰OØØÜœ: f¬i¸«oÓ>Ð?ÔAQÓRØô
ˆŒ
ô $,ØÐ)Ñ)ØØÜœ: f¬i¸«oÓ>Ð?ÔAQÓRØô$
ˆÔ ð -/ˆŒô <?»5ˆÔ.ä*-«%ˆÔð 9;ˆÔ#à$&ˆŒð 24ˆÔà*,ˆŒð @BˆÔð DFˆŒð 13ˆÔà-1ˆŒØ-/ˆÔØ;=ˆÔð %)ˆŒ	Ø%'ˆŒð $( &ˆŒà(, vˆŒð /1ˆŒô .1«UˆÔ ô 47³5ˆÔ&ô 7:³eˆÔ)ð $ˆÔð (*ˆÔð 15ˆÔð %*ˆÔ!ð
  ˆŒð ˆŒð +/ˆÔð !&ˆÔð
 ,1ˆÕ(r!   c                ó&   — dj                  | ¬«      S )NzÝClassIR(name={self.name}, module_name={self.module_name}, is_trait={self.is_trait}, is_generated={self.is_generated}, is_abstract={self.is_abstract}, is_ext_class={self.is_ext_class}, is_final_class={self.is_final_class})©r*   )Úformatr_   s    r"   Ú__repr__zClassIR.__repr__	  s   € ð÷
 ‘˜D�Ó!ð	
r!   c                ó8   — | j                   › d| j                  › �S )Nú.)r-   r   r_   s    r"   ÚfullnamezClassIR.fullname  s   € à×"Ñ"Ð# 1 T§Y¡Y KÐ0Ð0r!   c                ó„   — t        | j                  «      dkD  r(| j                  d   j                  s| j                  d   S y)z7Return the actual concrete base class, if there is one.é   N)ÚlenrN   r.   r_   s    r"   Ú	real_basezClassIR.real_base  s3   € äˆt�x‰x‹=˜1Ò T§X¡X¨a¡[×%9Ò%9Ø—8‘8˜A‘;ÐØr!   c                óŽ   — | j                   €J d«       ‚|| j                   v sJ | j                  ›d|›�«       ‚| j                   |   S )Nzvtable not computed yetú has no attribute )rI   r   ©r*   r   s     r"   Úvtable_entryzClassIR.vtable_entry  sN   € Ø�{‰{Ð&ÐAÐ(AÓAÐ&Ø�t—{‘{Ñ"ÐN t§y¡y mÐ3EÀdÀXÐ$NÓNÐ"Ø�{‰{˜4Ñ Ð r!   c                óÜ   — | j                   D ]D  }||j                  v r|j                  |   |fc S ||j                  v sŒ3|j                  |   |fc S  t        | j                  ›d|›�«      ‚©Nrj   )rN   r>   rH   ÚKeyErrorr   ©r*   r   Úirs      r"   Úattr_detailszClassIR.attr_details"  sv   € Ø—(‘(ò 	3ˆBØ�r—}‘}Ñ$Ø—}‘} TÑ*¨BÐ.Ò.Ø�r×(Ñ(Ò(Ø×(Ñ(¨Ñ.°Ð2Ò2ð		3ô
 ˜$Ÿ)™)˜Ð&8¸¸ÐAÓBÐBr!   c                ó*   — | j                  |«      d   S )Nr   )rr   rk   s     r"   Ú	attr_typezClassIR.attr_type*  s   € Ø× Ñ  Ó& qÑ)Ð)r!   c                ó‚   — | j                   D ]0  }||j                  v r||j                  v c S ||j                  v sŒ0 y y)aô  Is the (possibly inherited) attribute Final, i.e. never rebound?

        A Final attribute is read-only at runtime (it has no setter) and is assigned
        exactly once during construction, so it can never be reassigned afterwards.
        This makes it safe to borrow on free-threaded builds (no concurrent store can
        invalidate a borrowed reference) and lets reads skip the concurrent-writer
        guard. Returns False for properties and for attributes this class doesn't have.
        F)rN   r>   rA   rH   rp   s      r"   Úis_final_attrzClassIR.is_final_attr-  sJ   € ð —(‘(ò 	ˆBØ�r—}‘}Ñ$Ø˜r×2Ñ2Ð2Ò2Ø�r×(Ñ(Ò(Ùð		ð
 r!   c                óT   — | j                   xs | j                   xs | j                  S )zCDo we generate a tp_getset table exposing the attributes to Python?)r7   r/   r5   r_   s    r"   Úneeds_getseters_tablezClassIR.needs_getseters_table=  s'   € ð ×#Ñ#ÒM¨4×+<Ñ+<Ð'<ÒMÀÇÁÐMr!   c                óT   — | j                   xr | j                  xr | j                   S )a„  Can these attributes safely use plain access in free-threaded builds?

        This requires the attributes to belong to a private generator frame, execution to
        be serialized by its running flag, and no Python getseters exposing the attributes.
        Captured locals in a separate environment don't qualify, since nested functions may
        access them independently.
        )r\   r[   rx   r_   s    r"   Úattrs_are_thread_confinedz!ClassIR.attrs_are_thread_confinedB  s1   € ð ×,Ñ,ò /Ø×%Ñ%ò/à×.Ñ.Ð.ð	
r!   c                ó¤   — | j                   D ]A  }||j                  v r|j                  |   |fc S ||j                  v s||j                  v sŒA y y)a  Look up a (possibly inherited) class-body Final attribute.

        Returns the attribute type and the class that defines it, or None if this
        class has no such attribute. The defining class is what identifies the
        static holding the value, so callers need it to build the static's name.

        Deliberately kept out of attr_details()/has_attr(): these attributes have no
        instance slot, so callers that want to read or write one must not treat them
        as ordinary attributes.
        N)rN   rB   r>   rH   rp   s      r"   Úclass_final_attr_detailsz ClassIR.class_final_attr_detailsP  s\   € ð —(‘(ò 	ˆBØ�r×0Ñ0Ñ0Ø×0Ñ0°Ñ6¸Ð:Ò:Ø�r—}‘}Ñ$¨°×0AÑ0AÒ(Aáð	ð r!   c                ó–   — | j                   D ]!  }||j                  v sŒ|j                  |   c S  t        | j                  ›d|›�«      ‚rn   )rN   rD   ro   r   rp   s      r"   Úmethod_declzClassIR.method_declc  sM   € Ø—(‘(ò 	-ˆBØ�r—‘Ò&Ø—‘ tÑ,Ò,ð	-ô ˜$Ÿ)™)˜Ð&8¸¸ÐAÓBÐBr!   c                ó8   — | j                  |«      j                  S ©N)r~   Úsigrk   s     r"   Ú
method_sigzClassIR.method_sigi  s   € Ø×Ñ Ó%×)Ñ)Ð)r!   c                óF   — 	 | j                  |«       y# t        $ r Y yw xY w©NFT)r~   ro   rk   s     r"   Ú
has_methodzClassIR.has_methodl  s.   € ð	Ø×Ñ˜TÔ"ð øô ò 	Ùð	úó   ‚ ”	 Ÿ c                óê   ‡— | j                  «       }|€| j                  S | j                  ‰«      r/| j                  ‰«      }|D ]  }|j                  ‰«      |k7  sŒ y yt	        ˆfd„|D «       «       S )NFTc              3  ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wr€   )r…   )Ú.0Úsubcr   s     €r"   ú	<genexpr>z*ClassIR.is_method_final.<locals>.<genexpr>  s   øè ø€ ÒB°T˜4Ÿ?™?¨4×0ÑBùs   ƒ)Ú
subclassesr2   r…   r~   Úany)r*   r   Úsubsr~   rŠ   s    `   r"   Úis_method_finalzClassIR.is_method_finals  sz   ø€ Ø�‰Ó ˆØˆ<Ø×&Ñ&Ð&à�?‰?˜4Ô Ø×*Ñ*¨4Ó0ˆKØò !�Ø×#Ñ# DÓ)¨[Ó8Ù ð!ð äÓB¸TÔBÓBÐBÐBr!   c                óF   — 	 | j                  |«       y# t        $ r Y yw xY wr„   )rt   ro   rk   s     r"   Úhas_attrzClassIR.has_attr�  s,   € ð	Ø�N‰N˜4Ô ð øô ò 	Ùð	úr†   c                ó@   ‡— t        ˆfd„| j                  D «       «      S )Nc              3  ó:   •K  — | ]  }‰|j                   v –— Œ y ­wr€   )rC   ©r‰   rq   r   s     €r"   r‹   z'ClassIR.is_deletable.<locals>.<genexpr>‰  s   øè ø€ Ò;¨B�4˜2Ÿ<™<Ô'Ñ;ùó   ƒ©r�   rN   rk   s    `r"   Úis_deletablezClassIR.is_deletableˆ  s   ø€ ÜÓ;°$·(±(Ô;Ó;Ð;r!   c                óB   — | j                  |«      ry|| j                  v S )NF)r—   rR   rk   s     r"   Úis_always_definedzClassIR.is_always_defined‹  s$   € Ø×Ñ˜TÔ"ØØ�t×5Ñ5Ð5Ð5r!   c                óN   — |j                  | j                  | j                  «      S r€   )Úprivate_namer-   r   ©r*   Únamess     r"   Úname_prefixzClassIR.name_prefix�  s   € Ø×!Ñ! $×"2Ñ"2°D·I±IÓ>Ð>r!   c                ó2   — t        | j                  «      › d�S )NÚObject)r   rd   rœ   s     r"   Ústruct_namezClassIR.struct_name“  s   € Ü §¡Ó.Ð/¨vÐ6Ð6r!   ©Úprefer_methodc               ó    — | j                   D ]?  }||j                  v sŒ|j                  |   }|s|j                  j                  r y ||fc S  y r€   )rN   rE   ÚdeclÚimplicit)r*   r   r£   rq   Úfunc_irs        r"   Úget_method_and_classzClassIR.get_method_and_class–  sT   € ð —(‘(ò 	#ˆBØ�r—z‘zÒ!ØŸ*™* TÑ*�Ù$¨¯©×)>Ò)>ñ  Ø �{Ò"ð	#ð r!   c               ó:   — | j                  ||¬«      }|r|d   S d S )Nr¢   r   )r¨   )r*   r   r£   Úress       r"   Ú
get_methodzClassIR.get_method¥  s(   € Ø×'Ñ'¨¸MÐ'ÓJˆÙˆs�1‰vÐ& $Ð&r!   c                ó@   ‡— t        ˆfd„| j                  D «       «      S )Nc              3  ó:   •K  — | ]  }‰|j                   v –— Œ y ­wr€   )rD   r”   s     €r"   r‹   z*ClassIR.has_method_decl.<locals>.<genexpr>ª  s   øè ø€ Ò>¨r�4˜2Ÿ?™?Ô*Ñ>ùr•   r–   rk   s    `r"   Úhas_method_declzClassIR.has_method_decl©  s   ø€ ÜÓ>°T·X±XÔ>Ó>Ð>r!   c                ó>   — | j                   g k(  xr | j                   S r€   )rP   r6   r_   s    r"   Úhas_no_subclasseszClassIR.has_no_subclasses¬  s   € Ø�}‰} Ñ"ÒL¨4×+LÑ+LÐ'LÐLr!   c                óè   — | j                   �| j                  ryt        | j                   «      }| j                   D ]4  }|j                   sŒ|j                  «       }|€ y|j	                  |«       Œ6 |S )zÐReturn all subclasses of this class, both direct and indirect.

        Return None if it is impossible to identify all subclasses, for example
        because we are performing separate compilation.
        N)rP   r6   r?   rŒ   Úupdate)r*   ÚresultÚchildÚ
child_subss       r"   rŒ   zClassIR.subclasses¯  sk   € ð �=‰=Ð  D×$EÒ$EØÜ�T—]‘]Ó#ˆØ—]‘]ò 	*ˆEØ�~‹~Ø"×-Ñ-Ó/�
ØÐ%ÙØ—‘˜jÕ)ð	*ð ˆr!   c                ó    — | j                  «       }|€y|D �ch c]  }|j                  rŒ|j                  rŒ|’Œ  }}t        |d„ ¬«      S c c}w )z¦Return all concrete (i.e. non-trait and non-abstract) subclasses.

        Include both direct and indirect subclasses. Place classes with no children first.
        Nc                óL   — t        | j                  xs g «      | j                  fS r€   )rg   rP   r   )Úcs    r"   ú<lambda>z-ClassIR.concrete_subclasses.<locals>.<lambda>Ì  s   € ¬s°1·:±:Ò3CÀÓ/DÀaÇfÁfÐ.M€ r!   )Úkey)rŒ   r.   r0   Úsorted)r*   rŽ   r¸   Úconcretes       r"   Úconcrete_subclasseszClassIR.concrete_subclassesÀ  sM   € ð
 �‰Ó ˆØˆ<ØØ#ÖI˜!¨A¯J«J¸!¿-»-’AÐIˆÐIô �hÑ$MÔNÐNùò	 Js   ˜AªA·Ac                ó:   — t        d„ | j                  D «       «      S )Nc              3  ó4   K  — | ]  }|j                   –— Œ y ­wr€   )r8   )r‰   Úcis     r"   r‹   z*ClassIR.is_serializable.<locals>.<genexpr>Ï  s   è ø€ Ò7¨�2×#Õ#Ñ7ùs   ‚r–   r_   s    r"   Úis_serializablezClassIR.is_serializableÎ  s   € ÜÑ7¨d¯h©hÔ7Ó7Ð7r!   c                ó
  — i d| j                   “d| j                  “d| j                  “d| j                  “d| j                  “d| j
                  “d| j                  “d| j                  “d	| j                  “d
| j                  “d| j                  “d| j                  “d| j                  “d| j                  “d| j                  j                  «       “d| j                   j                  «       “d| j"                  j                  «       “i d| j$                  j'                  «       D ��cg c]  \  }}||j                  «       f‘Œ c}}“dt)        | j*                  «      “dt)        | j,                  «      “d| j.                  j'                  «       D ��cg c]  \  }}||j                  «       f‘Œ c}}“d| j0                  j'                  «       D ��cg c]1  \  }}||| j2                  v r|j4                  n|j                  «       f‘Œ3 c}}“d| j2                  j'                  «       D ��cg c]  \  }}||j4                  f‘Œ c}}“d| j6                  j'                  «       D ���cg c]"  \  \  }}}|j8                  |f|j4                  f‘Œ$ c}}}“d| j:                  j'                  «       D ��cg c]  \  }}||j                  «       f‘Œ c}}“dt=        | j>                  «      “d| j@                  “dtC        | jD                  «      “d| jF                  j'                  «       D ��cg c]  \  }}|j8                  tC        |«      f‘Œ c}}“d| jH                  r| jH                  j8                  nd “d| jJ                  D �cg c]  }|j8                  ‘Œ c}“d | jL                  D �cg c]  }|j8                  ‘Œ c}“d!| jN                  D �cg c]  }|j8                  ‘Œ c}“d"| jP                  �$| jP                  D �cg c]  }|j8                  ‘Œ c}nd “¥| jR                  t)        | jT                  «      t)        | jV                  «      t)        | jX                  «      | jZ                  | j\                  r| j\                  j4                  nd | j^                  | j`                  | jb                  | jd                  | jf                  | jh                  d#œ¥S c c}}w c c}}w c c}}w c c}}w c c}}}w c c}}w c c}}w c c}w c c}w c c}w c c}w )$Nr   r-   r.   r1   r0   r/   r3   r2   r4   r5   r6   r7   r8   r9   r:   r<   r=   r>   r@   rA   rB   rD   rE   rF   rH   rG   rI   rJ   rK   rL   rM   rN   rO   rP   )rC   rQ   rR   rS   rT   rV   rW   r[   r\   rX   rY   Úis_coroutine)5r   r-   r.   r1   r0   r/   r3   r2   r4   r5   r6   r7   r8   r9   r:   Ú	serializer<   r=   r>   Úitemsr»   r@   rA   rB   rD   rE   ÚidrF   rd   rH   ÚlistrG   rI   Úserialize_vtablerJ   rK   rL   rM   rN   rO   rP   rC   rQ   rR   rS   rT   rV   rW   r[   r\   rX   rY   rZ   )r*   ÚkÚtÚdÚmÚcirÚvs          r"   rÄ   zClassIR.serializeÑ  s	  € ðA
Ø�D—I‘IðA
à˜4×+Ñ+ðA
ð ˜Ÿ™ðA
ð ˜D×-Ñ-ð	A
ð
 ˜4×+Ñ+ðA
ð ˜D×-Ñ-ðA
ð ˜D×-Ñ-ðA
ð ˜d×1Ñ1ðA
ð ˜t×3Ñ3ðA
ð ˜Ÿ™ðA
ð +¨D×,MÑ,MðA
ð ˜t×3Ñ3ðA
ð ˜T×/Ñ/ðA
ð ˜D×-Ñ-ðA
ð �D—I‘I×'Ñ'Ó)ðA
ð  �T—Z‘Z×)Ñ)Ó+ð!A
ð" " 4×#;Ñ#;×#EÑ#EÓ#Gñ#A
ð& ¸$¿/¹/×:OÑ:OÓ:Q×R±$°!°Q˜A˜qŸ{™{›}Ò-ÓRð'A
ð( 0´¸×8^Ñ8^Ó1_ð)A
ð* ¤ t×'<Ñ'<Ó =ð+A
ð, %Ø/3×/JÑ/J×/PÑ/PÓ/R÷'Ù'+ q¨!��A—K‘K“MÒ"ó'ð-A
ð6 à ×-Ñ-×3Ñ3Ó5÷á�A�qð ˜A §¡Ñ-�A—D’D°1·;±;³=ÒAóð7A
ð@ ¨d¯l©l×.@Ñ.@Ó.B×C¡d a¨˜˜AŸD™Dš	ÓCðAA
ðB Ø=A×=NÑ=N×=TÑ=TÓ=V÷ð Ù.9©h¨s°A¸�#—,‘, Ð" A§D¡DÒ)ôðCA
ðL ¸d×>QÑ>Q×>WÑ>WÓ>Y×Z±d°a¸  1§;¡;£=Ò1ÓZðMA
ðN œ$˜tŸ™Ó/ðOA
ðP �d—k‘kðQA
ðR Ô.¨t×/BÑ/BÓCðSA
ðT ØBF×BTÑBT×BZÑBZÓB\÷Ù8>¸¸Q�—‘Ô/°Ó2Ò3óðUA
ð\ ¨$¯)ª)�D—I‘I×&Ò&¸ð]A
ð^ ¨t¯{©{Ö;¨�s—|“|Ò;ð_A
ð` ¨D¯H©HÖ5 S�C—L“LÒ5ðaA
ðb °·±Ö?¨#˜Ÿ›Ò?ðcA
ðd Ø;?¿=¹=Ð;T¨¯©Ö7 #�—“Ó7ÐZ^ñgA
ðj Ÿ™Ü#)¨$×*BÑ*BÓ#CÜ)/°×0NÑ0NÓ)OÜ,2°4×3TÑ3TÓ,UØ"×1Ñ1Ø>B×>TÒ>T ×!7Ñ!7×!:Ò!:ÐZ^Ø$(×$=Ñ$=Ø $× 5Ñ 5Ø+/×+KÑ+KØŸ/™/Ø—|‘|Ø ×/Ñ/òAA
ð A	
ùó& Sùó'ùó
ùó
 Dùôùó
 [ùóùò
 <ùÚ5ùÚ?ùâ7sB   Ä(SÆSÇ6SÈ(SÉ#'S$Ê-S+Ì$!S1Í=S7
Î"S<
ÏT
Ï8T
c           	     óp	  — |d   dz   |d   z   }||j                   v s
J d|z  «       ‚|j                   |   }|d   |_        |d   |_        |d   |_        |d   |_        |d	   |_        |d
   |_        |d   |_        |d   |_        |d   |_	        |d   |_
        |d   |_        |d   |_        t        j                  |d   |«      |_        t        j                  |d   |«      |_        t        j                  |d   |«      |_        |d   D ��ci c]  \  }}|t%        ||«      “Œ c}}|_        t)        |d   «      |_        t)        |d   «      |_        |d   D ��ci c]  \  }}|t%        ||«      “Œ c}}|_        |d   D ��ci c]E  \  }}|t1        |t2        «      r|j4                  |   j6                  nt        j                  ||«      “ŒG c}}|_        |d   D ��ci c]  \  }}||j4                  |   “Œ c}}|_        |d   D ���ci c]'  \  \  }}}|j                   |   |f|j4                  |   “Œ) c}}}|_        |d   D ��ci c]  \  }}|t%        ||«      “Œ c}}|_        |d   D �ci c]4  }||j:                  |   |j:                  jA                  tB        |z   «      f“Œ6 c}|_"        |d   |_#        tI        |d   |«      |_%        |d   D ��ci c]  \  }}|j                   |   tI        ||«      “Œ! c}}|_&        |d    }	|	r|j                   |	   nd |_'        |d!   D �
cg c]  }
|j                   |
   ‘Œ c}
|_(        |d"   D �
cg c]  }
|j                   |
   ‘Œ c}
|_)        |d#   D �
cg c]  }
|j                   |
   ‘Œ c}
|_*        |d$   xr  |d$   D �
cg c]  }
|j                   |
   ‘Œ c}
|_+        |d%   |_,        t)        |d&   «      |_-        t)        |d'   «      |_.        t)        |d(   «      |_/        |d)   |_0        |d*   r|j4                  |d*      nd |_1        |d+   |_2        |d,   |_3        |d-   |_4        |jA                  d.d/«      |_5        |d0   |_6        |d1   |_7        |S c c}}w c c}}w c c}}w c c}}w c c}}}w c c}}w c c}w c c}}w c c}
w c c}
w c c}
w c c}
w )2Nr-   rc   r   zClass %s not in deser class mapr.   r/   r0   r1   r3   r2   r4   r5   r6   r7   r8   r9   r:   r<   r=   r>   r@   rA   rB   rD   rE   rF   rH   rG   rI   rJ   rK   rL   rM   rN   rO   rP   rC   rQ   rR   rS   rT   rV   rW   r[   r\   rX   FrY   rÃ   )8Úclassesr.   r/   r0   r1   r3   r2   r4   r5   r6   r7   r8   r9   r   Údeserializer:   r<   r=   r   r>   r?   r@   rA   rB   Ú
isinstancer   Ú	functionsr¥   rD   rE   rF   rH   Úgetr   rG   rI   Údeserialize_vtablerJ   rK   rL   rM   rN   rO   rP   rC   rQ   rR   rS   rT   rV   rW   r[   r\   rX   rY   rZ   )r   ÚdataÚctxrd   rq   rÉ   rÊ   rÎ   r¸   rL   Úss              r"   rÑ   zClassIR.deserialize  sß  € à˜Ñ&¨Ñ,¨t°F©|Ñ;ˆØ˜3Ÿ;™;Ñ&ÐTÐ(IÈHÑ(TÓTÐ&Ø�[‰[˜Ñ"ˆà˜:Ñ&ˆŒØ˜~Ñ.ˆŒØ˜mÑ,ˆŒØ˜~Ñ.ˆŒØ˜~Ñ.ˆŒØ Ð!1Ñ2ˆÔØ!Ð"3Ñ4ˆÔØ˜:Ñ&ˆŒØ*.Ð/MÑ*NˆÔ'Ø!Ð"3Ñ4ˆÔØ Ñ0ˆÔØ˜~Ñ.ˆŒÜ×&Ñ& t¨F¡|°SÓ9ˆŒÜ×'Ñ'¨¨W©°sÓ;ˆŒÜ!)×!5Ñ!5°dÐ;PÑ6QÐSVÓ!WˆÔØAEÀlÑAS×T¹¸¸A˜Ô,¨Q°Ó4Ñ4ÓTˆŒÜ/2°4Ð8[Ñ3\Ó/]ˆÔ,Ü! $Ð'9Ñ":Ó;ˆÔà48Ð9QÑ4R÷%
Ù,0¨A¨qˆAÔ  3Ó'Ñ'ó%
ˆÔ!ð
 ˜^Ñ,÷
á��1ð ¬
°1´cÔ(:ˆs�}‰}˜QÑ×$Ò$Ä×@TÑ@TÐUVÐX[Ó@\Ñ\ó
ˆŒð 7;¸9±o×F©d¨a°�a˜Ÿ™ qÑ)Ñ)ÓFˆŒ
àCGÈÑCW÷
ð 
Ù6?±f°q¸!¸aˆS�[‰[˜‰^˜QÐ §¡¨qÑ!1Ñ1ô
ˆŒð FJÐJZÑE[×\¹T¸QÀ˜QÔ 0°°CÓ 8Ñ8Ó\ˆÔàLPÐQ]ÑL^ö
ØGHˆA�—
‘
˜1‘˜rŸz™zŸ~™~¬n¸qÑ.@ÓAÐBÑBò
ˆŒð ˜‘NˆŒ	Ü.¨tÐ4DÑ/EÀsÓKˆÔàCGÈÑCX÷
Ù;?¸1¸aˆC�K‰K˜‰NÔ.¨q°#Ó6Ñ6ó
ˆÔð �F‰|ˆÙ'+�#—+‘+˜dÒ#°ˆŒØ-1°(©^Ö<¨�S—[‘[ “^Ò<ˆŒ	Ø*.¨u©+Ö6 Q�#—+‘+˜a“.Ò6ˆŒØ/3°JÑ/?Ö@¨!�s—{‘{ 1“~Ò@ˆŒØ˜:Ñ&ÒUÀDÈÑDTÖ+U¸q¨C¯K©K¸«NÒ+UˆŒØ˜KÑ(ˆŒÜ!$ TÐ*?Ñ%@Ó!AˆÔÜ'*¨4Ð0KÑ+LÓ'MˆÔ$Ü*-¨dÐ3QÑ.RÓ*SˆÔ'Ø Ð!1Ñ2ˆÔà8<Ð=PÒ8QˆC�M‰M˜$Ð2Ñ3Ò4ÐW[ð 	Ôð #'Ð'=Ñ">ˆÔØ"Ð#5Ñ6ˆÔØ)-Ð.KÑ)LˆÔ&ØŸ™ ¨uÓ5ˆŒØ˜)‘_ˆŒ
Ø  Ñ0ˆÔàˆ	ùó] Uùó%
ùó
ùó Gùô
ùó ]ùò
ùó
ùò =ùÚ6ùÚ@ùÚ+UsI   ÄQ4ÅQ:ÆA
R Ç!RÈ,RÉRÉ29RË$RÌ*R$ÍR)Í4R.Î R3N)FFFTF)r   r   r-   r   r.   Úboolr/   rÙ   r0   rÙ   r1   rÙ   r2   rÙ   ÚreturnÚNone)rÚ   r   )rÚ   zClassIR | None)r   r   rÚ   Úint)r   r   rÚ   ztuple[RType, ClassIR])r   r   rÚ   r   )r   r   rÚ   rÙ   )rÚ   rÙ   )r   r   rÚ   ztuple[RType, ClassIR] | None)r   r   rÚ   r   )r   r   rÚ   r	   )r�   r   rÚ   r   )r   r   r£   rÙ   rÚ   ztuple[FuncIR, ClassIR] | None)r   r   r£   rÙ   rÚ   r   )rÚ   zset[ClassIR] | None)rÚ   úlist[ClassIR] | None)rÚ   r   )rÖ   r   r×   r   rÚ   r$   )#r   r   r   Ú__doc__r]   ra   Úpropertyrd   rh   rl   rr   rt   rv   rx   rz   r|   r~   r‚   r…   r�   r‘   r—   r™   rž   r¡   r¨   r«   r®   r°   rŒ   r½   rÁ   rÄ   ÚclassmethodrÑ   r    r!   r"   r$   r$   R   s\  „ ñð Ø"Ø!Ø!Ø$ðo1àðo1ð ðo1ð ð	o1ð
 ðo1ð ðo1ð ðo1ð ðo1ð 
óo1ób
ð ò1ó ð1óó!ó
Có*óð  òNó ðNó
óó&Có*óóCóó<ó6ó
?ó7ð 38ñØðØ+/ðà	&óð >Cõ 'ó?óMóó"Oó8óB
ðH òBó ñBr!   r$   c                  ó   — e Zd ZdZdd„Zy)ÚNonExtClassInfozÀInformation needed to construct a non-extension class (Python class).

    Includes the class dictionary, a tuple of base classes,
    the class annotations dictionary, and the metaclass.
    c                ó<   — || _         || _        || _        || _        y r€   )ÚdictÚbasesÚannsÚ	metaclass)r*   rä   rå   ræ   rç   s        r"   r]   zNonExtClassInfo.__init__b  s   € ØˆŒ	ØˆŒ
ØˆŒ	Ø"ˆ�r!   N)
rä   r   rå   r   ræ   r   rç   r   rÚ   rÛ   )r   r   r   rÞ   r]   r    r!   r"   râ   râ   [  s   „ ñô#r!   râ   c                óæ   — d| j                   j                  | j                  | j                  j                  j
                  | j                  r"| j                  j                  j
                  dœS d dœS )Nr   )ú.classr   r   r   r   )r   rd   r   r   r¥   rÆ   r   )Úentrys    r"   Úserialize_vtable_entryrë   i  sd   € à Ø�y‰y×!Ñ!Ø—
‘
Ø—,‘,×#Ñ#×&Ñ&Ø8=×8KÒ8K˜×,Ñ,×1Ñ1×4Ñ4ñð ð
 RVñð r!   c                ó>   — | D �cg c]  }t        |«      ‘Œ c}S c c}w r€   )rë   )rI   rÎ   s     r"   rÈ   rÈ   s  s   € Ø/5Ö6¨!Ô" 1Õ%Ò6Ð6ùÒ6s   …c                óÄ   — | d   dk(  rLt        |j                  | d      | d   |j                  | d      | d   r|j                  | d      «      S d «      S J d| d   z  «       ‚)Nré   r   r   r   r   r   zBogus vtable .class: %s)r   rÐ   rÓ   )rÖ   r×   s     r"   Údeserialize_vtable_entryrî   w  s�   € ØˆH�~˜Ò'ÜØ�K‰K˜˜U™Ñ$Ø�‰LØ�M‰M˜$˜x™.Ñ)Ø48¸Ò4IˆC�M‰M˜$˜Ñ/Ñ0ó	
ð 	
ð PTó	
ð 	
ð =Ð+¨d°8©nÑ<Ó<ˆ5r!   c                ó@   — | D �cg c]  }t        ||«      ‘Œ c}S c c}w r€   )rî   )rÖ   r×   Úxs      r"   rÕ   rÕ   ‚  s   € Ø6:Ö;°Ô$ Q¨Õ,Ò;Ð;ùÒ;s   …c                ó~   — | j                  «       }|€y| j                  s| j                  s|j                  | «       |S )zFReturn all concrete classes among the class itself and its subclasses.N)r½   r0   r.   Úappend)Úclass_irr¼   s     r"   Úall_concrete_classesrô   †  s;   € à×+Ñ+Ó-€HØÐØØ× Ò  H×$5Ò$5Ø�‰˜Ô!Ø€Or!   N)rê   r   rÚ   r   )rI   ÚVTableEntriesrÚ   úlist[JsonDict])rÖ   r   r×   r   rÚ   r   )rÖ   rö   r×   r   rÚ   rõ   )ró   r$   rÚ   rÝ   )#rÞ   Ú
__future__r   Útypingr   Úmypyc.commonr   r   Úmypyc.ir.func_irr   r   r	   r
   Úmypyc.ir.opsr   r   Úmypyc.ir.rtypesr   r   r   r   r   Úmypyc.namegenr   r   r   rÇ   rõ   r$   râ   rë   rÈ   rî   rÕ   rô   r    r!   r"   ú<module>rþ      sl   ðÙ -å "å ç 1ß HÓ Hß )ß cÕ cß 6ôz!�:ô !ð �\Ñ"€÷Fñ F÷R#ñ #óó7ó=ó<ôr!   