
    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:m;Z;m<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RVecbool_rprimitivebytearray_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)r;   
type_to_irfunc_to_declsetsymbol_fullnamesfdef_to_generator)selfr;   s     S/root/projects/qq-shell/venv/lib64/python3.11/site-packages/mypyc/irbuild/mapper.py__init__zMapper.__init__A   s2    "358:*-%%9;    typType | Noner$   c                	    |t           S t          |          }t          |t                    r|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 |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 rCt3           j        |j                           }|j        j        rt7          |t           g          S |S |j        j	        dk    rt8          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-tA                               |j!        d                             S |j        j	        tD          v rtD          |j        j	                 S t           S t          |tF                    rP|j$        j        j	        dk    r4tK          |j&                   tO           fd|j&        D                       S t,          S t          |tP                    rt           S t          |tR                    rtT          S t          |tV                    r%t7          j,         fd|j&        D                       S t          |tZ                    rt           S t          |t\                    rt           S t          |t^                    r                     |j0                  S t          |tb                    r-|j2        j        J                      |j2        j                  S t          |tf                    rt           S t          |th                    rt&          S t          |tj                    r                     |j6                  S t          |tn          tp          f          rt           S J dt	          |          z              )N   r   zbuiltins.intzbuiltins.floatzbuiltins.boolzbuiltins.strzbuiltins.byteszbuiltins.bytearrayzbuiltins.listc              3  ,   K   | ]}|j         d k    V  dS )zbuiltins.dictN)fullname).0clss     rG   	<genexpr>z'Mapper.type_to_rtype.<locals>.<genexpr>d   s)      MMS\_4MMMMMMrI   zbuiltins.setzbuiltins.frozensetzbuiltins.tuplezbuiltins.rangezmypy_extensions.i64zmypy_extensions.i32zmypy_extensions.i16zmypy_extensions.u8zlibrt.vecs.vecc                :    g | ]}                     |          S  type_to_rtype)rP   trF   s     rG   
<listcomp>z(Mapper.type_to_rtype.<locals>.<listcomp>   s'    HHHt11!44HHHrI   c                :    g | ]}                     |          S rT   rU   )rP   itemrF   s     rG   rX   z(Mapper.type_to_rtype.<locals>.<listcomp>   s'    0`0`0`d1C1CD1I1I0`0`0`rI   Fzunexpected type %s)9r3   r   
isinstancer   type
is_newtypelenbasesrV   rO   r0   r+   r'   r6   r)   r(   r1   anymror*   r5   r,   r7   r4   rA   r"   is_protocolr%   r/   r.   r-   r8   r&   argsr!   r   partial_fallbackr   itemsr#   r   r   r2   r   make_simplified_unionr   r   r   upper_boundr   varr   r   r   fallbackr   r   )rF   rJ   insts   `  rG   rV   zMapper.type_to_rtypeI   s   ;$$c""c8$$ Z	%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"&;;;''"&;;;''"&;;;''"&:::''"&666D..sx{;;<<<"&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6rI   r   kindr   c                t    |t           k    rt          S |t          k    rt          S |                     |          S r@   )r   r7   r   r*   rV   )rF   rJ   rk   s      rG   get_arg_rtypezMapper.get_arg_rtype   s8    8##Y""%%c***rI   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 rT   )rm   )rP   rJ   rk   rF   s      rG   rX   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s=       C ""3--  rI   c                    g | ]}|d u S r@   rT   rP   names     rG   rX   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    JJJdTT\JJJrI   c                    g | ]	}t           
S rT   )r3   )rP   _s     rG   rX   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    CCCq*CCCrI   c                    g | ]	}|j         
S rT   )pos_onlyrP   args     rG   rX   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    DDDcS\DDDrI   rH   	argumentsc                &    g | ]}|j         j        S rT   )variableru   rz   s     rG   rX   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    EEEs*EEErI   c                    g | ]}|pd S ) rT   rt   s     rG   rX   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s    ??????rI   c                <    g | ]\  }}}}t          ||||          S rT   )r    )rP   arg_namearg_kindarg_typearg_pos_onlys        rG   rX   z&Mapper.fdef_to_sig.<locals>.<listcomp>   s>     
 
 
:(Hl x8\BB
 
 
rI   )__eq____ne____lt____gt____le____ge__)r[   r\   r   zip	arg_types	arg_kinds	arg_namesrV   ret_typer|   ru   rp   infor2   r3   hasattrr   )	rF   rn   ro   r   arg_pos_onlysretis_init_methodr   rc   s	   `        rG   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'''rI   modulestrc                    || j         v S )z*Is the given module one compiled by mypyc?)r;   )rF   r   s     rG   is_native_modulezMapper.is_native_module   s    ''rI   exprr	   c                    |j         dS d|j         j        v rC|j         j                            d          d         }|                     |          p|| j        v S dS )NF.r   T)noderO   
rpartitionr   rD   )rF   r   ru   s      rG   is_native_ref_exprzMapper.is_native_ref_expr   sb    95$)$$$9%0055a8D((..O$$:O2OOtrI   c                L    |                      |          o|j        t          k    S r@   )r   rk   r   )rF   r   s     rG   is_native_module_ref_exprz Mapper.is_native_module_ref_expr   s"    &&t,,Bd1BBrI   N)r;   r<   r=   r>   )rJ   rK   r=   r$   )rJ   r   rk   r   r=   r$   )rn   r   ro   rp   r=   r   )r   r   r=   rp   )r   r	   r=   rp   )__name__
__module____qualname____doc__rH   rV   rm   r   r   r   r   rT   rI   rG   r:   r:   7   s         < < < <c7 c7 c7 c7J+ + + +/( /( /( /(b( ( ( (   C C C C C CrI   r:   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   r7   r8   r:   rT   rI   rG   <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                                     & & % % % % % @ @ @ @ @ @ @ @ @ @                                                   8}C }C }C }C }C }C }C }C }C }CrI   