Ë
    pPêjÍ  ã                  óš   — d 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 ddlmZmZ ddlmZ ddlmZmZ  G d	„ d
«      Zdd„Zeeef   Zy)z'Intermediate representation of modules.é    )Úannotations)ÚJsonDict)ÚClassIR)ÚCapsuleÚ
DependencyÚ	HeaderDepÚ	SourceDep)ÚFuncDeclÚFuncIR)Ú	DeserMaps)ÚRTypeÚdeserialize_typec                  óN   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zedd„«       Zy)	ÚModuleIRz(Intermediate representation of a module.c                ó’   — || _         |j                  «       | _        || _        || _        || _        || _        t        «       | _        y ©N)	ÚfullnameÚcopyÚimportsÚ	functionsÚclassesÚfinal_namesÚtype_var_namesÚsetÚdependencies)Úselfr   r   r   r   r   r   s          úW/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypyc/ir/module_ir.pyÚ__init__zModuleIR.__init__   sB   € ð !ˆŒØ—|‘|“~ˆŒØ"ˆŒØˆŒØ&ˆÔð -ˆÔä-0«UˆÕó    c                ó  — g }t        | j                  d„ ¬«      D ]¿  }t        |t        «      r|j	                  d|j
                  dœ«       Œ2t        |t        «      r7d|j                  |j                  |j                  dœ}|j	                  |«       Œyt        |t        «      sŒŠd|j                  |j                  |j                  dœ}|j	                  |«       ŒÁ | j                  | j                  | j                  D �cg c]  }|j                  «       ‘Œ c}| j                  D �cg c]  }|j                  «       ‘Œ c}| j                   D ��cg c]  \  }}||j                  «       f‘Œ c}}|dœS c c}w c c}w c c}}w )	Nc                óB   — t        | «      j                  t        | «      fS r   )ÚtypeÚ__name__Ústr)Úds    r   ú<lambda>z$ModuleIR.serialize.<locals>.<lambda>(   s   € ¼DÀ»G×<LÑ<LÌcÐRSËfÐ;U€ r   )Úkeyr   )r"   Únamer	   )r"   ÚpathÚinclude_dirsÚinternalr   )r   r   r   r   r   r   )Úsortedr   Ú
isinstancer   Úappendr(   r	   r)   r*   r+   r   r   r   r   Ú	serializer   r   )	r   Úserialized_depsÚdepÚ
source_depÚ
header_depÚfÚcÚkÚts	            r   r/   zModuleIR.serialize%   s7  € àˆÜ˜$×+Ñ+Ñ1UÔVò 	3ˆCÜ˜#œwÔ'Ø×&Ñ&°	À3Ç8Á8Ñ'LÕMÜ˜C¤Ô+à'ØŸH™HØ$'×$4Ñ$4Ø #§¡ñ	(�
ð  ×&Ñ& zÕ2Ü˜C¤Õ+à'ØŸH™HØ$'×$4Ñ$4Ø #§¡ñ	(�
ð  ×&Ñ& zÕ2ð%	3ð* Ÿ™Ø—|‘|Ø15·±Ö@¨A˜!Ÿ+™+�-Ò@Ø/3¯|©|Ö<¨!˜Ÿ™�Ò<Ø;?×;KÑ;K×L±4°1°a˜Q §¡£Ò.ÓLØ+ñ
ð 	
ùò AùÚ<ùÛLs   ÄE3Ä(E8
ÅE=c                ó€  — t        |d   |d   |d   D �cg c]$  }|j                  t        j                  |«         ‘Œ& c}|d   D �cg c]  }t	        j
                  ||«      ‘Œ c}|d   D ��cg c]  \  }}|t        ||«      f‘Œ c}}g «      }t        «       }|d   D ]†  }	|	d   dk(  r|j                  t        |	d	   «      «       Œ)|	d   d
k(  r'|j                  t        |	d   |	d   |	d   ¬«      «       ŒX|	d   dk(  sŒa|j                  t        |	d   |	d   |	d   ¬«      «       Œˆ ||_        |S c c}w c c}w c c}}w )Nr   r   r   r   r   r   r"   r   r(   r	   r)   r*   r+   )r*   r+   r   )r   r   r
   Úget_id_from_jsonr   Údeserializer   r   Úaddr   r	   r   r   )
ÚclsÚdataÚctxr4   r5   r6   r7   ÚmoduleÚdepsÚdep_dicts
             r   r:   zModuleIR.deserializeE   sW  € äØ�ÑØ�‰OØBFÀ{ÑBSÖT¸QˆS�]‰]œ8×4Ñ4°QÓ7Ó8ÒTØ26°y±/ÖB¨QŒW× Ñ   CÕ(ÒBØ7;¸MÑ7J×K©t¨q°!ˆaÔ! ! SÓ)Ò*ÓKØó
ˆô !$£ˆØ˜^Ñ,ò 	ˆHØ˜Ñ 9Ò,Ø—‘œ ¨&Ñ!1Ó2Õ3Ø˜&Ñ! [Ò0Ø—‘ÜØ  Ñ(Ø%-¨nÑ%=Ø!)¨*Ñ!5ôõð ˜&Ñ! [Ó0Ø—‘ÜØ  Ñ(Ø%-¨nÑ%=Ø!)¨*Ñ!5ôõð	ð& #ˆÔàˆùò; UùÚBùÛKs   •)D0ÁD5Á.D:N)r   r$   r   ú	list[str]r   zlist[FuncIR]r   zlist[ClassIR]r   zlist[tuple[str, RType]]r   rB   ÚreturnÚNone)rC   r   )r=   r   r>   r   rC   r   )r#   Ú
__module__Ú__qualname__Ú__doc__r   r/   Úclassmethodr:   © r   r   r   r      sh   „ Ù2ð3àð3ð ð3ð  ð	3ð
 ð3ð -ð3ð "ð3ð 
ó3ó*
ð@ ò!ó ñ!r   r   c           	     óš  — | j                  «       D ]c  }|d   D ]Y  }t        |d   |d   «      }|j                  |j                  vsJ d|j                  z  «       ‚||j                  |j                  <   Œ[ Œe | j                  «       D ]…  }|d   D ]{  }t	        j
                  ||«      }|j                  j                  |j                  vsJ d|j                  j                  z  «       ‚||j                  |j                  j                  <   Œ} Œ‡ | j                  «       D ��ci c]  \  }}|t        j                  ||«      “Œ c}}S c c}}w )aG  Deserialize a collection of modules.

    The modules can contain dependencies on each other.

    Arguments:
        data: A dict containing the modules to deserialize.
        ctx: The deserialization maps to use and to populate.
             They are populated with information from the deserialized
             modules and as a precondition must have been populated by
             deserializing any dependencies of the modules being deserialized
             (outside of dependencies between the modules themselves).

    Returns a map containing the deserialized modules.
    r   r(   Úmodule_namezClass %s already in mapr   zMethod %s already in map)Úvaluesr   r   r   r   r:   ÚdeclÚidr   Úitemsr   )	r=   r>   Úmodr<   ÚirÚmethodÚfuncr6   Úvs	            r   Údeserialize_modulesrU   j   s4  € ð �{‰{‹}ò *ˆà�y‘>ò 	*ˆCÜ˜˜V™ c¨-Ñ&8Ó9ˆBØ—;‘; c§k¡kÑ1ÐZÐ3LÈrÏ{É{Ñ3ZÓZÐ1Ø')ˆC�K‰K˜Ÿ™Ò$ñ	*ð*ð �{‰{‹}ò /ˆð ˜+Ñ&ò 	/ˆFÜ×%Ñ% f¨cÓ2ˆDØ—9‘9—<‘< s§}¡}Ñ4ð Ø*¨T¯Y©Y×-?Ñ-?Ñ?óÐ4ð +/ˆC�M‰M˜$Ÿ)™)Ÿ,™,Ò'ñ	/ð/ð 9=¿
¹
»×E±°°1ˆAŒx×#Ñ# A sÓ+Ñ+ÓEÐEùÓEs   Ä"!EN)r=   zdict[str, JsonDict]r>   r   rC   zdict[str, ModuleIR])rG   Ú
__future__r   Úmypyc.commonr   Úmypyc.ir.class_irr   Úmypyc.ir.depsr   r   r   r	   Úmypyc.ir.func_irr
   r   Úmypyc.ir.opsr   Úmypyc.ir.rtypesr   r   r   rU   Údictr$   Ú	ModuleIRsrI   r   r   ú<module>r_      sD   ðÙ -å "å !Ý %ß CÓ Cß -Ý "ß 3÷Zñ Zóz FðJ ��h�Ñ�	r   