
    mi]                       d Z ddlmZ ddlZddlmZ ddlmZ ddl	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+ ddl,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD dd	lEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZM dd
lNmOZOmPZP ddlQmRZRmSZSmTZT ddlUmVZV ddlWmXZX ddlYmZZZm[Z[m\Z\ ddl]m^Z^ ddl_m`Z`maZambZbmcZcmdZd ddlemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZo ddlpmqZqmrZrmsZs ddltmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z} ddl~mZ eg df         Zeg eDf         ZddZddZdd!Zdd#Zdd$Zdd(Zdd*Zdd0Zdd3Zdd5Zdd7Zdd9Zdd<Zdd>Zdd@ZddBZddDZddMZddPZddWZdd[Zdd_ZddcZ	 dddeZ	 dddfZ G dg dhe
j        j                  ZddiZddkZddoZddrZdduZddwZddyZdd{Zdd}Zdd~ZddZddZddZddZddZdS )a  Transform mypy statement ASTs to mypyc IR (Intermediate Representation).

The top-level AST transformation logic is implemented in mypyc.irbuild.visitor
and mypyc.irbuild.builder.

A few statements are transformed in mypyc.irbuild.function (yield, for example).
    )annotationsN)Sequence)Callable)!	ARG_NAMEDARG_POS
AssertStmtAssignmentStmt	AwaitExprBlock	BreakStmtContinueStmtDelStmt
ExpressionExpressionStmtForStmtIfStmtImport	ImportAll
ImportFromListExprLvalue	MatchStmtNameExprOperatorAssignmentStmt	RaiseStmt
ReturnStmtStarExprStrExprTempNodeTryStmt	TupleExprTypeAliasStmt	WhileStmtWithStmt	YieldExprYieldFromExpr)TEMP_ATTR_NAME)	ERR_NEVERNAMESPACE_MODULENO_TRACEBACK_LINE_NOAssign
BasicBlockBranchCall
InitStaticIntegerLoadAddressLoadErrorValueLoadLiteral
LoadStatic
MethodCallPrimitiveDescriptionRaiseStandardErrorRegisterReturnTupleGetUnborrowUnreachableValue)	RInstanceRTuplec_pyssize_t_rprimitive
exc_rtuple	is_taggednone_rprimitiveobject_pointer_rprimitiveobject_rprimitive)is_borrow_friendly_exprprocess_conditional)	IRBuildercreate_type_paramsint_borrow_friendly_op)for_loop_helper)-add_raise_exception_blocks_to_generator_class)ExceptNonlocalControlFinallyNonlocalControlTryFinallyNonlocalControl)GENERATOR_HELPER_NAME)AssignmentTargetAssignmentTargetAttrAssignmentTargetIndexAssignmentTargetRegisterAssignmentTargetTuple)
error_catch_opexc_matches_opget_exc_info_opget_exc_value_opkeep_propagating_opno_err_occurred_oppropagate_if_error_opraise_exception_opreraise_exception_oprestore_exc_info_op)iter_opnext_raw_oppy_delattr_op)	check_stop_opcoro_opimport_from_many_opimport_many_op	import_opsend_op"set_type_alias_compute_function_optype_opyield_from_except_op   )MatchVisitorbuilderrH   blockr   returnNonec                   |j         sc| j                            d           |j        D ]&}|                     |           | j        d         s n'| j                                         d S |j        rV|                     t          t          j        d|j	                             |                     t                                 d S d S )NTz#Reached allegedly unreachable code!)is_unreachableblock_reachable_stackappendbodyacceptpopaddr7   RUNTIME_ERRORliner<   )rn   ro   stmts      o/var/www/html/bestrading.cuttalo.com/scripts/kaggle-env/lib/python3.11/site-packages/mypyc/irbuild/statement.pytransform_blockr      s     #%,,T222J 	 	DNN4   04  	%))+++++ 
 #"02WY^Yc 	
 	
 	

 	KMM"""""# #    r}   r   c                    t          |j        t                    rd S |j                            | j                   |                                  d S N)
isinstanceexprr   rx   visitorflush_keep_alives)rn   r}   s     r~   transform_expression_stmtr      sM    $)W%%  	IW_%%%r   r   c                   |j         r|                     |j                   }n| j                                        }|                     || j        d         |j                  }| j        d                             | ||j                   d S Nrs   )	r   rx   rn   nonecoerce	ret_typesr|   nonlocal_control
gen_return)rn   r}   retvals      r~   transform_return_stmtr      s{    y (	**%%''^^FG$5b$949EEFR ++GVTYGGGGGr   r	   c                ~   | j         }|j        j        }|j        dk    st	          |          dk    rd S |                                 }||j        s|j        sd S |d         }d	fd |j                  }|D ]A}t          |t                    r*|j        |k    r|                     d| d|j                   Bd S )
N__new__r   lvalueslist[Expression]rp   c                    g }| D ]G}t          |t          t          f          r| |j                  z  }2|                    |           H|S r   )r   r!   r   itemsrv   )r   flatlvalueflattens      r~   r   z1check_unsupported_cls_assignment.<locals>.flatten   s`     	$ 	$F&9h"788 $---F####r   zAssignment to argument "z!" in "__new__" method unsupported)r   r   rp   r   )fn_infofitem	arg_namesnamelenget_current_class_irinherits_pythonis_ext_classr   r   r   errorr|   )	rn   r}   fnmethod_argsircls_argr   r   r   s	           @r~    check_unsupported_cls_assignmentr      s    	B($K	w)s;//144		%	%	'	'B	zR'zrz!nG      gdl##G  fh'' 	FK7,B,B MMU7UUUW[W`  	 r   c                     |j         }|sJ                      ||j                   t           |           |d         }|j        r7t          |j        t                    r                     ||j                   d S t          |t          t          f          rOt          |j        t          t          f          r-t          |j                  t          |j        j                  k    rt          d |j        D                       rt          |          dk    rg }|j        j        D ]\}                     |          t          j                  }                     ||j                   |                    |           ]t%          |j        |          D ]6\  }}                     |          }                     |||j                   7                                  d S |j        j        }	                     |j                                                   r|j        r                     |           t          |t          t          f          rjt          j        t.                    rOt          j        j                  t          |j                  k    rt          |          dk    rt          d |j        D                       rt3          d j        j        D                       rt          |j                  }
 fdt5          |
          D             } j                            gd           t%          |j        |          D ]Q\  }}                     t=          |                    }                                          |          ||	           R                                  d S |D ]B}                     |          }                     ||	                                             Cd S )	Nr   c              3  4   K   | ]}t          |          V  d S r   is_simple_lvalue.0items     r~   	<genexpr>z,transform_assignment_stmt.<locals>.<genexpr>   +      FF4 &&FFFFFFr   rl   c              3  4   K   | ]}t          |          V  d S r   r   r   s     r~   r   z,transform_assignment_stmt.<locals>.<genexpr>   r   r   c              3  $   K   | ]}|j         V  d S r   )is_refcounted)r   ts     r~   r   z,transform_assignment_stmt.<locals>.<genexpr>   s$      ??A??????r   c           	     Z    g | ]'}                     t          |d                     (S )T)borrowrz   r:   )r   irn   
rvalue_regs     r~   
<listcomp>z-transform_assignment_stmt.<locals>.<listcomp>   s4    WWW7;;x
AdCCCDDWWWr   T)steal)r   disallow_class_assignmentsr|   r   typer   rvaluer   get_assignment_targetr!   r   r   r   allrx   r8   assignrv   zipr   non_function_scopeis_final_definit_final_staticr?   typesanyrangern   
keep_aliverz   r;   )rn   r}   r   first_lvaluetempsrighttempleftassignment_targetr|   nborrowslvalue_itemrvalue_itemr   targetr   s   `               @r~   transform_assignment_stmtr      s   lGNNN&&w	:::$Wd3331:Ly ZX66  	%%lDI>>> 	<)X!677t{Y$9:: "##s4;+<'='===FF<3EFFFFF >LLA[& 	 	E ..JJO,,DNN4TY777LLl0%88 	? 	?JD$ ' = =d C CNN,dDI>>>>!!###;D,,J!!## <(9 <!!,
;;; 	<)X!677z// 
%&&#l.@*A*AAALLAFF<3EFFFFF ??)>?????  "##WWWWWeTUhhWWW""J<t"<<<(+L,>(H(H 	Z 	Z$K!++h{&;&;<<KNN788EE{TXYYYY!!### $ $..v66vz4000!!####$ $r   r   r   boolc                H    t          | t          t          t          f           S r   )r   r   r   r!   )r   s    r~   r   r     s    $8Y ?@@@@r   r   c                   |                      |j        g|j                   t          |                     |j                            r`t          |                     |j                            r9|j        t          v r+t          | |j                  ot          | |j                  }nd}| 	                    |j                  }| 
                    ||j        |          }|                     |j        |          }|j        dz   }|                     ||||j                  }|                     |||j                   |                                  dS )z,Operator assignment statement such as x += 1F)
can_borrow=N)r   r   r|   rB   	node_typer   oprJ   rF   r   readrx   	binary_opr   r   )rn   r}   r   r   target_valuerregr   ress           r~   "transform_operator_assignment_stmtr     s@   &&}di@@@'##DK0011	g''4455	 G---,WdkBB 
G^T[H
 H


 
**4;77F<<	j<IIL>>$+*>==D	3B


L$DI
>
>C NN63)))r   	module_idstras_name
str | Nonetuple[str, str]c                R    |r| }|}n|                      d          d         x}}||fS )a  Compute names for updating the globals dict with the appropriate module.

    * For 'import foo.bar as baz' we add 'foo.bar' with the name 'baz'
    * For 'import foo.bar' we add 'foo' with the name 'foo'

    Typically we then ignore these entries and access things directly
    via the module static, but we will use the globals version for
    modules that mypy couldn't find, since it doesn't analyze module
    references from those properly..r   )split)r   r   
globals_idglobals_names       r~   import_globals_id_and_namer   *  s>      <
$-OOC$8$8$;;
\|##r   noder   c           
        |j         rd S |j        s|                                 }|j        D ]\  }}|                     ||j                   t          ||          \  }}|                     |d|                     |          | 	                    ||j                  gd |j                   d S || j
        vrd S g }g }g }	| j
        |         D ]}
|
j        D ]\  }}d | j        |<   |                    |gt          ||          R            t          t          |t                    }|                    |                     t#          t$          |                               |	                    t'          |
j        t(                               | j                            t$          |          }| j                            t(          |	          }|                     t0          |                     t3          t5          |          t                              ||                                 |                     | j                  |                     | j        j                  |gt<                     d S )N__setitem__result_typer|   	namespace)is_mypy_onlyis_top_levelload_globals_dictids
gen_importr|   r   gen_method_callload_str
get_modulemodule_import_groupsimportsrv   r4   rE   r)   rz   r1   rD   r0   r@   rn   setup_rarraycall_crf   r3   tuplemodule_pathr   r   r*   )rn   r   globalsmod_idr   r   r   modulesstatic_ptrs	mod_linesimport_node
mod_staticstatic_array_ptrimport_line_ptrs                 r~   transform_importr  =  s    &   ++--#x 		 		OFGvty111'A&''R'R$J##!!,//1C1CJPTPY1Z1Z[ Y $     	7///GK I3D9 P P* 	P 	POFG&*GOF#NNFQ%?%P%PQQRRR#$5vIYZZZJw{{;7PR\+]+]^^___W[%57MNNOOOO	P 334M{[[o223I9UUONNKKE'NN4EFFGG%%''W011W_122	
 	    r   r   c                B   |j         rd S | j        | j                 }| j                            d          r| j        }n|j        |j        r|j        d         }nd}t          j                            d|j	        z  |j
        z   |          }d | j        |<   d |j        D             }d |j        D             }|                     t          t          |          t                               }||k    r|}n5|                     t          t          |          t                               }|                     t$          |                     |          |||                                 g|j                  }	|                     t-          |	|t.                               d S )Nz__init__.pyr    r   c                    g | ]\  }}|S  r  )r   r   _s      r~   r   z)transform_import_from.<locals>.<listcomp>  s    ,,,gdAT,,,r   c                    g | ]	\  }}|p|
S r  r  )r   r   r   s      r~   r   z)transform_import_from.<locals>.<listcomp>  s     @@@MD'4@@@r   r   )r   graphmodule_namer  endswith	ancestors	importlibutilresolve_namerelativeidr   namesrz   r3   r  rE   r   re   r   r   r|   r/   r)   )
rn   r   module_statemodule_packager  r  as_namesnames_literalas_names_literalmodules
             r~   transform_import_fromr#    s    =!45L##M22  ,			+0F	+%/2		$	$S4=%847%BN	S	SBGOB,,,,,E@@TZ@@@HKKE%LL:K L LMMM5(";;{5??DU'V'VWW ^^			"		}.>@Y@Y@[@[\	 F
 KK
621ABBBCCCCCr   r   c                X    |j         rd S |                     |j        |j                   d S r   )r   r   r  r|   rn   r   s     r~   transform_import_allr&    s2     tw	*****r   r   c                .   t                      t                      }}|j        rt                      n|}t          |j                  dk    sJ t	          | |j        d         ||           |                     |           |                     |j        d                    |                     |           |j        rD|                     |           |                     |j                   |                     |           |                     |           d S )Nrl   r   )	r,   	else_bodyr   r   rG   activate_blockrx   rw   goto)rn   r}   if_bodynextr(  s        r~   transform_if_stmtr-    s    LL*,,TG $8
DI ty>>Q1w	BBB7###NN49Q<   LL~ y)))t~&&&T4     r   sr#   c                   t                      t                      t                      t                      f\  }}}}|j        |n|}|                     ||           |                     |           t	          | |j        ||           |                     |           |                     |j                   | 	                    |           | 
                                 |j        D|                     |           |                     |j                   | 	                    |           |                     |           d S r   )r,   r(  push_loop_stackgoto_and_activaterG   r   r)  rx   rw   r*  pop_loop_stack)rn   r.  rw   r,  top
else_blocknormal_loop_exits          r~   transform_while_stmtr6    s%   ",,,
jllJLL"XD$Z%&[%<zz$C&&& c"""/?@@@4   NN16LL{z***q{###T4     r   r   c           	          d fd}d fd}t           j        j        |j        r|nd j        j                   d S )Nrp   rq   c                 <                          j                   d S r   rx   rw   rn   r.  s   r~   rw   z transform_for_stmt.<locals>.body      qvr   c                 N    j         J                      j                    d S r   )r(  rx   r:  s   r~   r4  z&transform_for_stmt.<locals>.else_block  s+    {&&&q{#####r   rp   rq   )rK   indexr   r(  is_asyncr|   )rn   r.  rw   r4  s   ``  r~   transform_for_stmtr@    s          $ $ $ $ $ $ $ !&$ak(K

tQZYZY_    r   r   c                R    | j         d                             | |j                   d S r   )r   	gen_breakr|   r%  s     r~   transform_break_stmtrC    s(    R **7DI>>>>>r   r   c                R    | j         d                             | |j                   d S r   )r   gen_continuer|   r%  s     r~   transform_continue_stmtrF    s(    R --gtyAAAAAr   r   c                V   |j         D|                     t          g t                     |                     t                                 d S |                     |j                   }|                     t          |g|j                   |                     t                                 d S r   )	r   r   r^   r*   rz   r<   rx   r]   r|   )rn   r.  excs      r~   transform_raise_stmtrI    s    v~+R1EFFFKMM"""
..
 
 CNN%uaf555KKr   rw   GenFunchandlersLSequence[tuple[tuple[ValueGenFunc, int] | None, Expression | None, GenFunc]]r(  GenFunc | Noner|   intc           	     @   |s
J d            t                      t                      t                      }}}t                      }|rt                      n|}	| j                            |           |                     t                                  |             |                     |	           | j                                         | j                            |           |                     |           |                     |                     t          g |                    }
| j
                            t          | j
        d         |
                     |D ]\  }}}d}|r|\  }}t                      t                      }}|                     t           |            g|          }|                     t          |||t          j                             |                     |           |rP|                     |          }|                     ||                     t&          g |j                  |j                    |             |                     |           |r|                     |           |rB|                     t*          g t,                     |                     t/                                 | j
                                         | j                                         |                     |           |                     t2          |                     |
          g|           |                     |           |                     |           |                     t2          |                     |
          g|           |                     t6          g t,                     |                     t/                                 |r4|                     |	            |             |                     |           |                     |           dS )zGeneralized try/except/else handling that takes functions to gen the bodies.

    The point of this is to also be able to support with.ztry needs exceptrs   N)r,   rn   push_error_handlerr1  r*  pop_error_handlerr)  maybe_spillr   rV   r   rv   rM   rW   rz   r-   BOOLr   r   rY   r|   r^   r*   r<   ry   r_   r   rZ   )rn   rw   rK  r(  r|   except_entry
exit_blockcleanup_blockdouble_except_blockr4  old_excr   varhandler_body
next_blocktype_f	type_line
body_blockmatchesr   s                       r~   transform_try_exceptr`    s    ''''''.8llJLL*,,m*L$,,!*:
J O&&|444jll+++DFFFLLO%%''' O&&':;;;<(((!!'..T"J"JKKG##$9':RSU:VX_$`$`aaa $, / /c<
 	/ $FI%/\\:<<
Jnn^ffhhZKKGKKw
JLLMMM"":... 	]22377FNN67>>2BB#Q#QSVS[\\\]### 	/"":...  #+R1EFFFKMM"""  """O%%'''
 =)))NN&g)>)>(?FFFLL
 .///NN&g)>)>(?FFFNN&,@AAAKK  !z***	Z   :&&&&&r   r   r    c                     d fd}d fdd fdfdt          j        j        j                  D             }j        r fdnd }t           |||j                   d S )Nrp   rq   c                 <                          j                   d S r   r9  rn   r   s   r~   rw   z'transform_try_except_stmt.<locals>.bodyL  r;  r   rw   r   rJ  c                      fdS )Nc                 .                                    S r   rx   rw   rn   s   r~   <lambda>zAtransform_try_except_stmt.<locals>.make_handler.<locals>.<lambda>Q  s    w~~d++ r   r  rg  s   `r~   make_handlerz/transform_try_except_stmt.<locals>.make_handlerP  s    ++++++r   r   r   tuple[ValueGenFunc, int]c                       fd j         fS )Nc                 .                                    S r   rf  )rn   r   s   r~   rh  z?transform_try_except_stmt.<locals>.make_entry.<locals>.<lambda>T  s    t,, r   )r|   )r   rn   s   `r~   
make_entryz-transform_try_except_stmt.<locals>.make_entryS  s    ,,,,,di88r   c                N    g | ]!\  }}}|r |          nd | |          f"S r   r  )r   r   rY  rw   rm  ri  s       r~   r   z-transform_try_except_stmt.<locals>.<listcomp>V  sT       D#t "	+D			tS,,t2D2DE  r   c                 8                          j                  S r   )rx   r(  rc  s   r~   rh  z+transform_try_except_stmt.<locals>.<lambda>Z  s    44 r   r=  )rw   r   rp   rJ  )r   r   rp   rj  )r   r   varsrK  r(  r`  r|   )rn   r   rw   rK  r(  rm  ri  s   ``   @@r~   transform_try_except_stmtrq  K  s          , , , , , ,9 9 9 9 9 9    "17AFAJ??  H :;N444444$I$)QVDDDDDr   err_handlerr,   return_entry
main_entrytry_body"Register | AssignmentTarget | Nonec                z   t          |          }| j                            |           | j                            |           |                     t                                  |             |                     |           | j                                         | j        	                                 |j
        S r   )rO   rn   rP  r   rv   r1  r,   r*  ry   rQ  ret_reg)rn   rr  rs  rt  ru  controls         r~   try_finally_tryrz  ^  s     (55GO&&{333##G,,,jll+++HJJJLL  """O%%'''?r   finally_blockrx  r=   c           
     D   t          t                    }|                     |           |rB|                     ||                     t          | j        d                             d           |                     |           |                     |           |                     t          ||                     t          t                                                   |                     |           |                     |           |rB|                     ||                     t          | j        d                             d           |                     t          || 	                    t          g d                               |                     |           |S r   )r8   rA   r)  r   rz   r2   r   r*  r+   r   rV   )rn   rr  rs  rt  r{  rx  rX  s          r~   try_finally_entry_blocksr}  s  s`    z""G :&&& XwN7;LR;P,Q,Q R RTVWWWLL<(((KKwN:,F,F G GHHIIILL ;''' XwN7;LR;P,Q,Q R RTVWWWKKw~r2 F FGGHHHLLNr   finally_bodyrX  )tuple[BasicBlock, FinallyNonlocalControl]c                4   t                      }| j                            |           t          | j        d         |          }| j                            |           |                     |            |             | j                                         ||fS r   )r,   rn   rP  rN   r   rv   r)  ry   )rn   r{  r~  rX  rV  finally_controls         r~   try_finally_bodyr    s     LLMO&&}555,W-Eb-I7SSO##O444=)))LNNN  """/))r   rV  r  rN   c                   t                      t                      }}|                     t          |||t          j                             |                     |           |                     t          g t                     |                     t                                 | j	        
                                 |r|                     |           t                      t                      }}t          |t                    rA|j                            t                    r"|                     |j        |j        d          }n|                     |          }|                     t          |||t          j                             |                     |           | j        d                             | |d           |                     |           t                      }	|                     |	           |                     |           |                    | d           |                     t.          g t                     |                     t                                 |	S )zResolve the control flow out of a finally block.

    This means returning if there was a return, propagating
    exceptions, break/continue (soon), or just continuing on.
    rs   )r,   rz   r-   IS_ERRORr)  r   r^   r*   r<   rn   rQ  r   rR   attr
startswithr'   read_nullable_attrobjr   r   r   r*  gen_cleanuprZ   )
rn   rV  r  rX  rx  reraiserestreturn_blockret_val	out_blocks
             r~   try_finally_resolve_controlr    s    LL*,,TGKKwgv??@@@ 7###NN'-ABBBKKO%%'''  Ft$$$'\\:<<dg344 	,9P9PQ_9`9` 	,00glBOOGGll7++GF7D,HHIII|,,, $//"EEE 4   ILL =))),,,NN&,@AAAKKr   rs   c                D   t                      t                      t                      t                      f\  }}}}t          | ||||          }t          | |||||          }	t          | |||	          \  }
}t	          | |
||	|          }|                     |           dS )zGeneralized try/finally handling that takes functions to gen the bodies.

    The point of this is to also be able to support with.N)r,   rz  r}  r  r  r)  )rn   ru  r~  r|   rr  rt  rs  r{  rx  rX  rV  r  r  s                r~   transform_try_finally_stmtr    s     		<8K\= g{L*hWWG 'lJw G
 &6g& &"M?
 ,' I 9%%%%%r   c                   t                      t                      t                      t                      f\  }}}}t          |          }| j                            |           | j                            |           |                     t                                  |             |                     |           | j                                         | j        	                                 |j
        }	|                     |           |                     |           |                     |           |                     |           |                     |           |                     t          g |           |                     |           |                     |            |             |                     t          g |          }
t                      }t                      }|                     t!          |
||t           j                             |                     |           |                     t$          g t&                     |                     t)                                 |                     |           |	rt                      t                      }}|                     t!          |                     |	d          ||t           j                             |                     |           | j        d                             | |                     |	          d           |                     |           |                     t0          g |          }|                     t3          |d|                    }|                                 }|                     ||d|          }t                      t                      }}|                     t!          |||t           j                             |                     |           |                     t8          g t&                     |                     t)                                 |                     |           dS )zAsync-aware try/finally handling for when finally contains await.

    This version uses a modified approach that preserves exceptions across await.T)allow_error_valuers   r   zis notN)r,   rO   rn   rP  r   rv   r1  r*  ry   rQ  rx  r)  r   rV   r[   rz   r-   rS  rZ   r*   r<   r   r  r   rX   r:   none_objectr   r^   )rn   ru  r~  r|   rr  rt  rs  finally_entryry  rx  no_current_excfinally_raisedcheck_originalr  check_old_excexc_infoexc_typenone_objhas_excreraise_blockrU  s                        r~    transform_try_finally_stmt_asyncr    s    		<8K\= (55GO&&{333##G,,,jll+++HJJJLL  """O%%'''oG :&&&LL <(((LL ;'''NN>2t,,, LL =))) LNNN ^^$6DAAN\\N\\NKK~~~v{SSTTT >***NN&,@AAAKK >***  .&0llJLLmW==	 	
 	
 	
 	|,,, $//g9N9NPRSSS}--- ~~or488H{{8Ha6677H ""$$H(HdCCG *jll:MKKwz6;GGHHH =)))NN'-ABBBKK :&&&&&r   c                  ,     e Zd Zd fdZd fdZ xZS )	AwaitDetectorrp   rq   c                V    t                                                       d| _        d S )NF)super__init__	has_await)self	__class__s    r~   r  zAwaitDetector.__init__d  s$    r   omypy.nodes.AwaitExprc                X    d| _         t                                          |           d S )NT)r  r  visit_await_expr)r  r  r  s     r~   r  zAwaitDetector.visit_await_exprh  s(      #####r   r=  )r  r  rp   rq   )__name__
__module____qualname__r  r  __classcell__)r  s   @r~   r  r  c  s[             $ $ $ $ $ $ $ $ $ $r   r  c                    j         r                     dj                   d}j        r= j        j        r1t                      }j                            |           |j        rd}j        rJd	 fd}j        |rt           | fdj                   d S t           | fdj                   d S t                      d S )
Nz3Exception groups and except* cannot be compiled yetFTrp   rq   c                 n    j         rt                      d S                      j                   d S r   )rK  rq  rx   rw   rc  s   r~   transform_try_bodyz.transform_try_stmt.<locals>.transform_try_body  s=    z ')'155555qv&&&&&r   c                 .                                    S r   rf  rg  s   r~   rh  z$transform_try_stmt.<locals>.<lambda>      W^^D5I5I r   c                 .                                    S r   rf  rg  s   r~   rh  z$transform_try_stmt.<locals>.<lambda>  r  r   r=  )is_starr   r|   r~  r   is_coroutiner  rx   r  r  r  rq  )rn   r   use_async_versiondetectorr  rw   s   ``   @r~   transform_try_stmtr  m  s9    	y UKQVTTT ~ %'/6 % ??	h''' 	% $~ .	' 	' 	' 	' 	' 	' 	' ~ 	,+-I-I-I-I-I16     '+-I-I-I-I-I16     	"'1-----r   list[Value]c                v                           t          g d           fdt          d          D             S )Nrs   c           	     X    g | ]&}                     t          |d                     'S rs   r   )r   r   rn   r  s     r~   r   z$get_sys_exc_info.<locals>.<listcomp>  s1    EEEqGKK1b1122EEEr      )r   rX   r   )rn   r  s   `@r~   get_sys_exc_infor    s<    ~~or266HEEEEEE!HHEEEEr   r   Lvalue | Noner?  c           	        	
 rdnd                      |          t          j        t                    r-                     t          d dg                     d n|                     t          g          }                      	                    |d d                     
                     	                    |d d          g                                                                                                         	rt                     d fdd fdd 	fd
d 	fd}t            
fd|           d S )Nar  __enter__)argsr|   exit__r  r   rp   r=   c                   | rt                    }n                                }|||g}r`t          j        t                    sJ j                                                            
          d d|	t                    }nEJ                                                                       
          g|z   	          }rt          |	          S |S )Nr  r  )
arg_valuesr|   r   )
r  r  r   r   r>   r   r   rC   py_call
emit_await)r  r  r   exit_valalrn   exit_r?  	is_nativer|   mgrmgr_vs       r~   maybe_natively_call_exitz0transform_with.<locals>.maybe_natively_call_exit  s    	&#G,,DD&&((D$%D 	^ej)44@@ej@@@..S!!R+ /  HH $$$w||E':':W\\#=N=N<ORV<VX\]]H 	gx666Or   rq   c                 t    r*                                                                             d S r   )r   r   )rw   rn   r|   r   values   r~   ru  z transform_with.<locals>.try_body  s?     	ONN788@@%NNNr   c                                                                                    t                      t                      }}                      d          | |                               |                               t          g t                                         t                                                     |            d S )NTr  )
r   falser,   add_bool_branchr)  r   r^   r*   rz   r<   )r  r  rn   rH  r|   r  s     r~   except_bodyz#transform_with.<locals>.except_body  s    sGMMOOT222#-<<=	 8 8$ G G GTabbb}---+R1EFFFKMM"""y)))))r   c                 0   t                      t                      }}                     t                                        || t          j                                                 |            d                               |            d S )NFr  )r,   rz   r-   r   rS  r)  r1  )r  rU  rn   rH  r  s     r~   r~  z$transform_with.<locals>.finally_body  s     *jll:	F7<<,,j)V[QQRRRz***  %0000!!),,,,,r   c                 2    t           d d fgd           S r   )r`  )rn   r  r|   ru  s   r~   rh  z transform_with.<locals>.<lambda>  s$    $Wh$k9R8SUY[_`` r   )r  r   rp   r=   r=  )rx   r   r   r>   rz   r5   primitive_oprj   rR  py_get_attrr  maybe_spill_assignabletruer  r  )rn   r   r   rw   r?  r|   typr~  r  rH  r  r  r  r  r  r  ru  r  s   ` ````  @@@@@@@@@@r~   transform_withr    sJ    	 bBNN4  E5:y11I aJu.>2.>.>.>RdSSSTT""7UGT::##G$7$7_"___d$S$STT 3 3C9Ib9I9I9I4 P PSXRY[_``


e
$
$C

(
(
8
8C 17E400            2         
* * * * * * * * *- - - - - - - - ```````	    r   r  r$   c                2     d fd d           d S )Nr   rN  rp   rq   c                      t          j                  k    r                    j                   d S t	          j                  j                   fdj        j                   d S )Nc                        dz             S )Nrl   r  )generater   s   r~   rh  z7transform_with_stmt.<locals>.generate.<locals>.<lambda>  s    !a% r   )r   r   rx   rw   r  r   r?  r|   )r   rn   r  r  s   `r~   r  z%transform_with_stmt.<locals>.generate  sy    AFNN16"""""AHQK1H1H1H1H1H!*VWV\    r   r   )r   rN  rp   rq   r  )rn   r  r  s   ``@r~   transform_with_stmtr    s@            HQKKKKKr   r  r   c                `   | j         j        rd S |                     |j                  }t	                      t	                      }}|                     |||           |                     |           |j        4|                     t          t          j
        d |j                             nt          |j        t                    r>|                     t          t          j
        |j        j        |j                             nt|                     |j                  }|                     d|j                  }|                     ||g|j                  }|                     t$          |g|j                   |                     t'                                 |                     |           d S )Nzbuiltins.AssertionError)optionsstrip_assertsrx   r   r,   r  r)  msgrz   r7   ASSERTION_ERRORr|   r   r   r  load_module_attr_by_fullnamer  r   r]   r<   )rn   r  condok_blockerror_blockmessager  rH  s           r~   transform_assert_stmtr    sj   $ >>!&!!D&LL*,,kHD(K888;'''u}&'9'I4QRQWXXYYYY	AE7	#	# :&'9'I15;XYX^__```` ..''778QSTSYZZooh	16::)C5!&999KK8$$$$$r   r   c                b    t          | |                     |j                  |j                   d S r   )transform_del_itemr   r   r|   rn   r  s     r~   transform_del_stmtr    s,    w = =af E EqvNNNNNr   rQ   c                @   t          |t                    r'|                     |j        d|j        gd |           d S t          |t
                    rt          |j        t                    r[|j        j        }|	                    |j
                  s5|                     d|j
         d|           |                     d|           |                     |j
                  }|                     t          |j        |g|           d S t          |t"                    rQ|                     t'          |j        |                     t+          |j        d                                         d S t          |t.                    r|j        D ]}t3          | ||           d S d S )N__delitem__r   "z" cannot be deletedzMUsing "__deletable__ = ['<attr>']" in the class body enables "del obj.<attr>"T	undefines)r   rS   r   baser>  rR   obj_typer>   class_iris_deletabler  r   noter   r  rb   r  rT   rz   r+   registerr2   r   rU   r   r  )rn   r   r|   clkey	subtargets         r~   r  r    s   &/00 9KDt 	  	
 	
 	
 	
 	
 
F0	1	1 9foy11 	)B??6;// B&+BBBDIIIQ  
 v{++]VZ,=tDDDDD	F4	5	5 9 	6?GKKv{VZ0[0[0[$\$\]]	
 	
 	
 	
 	
 
F1	2	2 9 	9 	9Iw	488889 9	9 	9r   valc                   |                      || j        d         |          }| j        j        }t	                      }t          |j                  }|j                            |           |                     |j	        t          |          |           |                     t          ||                     |                     |           t          | |           |j        J |j        S )Nrs   )yield_target)r   r   r   generator_classr,   r   continuation_blocksrv   r   next_label_targetr0   rz   r9   r)  rL   send_arg_reg)rn   r  r|   r   clsr[  
next_labels          r~   
emit_yieldr  9  s    ^^C!22!6==F
/
)C JS,--J"":...NN3('**=*=tDDDKKvJ777888:&&&1'4@@@'''r   is_awaitc          	         t          t                    t          t                    t          t                    t          }t          |t          t
          f          r<t          |j        t                    r"|j        j        	                    |          r|}nV|rt          nt          }t          |t                    r                     ||g          }n                     ||g          }                     |          t!                      t!                      t!                      }	}}t          j        t                    rj        j        	                    |          rd}
                               }                                 }t          t                    }                     t)          t          d                    }                     ||                                t-          t.          |                    }t          |||||||g          }t0          |_                             |          }n2d}
                     t4                                         g          }                     t7          |||t6          j                                                  |           |
r5                     t<          |g                                |           n1                                          t>          g                                           t)          j                            }                     |                                 |	                                |                                |           t!                      } !                    |           d	 fd}d	 fd}d	 fd} "                    ||	           tG           |d d |fg|            $                                  !                    |	                                          S )
NTr  Frp   rq   c            	     z                          t                                                               d S r   )r   r  r   )rn   r|   received_regto_yield_regs   r~   ru  z*emit_yield_from_or_await.<locals>.try_body  s9    |Zl9S9SUY%Z%Z\`aaaaar   c                    t          t                    }                     t          t          |                     }                    t                                        |g          }t                      t                      }}                    t          |||t          j
                                                 |                               	|            j        d                                                            |                               |            j        d                                        d S r   )r8   rE   rz   r1   rD   r   rk   r   r,   r-   rS  r)  r   r   rE  rB  )
r  val_addressto_stopokstoprn   iter_regr|   resultr  s
        r~   r  z-emit_yield_from_or_await.<locals>.except_body  s%    ())kk+.G"M"MNN..!5X8N8NP[7\^bcc<<DF7D"fk::;;; 	r"""|S$/// $11'4@@@ 	t$$$vsD))) $..w=====r   c                                         t                                                                      g          } t                      t                      }}                    t          | ||t
          j                                                 |                               |            j	        d         
                                                   |                                                    t          g                      j	        d                                        d S r   )r   rh   r   r,   rz   r-   r  r)  r   r   rE  rc   rB  )	_yr  r  rn   r  r|   r  r  r  s	      r~   r(  z+emit_yield_from_or_await.<locals>.else_body  s    ^^Ggll8&<&<gll<>X>X%Y[_``<<DF2tR99::: 	r"""|R... $11'4@@@ 	t$$$vw~~mRFFMMM $..w=====r   r=  )%r8   rE   rP   r   r.   r5   r   r>   r  
has_methodrd   r`   r6   r  r   r  r,   r   r  rz   r2   r   r1   rD   r(   
error_kindra   r-   r  r)  r\   rc   r*  r1  r0  r`  r2  )rn   r  r|   r  helper_methoditer_valget_op
stop_block
main_block
done_block	fast_pathr  nnstop_iter_valerrptrm_y_init
loop_blockru  r  r(  r  r  r  r  s   ` `                   @@@@r~   emit_yield_from_or_awaitr,  M  sZ    '((F-..L-..L)M3z*++;sx++; H((77; $1'f233 	;++FSE4@@HH~~fseT::H--h77H)3z||Z\\J
J(-++ N0F0Q0QR_0`0` N
 	ll8$$  "" !233kk.):dKKKLL}c4000kk+&?OOPPsMBBC+@$GG ++a..	..w||H/E/E.FMMKKw
JHHIII:&&& N2]OTJJJv}d3333 	vw~~mRFFMMM ++nX]33
4
4CNN8S$'''LL:&&&NN<$/// Jj)))b b b b b b b b b> > > > > > > > > >*> > > > > > > > > > >$ J
333(dD+-F,GTXYYYj)))<<r   c                (    t          | ||d          S NTr  )r,  )rn   r  r|   s      r~   r  r    s    #GS$FFFFr   r%   c                    | j         j        r|                     d|j                   |j        r|                     |j                  }n| j                                        }t          | ||j                  S )Nz"async generators are unimplemented)	r   r  r   r|   r   rx   rn   r   r  )rn   r   r   s      r~   transform_yield_exprr1    sm    # G:DIFFFy (	**%%''gvty111r   r&   c                b    t          | |                     |j                  |j        d          S )NFr/  r,  rx   r   r|   r  s     r~   transform_yield_from_exprr4    s*    #GW^^AF-C-CQVV[\\\\r   r
   c                b    t          | |                     |j                  |j        d          S r.  r3  r  s     r~   transform_await_exprr6    s*    #GW^^AF-C-CQVVZ[[[[r   r)  r   c                L    |                     t          | |                     d S r   )rx   rm   )rn   r)  s     r~   transform_match_stmtr8    s$    HH\'1%%&&&&&r   r"   c                <   |j         }|                     t          |                     d          g|          }t	          | ||j        |j                   }|                     |d|          }|                     |j        j                  |                                 g}d d g}t          t          g}|j        rX|
                    |                     ||                     |
                    d           |
                    t                     |                     |||||          }	|j                            | j                  }
| j                            t&          |	|
g|           |                     |j                  }|                     ||	|           d S )N_typingTypeAliasTypetype_params)r   	arg_kinds)r|   r   rg   r   rI   	type_argsr  r   r   r   rv   	new_tupler   r  r  rx   r   rn   r  ri   r   r   )rn   r.  r|   modr<  type_alias_typer  r   r=  alias
compute_fnr   s               r~   transform_type_alias_stmtrD    so   6D ..W%5%5i%@%@$A4
H
HC$Wc1;GGK))#EEOQV[))7<<>>:D#',I'"I{ $G%%k488999'''###OOOT49XaObbE
 00JO  !CeZEXZ^___**1622FNN65$'''''r   )rn   rH   ro   r   rp   rq   )rn   rH   r}   r   rp   rq   )rn   rH   r}   r   rp   rq   )rn   rH   r}   r	   rp   rq   )r   r   rp   r   )rn   rH   r}   r   rp   rq   )r   r   r   r   rp   r   )rn   rH   r   r   rp   rq   )rn   rH   r   r   rp   rq   )rn   rH   r   r   rp   rq   )rn   rH   r}   r   rp   rq   )rn   rH   r.  r#   rp   rq   )rn   rH   r.  r   rp   rq   )rn   rH   r   r   rp   rq   )rn   rH   r   r   rp   rq   )rn   rH   r.  r   rp   rq   )rn   rH   rw   rJ  rK  rL  r(  rM  r|   rN  rp   rq   )rn   rH   r   r    rp   rq   )rn   rH   rr  r,   rs  r,   rt  r,   ru  rJ  rp   rv  )rn   rH   rr  r,   rs  r,   rt  r,   r{  r,   rx  rv  rp   r=   )
rn   rH   r{  r,   r~  rJ  rX  r=   rp   r  )rn   rH   rV  r,   r  rN   rX  r=   rx  rv  rp   r,   r  )
rn   rH   ru  rJ  r~  rJ  r|   rN  rp   rq   )rn   rH   rp   r  )rn   rH   r   r   r   r  rw   rJ  r?  r   r|   rN  rp   rq   )rn   rH   r  r$   rp   rq   )rn   rH   r  r   rp   rq   )rn   rH   r  r   rp   rq   )rn   rH   r   rQ   r|   rN  rp   rq   )rn   rH   r  r=   r|   rN  rp   r=   )
rn   rH   r  r=   r|   rN  r  r   rp   r=   )rn   rH   r   r%   rp   r=   )rn   rH   r  r&   rp   r=   )rn   rH   r  r
   rp   r=   )rn   rH   r)  r   rp   rq   )rn   rH   r.  r"   rp   rq   )__doc__
__future__r   importlib.utilr  collections.abcr   typingr   
mypy.nodesmypyr   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&   mypyc.commonr'   mypyc.ir.opsr(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   mypyc.ir.rtypesr>   r?   r@   rA   rB   rC   rD   rE   mypyc.irbuild.ast_helpersrF   rG   mypyc.irbuild.builderrH   rI   rJ   mypyc.irbuild.for_helpersrK   mypyc.irbuild.generatorrL   mypyc.irbuild.nonlocalcontrolrM   rN   rO   mypyc.irbuild.preparerP   mypyc.irbuild.targetsrQ   rR   rS   rT   rU   mypyc.primitives.exc_opsrV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   mypyc.primitives.generic_opsr`   ra   rb   mypyc.primitives.misc_opsrc   rd   re   rf   rg   rh   ri   rj   rk   matchrm   rJ  ValueGenFuncr   r   r   r   r   r   r   r   r  r#  r&  r-  r6  r@  rC  rF  rI  r`  rq  rz  r}  r  r  r  r  	traverserTraverserVisitorr  r  r  r  r  r  r  r  r  r,  r  r1  r4  r6  r8  rD  r  r   r~   <module>r]     s 	    # " " " " "     $ $ $ $ $ $          " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "F ( ' ' ' ' '                                               0	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 S R R R R R R R W W W W W W W W W W 5 5 5 5 5 5 Q Q Q Q Q Q         
 8 7 7 7 7 7                                     M L L L L L L L L L
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
       
2t8
E	"# # # #*       H H H H   @<$ <$ <$ <$~A A A A       2$ $ $ $&C C C CLD D D DD+ + + +! ! ! !$! ! ! !2
 
 
 
? ? ? ?B B B B   R' R' R' R'jE E E E&   *   <* * * *. . . .d OQ"& "& "& "& "&L OQi' i' i' i' i'Z$ $ $ $ $DN3 $ $ $&. &. &. &.RF F F F
R R R Rj
 
 
 
% % % %.O O O O9 9 9 9B   (|  |  |  | ~G G G G2 2 2 2] ] ] ]\ \ \ \' ' ' '( ( ( ( ( (r   