
    X-Phh                       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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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/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6 dd	l7m8Z8 dd
l9m:Z:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZH ddlImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZR ddlSmTZTmUZU ddlVmWZWmXZX ddlYmZZZ ddl[m\Z\m]Z]m^Z^m_Z_ ddl`maZambZbmcZcmdZdmeZe ddlfmgZgmhZh ddlimjZj ddlkmlZlmmZmmnZn ddlompZp ddlqmrZrmsZsmtZt ddlumvZvmwZwmxZxmyZy ddlzm{Z{ ddl|m}Z}m~Z~mZ ddlmZ ddlmZmZ dd"Zdd$Zdd(Zdd+Zdd-Zdd0Zdd2Zdd3Zdd6Zdd7Zdd9Zdd;Zdd=Zdd>Zdd@ZddBZddFZddHZddLZddOZddRZddUZdd\Zdd`ZddbZdddZddfZddhZddjZddlZddnZddpZddrZddsZdduZddvZdd}ZddZddZddZddZddZddZddZdS )zTransform mypy expression ASTs to mypyc IR (Intermediate Representation).

The top-level AST transformation logic is implemented in mypyc.irbuild.visitor
and mypyc.irbuild.builder.
    )annotationsN)Sequence)Callable)&	ARG_NAMEDARG_POSLDEFAssertTypeExprAssignmentExpr	BytesExprCallExprCastExprComparisonExprComplexExprConditionalExprDictExprDictionaryComprehensionEllipsisExpr
Expression	FloatExprGeneratorExpr	IndexExprIntExprListComprehensionListExpr
MemberExprMypyFileNameExprOpExprRefExprSetComprehensionSetExpr	SliceExprStarExprStrExpr	SuperExpr	TupleExprTypeApplicationTypeInfoTypeVarLikeExpr	UnaryExprVar)Instance
ProperType	TupleTypeTypeTypeget_proper_type)MAX_SHORT_INT)ClassIR)FUNC_CLASSMETHODFUNC_STATICMETHOD)Assign
BasicBlockComparisonOpIntegerLoadAddressLoadLiteralPrimitiveDescriptionRaiseStandardErrorRegisterTupleGetTupleSetValue)	RTuplebool_rprimitiveint_rprimitiveis_fixed_width_rtypeis_int_rprimitiveis_list_rprimitiveis_none_rprimitiveobject_rprimitiveset_rprimitive)is_borrow_friendly_exprprocess_conditional)	IRBuilderint_borrow_friendly_op)constant_fold_expr)comprehension_helper)raise_error_if_contains_unreachable_namestranslate_list_comprehensiontranslate_set_comprehension)convert_format_expr_to_bytesconvert_format_expr_to_strjoin_formatted_bytesjoin_formatted_stringstokenizer_printf_style)apply_function_specializationapply_method_specialization)bytes_slice_op)dict_get_item_opdict_new_opdict_set_item_op)iter_op)list_append_oplist_extend_oplist_slice_op)ellipsis_opget_module_dict_opnew_slice_optype_op)builtin_names)
set_add_op	set_in_opset_update_op)str_slice_op)list_tuple_optuple_slice_opbuilderrL   exprr   returnr@   c                F   t          |j        t                    r6|j        j        r*|                     |j        j        |j        j                  S |j        G|                     t          t          j	        d|j                             | 
                                S |j        j        }|t          v r9t          |         \  }}|                     t          |||j                            S |dk    r| 
                                S |dk    r|                                 S |dk    r|                                 S |dv r|                                 S t!          | |          }||S t          |j        t"                    rW|j        j        rK|                     |j        ||j        |                     |          | j        |         |j                  }||S t          |j        t,                    r2|j        j        | j        v r|                     |j        j                  S |j        t4          k    rYt          |j        t"                    r|j        j        s2t          |j        t"                    rkt9          |                     |                    rI|j        j        r=|                     d                     |j        j                  |j        j                   t          |j        t,                    rc| !                    tD          g |j                  }| #                    tH          || %                    |j        j                  g|j                  }|S | &                    | '                    |d          |j                  S | (                    |          S )	Nz+mypyc internal error: should be unreachablebuiltins.Nonebuiltins.Truebuiltins.Falseztyping.TYPE_CHECKINGztyping_extensions.TYPE_CHECKINGz=Local variable "{}" has inferred type None; add an annotationT)for_read))
isinstancenoder)   is_new_styleload_type_varnamelineaddr<   RUNTIME_ERRORnonefullnamerf   r9   truefalsetransform_math_literalr+   is_finalemit_load_finalis_native_ref_exprtypesr   importsload_modulekindr   is_suppressed_importrG   	node_typeis_inferrederrorformatcall_crc   primitive_opr[   load_strreadget_assignment_targetload_global)	rm   rn   r   typsrcmath_literalvaluemod_dictobjs	            X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypyc/irbuild/expression.pytransform_name_exprr   p   sU   $)_-- E$)2H E $$TY^TY^DDDy"0=	 	
 	
 	
 ||~~y!H=   *S{{;sC;;<<<?""||~~?""||~~###}}NNN}})'8<<L$)S!! 
di&8 
''II&&t,,M$I
 
 L$)X&& 749+=+P+P""49#5666 yD*TY"<"<A_ ty#&&
	"7#4#4T#:#:;;
	 	%
	
 MMOVVIN  		   di** 	_ ~~&8"diHHH&& 8W-=-=di>P-Q-Q"RTXT] C J<< = =dT = R RTXT]^^^t$$$    r   c                J   |j         dv r|                                 S |                     |          }|9|\  }}}|                     |||j        || j        |         |j                  }||S t          | |j                   }||S t          |j	        t                    r2|j	        j         | j        v r|                     |j	        j                   S |                     |          }|                     |j        |          }	|                     |          }
t#          | j                            |j                            }t          |t&                    r|j        j        j        rw|j        j        j        d         d         }|j        |v rQ| j                            |                    |j                            }|                     |	d|g|
|j                  S t9          | ||           |o| j        }| j                            |	|j        |
|j        |          S )Nrt   
can_borrow
namedtuplefields__getitem__)borrow)r   r   get_final_refr   rz   r   r{   r   rv   rw   r   r   r   is_native_attr_refacceptrn   r   r0   getr.   partial_fallbacktypeis_named_tuplemetadatarm   load_intindexgen_method_call-check_instance_attribute_access_through_classr   get_attr)rm   rn   finalr   	final_varnativer   r   r   r   rtyper   r   r   r   s                  r   transform_member_exprr      s   }SSS}} !!$''E&+#)V''xt9Ldi
 
 L)'4=AAL$)X&& 749+=+P+P""49#5666++D11J
..z.
:
:Cd##E '-++DI66
7
7C#y!! Zc&:&?&N Z%*3LA(K9O,,V\\$)-D-DEEE**3wtyYYY1'4EEE.G.F?##CE49V#TTTr   r   ProperType | NoneNonec                   t          |j        t                    r"|j        j        }t          |t                    r&t          |j        t                    r|j        j        }t          |t                    r| j	        j
                            |          }||j        r|                    |j                  }|t          |j        t                    rr|j        j        sh|j        j        s^|                     d                    |j                  |j                   |                     d|j                   dS dS dS dS dS dS dS dS dS )zEReport error if accessing an instance attribute through class object.Nz:Cannot access instance attribute "{}" through class objectzO(Hint: Use "x: Final = ..." or "x: ClassVar = ..." to define a class attribute))rv   rn   r   rw   r/   itemr,   r   r(   mapper
type_to_irr   is_ext_classrz   r+   is_classvarr   r   r   r{   note)rm   rn   r   rw   class_irsyms         r   r   r      se    $)W%% y~c8$$ 	!CHh)G)G 	!8=DdH%% 	~044T::H#(=#hhty))O"38S11 $H0 $  H- $
 MMT[[ I  		   LL-	    + 
	 	#### $OOOOOOOr   or%   c                                          d|j                  }|j        j        r fd|j        j        D             }n|j        J                      |j        j                  } j        j        |j                 }t           j
        j                  }t          |          } j        j        rXt           j        d                                                   d         }                     | j        j        j                  }n|j        st          |          }||g}                     |||j                  }	                     |	|j        |j                  S )Nzbuiltins.superc                :    g | ]}                     |          S  r   .0argrm   s     r   
<listcomp>z(transform_super_expr.<locals>.<listcomp>  s%    ;;;s##;;;r      )load_module_attr_by_fullnamer{   callargsinfoload_native_type_objectr   r   r   iterrm   nextfn_infois_generatorlist	symtablesvaluesr   fitemr   py_callpy_get_attrrz   )
rm   r   sup_valr   r   iriter_envvself	self_targress
   `         r   transform_super_exprr     s:   223CQVLLGv{ ;;;;qv{;;;v!!!--afo>>^&qv.,--H~~?' 	#W.r299;;<<Q?ILLGO,A,FGGEE 	#NNEU|
//'4
0
0CsAFAF333r   r   c                   |j         }t          |j        t                    rt	          | |j                  S t          |j        t
                    r|                     |j        j                  S t          |t          t          f          rFt          |j
        t                    r,|j
        j        r |                     |j        d                   S t          |t                    r&t          |j        t                    r|j        j        }t          |t                    rlt          |j        t                     r0t          |j        j
        t"                    rt%          | ||          S t'          | ||          pt)          | ||          S t          |t*                    rt-          | ||          S t%          | ||          S )Nr   )calleerv   analyzedr   translate_cast_exprr	   r   rn   r   r   rw   r(   
is_newtyper   r   r'   r   r   translate_callrY   translate_method_callr%   translate_super_method_call)rm   rn   r   s      r   transform_call_exprr   '  s   [F$-** ,"7DM:::	DM>	2	2 	,~~dm01116Hj122,v{H--, K", ~~dil+++&)$$ &FO_)U)U &%&*%% 
5fk7++ 	9
6;;KX0V0V 	9!'4888*7D&AA 
EZT6F
 F
 	
 
FI	&	& 5*7D&AAAgtV444r   r   r   c                    t          |t                    r"t           ||          pt           ||          S                      |          } fd|j        D             }                     |||j        |j        |j	                  S )Nc                :    g | ]}                     |          S r   r   r   s     r   r   z"translate_call.<locals>.<listcomp>N  s%    555CGNN3555r   	arg_kinds	arg_names)
rv   r   rX   translate_refexpr_callr   r   r   r{   r   r   )rm   rn   r   functionr   s   `    r   r   r   F  s    &'"" 
,WdFCC 
G]T6H
 H
 	
 ~~f%%H555549555D??$	T^t~    r   r   c                X      fd|j         D             }                     |||          S )zTranslate a non-method call.c                :    g | ]}                     |          S r   r   r   s     r   r   z*translate_refexpr_call.<locals>.<listcomp>W  %    ;;;#'..%%;;;r   )r   call_refexpr_with_args)rm   rn   r   
arg_valuess   `   r   r   r   T  s8     <;;;;;;J))$
CCCr   c           	                               |          rt           ||          S t          |j        t                    rt          |j        j        t                    r|j        j         j        j        v r j        j        |j        j                 	                    |j
                  rmt          d |j        D                       rOt          |j        j        t                    sJ  j        j        |j        j                 }t           |||          S                      |          rQ                     |          } fd|j        D             }                     |||j        |j        |j                  S t          |j        t                    r|j        j        }t          |t(                    r|j        rt-          |j                  }t          |t0                    rrt          |j        t4                    rX j        j                            |j        j                  }|r-|j        r&|                                rt           |||          S                      |j                  }	t?           |||	          }
|
|
S                      |j                  } fd|j        D             }                      ||j
        |                     |          |j        |j        |j                  S )zvGenerate IR for an arbitrary call of form e.m(...).

    This can also deal with calls to module-level functions.
    c              3  6   K   | ]}|t           t          fv V  d S N)r   r   )r   r   s     r   	<genexpr>z(translate_method_call.<locals>.<genexpr>i  s,      HH),,HHHHHHr   c                :    g | ]}                     |          S r   r   r   s     r   r   z)translate_method_call.<locals>.<listcomp>r  %    999s##999r   r   Nc                :    g | ]}                     |          S r   r   r   s     r   r   z)translate_method_call.<locals>.<listcomp>  r   r   )!r   r   rv   rn   r   rw   r(   r   r   
has_methodrz   allr   call_classmethodis_module_member_exprr   r   r   r{   r   r+   is_clsr0   r   r/   r   r,   r   r   has_no_subclassesr   rY   r   )rm   rn   r   r   r   r   rw   r   r   receiver_typvalr   s   `           r   r   r   \  s   
 !!&)) 3
gtV4446;((0
v{'220
 K 999N%fk&67BB6;OO :HHHHHHH :
 &+*H55555^&v{'78T6:::		&	&v	.	. %
>>&))9999ty999dDI4>  
 
 	
 fk7++ 		Q;#D$$$ Q Q%di00c8,, QCHh1O1O Q&~8<<SX]KKH QH$9 Qh>X>X>Z>Z Q  04PPP((55 *'4NN?JnnV[))9999ty999&&Kd##INN
 
 	
r   r   r2   c           	         |                     |j                  }g }|j                                        |j                                        }}|j        t          k    re|j        r^|                     	                    |j
                             |                    dt                     |                    dd            | fd|j        D             z  }|j        r# j                            |||||j                  S                      |j                  }                     ||j        |                     |          |j        |j        |j                  S )Nr   c                :    g | ]}                     |          S r   r   r   s     r   r   z$call_classmethod.<locals>.<listcomp>  s%    666SW^^C  666r   )method_declrz   r   copyr   r   r3   r   appendr   r   insertr   r   rm   r   r{   r   rn   r   r   )	rm   r   rn   r   declr   r   r   r   s	   `        r   r  r    sD   >>&+&&DD>..00$.2E2E2G2GyIy$$$$G33BK@@AAAG$$$D!!!6666DI6666D	 
##D$	9diPPPnnV[))&&Kd##INN
 
 	
r   c                    |j         :t          |j        j                  dk    r.t          |j        j                  dk    rt	           ||          S t          |j        j                  dk    r|j        j        d         }t          |t                    r&t          |j        t                    r|j        j	        st	           ||          S |j        j        d         }t          |t                    r(t          |j        t                    r|j         |j        urt	           ||          S  j        j        |j                  }|j        dd          D ]}|j        |j        v r n^|j        rE|j        >|j        s7|j        dk    r,t          |j                  dk    r                                 S t	           ||          S |                    |j                  } fd|j        D             }|j                                        |j                                        }
}	|j        t2          k    r                                 }|j        t6          k    r#                     t:          |g|j                  }nc j        j         rWtC           j"        d         #                                          d         } $                    | j        j%        j                  }|&                    d|           |	&                    dtN                     |
&                    dd             j(                            |||	|
|j                  S )Nr         __init__c                :    g | ]}                     |          S r   r   r   s     r   r   z/translate_super_method_call.<locals>.<listcomp>  r   r   r   r   ))r   lenr   r   r   rv   r   rw   r+   is_selfr(   r   r   mrorz   method_declsr   builtin_baseinherits_pythonr~   r	  r   r
  r   r   r4   selfr3   r   re   r{   r   r   r   r   r   r   r   r  r   rm   )rm   rn   r   self_argtyp_argr   baser  r   r   r   r   r   s   `            r   r   r     s   {s6;#34499c&+BR>S>SWX>X>XgtV444 6;!!;#A&8X..	9hmS11	9 =(	9
 "'4888+"1%7H--	9glH55	9 {',..!'4888		"6;	/B qrr
 5 5;$+++E , O		"'& (z))DI!## <<>>!gtV444FK((D;;;;;;;J>..00$.2E2E2G2GyIy%%%||~~9(((((5'49EEEE_) 	H W.r299;;<<Q?ILLGO,A,FGGE!U###G$$$D!!!?j)Y	RRRr   r   c                    |                      |j                  }|                     |j                  }|                     |||j                  S r   )r   rn   type_to_rtyper   coercer{   )rm   rn   r   target_types       r   r   r     sB    
..
#
#C''	22K>>#{DI666r   r*   c                    t          | |          }|r|S |                     |                     |j                  |j        |j                  S r   )try_constant_foldunary_opr   rn   opr{   )rm   rn   foldeds      r   transform_unary_exprr&    sH    w--F GNN4955tw	JJJr   r   c                F   |j         dv r|                     |          S |j         dk    r@t          |j        t          t
          f          rt          | |j        |j                  }||S t          | |          }|r|S d}d}| 	                    |j                  }| 	                    |j                  }t          |          rOt          |          r@|j         dk    rt          |          }|j         t          v rt          | |j                  }d}n5t          |          r&t          |          rt          | |j                  }d}|                     |j        |          }|                     |j        |          }	|                     ||	|j         |j                  S )N)andor%Fz//Tr   )r$  shortcircuit_exprrv   leftr$   r   !translate_printf_style_formattingrightr"  r   rE   try_optimize_int_floor_dividerM   rJ   rD   r   	binary_opr{   )
rm   rn   retr%  borrow_leftborrow_rightltyper   r,  r.  s
             r   transform_op_exprr5    s   w-((... w#~~*TY)0DEE~/DJOO?Jw--F KLdi((Edj))E  $5e$<$< 7d??066D7,,,1'4:FFKL	e	$	$ )=e)D)D -gtzBB>>$)><<DNN4:,N??ET5$'49===r   c                    t          | j        t                    s| S | j        j        }|                                dz
  }d|cxk     rdk     r/n n,|d|z  k    r#t          d| j        t          |                    S | S )z?Replace // with a power of two with a right shift, if possible.r  r      z>>)rv   r.  r   r   
bit_lengthr   r,  )rn   divisorshifts      r   r/  r/  (  s    dj'** jG  1$E5~~~~2~~~~~'a5j11dDIwu~~666Kr   r   c                h   |j         }|                     |j                  }t          |          }|ot	          | |          }|                     |j        |          }t          |j        t                    rCt          |t                    r.| 
                    t          ||j        |j                            S t          |t                    rt          | ||          }|r|S |                     |j         |          }|                     |d|g|                     |          |j                  S )Nr   r   )r   r   r  rF   rJ   r   rv   r   rA   r   r|   r>   r   r{   r"   try_gen_slice_opr   )	rm   rn   r   	base_typeis_listcan_borrow_baser  r   	index_regs	            r   transform_index_exprrA  3  s   JE!!$),,I ++GI"9'5"I"IO>>$)>@@D$)V$$ CE7)C)C C{{8D%+tyAABBB%##  $66 	Ltzg>>I""mi['*;*;D*A*A49  r   Value | Nonec                T    t          | |          }||                     |          S dS )zXReturn the constant value of an expression if possible.

    Return None otherwise.
    N)rN   load_literal_value)rm   rn   r   s      r   r"  r"  I  s2    
 w--E))%0004r   r  r   r"   c                Z   |j         rdS |j        r|                     |j                  }nt          }|j        r|                     |j                  }nt          }t          |          rt          |          r|j        r|                     |j                  }n|                     d          }|j        r|                     |j                  }n|                     t                    }t          t          t          t          g}| j                            ||||g|j                  S dS )zGenerate specialized slice op for some index expressions.

    Return None if a specialized op isn't available.

    This supports obj[x:y], obj[:x], and obj[x:] for a few types.
    Nr   )stridebegin_indexr   rC   	end_indexrE   r   r   r1   ra   rl   rj   rZ   rm   matching_call_cr{   )rm   r  r   
begin_typeend_typebeginend
candidatess           r   r<  r<  T  s#    | t $&&u'899

#
 "$$U_55! $$ [):8)D)D [ 	(NN5#455EE$$Q''E? 	2..11CC ""=11C#^\>R
..zD%;MuzZZZ4r   r   c                   t                      t                      t                      }}}t          | |j        ||           |                     |          }t	          |          }|                     |           |                     |j                  }|                     |||j	                  }| 
                    t          ||                     |                     |           |                     |           |                     |j                  }|                     |||j	                  }| 
                    t          ||                     |                     |           |                     |           |S r   )r6   rK   condr   r=   activate_blockr   if_exprr  r{   r|   r5   goto	else_expr)	rm   rn   if_body	else_body
next_block	expr_typetarget
true_valuefalse_values	            r   transform_conditional_exprr\  z  sB   %/\\:<<
YGGY???!!$''Ii  F7###--J
ItyAAJKKvz**+++LL9%%%..00K..iCCKKKv{++,,,LL:&&&Mr   itemsSequence[Expression]list[object] | Nonec                4   g }|D ]}t          | |          }||                    |           *t          |t                    rc|j        dk    r|                    d            `|j        dk    r|                    d           |j        dk    r|                    d           t          |t
                    r9t          | |j                  }|"|                    t          |                     t          |          t          |          k    rd S |S )Nrq   rr   Trs   F)
rN   r  rv   r   r   r&   set_literal_valuesr]  tupler  )rm   r]  r   r   const_valuetuple_valuess         r   ra  ra    s   F 3 3($77"MM+&&&dG$$ 
	3}//d####/11d####"222e$$$i(( 	3-gtzBBL'eL11222
6{{c%jj  tMr   sr!   c                    t          | |j                  }|5|                     t          t	          |          t
                              S dS )a  Try to pre-compute a frozenset literal during module initialization.

    Return None if it's not possible.

    Supported items:
     - Anything supported by irbuild.constant_fold.constant_fold_expr()
     - None, True, and False
     - Tuple literals with only items listed above
    N)ra  r]  r|   r:   	frozensetrI   )rm   re  r   s      r   precompute_set_literalrh    sD      11F{{;y'8'8.IIJJJ4r   er   c                l    j         d         }|dv rt          j                   dk    rt          j        d         t          t
          f          rj        d         j        }t          |          }d|cxk     rdk     rn nj         d         dk    rd}d}nd}d	}j        d         } j        d
         j        }|J |j	        d         j
        }	t          |	t                    sJ t          |	g           }
g }|D ]4}t          |g||g          }|
 j        |<   |                    |           5|                    d          }|D ]}t#          |||          }|
 j        |<                        |          S |dk    r/j         d         dk    rd}nd	}|g_         |d         j        d<   n?|dk    r9j         d         dk    r                                 S                                  S |dv rt          j                   dk    rt          j        d         t*                    rt-           j        d                   }|rj        d         } j                            t2                               |          |gj        t6                    }|dk    r                     |dj                  S |S t          j                   dk    r|dv rNj        d         }t          |t:                    r,|j        dk    r!t?           j        d         |dk              S j        d         }tA           !                    |                    rj        d         }tA           !                    |                    rd|tD          v r[tG           |          }                     ||          }                     |d          } $                    |||j                  S  !                              d fd d                     j        d                             S )Nr   )innot inr     rk  r)  z==r(  z!=builtinsboolrl  not)isis notrq   rq  )negatedr   Tiintprevr@   ro   c           
     l     t          j                  dz
  k    rDt          j                                      j         dz                      j                  S                     j         dz                      j                            d fd fdj                  S )Nr  r(  c                 J    t           j                 j                  S r   )transform_basic_comparison	operatorsr{   )rm   ri  rt  r   rv  s   r   <lambda>z7transform_comparison_expr.<locals>.go.<locals>.<lambda>)  s"    .wAdTUTZ[[ r   c                 "      dz             S )Nr  r   )gort  r   s   r   r{  z7transform_comparison_expr.<locals>.go.<locals>.<lambda>*  s    BBq1udOO r   )r  rz  ry  r   operandsr{   rm   shortcircuit_helper)rt  rv  r   rm   ri  rX  r}  s   ``@r   r}  z%transform_comparison_expr.<locals>.go  s    AK  1$$$-Qw~~ajQ>O/P/PRSRX   ~~ajQ/0022[[[[[[[[######F
 
 	
r   )rt  ru  rv  r@   ro   r@   )%rz  r  rv   r~  r&   r   r]  graphtreenamesrw   r(   r,   r   r   r  popr   r   r   r   r!   rh  rm   r   rh   r{   rB   r#  r   r   translate_is_nonerE   r   rM   rJ   r0  )rm   ri  first_opr]  n_itemsbin_opcmp_oplhs	mypy_filer   	bool_typeexprsr   rn   or_exprset_literalresult
right_expr	left_exprr2  r,  r.  rX  r}  s   ``                    @@r   transform_comparison_exprr    sq    {1~H$$$!!qz!}y(&;<< " 
1#e** w{1~%%*Q-Cj16I(((?6*/DdH----- r**IE # #%vhd<<&/d#T"""""'))A,,G 3 3 $77)2g&&>>'*** \\{1~%%!(AK!!HAJqMM \\{1~%%}}&||~~%
 	$$$!!qz!}g.. " -WajmDD"*Q-C_11GNN3//=qv F 8##''qv>>>M
1;1'''AJ*h// [J4G?4Z4Z(!*Q-UYIYZZZZJqM	W..y99:: 	LAJ !2!2:!>!>?? L555"9':"N"NK">>)>LLD#NN:$NGGE",,T5(AFKKK !!!$$I
 
 
 
 
 
 
 
 
 2a
1..///r   rs  ro  c                    |                      |d          }|                     ||                                 |rdnd|j                  S )NTr   rr  rq  )r   r0  none_objectr{   )rm   rn   rs  vs       r   r  r  1  sK    t--AQ 3 3 5 577TxxPTVZV_```r   r$  strr,  r.  r{   ru  c                   t          |j                  r|t          j        v r|j        |j        k    rN|j        j        rt          j        |         }nt          j        |         }| j                            ||||          S t          |t                    rh|j        j        rt          j        |         }nt          j        |         }| j                            || 
                    ||j        |          ||          S nt          |j                  r|t          j        v r}t          |t                    rh|j        j        rt          j        |         }nt          j        |         }| j                            | 
                    ||j        |          |||          S d}|dk    rd\  }}n|dk    rd\  }}|                     ||||          }|r|                     |d|          }|S )NFrr  )rq  Trl  )rk  Trp  )rD   r   r7   
signed_ops	is_signedunsigned_opsrm   comparison_oprv   r8   r  r0  r#  )rm   r$  r,  r.  r{   op_idnegaterY  s           r   ry  ry  6  s    DI&& 
21H+H+H:""y" 6$/3$1"5?00ueTJJJw'' 	y" 6$/3$1"5?00gnnUDIt<<eT  	 	UZ((
,)))tW%% * : 	2 +B/EE -b1E,,NN4T22E5$
 
 	
 F	X~~
FF	x
FtUB55F 7!!&%66Mr   format_exprStrExpr | BytesExprrhsc                   t          |j                  }||\  }}g }t          |t                    r|j        }n*t          |t
                    r|                    |           t          |t                    r1t          | |||j	                  }|t          | |||j	                  S n0t          | |||j	                  }|t          | |||j	                  S d S r   )rW   r   rv   r&   r]  r   r  r   rS   r{   rU   rT   rV   )rm   r  r  tokensliterals
format_opsr  substitutionss           r   r-  r-  b  s     $K$566F%*c9%% 	IEEZ(( 	LLk9-- 	b8UK,< M (+GX}kN^___ ) 7UK,< M (-gxP[P`aaa4r   r   c                @    | j                             |j                  S r   )rm   r   r   rm   rn   s     r   transform_int_exprr    s    ?##DJ///r   r   c                @    | j                             |j                  S r   )rm   
load_floatr   r  s     r   transform_float_exprr    s    ?%%dj111r   r   c                @    | j                             |j                  S r   )rm   load_complexr   r  s     r   transform_complex_exprr    s    ?''
333r   r$   c                6    |                      |j                  S r   )r   r   r  s     r   transform_str_exprr    s    DJ'''r   r   c                6    |                      |j                  S r   )load_bytes_from_str_literalr   r  s     r   transform_bytes_exprr    s    ..tz:::r   r   c                |    |                      t          t          j        t          j        |j                            S r   )r|   r9   rb   r   r   r{   rm   r   s     r   transform_ellipsisr    s'    ;;{;#3[_afMMNNNr   r   c                8    t          | |j        |j                  S r   )_visit_list_displayr]  r{   r  s     r   transform_list_exprr    s    w
DI>>>r   list[Expression]c           	     J    t          | || j        t          t          |d          S )NT)_visit_displaynew_list_opr_   r`   )rm   r]  r{   s      r   r  r    s'    +^^TSW  r   r&   c                   t          d |j        D                       rt          | |          S |                     |          }t	          |t
                    r|j        nt          gt          |j                  z  }g }t          |j        |          D ]I\  }}| 
                    |          }|                    |                     |||j                             J|                     t          ||j                            S )Nc              3  @   K   | ]}t          |t                    V  d S r   )rv   r#   )r   r   s     r   r   z'transform_tuple_expr.<locals>.<genexpr>  s,      
=
=$:dH%%
=
=
=
=
=
=r   )anyr]  _visit_tuple_displayr   rv   rA   r   rH   r  zipr   r  r  r{   r|   r?   )rm   rn   
tuple_typer   r]  	item_expr	item_typeregs           r   transform_tuple_exprr    s    

=
=$*
=
=
=== 3#GT222 ""4((J
 j&))	3
 3tz??2 
 E #DJ 6 6 E E	9nnY''W^^CINCCDDDD;;xty11222r   c                |    t          | |j        |j                  }|                     t          |g|j                  S )z)Create a list, then turn it into a tuple.)r  r]  r{   r   rk   )rm   rn   val_as_lists      r   r  r    s3    %gtz49EEK}diHHHr   r   c                    g }|j         D ]J\  }}||                     |          nd}|                     |          }|                    ||f           K| j                            ||j                  S )zAFirst accepts all keys and values, then makes a dict out of them.N)r]  r   r  rm   	make_dictr{   )rm   rn   key_value_pairskey_expr
value_exprkeyr   s          r   transform_dict_exprr    s~    O $
 - -**2*>gnnX&&&Dz**U|,,,,?$$_di@@@r   c           	     ^    t          | |j        | j        t          t          |j        d          S )NF)r  r]  
new_set_oprg   ri   r{   r  s     r   transform_set_exprr    s+    W/]DIW\  r   constructor_op#Callable[[list[Value], int], Value]	append_opr;   	extend_opr>  c                   g }|D ]q}t          |t                    r0|                    d|                     |j                  f           G|                    d|                     |          f           rd }	g }
|D ]L\  }}|	|s|r|
                    |           !|	 ||
|          }	|                     |r|n||	|g|           M|	 ||
|          }	|	S )NTF)rv   r#   r  r   rn   r   )rm   r]  r  r  r  r{   r>  accepted_itemsr   r  initial_itemsstarredr   s                r   r  r    s    N A AdH%% 	A!!4	)B)B"CDDDD!!5'..*>*>"?@@@@FM( Y Y>'>g>  '''>#^M488F'@YYy65/SWXXXX~t44Mr   r   c                ,    t          | |j                  S r   )rQ   	generatorr  s     r   transform_list_comprehensionr    s    '===r   r    c                ,    t          | |j                  S r   )rR   r  r  s     r   transform_set_comprehensionr    s    &w<<<r   r   c                    t                     r                                 S                                           t          g j                            t          t          j        j	        j
        j                            }d fd}t           ||j                                                  S )Nro   r   c                                          j                  }                      j                  }                    t                                        | |gj                   d S r   )r   r  r   r   r]   r   r{   )kr  rm   dr   s     r   gen_inner_stmtsz;transform_dictionary_comprehension.<locals>.gen_inner_stmts  s[    NN15!!NN17##-QA/FOOOOOr   )ro   r   )rP   r~   maybe_spillr   r\   r{   r   r  indices	sequences	condlistsis_asyncrO   r   )rm   r   loop_paramsr  r  s   ``  @r   "transform_dictionary_comprehensionr    s    0!<< ||~~GNN;AFCCDDAs19ak1;
KKLLKP P P P P P P P
 +GGG<<??r   c                     d fd} ||j                    ||j                   ||j                  g}                     t          ||j                  S )Nr   Expression | Nonero   r@   c                Z    |                                  S                     |           S r   )r  r   )r   rm   s    r   get_argz%transform_slice_expr.<locals>.get_arg  s,    ;&&(((>>#&&&r   )r   r  ro   r@   )rG  rH  rF  r   rd   r{   )rm   rn   r  r   s   `   r   transform_slice_exprr    sn    ' ' ' ' ' ' GD$%%wwt~'>'>@T@TUDdDI>>>r   r   c                    |                      d|j                   |                     t          t	          | |          g|j                  S )Nz(Treating generator comprehension as list)warningr{   r   r^   rQ   r  s     r   transform_generator_exprr    sD    OO>GGG*FwPQ*R*R)SUVU[\\\r   r
   c                    |                      |j                  }|                     |j                  }|                     |||j                   |S r   )r   r   r   rY  assignr{   )rm   r   r   rY  s       r   transform_assignment_exprr  $  sG    NN17##E**1844FNN65!&)))Lr   r   c                x   |dk    r|                      t          j                  S |dk    r|                      t          j                  S |dk    r|                      t          j                  S |dk    r|                      t          j                  S |dk    r|                      t          j                  S d S )Nzmath.ezmath.pizmath.infzmath.nanzmath.tau)r  mathri  piinfnantau)rm   r   s     r   r   r   +  s    8!!$&)))9!!$'***:!!$(+++:!!$(+++:!!$(+++4r   )rm   rL   rn   r   ro   r@   )rm   rL   rn   r   ro   r@   )rm   rL   rn   r   r   r   ro   r   )rm   rL   r   r%   ro   r@   )rm   rL   rn   r   ro   r@   )rm   rL   rn   r   r   r   ro   r@   )rm   rL   rn   r   r   r   ro   r@   )rm   rL   rn   r   r   r   ro   r@   )
rm   rL   r   r2   rn   r   r   r   ro   r@   )rm   rL   rn   r   r   r%   ro   r@   )rm   rL   rn   r   ro   r@   )rm   rL   rn   r*   ro   r@   )rm   rL   rn   r   ro   r@   )rn   r   ro   r   )rm   rL   rn   r   ro   r@   )rm   rL   rn   r   ro   rB  )rm   rL   r  r@   r   r"   ro   rB  )rm   rL   rn   r   ro   r@   )rm   rL   r]  r^  ro   r_  )rm   rL   re  r!   ro   rB  )rm   rL   ri  r   ro   r@   )rm   rL   rn   r   rs  ro  ro   r@   )rm   rL   r$  r  r,  r@   r.  r@   r{   ru  ro   r@   )rm   rL   r  r  r  r   ro   rB  )rm   rL   rn   r   ro   r@   )rm   rL   rn   r   ro   r@   )rm   rL   rn   r   ro   r@   )rm   rL   rn   r$   ro   r@   )rm   rL   rn   r   ro   r@   )rm   rL   r   r   ro   r@   )rm   rL   rn   r   ro   r@   )rm   rL   r]  r  r{   ru  ro   r@   )rm   rL   rn   r&   ro   r@   )rm   rL   rn   r   ro   r@   )rm   rL   rn   r!   ro   r@   )rm   rL   r]  r  r  r  r  r;   r  r;   r{   ru  r>  ro  ro   r@   )rm   rL   r   r   ro   r@   )rm   rL   r   r    ro   r@   )rm   rL   r   r   ro   r@   )rm   rL   rn   r"   ro   r@   )rm   rL   r   r   ro   r@   )rm   rL   r   r
   ro   r@   )rm   rL   r   r  ro   rB  )__doc__
__future__r   r  collections.abcr   typingr   
mypy.nodesr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   
mypy.typesr,   r-   r.   r/   r0   mypyc.commonr1   mypyc.ir.class_irr2   mypyc.ir.func_irr3   r4   mypyc.ir.opsr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   mypyc.ir.rtypesrA   rB   rC   rD   rE   rF   rG   rH   rI   mypyc.irbuild.ast_helpersrJ   rK   mypyc.irbuild.builderrL   rM   mypyc.irbuild.constant_foldrN   mypyc.irbuild.for_helpersrO   rP   rQ   rR   "mypyc.irbuild.format_str_tokenizerrS   rT   rU   rV   rW   mypyc.irbuild.specializerX   rY   mypyc.primitives.bytes_opsrZ   mypyc.primitives.dict_opsr[   r\   r]   mypyc.primitives.generic_opsr^   mypyc.primitives.list_opsr_   r`   ra   mypyc.primitives.misc_opsrb   rc   rd   re   mypyc.primitives.registryrf   mypyc.primitives.set_opsrg   rh   ri   mypyc.primitives.str_opsrj   mypyc.primitives.tuple_opsrk   rl   r   r   r   r   r   r   r   r   r  r   r   r&  r5  r/  rA  r"  r<  r\  ra  rh  r  r  ry  r-  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>r     s    # " " " " "  $ $ $ $ $ $      ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'P R Q Q Q Q Q Q Q Q Q Q Q Q Q & & & & & & % % % % % % @ @ @ @ @ @ @ @                           
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 S R R R R R R R C C C C C C C C : : : : : :                         ` _ _ _ _ _ _ _ 5 5 5 5 5 5 U U U U U U U U U U 0 0 0 0 0 0 S S S S S S S S S S \ \ \ \ \ \ \ \ \ \ \ \ 3 3 3 3 3 3 I I I I I I I I I I 1 1 1 1 1 1 D D D D D D D D
R% R% R% R%j%U %U %U %UP   @4 4 4 445 5 5 5>   D D D D8
 8
 8
 8
v
 
 
 
4?S ?S ?S ?SD7 7 7 7K K K K!> !> !> !>H      ,   # # # #L   2   4   "p0 p0 p0 p0fa a a a
) ) ) )X   @0 0 0 02 2 2 24 4 4 4( ( ( (; ; ; ;O O O O? ? ? ?   3 3 3 3,I I I IA A A A      J> > > >= = = =   &? ? ? ?] ] ] ]
        r   