
    hi\                    
   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 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!dS )%z'Intermediate representation of classes.    )annotations)
NamedTuple)PROPSET_PREFIXJsonDict)FuncDeclFuncIRFuncSignature
RuntimeArg)	DeserMapsValue)	RInstanceRTypedeserialize_typeobject_rprimitive)NameGeneratorexported_namec                  8    e Zd ZU ded<   ded<   ded<   ded<   d	S )
VTableMethodz	'ClassIR'clsstrnamer   methodFuncIR | Noneshadow_methodN)__name__
__module____qualname____annotations__     a/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/mypyc/ir/class_ir.pyr   r   H   s9         NNNIIINNN      r    r   c                     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
dAdZdBdZdCdZdDdZdDdZdDd ZdDd!ZdDd"ZdEd%ZdEd&Zdd'dFd*Zdd'dGd,ZdDd-ZdHd.ZdId0ZdJd2ZdHd3ZdKd5ZedLd9            Zd:S )MClassIRzpIntermediate representation of a class.

    This also describes the runtime structure of native instances.
    FTr   r   module_nameis_traitboolis_generatedis_abstractis_ext_classis_final_classreturnNonec                T   || _         || _        || _        || _        || _        || _        || _        d| _        d| _        d| _	        d| _
        d| _        d| _        d | _        t          |d |t          g t!          |                               | _        t          d|z   dz   d |t          t%          dt&                    gt!          |                               | _        i | _        g | _        i | _        i | _        i | _        i | _        i | _        d | _        g | _        i | _        d | _        g | _         | g| _!        | g| _"        g | _#        tI                      | _%        tI                      | _&        tI                      | _'        d| _(        g | _)        d | _*        d| _+        d| _,        d S )NF	__mypyc___setuptype)-r   r$   r%   r'   r(   r)   r*   is_augmentedinherits_pythonhas_dictallow_interpreted_subclassesneeds_getseters_serializablebuiltin_baser   r	   r   ctorr
   r   setup
attributes	deletablemethod_declsmethodsglue_methods
propertiesproperty_typesvtablevtable_entriestrait_vtablesbasetraitsmrobase_mrochildrensetattrs_with_defaults_always_initialized_attrs_sometimes_initialized_attrsinit_self_leakbitmap_attrsenv_user_functionreuse_freed_instanceis_enum)selfr   r$   r%   r'   r(   r)   r*   s           r!   __init__zClassIR.__init__X   s    	& (&(, "$,1)  % # )-T4mB	RV6X6XYY	
 $):f.?@@A9T??SS	
 

 -/$& 24*, @B DF 13-1-/;= %)	%' $(&(,v /1 .1UU  4755& 7:ee) $ (* 15 %*! r    c                .    d                     |           S )NzClassIR(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})rR   )formatrU   s    r!   __repr__zClassIR.__repr__   s    
 D!!	
r    c                $    | j          d| j         S )N.)r$   r   rU   s    r!   fullnamezClassIR.fullname   s    "00TY000r    ClassIR | Nonec                t    t          | j                  dk    r| j        d         j        s| j        d         S dS )z7Return the actual concrete base class, if there is one.   N)lenrF   r%   rU   s    r!   	real_basezClassIR.real_base   s4    tx==1TXa[%98A;tr    intc                x    | j         
J d            || j         v sJ | j        d|            | j         |         S )Nzvtable not computed yet has no attribute )rA   r   rR   r   s     r!   vtable_entryzClassIR.vtable_entry   sQ    {&&(A&&&t{"""ty$N$Nd$N$N"""{4  r    tuple[RType, ClassIR]c                    | j         D ]6}||j        v r|j        |         |fc S ||j        v r|j        |         |fc S 7t          | j        d|          Nrb   )rF   r:   r@   KeyErrorr   rR   r   irs      r!   attr_detailszClassIR.attr_details   s    ( 	3 	3Br}$$}T*B....r((((.2222 )$)AAAABBBr    r   c                8    |                      |          d         S )Nr   )rk   rc   s     r!   	attr_typezClassIR.attr_type  s      &&q))r    r   c                x    | j         D ]}||j        v r|j        |         c S t          | j        d|          rg   )rF   r<   rh   r   ri   s      r!   method_declzClassIR.method_decl  sV    ( 	- 	-Br&&t,,,, '$)AAAABBBr    r	   c                6    |                      |          j        S N)ro   sigrc   s     r!   
method_sigzClassIR.method_sig  s    %%))r    c                V    	 |                      |           n# t          $ r Y dS w xY wdS NFT)ro   rh   rc   s     r!   
has_methodzClassIR.has_method  sE    	T"""" 	 	 	55	t    
&&c                   |                                  }|| j        S |                               r8|                               }|D ]}|                              |k    r dS dS t	          fd|D                        S )NFTc              3  B   K   | ]}|                               V  d S rq   )rv   ).0subcr   s     r!   	<genexpr>z*ClassIR.is_method_final.<locals>.<genexpr>"  s/      BBT4??400BBBBBBr    )
subclassesr*   rv   ro   any)rR   r   subsro   r{   s    `   r!   is_method_finalzClassIR.is_method_final  s      <&&??4   	C**400K ! !##D))[88 55 94BBBBTBBBBBBBr    c                V    	 |                      |           n# t          $ r Y dS w xY wdS ru   )rm   rh   rc   s     r!   has_attrzClassIR.has_attr$  sC    	NN4     	 	 	55	trw   c                D    t          fd| j        D                       S )Nc              3  *   K   | ]}|j         v V  d S rq   )r;   rz   rj   r   s     r!   r|   z'ClassIR.is_deletable.<locals>.<genexpr>,  s*      ;;B42<';;;;;;r    r~   rF   rc   s    `r!   is_deletablezClassIR.is_deletable+  s(    ;;;;$(;;;;;;r    c                B    |                      |          rdS || j        v S )NF)r   rK   rc   s     r!   is_always_definedzClassIR.is_always_defined.  s+    T"" 	5t555r    namesr   c                B    |                     | j        | j                  S rq   )private_namer$   r   rR   r   s     r!   name_prefixzClassIR.name_prefix3  s    !!$"2DI>>>r    c                0    t          | j                   dS )NObject)r   rZ   r   s     r!   struct_namezClassIR.struct_name6  s    ..6666r    prefer_methodr   tuple[FuncIR, ClassIR] | Nonec               t    | j         D ]/}||j        v r$|j        |         }|s|j        j        r d S ||fc S 0d S rq   )rF   r=   declimplicit)rR   r   r   rj   func_irs        r!   get_method_and_classzClassIR.get_method_and_class9  sg     ( 	# 	#Brz!!*T*$  )>    44{""" " tr    r   c               H    |                      ||          }|r|d         nd S )Nr   r   )r   )rR   r   r   ress       r!   
get_methodzClassIR.get_methodH  s-    ''M'JJ&s1vv$&r    c                D    t          fd| j        D                       S )Nc              3  *   K   | ]}|j         v V  d S rq   )r<   r   s     r!   r|   z*ClassIR.has_method_decl.<locals>.<genexpr>M  s*      >>r42?*>>>>>>r    r   rc   s    `r!   has_method_declzClassIR.has_method_declL  s(    >>>>TX>>>>>>r    c                (    | j         g k    o| j         S rq   )rH   r4   rU   s    r!   has_no_subclasseszClassIR.has_no_subclassesO  s    }"L4+L'LLr    set[ClassIR] | Nonec                    | j         | j        rdS t          | j                   }| j         D ]7}|j         r.|                                }| dS |                    |           8|S )zReturn 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)rH   r4   rI   r}   update)rR   resultchild
child_subss       r!   r}   zClassIR.subclassesR  sy     = D$E 4T]##] 	* 	*E~ *"--//
%44j)))r    list[ClassIR] | Nonec                n    |                                  }|dS d |D             }t          |d           S )zReturn all concrete (i.e. non-trait and non-abstract) subclasses.

        Include both direct and indirect subclasses. Place classes with no children first.
        Nc                .    h | ]}|j         	|j        |S r   )r%   r(   )rz   cs     r!   	<setcomp>z.ClassIR.concrete_subclasses.<locals>.<setcomp>k  s&    III!AJI!-IAIIIr    c                <    t          | j        pg           | j        fS rq   )r^   rH   r   )r   s    r!   <lambda>z-ClassIR.concrete_subclasses.<locals>.<lambda>o  s    s1:3C/D/Daf.M r    )key)r}   sorted)rR   r   concretes      r!   concrete_subclasseszClassIR.concrete_subclassesc  sI    
   <4IItIII h$M$MNNNNr    c                >    t          d | j        D                       S )Nc              3  $   K   | ]}|j         V  d S rq   )r6   )rz   cis     r!   r|   z*ClassIR.is_serializable.<locals>.<genexpr>r  s%      772#777777r    r   rU   s    r!   is_serializablezClassIR.is_serializableq  s!    77dh777777r    r   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                                        dd  j                                        D             d fd j                                        D             i dd  j                                        D             dd  j                                        D             dd  j                                        D             dt-           j                  d j        dt3           j                  dd  j                                        D             d j        r j        j        nd d d!  j        D             d"d#  j        D             d$d%  j         D             d& j!        d'  j!        D             nd d( j"        d)tG           j$                  d*tG           j%                  d+tG           j&                  d, j'         j(        r j(        j)        nd  j*         j+        d-S ).Nr   r$   r%   r)   r(   r'   r1   r*   r2   r3   r4   r5   r6   r7   r8   r:   c                @    g | ]\  }}||                                 fS r   	serializerz   kts      r!   
<listcomp>z%ClassIR.serialize.<locals>.<listcomp>  s)    RRR$!QAq{{}}-RRRr    r<   c                b    g | ]+\  }}||j         v r|j        n|                                f,S r   )r=   idr   )rz   r   drR   s      r!   r   z%ClassIR.serialize.<locals>.<listcomp>  sL       Aq A--ADD1;;==A  r    r=   c                &    g | ]\  }}||j         fS r   )r   )rz   r   ms      r!   r   z%ClassIR.serialize.<locals>.<listcomp>  s"    CCCdaAD	CCCr    r>   c                :    g | ]\  \  }}}|j         |f|j        fS r   )rZ   r   )rz   cirr   r   s       r!   r   z%ClassIR.serialize.<locals>.<listcomp>  s;       .9hsA#,"AD)  r    r@   c                @    g | ]\  }}||                                 fS r   r   r   s      r!   r   z%ClassIR.serialize.<locals>.<listcomp>  s)    ZZZda1;;==1ZZZr    r?   rA   rB   rC   c                @    g | ]\  }}|j         t          |          fS r   )rZ   serialize_vtable)rz   r   vs      r!   r   z%ClassIR.serialize.<locals>.<listcomp>  s9       8>Q/223  r    rD   rE   c                    g | ]	}|j         
S r   rZ   rz   r   s     r!   r   z%ClassIR.serialize.<locals>.<listcomp>  s    ;;;s|;;;r    rF   c                    g | ]	}|j         
S r   r   r   s     r!   r   z%ClassIR.serialize.<locals>.<listcomp>  s    555SCL555r    rG   c                    g | ]	}|j         
S r   r   r   s     r!   r   z%ClassIR.serialize.<locals>.<listcomp>  s    ???#???r    rH   c                    g | ]	}|j         
S r   r   r   s     r!   r   z%ClassIR.serialize.<locals>.<listcomp>  s    777#777r    r;   rJ   rK   rL   rM   )rO   rP   rQ   ),r   r$   r%   r)   r(   r'   r1   r*   r2   r3   r4   r5   r6   r7   r8   r   r:   itemsr<   r=   r>   r@   listr?   rA   r   rB   rC   rD   rZ   rE   rF   rG   rH   r;   r   rJ   rK   rL   rM   rO   r   rP   rQ   rU   s   `r!   r   zClassIR.serializet  s   6
DI6
4+6
 6
 D-	6

 4+6
 D-6
 D-6
 d16
 t36
 6
 +D,M6
 t36
 T/6
 D-6
 DI''))6
" RR$/:O:O:Q:QRRR#6
(      -3355  )6
 6
2 CCdl.@.@.B.BCCC36
4   =A=N=T=T=V=V  56
> ZZd>Q>W>W>Y>YZZZ?6
@ $t//A6
B dkC6
D .t/BCCE6
F   BFBTBZBZB\B\  G6
N $)=DI&&O6
P ;;t{;;;Q6
R 55DH555S6
T ?????U6
V ;?=;T777777Z^Y6
\ ]6
^ "6$*B#C#C_6
` (0N)O)Oa6
b +F43T,U,Uc6
d d1e6
 6
f ?C>T!^!7!:!:Z^$($=|k6
 6
 6
 6	
r    datactxr   c                   |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                   _        fd|d         D             _        fd|d         D             _        fd|d         D             _        fd|d         D             _        fd|d         D             _        fd|d         D             _        |d         _        t/          |d                   _        fd |d!         D             _        |d"         }|rj         |         nd _        fd#|d$         D             _        fd%|d&         D             _        fd'|d(         D             _        |d)         ofd*|d)         D             _        |d+         _        tA          |d,                   _!        tA          |d-                   _"        tA          |d.                   _#        |d/         _$        |d0         rj%        |d0                  nd _&        |d1         _'        |d2         _(        S )3Nr$   rY   r   zClass %s not in deser class mapr%   r'   r(   r)   r1   r*   r2   r3   r4   r5   r6   r7   r8   c                8    i | ]\  }}|t          |          S r   r   rz   r   r   r   s      r!   
<dictcomp>z'ClassIR.deserialize.<locals>.<dictcomp>  s*    TTTA,Q44TTTr    r:   c                    i | ]B\  }}|t          |t                    rj        |         j        nt	          j        |          CS r   )
isinstancer   	functionsr   r   deserializerz   r   r   r   s      r!   r   z'ClassIR.deserialize.<locals>.<dictcomp>  s\     
 
 
1 
1c(:(:\s}Q$$@TUVX[@\@\
 
 
r    r<   c                2    i | ]\  }}|j         |         S r   )r   r   s      r!   r   z'ClassIR.deserialize.<locals>.<dictcomp>  s&    FFFdaaq)FFFr    r=   c                R    i | ]#\  \  }}}j         |         |fj        |         $S r   )classesr   )rz   r   r   r   r   s       r!   r   z'ClassIR.deserialize.<locals>.<dictcomp>  sB     
 
 
6?fq!aS[^Qq!1
 
 
r    r>   c                8    i | ]\  }}|t          |          S r   r   r   s      r!   r   z'ClassIR.deserialize.<locals>.<dictcomp>  s*    \\\TQQ 0C 8 8\\\r    r@   c                p    i | ]2}|j         |         j                             t          |z             f3S r   )r=   getr   )rz   r   rj   s     r!   r   z'ClassIR.deserialize.<locals>.<dictcomp>  sF     
 
 
GHA
1rz~~nq.@AAB
 
 
r    r?   rA   rB   c                N    i | ]!\  }}j         |         t          |          "S r   )r   deserialize_vtabler   s      r!   r   z'ClassIR.deserialize.<locals>.<dictcomp>  s=     
 
 
;?1aCKN.q#66
 
 
r    rC   rD   c                *    g | ]}j         |         S r   r   rz   sr   s     r!   r   z'ClassIR.deserialize.<locals>.<listcomp>  s    <<<S[^<<<r    rE   c                *    g | ]}j         |         S r   r   r   s     r!   r   z'ClassIR.deserialize.<locals>.<listcomp>  s    666Q#+a.666r    rF   c                *    g | ]}j         |         S r   r   r   s     r!   r   z'ClassIR.deserialize.<locals>.<listcomp>  s    @@@!s{1~@@@r    rG   rH   c                *    g | ]}j         |         S r   r   r   s     r!   r   z'ClassIR.deserialize.<locals>.<listcomp>  s    +U+U+UqCKN+U+U+Ur    r;   rJ   rK   rL   rM   rO   rP   rQ   ))r   r%   r'   r(   r)   r1   r*   r2   r3   r4   r5   r6   r7   r   r   r8   r:   r<   r=   r>   r@   r?   rA   r   rB   rC   rD   rE   rF   rG   rH   r;   rI   rJ   rK   rL   rM   r   rO   rP   rQ   )r   r   r   rZ   rD   rj   s     `  @r!   r   zClassIR.deserialize  s   &,tF|;3;&&&(IH(T&&&[":&~.m,~.~. !12!"34:&*./M*N'!"340~.&tF|S99TTTTlASTTT
 
 
 
^,
 
 
 GFFFd9oFFF

 
 
 
CGCW
 
 
 ]\\\TJZE[\\\
 
 
 
LPQ]L^
 
 
 N	.t4D/EsKK
 
 
 
CGCX
 
 
 F|'+5#+d##<<<<T(^<<<	6666$u+666@@@@tJ/?@@@:&U+U+U+U+UDDT+U+U+UK(!$T*?%@!A!A'*40K+L'M'M$*-d3Q.R*S*S' !128<=P8Q[CM$2344W[ 	 #''=">)_
	r    N)FFFTF)r   r   r$   r   r%   r&   r'   r&   r(   r&   r)   r&   r*   r&   r+   r,   )r+   r   )r+   r[   )r   r   r+   r`   )r   r   r+   re   )r   r   r+   r   )r   r   r+   r   )r   r   r+   r	   )r   r   r+   r&   )r   r   r+   r   )r   r   r   r&   r+   r   )r   r   r   r&   r+   r   )r+   r&   )r+   r   )r+   r   )r+   r   )r   r   r   r   r+   r#   )r   r   r   __doc__rS   rW   propertyrZ   r_   rd   rk   rm   ro   rs   rv   r   r   r   r   r   r   r   r   r   r   r}   r   r   r   classmethodr   r   r    r!   r#   r#   R   sz         "!!$H H H H HT
 
 
 
 1 1 1 X1   ! ! ! !
C C C C* * * *C C C C* * * *   C C C C   < < < <6 6 6 6
? ? ? ?7 7 7 7 38      >C ' ' ' ' ' '? ? ? ?M M M M   "O O O O8 8 8 87
 7
 7
 7
r 7 7 7 [7 7 7r    r#   c                      e Zd ZdZdd	Zd
S )NonExtClassInfozInformation 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.
    dictr   basesanns	metaclassr+   r,   c                >    || _         || _        || _        || _        d S rq   )r   r   r   r   )rR   r   r   r   r   s        r!   rS   zNonExtClassInfo.__init__  s"    	
	"r    N)
r   r   r   r   r   r   r   r   r+   r,   )r   r   r   r   rS   r   r    r!   r   r     s2         # # # # # #r    r   entryr+   r   c                ~    d| j         j        | j        | j        j        j        | j        r| j        j        j        nd dS )Nr   ).classr   r   r   r   )r   rZ   r   r   r   r   r   )r   s    r!   serialize_vtable_entryr     sF     y!
,#&8=8KU,144QU  r    rA   VTableEntrieslist[JsonDict]c                    d | D             S )Nc                ,    g | ]}t          |          S r   )r   )rz   r   s     r!   r   z$serialize_vtable.<locals>.<listcomp>  s!    666!"1%%666r    r   )rA   s    r!   r   r      s    66v6666r    r   r   r   c                    | d         dk    rUt          |j        | d                  | d         |j        | d                  | d         r|j        | d                  nd           S J d| d         z              )	Nr   r   r   r   r   r   FzBogus vtable .class: %s)r   r   r   r   r   s     r!   deserialize_vtable_entryr    s~    H~''KU$LM$x.)484ISCM$/00t	
 
 	
 =+d8n<<<<r    c                     fd| D             S )Nc                0    g | ]}t          |          S r   )r  )rz   xr   s     r!   r   z&deserialize_vtable.<locals>.<listcomp>  s$    ;;;$Q,,;;;r    r   r   s    `r!   r   r     s    ;;;;d;;;;r    class_irr   c                |    |                                  }|dS | j        s| j        s|                    |            |S )zFReturn all concrete classes among the class itself and its subclasses.N)r   r(   r%   append)r  r   s     r!   all_concrete_classesr    sJ    ++--Ht  "H$5 "!!!Or    N)r   r   r+   r   )rA   r   r+   r   )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   mypyc.namegenr   r   r   r   r   r#   r   r   r   r  r   r  r   r    r!   <module>r     s   - - " " " " " "       1 1 1 1 1 1 1 1 H H H H H H H H H H H H ) ) ) ) ) ) ) ) Q Q Q Q Q Q Q Q Q Q Q Q 6 6 6 6 6 6 6 6z! ! ! ! !: ! ! ! \"S S S S S S S Sl# # # # # # # #   7 7 7 7= = = =< < < <     r    