
    X-Phx#                        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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9  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)	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                V    || _         i | _        i | _        t                      | _        d S N)r8   
type_to_irfunc_to_declsetsymbol_fullnames)selfr8   s     T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypyc/irbuild/mapper.py__init__zMapper.__init__>   s*    "358:*-%%    typType | Noner#   c                0    |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        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t0          S |j        j        dk    rt2          S |j        j        dk    rt4          S t           S t          |t6                    rP|j        j        j        d
k    r4t;          |j                   t?           fd|j        D                       S t"          S t          |t@                    rt           S t          |tB                    rtD          S t          |tF                    r%t-          j$         fd|j        D                       S t          |tJ                    rt           S t          |tL                    rt           S t          |tN                    r (                    |j)                  S t          |tT                    r-|j+        j        J  (                    |j+        j                  S t          |tX                    rt           S t          |tZ                    rt          S t          |t\                    r (                    |j/                  S t          |t`          tb          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     rC   	<genexpr>z'Mapper.type_to_rtype.<locals>.<genexpr>Y   s)      MMS\_4MMMMMMrE   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)rK   trB   s     rC   
<listcomp>z(Mapper.type_to_rtype.<locals>.<listcomp>}   s'    HHHt11!44HHHrE   c                :    g | ]}                     |          S rO   rP   )rK   itemrB   s     rC   rS   z(Mapper.type_to_rtype.<locals>.<listcomp>   s'    0`0`0`d1C1CD1I1I0`0`0`rE   Fzunexpected type %s)2r0   r   
isinstancer   typerJ   r-   r(   r%   r3   r&   r.   anymror'   r2   r)   r4   r1   r>   r!   is_protocolr$   r,   r+   r*   r5   r   partial_fallbackr   itemsr"   r   r   r/   r   make_simplified_unionr   r   r   rQ   upper_boundr   varr   r   r   fallbackr   r   )rB   rF   insts   `  rC   rQ   zMapper.type_to_rtypeD   s   ;$$c""c8$$ P	%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66rE   r   kindr   c                t    |t           k    rt          S |t          k    rt          S |                     |          S r=   )r   r4   r   r'   rQ   )rB   rF   rb   s      rC   get_arg_rtypezMapper.get_arg_rtype   s8    8##Y""%%c***rE   fdefr   strict_dunders_typingboolr   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             }|s|j
        d
v rt          }t!          ||          S )Nc                B    g | ]\  }}                     ||          S rO   )rd   )rK   rF   rb   rB   s      rC   rS   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s=       C ""3--  rE   c                    g | ]}|d u S r=   rO   rK   names     rC   rS   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    JJJdTT\JJJrE   c                    g | ]	}t           
S rO   )r0   )rK   _s     rC   rS   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    CCCq*CCCrE   c                    g | ]	}|j         
S rO   )pos_onlyrK   args     rC   rS   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    DDDcS\DDDrE   rD   	argumentsc                &    g | ]}|j         j        S rO   )variablerl   rq   s     rC   rS   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    EEEs*EEErE   c                    g | ]}|pd S ) rO   rk   s     rC   rS   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    ??????rE   c                <    g | ]\  }}}}t          ||||          S rO   )r    )rK   arg_namearg_kindarg_typearg_pos_onlys        rC   rS   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s>     
 
 
:(Hl x8\BB
 
 
rE   )__eq____ne____lt____gt____le____ge__)rV   rW   r   zip	arg_types	arg_kinds	arg_namesrQ   ret_typers   rl   rg   infor/   r0   hasattrr   )	rB   re   rf   r   arg_pos_onlysretis_init_methodr   argss	   `        rC   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? ?
 
 
 % 	(
 yXXX'T3'''rE   modulestrc                    || j         v S )z*Is the given module one compiled by mypyc?)r8   )rB   r   s     rC   is_native_modulezMapper.is_native_module   s    ''rE   exprr	   c                    |j         dS d|j         j        v rC|j         j                            d          d         }|                     |          p|| j        v S dS )NF.r   T)noderJ   
rpartitionr   rA   )rB   r   rl   s      rC   is_native_ref_exprzMapper.is_native_ref_expr   sb    95$)$$$9%0055a8D((..O$$:O2OOtrE   c                L    |                      |          o|j        t          k    S r=   )r   rb   r   )rB   r   s     rC   is_native_module_ref_exprz Mapper.is_native_module_ref_expr   s"    &&t,,Bd1BBrE   N)r8   r9   r:   r;   )rF   rG   r:   r#   )rF   r   rb   r   r:   r#   )re   r   rf   rg   r:   r   )r   r   r:   rg   )r   r	   r:   rg   )__name__
__module____qualname____doc__rD   rQ   rd   r   r   r   r   rO   rE   rC   r7   r7   4   s         0 0 0 0Y7 Y7 Y7 Y7v+ + + +/( /( /( /(b( ( ( (   C C C C C CrE   r7   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   r7   rO   rE   rC   <module>r      su   D D " " " " " " a a a a a a a a a a a a a a a a a a a a                                     & & % % % % % @ @ @ @ @ @ @ @ @ @                                             2qC qC qC qC qC qC qC qC qC qCrE   