
    hi'                    $   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:  G d d	          Z;d
S )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bool_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                  J    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
dS )#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.
    	group_mapdict[str, str | None]returnNonec                d    || _         i | _        i | _        t                      | _        i | _        d S N)r9   
type_to_irfunc_to_declsetsymbol_fullnamesfdef_to_generator)selfr9   s     d/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/mypyc/irbuild/mapper.py__init__zMapper.__init__?   s2    "358:*-%%9;    typType | Noner$   c                H	    |t           S t          |          }t          |t                    rP|j        j        rVt          |j        j                  dk    s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 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         j        v rCt1           j        |j                           }|j        j        rt5          |t           g          S |S |j        j	        dk    rt6          S |j        j	        dk    rt8          S |j        j	        dk    rt:          S |j        j	        dk    rt<          S |j        j	        t>          v rt>          |j        j	                 S t           S t          |t@                    rP|j!        j        j	        dk    r4tE          |j#                   tI           fd|j#        D                       S t*          S t          |tJ                    rt           S t          |tL                    rtN          S t          |tP                    r%t5          j)         fd|j#        D                       S t          |tT                    rt           S t          |tV                    rt           S t          |tX                    r                     |j-                  S t          |t\                    r-|j/        j        J                      |j/        j                  S t          |t`                    rt           S t          |tb                    rt$          S t          |td                    r                     |j3                  S t          |th          tj          f          rt           S J dt	          |          z              )N   r   zbuiltins.intzbuiltins.floatzbuiltins.boolzbuiltins.strzbuiltins.byteszbuiltins.listc              3  ,   K   | ]}|j         d k    V  dS )zbuiltins.dictN)fullname).0clss     rE   	<genexpr>z'Mapper.type_to_rtype.<locals>.<genexpr>`   s)      MMS\_4MMMMMMrG   zbuiltins.setzbuiltins.frozensetzbuiltins.tuplezbuiltins.rangezmypy_extensions.i64zmypy_extensions.i32zmypy_extensions.i16zmypy_extensions.u8c                :    g | ]}                     |          S  type_to_rtype)rN   trD   s     rE   
<listcomp>z(Mapper.type_to_rtype.<locals>.<listcomp>   s'    HHHt11!44HHHrG   c                :    g | ]}                     |          S rR   rS   )rN   itemrD   s     rE   rV   z(Mapper.type_to_rtype.<locals>.<listcomp>   s'    0`0`0`d1C1CD1I1I0`0`0`rG   Fzunexpected type %s)6r1   r   
isinstancer   type
is_newtypelenbasesrT   rM   r.   r)   r&   r4   r'   r/   anymror(   r3   r*   r5   r2   r?   r"   is_protocolr%   r-   r,   r+   r6   r!   r   partial_fallbackr   itemsr#   r   r   r0   r   make_simplified_unionr   r   r   upper_boundr   varr   r   r   fallbackr   r   )rD   rH   insts   `  rE   rT   zMapper.type_to_rtypeG   sR   ;$$c""c8$$ V	%x" =38>**a//////))#(.*;<<<x N22%%"&666''"o55&&"n44%%"&666''"o55&& MMMMMMM )&&"n44%%"&:::++"&666''"&666''T_,, !:;; 8'  !4):";<<<K"&;;;''"&;;;''"&;;;''"&:::''"&888)#(*;<<((Y'' #	% $)26FFF'	22:HHHHciHHHIII''\** 	%$$W%% 	%""Y'' 	%/0`0`0`0`VYV_0`0`0`aaaW%% 	%$$X&& 	%$$_-- 	% %%co666[)) 	%7<+++%%cgl333Z(( 	%$$]++ 	%""[)) 	%%%cl333o{;<< 	%$$ 	7*T#YY6666rG   r   kindr   c                t    |t           k    rt          S |t          k    rt          S |                     |          S r>   )r   r5   r   r(   rT   )rD   rH   rh   s      rE   get_arg_rtypezMapper.get_arg_rtype   s8    8##Y""%%c***rG   fdefr   strict_dunders_typingboolr   c                    t          |j        t                    r fdt          |j        j        |j        j                  D             }d |j        j        D             }|j        s|j        r"|j	        st           j        |                   }nr                     |j        j                  }nRd |j        D             }d |j        D             }|j        dk    ot!          |j                  }|rt$          }nt&          }t)          |d          rd |j        D             }nd |j        D             }d	 t          ||j        ||          D             }|s|j        d
v rt&          }t+          ||          S )Nc                B    g | ]\  }}                     ||          S rR   )rj   )rN   rH   rh   rD   s      rE   rV   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s=       C ""3--  rG   c                    g | ]}|d u S r>   rR   rN   names     rE   rV   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    JJJdTT\JJJrG   c                    g | ]	}t           
S rR   )r1   )rN   _s     rE   rV   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    CCCq*CCCrG   c                    g | ]	}|j         
S rR   )pos_onlyrN   args     rE   rV   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    DDDcS\DDDrG   rF   	argumentsc                &    g | ]}|j         j        S rR   )variablerr   rw   s     rE   rV   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    EEEs*EEErG   c                    g | ]}|pd S ) rR   rq   s     rE   rV   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    ??????rG   c                <    g | ]\  }}}}t          ||||          S rR   )r    )rN   arg_namearg_kindarg_typearg_pos_onlys        rE   rV   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s>     
 
 
:(Hl x8\BB
 
 
rG   )__eq____ne____lt____gt____le____ge__)rY   rZ   r   zip	arg_types	arg_kinds	arg_namesis_coroutineis_generatoris_decoratedr"   rC   rT   ret_typery   rr   rm   infor0   r1   hasattrr   )	rD   rk   rl   r   arg_pos_onlysretis_init_methodr   argss	   `        rE   fdef_to_sigzMapper.fdef_to_sig   s   di.. 	(   !$TY%8$):M!N!N  I KJdi6IJJJM! =T%6 =@Q = 't'=d'CDD(();<< DCDNCCCIDDT^DDDM!Y*4HdiN (%' 4%% 	@EEdnEEEII?????I
 
>A4>9m? ?
 
 
 % 	(
 yXXX'T3'''rG   modulestrc                    || j         v S )z*Is the given module one compiled by mypyc?)r9   )rD   r   s     rE   is_native_modulezMapper.is_native_module   s    ''rG   exprr	   c                    |j         dS d|j         j        v rC|j         j                            d          d         }|                     |          p|| j        v S dS )NF.r   T)noderM   
rpartitionr   rB   )rD   r   rr   s      rE   is_native_ref_exprzMapper.is_native_ref_expr   sb    95$)$$$9%0055a8D((..O$$:O2OOtrG   c                L    |                      |          o|j        t          k    S r>   )r   rh   r   )rD   r   s     rE   is_native_module_ref_exprz Mapper.is_native_module_ref_expr   s"    &&t,,Bd1BBrG   N)r9   r:   r;   r<   )rH   rI   r;   r$   )rH   r   rh   r   r;   r$   )rk   r   rl   rm   r;   r   )r   r   r;   rm   )r   r	   r;   rm   )__name__
__module____qualname____doc__rF   rT   rj   r   r   r   r   rR   rG   rE   r8   r8   5   s         < < < <_7 _7 _7 _7B+ + + +6( 6( 6( 6(p( ( ( (   C C C C C CrG   r8   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   r8   rR   rG   rE   <module>r      s   D D " " " " " " a a a a a a a a a a a a a a a a a a a a                                     & & % % % % % @ @ @ @ @ @ @ @ @ @                                               4@C @C @C @C @C @C @C @C @C @CrG   