
    hi<                       U d Z ddlmZ ddl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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  dd	l!m"Z"m#Z#m$Z$m%Z%m&Z& dd
l'm(Z(  G d d          Z) G d d          Z*d5dZ+dZ,de-d<   dZ.de-d<   dZ/de-d<    G d d          Z0 G d d          Z1 edg  eg                     Z2de-d<   d6d$Z3d6d%Z4e
j	        ej5        j6        e
j7        ej5        j6        e
j8        ej5        j9        e
j:        ej5        j;        e
j<        ej5        j=        e
j>        ej5        j;        iZ?de-d&<    e@            ZAd'd(d7d-ZBd8d1ZCd9d4ZDdS ):z)Intermediate representation of functions.    )annotationsN)Sequence)Final)ARG_POSArgKindBlockFuncDef)BITMAP_BITSJsonDictbitmap_nameget_id_from_nameshort_id_from_name)AssignAssignMulti
BasicBlockBox	ControlOp	DeserMapsFloatIntegerLoadAddressLoadLiteralRegisterTupleSetValue)RTypebitmap_rprimitivedeserialize_typeis_bool_rprimitiveis_none_rprimitive)NameGeneratorc                  `    e Zd ZdZedfddZedd            ZddZddZ	e
dd            ZdS )
RuntimeArgzrDescription of a function argument in IR.

    Argument kind is one of ARG_* constants defined in mypy.nodes.
    Fnamestrtypr   kindr   pos_onlyboolreturnNonec                >    || _         || _        || _        || _        d S Nr$   typer'   r(   )selfr$   r&   r'   r(   s        `/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/mypyc/ir/func_ir.py__init__zRuntimeArg.__init__*   s$     			     c                4    | j                                         S r-   )r'   is_optionalr0   s    r1   optionalzRuntimeArg.optional2   s    y$$&&&r3   c                Z    d                     | j        | j        | j        | j                  S )Nz:RuntimeArg(name={}, type={}, optional={!r}, pos_only={!r}))formatr$   r/   r7   r(   r6   s    r1   __repr__zRuntimeArg.__repr__6   s+    KRRIty$-
 
 	
r3   r   c                    | j         | j                                        t          | j        j                  | j        dS )Nr.   )r$   r/   	serializeintr'   valuer(   r6   s    r1   r<   zRuntimeArg.serialize;   s;    II''))	((	
 
 	
r3   datactxr   c                    t          |d         t          |d         |          t          |d                   |d                   S )Nr$   r/   r'   r(   )r#   r   r   clsr?   r@   s      r1   deserializezRuntimeArg.deserializeC   sC    LT&\3//DL!!	
 
 	
r3   N)
r$   r%   r&   r   r'   r   r(   r)   r*   r+   r*   r)   r*   r%   r*   r   )r?   r   r@   r   r*   r#   )__name__
__module____qualname____doc__r   r2   propertyr7   r:   r<   classmethodrD    r3   r1   r#   r#   $   s          6=u! ! ! ! ! ' ' ' X'
 
 
 


 
 
 
 
 
 
 [
 
 
r3   r#   c                  R    e Zd ZdZddZdd
ZddZddZddZe	dd            Z
dS )FuncSignaturezSignature of a function in IR.argsSequence[RuntimeArg]ret_typer   r*   r+   c                   t          |          | _        || _        t          | j                  | _        | j        rId t	          | j                  D             }| j        t          t          |                    z   | _        d S d S )Nc                V    g | ]&}t          t          |          t          d           'S )T)r(   )r#   r   r   ).0is     r1   
<listcomp>z*FuncSignature.__init__.<locals>.<listcomp>Y   s>        ;q>>+<tLLL  r3   )tuplerQ   rS   num_bitmap_argsrangereversed)r0   rQ   rS   extras       r1   r2   zFuncSignature.__init__R   s    $KK	   /ty99 	; t344  E 	E(5//$:$::DIII	; 	;r3   tuple[RuntimeArg, ...]c                H    | j         r| j        d| j                   S | j        S )z8Return arguments without any synthetic bitmap arguments.N)rZ   rQ   r6   s    r1   	real_argszFuncSignature.real_args_   s.     	694 44455yr3   c                    | j         r(t          | j        d| j                   | j                  S t          | j        dd          | j                  S )N   )rZ   rP   rQ   rS   r6   s    r1   	bound_sigzFuncSignature.bound_sige   sM     	? 10D/D+D!Et}UUU 122>>>r3   r%   c                (    d| j         d| j        dS )NzFuncSignature(args=z, ret=)rQ   rS   r6   s    r1   r:   zFuncSignature.__repr__k   s    JTYJJJJJJr3   r   c                    | j         r| j        d | j                   }n| j        }d |D             | j                                        dS )Nc                6    g | ]}|                                 S rN   )r<   )rV   ts     r1   rX   z+FuncSignature.serialize.<locals>.<listcomp>s   s     5551555r3   rf   )rZ   rQ   rS   r<   )r0   rQ   s     r1   r<   zFuncSignature.serializen   sX     	94 4445DD9D555554=CZCZC\C\]]]r3   r?   r@   r   c                p    t          fd|d         D             t          |d                             S )Nc                F    g | ]}t                               |          S rN   )r#   rD   )rV   argr@   s     r1   rX   z-FuncSignature.deserialize.<locals>.<listcomp>x   s)    FFF#Z##C--FFFr3   rQ   rS   )rP   r   rB   s     `r1   rD   zFuncSignature.deserializeu   sB    FFFFfFFFT*-s33
 
 	
r3   N)rQ   rR   rS   r   r*   r+   )r*   r^   r*   rP   rF   rG   )r?   r   r@   r   r*   rP   )rH   rI   rJ   rK   r2   r`   rc   r:   r<   rM   rD   rN   r3   r1   rP   rP   M   s        ((; ; ; ;   ? ? ? ?K K K K^ ^ ^ ^ 
 
 
 [
 
 
r3   rP   rQ   r^   r*   r=   c                    d}| D ],}|j         j        r|j                                        r|dz  }-|t          dz
  z   t          z  S )Nr   rb   )r/   error_overlapr'   r5   r
   )rQ   nrl   s      r1   rZ   rZ   }   sV    	A  8! 	ch&:&:&<&< 	FAq!k11r3   r   FUNC_NORMALrb   FUNC_STATICMETHOD   FUNC_CLASSMETHODc                      e Zd ZdZeddddfd'dZed(d            Zej        d)d            Zed*d            Z	e
d+d            Zed*d            Zed*d            Zd,dZd-dZe
d.d!            Zed/d%            Zd&S )0FuncDeclzDeclaration of a function in IR (without body or implementation).

    A function can be a regular module-level function, a method, a
    static method, a class method, or a property getter/setter.
    Fr$   r%   
class_name
str | Nonemodule_namesigrP   r'   r=   is_prop_setterr)   is_prop_getterimplicitinternalr*   r+   c
                    || _         || _        || _        || _        || _        || _        || _        |d | _        n,|t          k    r|| _        n|                                | _        || _	        |	| _
        d | _        d S r-   )r$   rw   ry   rz   r'   r{   r|   rc   rr   r}   r~   _line)
r0   r$   rw   ry   rz   r'   r{   r|   r}   r~   s
             r1   r2   zFuncDecl.__init__   s     	$&	,,37DNN(((!$!$ ! ! "&


r3   c                "    | j         J | j         S r-   r   r6   s    r1   linezFuncDecl.line   s    z%%%zr3   r   c                    || _         d S r-   r   )r0   r   s     r1   r   zFuncDecl.line   s    


r3   c                T    | j         J t          | j        | j        | j                   S r-   )r   r   r$   fullnamer6   s    r1   idzFuncDecl.id   s(    y$$$	4=$)DDDr3   c                    | r| dz   |z   n|S N.rN   rw   r$   s     r1   compute_shortnamezFuncDecl.compute_shortname   s    *4>zC$&&$>r3   c                L    t                               | j        | j                  S r-   )rv   r   rw   r$   r6   s    r1   	shortnamezFuncDecl.shortname   s    ))$/49EEEr3   c                &    | j         dz   | j        z   S r   )ry   r   r6   s    r1   r   zFuncDecl.fullname   s    #%66r3   namesr!   c                x    t          | j        | j        | j                  }|                    | j        |          S r-   )r   r$   r   r   private_namery   )r0   r   partial_names      r1   cnamezFuncDecl.cname   s2    )$)T^TZPP!!$"2LAAAr3   r   c           
         | j         | j        | j        | j                                        | j        | j        | j        | j        | j	        d	S )N)	r$   rw   ry   rz   r'   r{   r|   r}   r~   )
r$   rw   ry   rz   r<   r'   r{   r|   r}   r~   r6   s    r1   r<   zFuncDecl.serialize   sM    I/+8%%''I"1"1

 

 
	
r3   func_irc                    | d         }t                               |d         |d                   }|d         dz   |z   }t          |d         || d                   S )zCGet the id from the serialized FuncIR associated with this FuncDecldeclrw   r$   ry   r   r   )rv   r   r   )r   r   r   r   s       r1   get_id_from_jsonzFuncDecl.get_id_from_json   sY     v..tL/A4<PP	&,y8VhHHHr3   r?   r@   r   c                    t          |d         |d         |d         t                              |d         |          |d         |d         |d         |d         |d	         	  	        S )
Nr$   rw   ry   rz   r'   r{   r|   r}   r~   )rv   rP   rD   rB   s      r1   rD   zFuncDecl.deserialize   sk    L%%d5k377L!"!"

 

 
	
r3   N)r$   r%   rw   rx   ry   r%   rz   rP   r'   r=   r{   r)   r|   r)   r}   r)   r~   r)   r*   r+   r*   r=   )r   r=   r*   r+   rF   )rw   rx   r$   r%   r*   r%   r   r!   r*   r%   rG   )r   r   r*   r%   )r?   r   r@   r   r*   rv   )rH   rI   rJ   rK   rq   r2   rL   r   setterr   staticmethodr   r   r   r   r<   r   rM   rD   rN   r3   r1   rv   rv      s          $$$& $& $& $& $&L    X 
[   [ E E E XE ? ? ? \? F F F XF 7 7 7 X7B B B B
 
 
 
 I I I \I 
 
 
 [
 
 
r3   rv   c                  (   e Zd ZdZ	 	 d)d*dZed+d            Zed,d            Zed-d            Zed.d            Z	ed/d            Z
ed0d            Zed0d            Zed0d            Zed1d            Zd2d!Zd0d"Zd3d$Zed4d(            ZdS )5FuncIRzIntermediate representation of a function with contextual information.

    Unlike FuncDecl, this includes the IR of the body (basic blocks).
    Nr   rv   arg_regslist[Register]blockslist[BasicBlock]r   r=   traceback_namerx   r*   r+   c                V    || _         || _        || _        || j         _        || _        d S r-   )r   r   r   r   r   )r0   r   r   r   r   r   s         r1   r2   zFuncIR.__init__   s2     	 	 -r3   c                    | j         j        S r-   )r   r   r6   s    r1   r   zFuncIR.line      y~r3   rR   c                $    | j         j        j        S r-   )r   rz   rQ   r6   s    r1   rQ   zFuncIR.args  s    y}!!r3   r   c                $    | j         j        j        S r-   )r   rz   rS   r6   s    r1   rS   zFuncIR.ret_type  s    y}%%r3   c                    | j         j        S r-   )r   rw   r6   s    r1   rw   zFuncIR.class_name   s    y##r3   rP   c                    | j         j        S r-   )r   rz   r6   s    r1   rz   z
FuncIR.sig$  s    y}r3   r%   c                    | j         j        S r-   )r   r$   r6   s    r1   r$   zFuncIR.name(  r   r3   c                    | j         j        S r-   )r   r   r6   s    r1   r   zFuncIR.fullname,      y!!r3   c                    | j         j        S r-   )r   r   r6   s    r1   r   z	FuncIR.id0  s    y|r3   r)   c                    | j         j        S r-   )r   r~   r6   s    r1   r~   zFuncIR.internal4  r   r3   r   r!   c                6    | j                             |          S r-   )r   r   )r0   r   s     r1   r   zFuncIR.cname8  s    yu%%%r3   c                L    | j         rd| j          d| j         dS d| j         dS )Nz<FuncIR r   >r   r6   s    r1   r:   zFuncIR.__repr__;  s<    ? 	+<do<<	<<<<*di****r3   r   c                P    | j                                         | j        | j        dS )N)r   r   r   )r   r<   r   r   r6   s    r1   r<   zFuncIR.serializeA  s/     I''))I"1
 
 	
r3   r?   r@   r   c                ~    t          t                              |d         |          g g |d         |d                   S )Nr   r   r   )r   rv   rD   rB   s      r1   rD   zFuncIR.deserializeI  s=      fs33RT&\4P`Ka
 
 	
r3   )r   N)r   rv   r   r   r   r   r   r=   r   rx   r*   r+   r   )r*   rR   )r*   r   )r*   rx   rm   rF   rE   r   rG   )r?   r   r@   r   r*   r   )rH   rI   rJ   rK   r2   rL   r   rQ   rS   rw   rz   r$   r   r   r~   r   r:   r<   rM   rD   rN   r3   r1   r   r      s         %)- - - - -(    X " " " X" & & & X& $ $ $ X$    X    X " " " X"    X " " " X"& & & &+ + + +
 
 
 
 
 
 
 [
 
 
r3   r   z<INVALID_FUNC_DEF>INVALID_FUNC_DEFr   r   r   list[Value]c                T   t          |           }t          |           }|D ]}|j        D ]}t          |t                    st          |t
          t          f          r>|j        |vr4|                    |j                   |	                    |j                   q|j
        ryt          |t                    rWt          |j        t                    r=|j        |vr4|                    |j                   |	                    |j                   |                    |           |S )zvReturn the set of all values that may be initialized in the blocks.

    This omits registers that are only read.
    )listsetops
isinstancer   r   r   destappendaddis_voidr   srcr   )rQ   r   valuesseen_registersblockops         r1   
all_valuesr   S  s(   
 t**FYYN & &) 	& 	&Bb),, &b6;"788 &wn44bg...&**27333Z & #2{333&rvx883 F.88bf---&**26222MM"%%%#	&& Mr3   c                ,   t          |           }t          |           }|D ]}|j        D ]}|                                D ]E}t	          |t
                    r.||vr*|                    |           |                    |           Ft	          |t                    swt	          |t          t          f          r>|j        |vr4|                    |j                   |                    |j                   |j        r|                    |           |S )z:Return set of all values that are initialized or accessed.)r   r   r   sourcesr   r   r   r   r   r   r   r   r   )rQ   r   r   r   r   r   sources          r1   all_values_fullr   r  s!   t**FYYN & &) 	& 	&B**,, / / fh// /F.4P4PMM&)))"&&v...b),, &b6;"788 &wn44bg...&**27333Z &MM"%%%	&" Mr3   _ARG_KIND_TO_INSPECTF)boundfnr   r)   rx   c                  g }| j         duo| j        j        t          k    o| }|r| j        j        | j        j        n| j        j        }d}t          |j                  D ]-\  }}|j        r!|j        t          j
        t          j        fv r|}.t          |j                  D ]\  }}|j                            d          r ||k    rt          j        j        nt"          |j                 }t          j        j        }	|j        r&t)          |j        | j                  }	|	t,          u r dS t          j        |j        ||	          }
|                    |
           |rd|j         |
_        d}| j         t          j        |           S )z}Return a text signature in CPython's internal doc format, or None
    if the function's signature cannot be represented.
    Nr   )__bitmap__mypyc)default$F)rw   r   r'   rr   rc   rz   	enumeraterQ   r(   r   r   ARG_OPTr$   
startswithinspect	ParameterPOSITIONAL_ONLYr   emptyr7   _find_default_argumentr   _NOT_REPRESENTABLEr   _name	Signature)r   r   
parameters	mark_selfrz   pos_only_idxidxrl   r'   r   
curr_params              r1   get_text_signaturer     s    Jd*aAR1Ra\aXaI$
W):)F"'

BGKC Lch''  S< 	CH'/(JJJLch''  S8677 	 l"" --%ch/ 	
 "+1< 	,SXryAAG,,,tt&sxwGGG
*%%% 	-38~~JIg6w(44666r3   r$   r%   objectc                    |D ]I}|j         D ]?}t          |t                    r(|j        j        | k    rt          |j                  c c S @Jt          S r-   )r   r   r   r   r$   _extract_python_literalr   r   )r$   r   r   r   s       r1   r   r     sl     7 7) 	7 	7B"f%% 7"',$*>*>.rv6666666	7 r3   r>   r   c                D   t          | t                    rOt          | j                  rd S |                                 }t          | j                  rt          |          S |S t          | t                    r| j        S t          | t                    r| j        S t          | t                    rt          | j                  S t          | t                    r@t          d | j        D                       }t!          d |D                       rt"          S |S t"          S )Nc              3  4   K   | ]}t          |          V  d S r-   )r   )rV   items     r1   	<genexpr>z*_extract_python_literal.<locals>.<genexpr>  s+      LL-d33LLLLLLr3   c              3  (   K   | ]}|t           u V  d S r-   )r   )rV   itms     r1   r   z*_extract_python_literal.<locals>.<genexpr>  s(      ::Ss((::::::r3   )r   r   r    r/   numeric_valuer   r)   r   r>   r   r   r   r   r   rY   itemsanyr   )r>   valr   s      r1   r   r     s   %!! ej)) 	4!!##ej)) 	99
	E5	!	! 
{	E;	'	' {	E3		 &uy111	E8	$	$ LLLLLLL::E::::: 	&%%r3   )rQ   r^   r*   r=   )rQ   r   r   r   r*   r   )r   r   r   r)   r*   rx   )r$   r%   r   r   r*   r   )r>   r   r*   r   )ErK   
__future__r   r   collections.abcr   typingr   
mypy.nodesr   r   r   r	   mypyc.commonr
   r   r   r   r   mypyc.ir.opsr   r   r   r   r   r   r   r   r   r   r   r   r   mypyc.ir.rtypesr   r   r   r   r    mypyc.namegenr!   r#   rP   rZ   rq   __annotations__rr   rt   rv   r   r   r   r   r   POSITIONAL_OR_KEYWORDr   ARG_STARVAR_POSITIONAL	ARG_NAMEDKEYWORD_ONLY	ARG_STAR2VAR_KEYWORDARG_NAMED_OPTr   r   r   r   r   r   rN   r3   r1   <module>r     s   / / / " " " " " "  $ $ $ $ $ $       7 7 7 7 7 7 7 7 7 7 7 7 a a a a a a a a a a a a a a                                           ( ' ' ' ' '&
 &
 &
 &
 &
 &
 &
 &
R-
 -
 -
 -
 -
 -
 -
 -
`2 2 2 2               m
 m
 m
 m
 m
 m
 m
 m
`S
 S
 S
 S
 S
 S
 S
 S
l "'"6EE"IIFF  F F F F   >   6 OW&<OW&<g'6w(5w(47,9      VXX  5: #7 #7 #7 #7 #7 #7L        r3   