
    X-Ph2                    ~   d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN ddlOmPZP ddlQmRZRmSZSmTZT ddlUmVZV ddlWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZp dd	lqmrZrmsZsmtZtmuZu dd
lvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ  G d deS          ZdS )zDispatcher used when transforming a mypy AST to the IR form.

mypyc.irbuild.builder and mypyc.irbuild.main are closely related.
    )annotations)NoReturn)I
AssertStmtAssertTypeExprAssignmentExprAssignmentStmt	AwaitExprBlock	BreakStmt	BytesExprCallExprCastExprClassDefComparisonExprComplexExprConditionalExprContinueStmt	DecoratorDelStmtDictExprDictionaryComprehensionEllipsisExprEnumCallExprExpressionStmt	FloatExprForStmtFuncDefGeneratorExpr
GlobalDeclIfStmtImport	ImportAll
ImportFrom	IndexExprIntExpr
LambdaExprListComprehensionListExpr	MatchStmt
MemberExprMypyFileNamedTupleExprNameExprNewTypeExprNonlocalDeclOperatorAssignmentStmtOpExprOverloadedFuncDefParamSpecExprPassStmtPromoteExpr	RaiseStmt
ReturnStmt
RevealExprSetComprehensionSetExpr	SliceExprStarExprStrExpr	SuperExprTempNodeTryStmt	TupleExprTypeAliasExprTypeAliasStmtTypeApplicationTypedDictExprTypeVarExprTypeVarTupleExpr	UnaryExprVar	WhileStmtWithStmt	YieldExprYieldFromExpr)Value)	IRBuilder	IRVisitorUnsupportedException)transform_class_def)transform_assignment_exprtransform_bytes_exprtransform_call_exprtransform_comparison_exprtransform_complex_exprtransform_conditional_exprtransform_dict_expr"transform_dictionary_comprehensiontransform_ellipsistransform_float_exprtransform_generator_exprtransform_index_exprtransform_int_exprtransform_list_comprehensiontransform_list_exprtransform_member_exprtransform_name_exprtransform_op_exprtransform_set_comprehensiontransform_set_exprtransform_slice_exprtransform_str_exprtransform_super_exprtransform_tuple_exprtransform_unary_expr)transform_decoratortransform_func_deftransform_lambda_exprtransform_overloaded_func_def)transform_assert_stmttransform_assignment_stmttransform_await_exprtransform_blocktransform_break_stmttransform_continue_stmttransform_del_stmttransform_expression_stmttransform_for_stmttransform_if_stmttransform_importtransform_import_alltransform_import_fromtransform_match_stmt"transform_operator_assignment_stmttransform_raise_stmttransform_return_stmttransform_try_stmttransform_type_alias_stmttransform_while_stmttransform_with_stmttransform_yield_exprtransform_yield_from_exprc                  n   e Zd ZU dZded<   ddZddZddZddZddZ	ddZ
ddZddZddZdd!Zdd#Zdd%Zdd'Zdd)Zdd+Zdd-Zdd/Zdd1Zdd3Zdd5Zdd7Zdd9Zdd;Zdd=Zdd?ZddAZddCZddEZ ddIZ!ddKZ"ddMZ#ddOZ$ddQZ%ddSZ&ddUZ'ddWZ(ddYZ)dd[Z*dd]Z+dd_Z,ddaZ-ddcZ.ddeZ/ddgZ0ddiZ1ddkZ2ddmZ3ddoZ4ddqZ5ddsZ6dduZ7ddwZ8ddyZ9dd{Z:dd}Z;ddZ<ddZ=ddZ>ddZ?ddZ@ddZAddZBddZCddZDddZEddZFddZGddZHddZIddZJddZKddZLddZMddZNdS )IRBuilderVisitoraE  Mypy node visitor that dispatches to node transform implementations.

    This class should have no non-trivial logic.

    This visitor is separated from the rest of code to improve modularity and
    to avoid import cycles.

    This is based on the visitor pattern
    (https://en.wikipedia.org/wiki/Visitor_pattern).
    rO   buildermypyfiler+   returnNonec                    J d            )NFzuse transform_mypy_file instead )selfr   s     U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypyc/irbuild/visitor.pyvisit_mypy_filez IRBuilderVisitor.visit_mypy_file   s    77777    cdefr   c                0    t          | j        |           d S N)rR   r   )r   r   s     r   visit_class_defz IRBuilderVisitor.visit_class_def       DL$/////r   noder!   c                0    t          | j        |           d S r   )rz   r   r   r   s     r   visit_importzIRBuilderVisitor.visit_import   s    t,,,,,r   r#   c                0    t          | j        |           d S r   )r|   r   r   s     r   visit_import_fromz"IRBuilderVisitor.visit_import_from       dlD11111r   r"   c                0    t          | j        |           d S r   )r{   r   r   s     r   visit_import_allz!IRBuilderVisitor.visit_import_all       T\400000r   fdefr   c                0    t          | j        |           d S r   )rm   r   )r   r   s     r   visit_func_defzIRBuilderVisitor.visit_func_def       4<.....r   or2   c                0    t          | j        |           d S r   )ro   r   r   r   s     r   visit_overloaded_func_defz*IRBuilderVisitor.visit_overloaded_func_def   s    %dlA66666r   decr   c                0    t          | j        |           d S r   )rl   r   )r   r   s     r   visit_decoratorz IRBuilderVisitor.visit_decorator   s    DL#.....r   blockr
   c                0    t          | j        |           d S r   )rs   r   )r   r   s     r   visit_blockzIRBuilderVisitor.visit_block   s    e,,,,,r   stmtr   c                0    t          | j        |           d S r   )rw   r   r   r   s     r   visit_expression_stmtz&IRBuilderVisitor.visit_expression_stmt       !$,55555r   r7   c                b    t          | j        |           | j                                         d S r   )r   r   mark_block_unreachabler   s     r   visit_return_stmtz"IRBuilderVisitor.visit_return_stmt   s.    dlD111++-----r   r   c                0    t          | j        |           d S r   )rq   r   r   s     r   visit_assignment_stmtz&IRBuilderVisitor.visit_assignment_stmt   r   r   r0   c                0    t          | j        |           d S r   )r~   r   r   s     r   visit_operator_assignment_stmtz/IRBuilderVisitor.visit_operator_assignment_stmt   s    *4<>>>>>r   r    c                0    t          | j        |           d S r   )ry   r   r   s     r   visit_if_stmtzIRBuilderVisitor.visit_if_stmt   s    $,-----r   rJ   c                0    t          | j        |           d S r   )r   r   r   s     r   visit_while_stmtz!IRBuilderVisitor.visit_while_stmt   r   r   r   c                0    t          | j        |           d S r   )rx   r   r   s     r   visit_for_stmtzIRBuilderVisitor.visit_for_stmt   r   r   r   c                b    t          | j        |           | j                                         d S r   )rt   r   r   r   s     r   visit_break_stmtz!IRBuilderVisitor.visit_break_stmt   .    T\4000++-----r   r   c                b    t          | j        |           | j                                         d S r   )ru   r   r   r   s     r   visit_continue_stmtz$IRBuilderVisitor.visit_continue_stmt   s.    d333++-----r   r6   c                b    t          | j        |           | j                                         d S r   )r   r   r   r   s     r   visit_raise_stmtz!IRBuilderVisitor.visit_raise_stmt   r   r   r@   c                0    t          | j        |           d S r   )r   r   r   s     r   visit_try_stmtzIRBuilderVisitor.visit_try_stmt   r   r   rK   c                0    t          | j        |           d S r   )r   r   r   s     r   visit_with_stmtz IRBuilderVisitor.visit_with_stmt   r   r   r4   c                    d S r   r   r   s     r   visit_pass_stmtz IRBuilderVisitor.visit_pass_stmt   s    r   r   c                0    t          | j        |           d S r   )rp   r   r   s     r   visit_assert_stmtz"IRBuilderVisitor.visit_assert_stmt   r   r   r   c                0    t          | j        |           d S r   )rv   r   r   s     r   visit_del_stmtzIRBuilderVisitor.visit_del_stmt   r   r   r   c                    d S r   r   r   s     r   visit_global_declz"IRBuilderVisitor.visit_global_decl       r   r/   c                    d S r   r   r   s     r   visit_nonlocal_declz$IRBuilderVisitor.visit_nonlocal_decl   r   r   r)   c                0    t          | j        |           d S r   )r}   r   r   s     r   visit_match_stmtz!IRBuilderVisitor.visit_match_stmt   r   r   rC   c                0    t          | j        |           d S r   )r   r   r   s     r   visit_type_alias_stmtz&IRBuilderVisitor.visit_type_alias_stmt   r   r   exprr-   rN   c                ,    t          | j        |          S r   )rc   r   r   r   s     r   visit_name_exprz IRBuilderVisitor.visit_name_expr      "4<666r   r*   c                ,    t          | j        |          S r   )rb   r   r   s     r   visit_member_exprz"IRBuilderVisitor.visit_member_expr      $T\4888r   r>   c                ,    t          | j        |          S r   )ri   r   r   s     r   visit_super_exprz!IRBuilderVisitor.visit_super_expr	      #DL$777r   r   c                ,    t          | j        |          S r   )rU   r   r   s     r   visit_call_exprz IRBuilderVisitor.visit_call_expr  r   r   rH   c                ,    t          | j        |          S r   )rk   r   r   s     r   visit_unary_exprz!IRBuilderVisitor.visit_unary_expr  r   r   r1   c                ,    t          | j        |          S r   )rd   r   r   s     r   visit_op_exprzIRBuilderVisitor.visit_op_expr  s     t444r   r$   c                ,    t          | j        |          S r   )r^   r   r   s     r   visit_index_exprz!IRBuilderVisitor.visit_index_expr  r   r   r   c                ,    t          | j        |          S r   )rX   r   r   s     r   visit_conditional_exprz'IRBuilderVisitor.visit_conditional_expr  s    )$,===r   r   c                ,    t          | j        |          S r   )rV   r   r   s     r   visit_comparison_exprz&IRBuilderVisitor.visit_comparison_expr  s    (t<<<r   r%   c                ,    t          | j        |          S r   )r_   r   r   s     r   visit_int_exprzIRBuilderVisitor.visit_int_expr      !$,555r   r   c                ,    t          | j        |          S r   )r\   r   r   s     r   visit_float_exprz!IRBuilderVisitor.visit_float_expr!  r   r   r   c                ,    t          | j        |          S r   )rW   r   r   s     r   visit_complex_exprz#IRBuilderVisitor.visit_complex_expr$  s    %dlD999r   r=   c                ,    t          | j        |          S r   )rh   r   r   s     r   visit_str_exprzIRBuilderVisitor.visit_str_expr'  r   r   r   c                ,    t          | j        |          S r   )rT   r   r   s     r   visit_bytes_exprz!IRBuilderVisitor.visit_bytes_expr*  r   r   r   c                ,    t          | j        |          S r   )r[   r   r   s     r   visit_ellipsiszIRBuilderVisitor.visit_ellipsis-  r   r   r(   c                ,    t          | j        |          S r   )ra   r   r   s     r   visit_list_exprz IRBuilderVisitor.visit_list_expr0  r   r   rA   c                ,    t          | j        |          S r   )rj   r   r   s     r   visit_tuple_exprz!IRBuilderVisitor.visit_tuple_expr3  r   r   r   c                ,    t          | j        |          S r   )rY   r   r   s     r   visit_dict_exprz IRBuilderVisitor.visit_dict_expr6  r   r   r:   c                ,    t          | j        |          S r   )rf   r   r   s     r   visit_set_exprzIRBuilderVisitor.visit_set_expr9  r   r   r'   c                ,    t          | j        |          S r   )r`   r   r   s     r   visit_list_comprehensionz)IRBuilderVisitor.visit_list_comprehension<  s    +DL$???r   r9   c                ,    t          | j        |          S r   )re   r   r   s     r   visit_set_comprehensionz(IRBuilderVisitor.visit_set_comprehension?  s    *4<>>>r   r   c                ,    t          | j        |          S r   )rZ   r   r   s     r   visit_dictionary_comprehensionz/IRBuilderVisitor.visit_dictionary_comprehensionB  s    1$,EEEr   r;   c                ,    t          | j        |          S r   )rg   r   r   s     r   visit_slice_exprz!IRBuilderVisitor.visit_slice_exprE  r   r   r   c                ,    t          | j        |          S r   )r]   r   r   s     r   visit_generator_exprz%IRBuilderVisitor.visit_generator_exprH  s    'd;;;r   r&   c                ,    t          | j        |          S r   )rn   r   r   s     r   visit_lambda_exprz"IRBuilderVisitor.visit_lambda_exprK  r   r   rL   c                ,    t          | j        |          S r   )r   r   r   s     r   visit_yield_exprz!IRBuilderVisitor.visit_yield_exprN  r   r   rM   c                ,    t          | j        |          S r   )r   r   r   s     r   visit_yield_from_exprz&IRBuilderVisitor.visit_yield_from_exprQ      (q999r   r	   c                ,    t          | j        |          S r   )rr   r   r   s     r   visit_await_exprz!IRBuilderVisitor.visit_await_exprT  s    #DL!444r   r   c                ,    t          | j        |          S r   )rS   r   r   s     r   visit_assignment_exprz&IRBuilderVisitor.visit_assignment_exprW  r  r   r   c                    J d            NFz'can't compile analysis-only expressionsr   r   s     r   visit_enum_call_exprz%IRBuilderVisitor.visit_enum_call_expr\      ?????r   r5   c                    J d            r  r   r   s     r   visit__promote_exprz$IRBuilderVisitor.visit__promote_expr_  r   r   r,   c                    J d            r  r   r   s     r   visit_namedtuple_exprz&IRBuilderVisitor.visit_namedtuple_exprb  r   r   r.   c                    J d            r  r   r   s     r   visit_newtype_exprz#IRBuilderVisitor.visit_newtype_expre  r   r   r?   c                    J d            r  r   r   s     r   visit_temp_nodez IRBuilderVisitor.visit_temp_nodeh  r   r   rB   c                    J d            r  r   r   s     r   visit_type_alias_exprz&IRBuilderVisitor.visit_type_alias_exprk  r   r   rD   c                    J d            r  r   r   s     r   visit_type_applicationz'IRBuilderVisitor.visit_type_applicationn  r   r   rF   c                    J d            r  r   r   s     r   visit_type_var_exprz$IRBuilderVisitor.visit_type_var_exprq  r   r   r3   c                    J d            r  r   r   s     r   visit_paramspec_exprz%IRBuilderVisitor.visit_paramspec_exprt  r   r   rG   c                    J d            r  r   r   s     r   visit_type_var_tuple_exprz*IRBuilderVisitor.visit_type_var_tuple_exprw  r   r   rE   c                    J d            r  r   r   s     r   visit_typeddict_exprz%IRBuilderVisitor.visit_typeddict_exprz  r   r   r8   c                    J d            r  r   r   s     r   visit_reveal_exprz"IRBuilderVisitor.visit_reveal_expr}  r   r   rI   c                    J d            )NFz4can't compile Var; should have been handled already?r   r   s     r   	visit_varzIRBuilderVisitor.visit_var  s    LLLLLr   r   c                    J d            )NFz-CastExpr should have been handled in CallExprr   r   s     r   visit_cast_exprz IRBuilderVisitor.visit_cast_expr  s    EEEEEr   r   c                    J d            )NFz3AssertTypeExpr should have been handled in CallExprr   r   s     r   visit_assert_type_exprz'IRBuilderVisitor.visit_assert_type_expr  s    KKKKKr   r<   c                    J d            )NFz?should have been handled in Tuple/List/Set/DictExpr or CallExprr   r   s     r   visit_star_exprz IRBuilderVisitor.visit_star_expr  s    WWWWWr   msgstrlineintr   c                T    | j                             ||           t                      )a  Reports an error and aborts compilation up until the last accept() call

        (accept() catches the UnsupportedException and keeps on
        processing. This allows errors to be non-blocking without always
        needing to write handling for them.
        )r   errorrQ   )r   r?  rA  s      r   bailzIRBuilderVisitor.bail  s(     	3%%%"$$$r   N)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   r2   r   r   )r   r   r   r   )r   r
   r   r   )r   r   r   r   )r   r7   r   r   )r   r   r   r   )r   r0   r   r   )r   r    r   r   )r   rJ   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r6   r   r   )r   r@   r   r   )r   rK   r   r   )r   r4   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r/   r   r   )r   r)   r   r   )r   rC   r   r   )r   r-   r   rN   )r   r*   r   rN   )r   r>   r   rN   )r   r   r   rN   )r   rH   r   rN   )r   r1   r   rN   )r   r$   r   rN   )r   r   r   rN   )r   r   r   rN   )r   r%   r   rN   )r   r   r   rN   )r   r   r   rN   )r   r=   r   rN   )r   r   r   rN   )r   r   r   rN   )r   r(   r   rN   )r   rA   r   rN   )r   r   r   rN   )r   r:   r   rN   )r   r'   r   rN   )r   r9   r   rN   )r   r   r   rN   )r   r;   r   rN   )r   r   r   rN   )r   r&   r   rN   )r   rL   r   rN   )r   rM   r   rN   )r   r	   r   rN   )r   r   r   rN   )r   r   r   rN   )r   r5   r   rN   )r   r,   r   rN   )r   r.   r   rN   )r   r?   r   rN   )r   rB   r   rN   )r   rD   r   rN   )r   rF   r   rN   )r   r3   r   rN   )r   rG   r   rN   )r   rE   r   rN   )r   r8   r   rN   )r   rI   r   r   )r   r   r   rN   )r   r   r   rN   )r   r<   r   rN   )r?  r@  rA  rB  r   r   )O__name__
__module____qualname____doc____annotations__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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.  r0  r2  r4  r6  r8  r:  r<  r>  rE  r   r   r   r   r      s>        	 	 8 8 8 80 0 0 0- - - -2 2 2 21 1 1 1/ / / /7 7 7 7/ / / /- - - -
6 6 6 6. . . .6 6 6 6? ? ? ?. . . .1 1 1 1/ / / /. . . .. . . .. . . ./ / / /0 0 0 0   2 2 2 2/ / / /      1 1 1 16 6 6 6
7 7 7 79 9 9 98 8 8 87 7 7 78 8 8 85 5 5 58 8 8 8> > > >= = = =6 6 6 68 8 8 8: : : :6 6 6 68 8 8 86 6 6 67 7 7 78 8 8 87 7 7 76 6 6 6@ @ @ @? ? ? ?F F F F8 8 8 8< < < <9 9 9 98 8 8 8: : : :5 5 5 5: : : :
@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @M M M MF F F FL L L LX X X X
% % % % % %r   r   N)rI  
__future__r   typingr   
mypy.nodesr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   mypyc.ir.opsrN   mypyc.irbuild.builderrO   rP   rQ   mypyc.irbuild.classdefrR   mypyc.irbuild.expressionrS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   mypyc.irbuild.functionrl   rm   rn   ro   mypyc.irbuild.statementrp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   <module>rT     s   
 # " " " " "      J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J JV       L L L L L L L L L L 6 6 6 6 6 6                                                     6                                                            6B% B% B% B% B%y B% B% B% B% B%r   