
    5 f!                       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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8  G d d	          Z9d
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TypeVarTypeUnboundTypeUninhabitedType	UnionTypefind_unpack_in_listget_proper_type)ClassIR)FuncDeclFuncSignature
RuntimeArg)	RInstanceRTupleRTypeRUnionbool_rprimitivebytes_rprimitivedict_rprimitivefloat_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                0    || _         i | _        i | _        d S N)r7   
type_to_irfunc_to_decl)selfr7   s     J/var/www/equiseq/venv/lib/python3.11/site-packages/mypyc/irbuild/mapper.py__init__zMapper.__init__=   s    "358:    typType | Noner#   c                    |t           S t          |          }t          |t                    r|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        v rCt'           j        |j                           }|j        j        rt+          |t           g          S |S |j        j        dk    rt,          S |j        j        dk    rt.          S |j        j        dk    rt0          S |j        j        dk    rt2          S t           S t          |t4                    rP|j        j        j        d	k    r4t9          |j                   t=           fd|j        D                       S t           S t          |t>                    rt           S t          |t@                    rtB          S t          |tD                    r%t+          j#         fd|j        D                       S t          |tH                    rt           S t          |tJ                    rt           S t          |tL                    r '                    |j(                  S t          |tR                    r-|j*        j        J  '                    |j*        j                  S t          |tV                    rt           S t          |tX                    rt          S t          |tZ                    r '                    |j.                  S t          |t^          t`          f          rt           S J dt	          |          z              )Nz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     r@   	<genexpr>z'Mapper.type_to_rtype.<locals>.<genexpr>W   s)      MMS\_4MMMMMMrB   zbuiltins.setzbuiltins.tuplezbuiltins.rangezmypy_extensions.i64zmypy_extensions.i32zmypy_extensions.i16zmypy_extensions.u8c                :    g | ]}                     |          S  type_to_rtype)rH   tr?   s     r@   
<listcomp>z(Mapper.type_to_rtype.<locals>.<listcomp>y   s'    HHHt11!44HHHrB   c                :    g | ]}                     |          S rL   rM   )rH   itemr?   s     r@   rP   z(Mapper.type_to_rtype.<locals>.<listcomp>   s'    0`0`0`d1C1CD1I1I0`0`0`rB   Fzunexpected type %s)1r/   r   
isinstancer   typerG   r,   r(   r%   r2   r&   r-   anymror'   r1   r3   r0   r=   r!   is_protocolr$   r+   r*   r)   r4   r   partial_fallbackr   itemsr"   r   r   r.   r   make_simplified_unionr   r   r   rN   upper_boundr   varr   r   r   fallbackr   r   )r?   rC   insts   `  r@   rN   zMapper.type_to_rtypeB   s   ;$$c""c8$$ N	%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"&;;;''"&;;;''"&;;;''"&:::''((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6urB   r   kindr   c                t    |t           k    rt          S |t          k    rt          S |                     |          S r<   )r   r3   r   r'   rN   )r?   rC   r_   s      r@   get_arg_rtypezMapper.get_arg_rtype   s8    8##Y""%%c***rB   fdefr   r   c                    t          |j        t                    rf fdt          |j        j        |j        j                  D             }d |j        j        D             }                     |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             }|j
        d
v rt          }t!          ||          S )Nc                B    g | ]\  }}                     ||          S rL   )ra   )rH   rC   r_   r?   s      r@   rP   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s=       C ""3--  rB   c                    g | ]}|d u S r<   rL   rH   names     r@   rP   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    JJJdTT\JJJrB   c                    g | ]	}t           
S rL   )r/   )rH   _s     r@   rP   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    CCCq*CCCrB   c                    g | ]	}|j         
S rL   )pos_onlyrH   args     r@   rP   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    DDDcS\DDDrB   rA   	argumentsc                &    g | ]}|j         j        S rL   )variablerg   rl   s     r@   rP   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    EEEs*EEErB   c                    g | ]}|pd S ) rL   rf   s     r@   rP   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    ??????rB   c                <    g | ]\  }}}}t          ||||          S rL   )r    )rH   arg_namearg_kindarg_typearg_pos_onlys        r@   rP   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s>     
 
 
:(Hl x8\BB
 
 
rB   )__eq____ne____lt____gt____le____ge__)rS   rT   r   zip	arg_types	arg_kinds	arg_namesrN   ret_typern   rg   boolinfor.   r/   hasattrr   )r?   rb   r   arg_pos_onlysretis_init_methodr   argss   `       r@   fdef_to_sigzMapper.fdef_to_sig   s{   di.. 	(   !$TY%8$):M!N!N  I KJdi6IJJJM$$TY%788CC 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? ?
 
 
 9TTT#CT3'''rB   modulestrr   c                    || j         v S )z*Is the given module one compiled by mypyc?)r7   )r?   r   s     r@   is_native_modulezMapper.is_native_module   s    ''rB   exprr	   c                    |j         dS d|j         j        v r8|                     |j         j                            d          d                   S dS )NF.r   T)noderG   r   
rpartitionr?   r   s     r@   is_native_ref_exprzMapper.is_native_ref_expr   sP    95$)$$$(();)F)Fs)K)KA)NOOOtrB   c                L    |                      |          o|j        t          k    S r<   )r   r_   r   r   s     r@   is_native_module_ref_exprz Mapper.is_native_module_ref_expr   s"    &&t,,Bd1BBrB   N)r7   r8   r9   r:   )rC   rD   r9   r#   )rC   r   r_   r   r9   r#   )rb   r   r9   r   )r   r   r9   r   )r   r	   r9   r   )__name__
__module____qualname____doc__rA   rN   ra   r   r   r   r   rL   rB   r@   r6   r6   3   s         ; ; ; ;
W7 W7 W7 W7r+ + + +,( ,( ,( ,(\( ( ( (   C C C C C CrB   r6   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   r6   rL   rB   r@   <module>r      sk   D D " " " " " " a a a a a a a a a a a a a a a a a a a a                                     & & % % % % % @ @ @ @ @ @ @ @ @ @                                           0jC jC jC jC jC jC jC jC jC jCrB   