
    hiw                       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* ddl+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC dd	lDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL dd
lMmNZNmOZO ddlPmQZQmRZRmSZS ddlTmUZU ddlVmWZW ddlXmYZYmZZZm[Z[ ddl\m]Z] ddl^m_Z_m`Z`maZambZbmcZc ddldmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZn ddlompZpmqZqmrZr ddlsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z| ddl}m~Z~ eg df         Zeg eCf         ZddZddZdd!Zdd#Zdd'Zdd)Zdd/Zdd2Zdd4Zdd6Zdd8Zdd;Zdd=Zdd?ZddAZddCZddLZddOZddVZddZZdd^ZddbZ	 ddddZ	 dddeZ G df dge
j        j                  ZddhZddjZddnZddqZddtZddvZddxZddz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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builderrG   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addr6   RUNTIME_ERRORliner;   )rm   rn   stmts      g/var/www/html/Pagina-Ingenieria-Requisitos/venv/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   rw   visitorflush_keep_alives)rm   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 Nrr   )	r   rw   rm   nonecoerce	ret_typesr{   nonlocal_control
gen_return)rm   r|   retvals      r}   transform_return_stmtr      s{    y (	**%%''^^FG$5b$949EEFR ++GVTYGGGGGr   r	   c                     |j         }|sJ                      ||j                   |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                       rt1          d j        j        D                       rt          |j                  }
 fdt3          |
          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   rk   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ry   r9   )r   irm   
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)lvaluesdisallow_class_assignmentsr{   typer   rvaluer   get_assignment_targetr    r   lenitemsallrw   r7   assignru   zipr   non_function_scopeis_final_definit_final_staticr>   typesanyrangerm   
keep_alivery   r:   )rm   r|   r   first_lvaluetempsrighttempleftassignment_targetr{   nborrowslvalue_itemrvalue_itemlvaluetargetr   s   `               @r}   transform_assignment_stmtr      s   lGNNN&&w	:::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{   rA   	node_typer   oprI   rE   r   readrw   	binary_opr   r   )rm   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importsru   r3   rD   r(   ry   r0   rC   r/   r?   rm   setup_rarraycall_cre   r2   tuplemodule_pathfn_infonamer)   )rm   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>p  s    ,,,gdAT,,,r   c                    g | ]	\  }}|p|
S r   r   )r   r   r   s      r}   r   z)transform_import_from.<locals>.<listcomp>q  s     @@@MD'4@@@r   r   )r   graphmodule_namer   endswith	ancestors	importlibutilresolve_namerelativeidr   namesry   r2   r   rD   r   rd   r   r   r{   r.   r(   )
rm   r   module_statemodule_packager	  r
  as_namesnames_literalas_names_literalmodules
             r}   transform_import_fromr  a  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{   rm   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 )Nrk   r   )	r+   	else_bodyr   r   rF   activate_blockrw   rv   goto)rm   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_activaterF   r   r  rw   rv   r  pop_loop_stack)rm   r  rv   r  top
else_blocknormal_loop_exits          r}   transform_while_stmtr$    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 )Nro   rp   c                 <                          j                   d S r   rw   rv   rm   r  s   r}   rv   z transform_for_stmt.<locals>.body      qvr   c                 N    j         J                      j                    d S r   )r  rw   r(  s   r}   r"  z&transform_for_stmt.<locals>.else_block  s+    {&&&q{#####r   ro   rp   )rJ   indexr   r  is_asyncr{   )rm   r  rv   r"  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_stmtr1    s(    R **7DI>>>>>r   r   c                R    | j         d                             | |j                   d S r   )r   gen_continuer{   r  s     r}   transform_continue_stmtr4    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)   ry   r;   rw   r\   r{   )rm   r  excs      r}   transform_raise_stmtr7    s    v~+R1EFFFKMM"""
..
 
 CNN%uaf555KKr   rv   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 exceptrr   N)r+   rm   push_error_handlerr  r  pop_error_handlerr  maybe_spillr   rU   r   ru   rL   rV   ry   r,   BOOLr   r   rX   r{   r]   r)   r;   rx   r^   r   rY   )rm   rv   r9  r  r{   except_entry
exit_blockcleanup_blockdouble_except_blockr"  old_excr   varhandler_body
next_blocktype_f	type_line
body_blockmatchesr   s                       r}   transform_try_exceptrN    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 )Nro   rp   c                 <                          j                   d S r   r'  rm   r   s   r}   rv   z'transform_try_except_stmt.<locals>.body*  r)  r   rv   r   r8  c                      fdS )Nc                 .                                    S r   rw   rv   rm   s   r}   <lambda>zAtransform_try_except_stmt.<locals>.make_handler.<locals>.<lambda>/  s    w~~d++ r   r   rU  s   `r}   make_handlerz/transform_try_except_stmt.<locals>.make_handler.  s    ++++++r   r   r   tuple[ValueGenFunc, int]c                       fd j         fS )Nc                 .                                    S r   rT  )rm   r   s   r}   rV  z?transform_try_except_stmt.<locals>.make_entry.<locals>.<lambda>2  s    t,, r   )r{   )r   rm   s   `r}   
make_entryz-transform_try_except_stmt.<locals>.make_entry1  s    ,,,,,di88r   c                N    g | ]!\  }}}|r |          nd | |          f"S r   r   )r   r   rG  rv   r[  rW  s       r}   r   z-transform_try_except_stmt.<locals>.<listcomp>4  sT       D#t "	+D			tS,,t2D2DE  r   c                 8                          j                  S r   )rw   r  rQ  s   r}   rV  z+transform_try_except_stmt.<locals>.<lambda>8  s    44 r   r+  )rv   r   ro   r8  )r   r   ro   rX  )r   r   varsr9  r  rN  r{   )rm   r   rv   r9  r  r[  rW  s   ``   @@r}   transform_try_except_stmtr_  )  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   )rN   rm   r>  r   ru   r  r+   r  rx   r?  ret_reg)rm   r`  ra  rb  rc  controls         r}   try_finally_tryrh  <  s     (55GO&&{333##G,,,jll+++HJJJLL  """O%%'''?r   finally_blockrf  r<   c           
     D   t          t                    }|                     |           |rB|                     ||                     t          | j        d                             d           |                     |           |                     |           |                     t          ||                     t          t                                                   |                     |           |                     |           |rB|                     ||                     t          | j        d                             d           |                     t          || 	                    t          g d                               |                     |           |S r   )r7   r@   r  r   ry   r1   r   r  r*   r   rU   )rm   r`  ra  rb  ri  rf  rF  s          r}   try_finally_entry_blocksrk  Q  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_bodyrF  )tuple[BasicBlock, FinallyNonlocalControl]c                4   t                      }| j                            |           t          | j        d         |          }| j                            |           |                     |            |             | j                                         ||fS r   )r+   rm   r>  rM   r   ru   r  rx   )rm   ri  rl  rF  rD  finally_controls         r}   try_finally_bodyrp  o  s     LLMO&&}555,W-Eb-I7SSO##O444=)))LNNN  """/))r   rD  ro  rM   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.
    rr   )r+   ry   r,   IS_ERRORr  r   r]   r)   r;   rm   r?  r   rQ   attr
startswithr&   read_nullable_attrobjr   r   r   r  gen_cleanuprY   )
rm   rD  ro  rF  rf  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   rr   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+   rh  rk  rp  r}  r  )rm   rc  rl  r{   r`  rb  ra  ri  rf  rF  rD  ro  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!          |                     |	          ||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.rr   r   zis notN)r+   rN   rm   r>  r   ru   r  r  rx   r?  rf  r  r   rU   rZ   ry   r,   rA  rY   r)   r;   r   rr  r   rW   r9   none_objectr   r]   )rm   rc  rl  r{   r`  rb  ra  finally_entryrg  rf  no_current_excfinally_raisedcheck_originalrz  check_old_excexc_infoexc_typenone_objhas_excreraise_blockrC  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F7<<00-v__```|,,, $//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 )	AwaitDetectorro   rp   c                V    t                                                       d| _        d S )NF)super__init__	has_await)self	__class__s    r}   r  zAwaitDetector.__init__;  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_expr?  s(      #####r   r+  )r  r  ro   rp   )__name__
__module____qualname__r  r  __classcell__)r  s   @r}   r  r  :  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 yetFTro   rp   c                 n    j         rt                      d S                      j                   d S r   )r9  r_  rw   rv   rQ  s   r}   transform_try_bodyz.transform_try_stmt.<locals>.transform_try_bodyY  s=    z ')'155555qv&&&&&r   c                 .                                    S r   rT  rU  s   r}   rV  z$transform_try_stmt.<locals>.<lambda>c      W^^D5I5I r   c                 .                                    S r   rT  rU  s   r}   rV  z$transform_try_stmt.<locals>.<lambda>g  r  r   r+  )is_starerrorr{   rl  r   is_coroutiner  rw   r  r  r  r_  )rm   r   use_async_versiondetectorr  rv   s   ``   @r}   transform_try_stmtr  D  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 )Nrr   c           	     X    g | ]&}                     t          |d                     'S rr   r   )r   r   rm   r  s     r}   r   z$get_sys_exc_info.<locals>.<listcomp>o  s1    EEEqGKK1b1122EEEr      )r   rW   r   )rm   r  s   `@r}   get_sys_exc_infor  m  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   ro   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   rB   py_call
emit_await)r  r  r   exit_valalrm   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   rp   c                 t    r*                                                                             d S r   )r   r   )rv   rm   r{   r   values   r}   rc  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)   ry   r;   )r|  r  rm   r6  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+   ry   r,   r   rA  r  r  )r|  rC  rm   r6  r  s     r}   rl  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   )rN  )rm   r  r{   rc  s   r}   rV  z transform_with.<locals>.<lambda>  s$    $Wh$k9R8SUY[_`` r   )r  r   ro   r<   r+  )rw   r   r   r=   ry   r4   primitive_opri   r@  py_get_attrr  maybe_spill_assignabletruer  r  )rm   r   r   rv   r-  r{   typrl  r  r6  r  r  r  r  r  r  rc  r  s   ` ````  @@@@@@@@@@r}   transform_withr  r  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   r<  ro   rp   c                      t          j                  k    r                    j                   d S t	          j                  j                   fdj        j                   d S )Nc                        dz             S )Nrk   r   )generater   s   r}   rV  z7transform_with_stmt.<locals>.generate.<locals>.<lambda>  s    !a% r   )r   r   rw   rv   r  r   r-  r{   )r   rm   r  r  s   `r}   r  z%transform_with_stmt.<locals>.generate  sy    AFNN16"""""AHQK1H1H1H1H1H!*VWV\    r   r   )r   r<  ro   rp   r   )rm   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_assertsrw   r   r+   r  r  msgry   r6   ASSERTION_ERRORr{   r   r   r  load_module_attr_by_fullnamer  r   r\   r;   )rm   r  condok_blockerror_blockmessager  r6  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{   rm   r  s     r}   transform_del_stmtr    s,    w = =af E EqvNNNNNr   rP   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   rR   r   baser,  rQ   obj_typer=   class_iris_deletablers  r  noter   r  ra   rv  rS   ry   r*   registerr1   r   rT   r   r  )rm   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 )Nrr   )yield_target)r   r   r   generator_classr+   r   continuation_blocksru   r   next_label_targetr/   ry   r8   r  rK   send_arg_reg)rm   r  r{   r   clsrI  
next_labels          r}   
emit_yieldr    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  Fro   rp   c            	     z                          t                                                               d S r   )r   r  r   )rm   r{   received_regto_yield_regs   r}   rc  z*emit_yield_from_or_await.<locals>.try_bodyq  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   )r7   rD   ry   r0   rC   r   rj   r   r+   r,   rA  r  r   r   r3  r0  )
r  val_addressto_stopokstoprm   iter_regr{   resultr   s
        r}   r  z-emit_yield_from_or_await.<locals>.except_bodyt  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   rg   r   r+   ry   r,   rr  r  r   r   r3  rb   r0  )	_yr  r  rm   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+  )%r7   rD   rO   r   r-   r4   r   r=   r  
has_methodrc   r_   r5   r  r   r  r+   r   r  ry   r1   r   r0   rC   r'   
error_kindr`   r,   rr  r  r[   rb   r  r  r  rN  r   )rm   r  r{   r  helper_methoditer_valget_op
stop_block
main_block
done_block	fast_pathrv  nnstop_iter_valerrptrm_y_init
loop_blockrc  r  r  r  r  r  r   s   ` `                   @@@@r}   emit_yield_from_or_awaitr  $  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  )rm   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   rw   rm   r   r  )rm   r   r   s      r}   transform_yield_exprr    sm    # G:DIFFFy (	**%%''gvty111r   r%   c                b    t          | |                     |j                  |j        d          S )NFr  r  rw   r   r{   r  s     r}   transform_yield_from_exprr"    s*    #GW^^AF-C-CQVV[\\\\r   r
   c                b    t          | |                     |j                  |j        d          S r  r!  r  s     r}   transform_await_exprr$    s*    #GW^^AF-C-CQVVZ[[[[r   r  r   c                L    |                     t          | |                     d S r   )rw   rl   )rm   r  s     r}   transform_match_stmtr&    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)	arg_names	arg_kinds)r{   r   rf   r   rH   	type_argsr  r   r   r   ru   	new_tupler   r  r  rw   r   rm   r  rh   r   r   )rm   r  r{   modr*  type_alias_typer  r+  r,  alias
compute_fnr   s               r}   transform_type_alias_stmtr3    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   )rm   rG   rn   r   ro   rp   )rm   rG   r|   r   ro   rp   )rm   rG   r|   r   ro   rp   )rm   rG   r|   r	   ro   rp   )r   r   ro   r   )rm   rG   r|   r   ro   rp   )r   r   r   r   ro   r   )rm   rG   r   r   ro   rp   )rm   rG   r   r   ro   rp   )rm   rG   r   r   ro   rp   )rm   rG   r|   r   ro   rp   )rm   rG   r  r"   ro   rp   )rm   rG   r  r   ro   rp   )rm   rG   r   r   ro   rp   )rm   rG   r   r   ro   rp   )rm   rG   r  r   ro   rp   )rm   rG   rv   r8  r9  r:  r  r;  r{   r<  ro   rp   )rm   rG   r   r   ro   rp   )rm   rG   r`  r+   ra  r+   rb  r+   rc  r8  ro   rd  )rm   rG   r`  r+   ra  r+   rb  r+   ri  r+   rf  rd  ro   r<   )
rm   rG   ri  r+   rl  r8  rF  r<   ro   rm  )rm   rG   rD  r+   ro  rM   rF  r<   rf  rd  ro   r+   r  )
rm   rG   rc  r8  rl  r8  r{   r<  ro   rp   )rm   rG   ro   r  )rm   rG   r   r   r   r  rv   r8  r-  r   r{   r<  ro   rp   )rm   rG   r  r#   ro   rp   )rm   rG   r  r   ro   rp   )rm   rG   r  r   ro   rp   )rm   rG   r   rP   r{   r<  ro   rp   )rm   rG   r  r<   r{   r<  ro   r<   )
rm   rG   r  r<   r{   r<  r  r   ro   r<   )rm   rG   r   r$   ro   r<   )rm   rG   r  r%   ro   r<   )rm   rG   r  r
   ro   r<   )rm   rG   r  r   ro   rp   )rm   rG   r  r!   ro   rp   )__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%   mypyc.commonr&   mypyc.ir.opsr'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   mypyc.ir.rtypesr=   r>   r?   r@   rA   rB   rC   rD   mypyc.irbuild.ast_helpersrE   rF   mypyc.irbuild.builderrG   rH   rI   mypyc.irbuild.for_helpersrJ   mypyc.irbuild.generatorrK   mypyc.irbuild.nonlocalcontrolrL   rM   rN   mypyc.irbuild.preparerO   mypyc.irbuild.targetsrP   rQ   rR   rS   rT   mypyc.primitives.exc_opsrU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   mypyc.primitives.generic_opsr_   r`   ra   mypyc.primitives.misc_opsrb   rc   rd   re   rf   rg   rh   ri   rj   matchrl   r8  ValueGenFuncr~   r   r   r   r   r   r   r   r  r  r  r$  r.  r1  r4  r7  rN  r_  rh  rk  rp  r}  r  r  	traverserTraverserVisitorr  r  r  r  r  r  r  r  r  r  r  r  r"  r$  r&  r3  r   r   r}   <module>rL     s    # " " " " "     $ $ $ $ $ $          ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !D ( ' ' ' ' '                                               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b' b' b' b' b'L$ $ $ $ $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   