
    X-Ph                         U d Z ddlZddlmZ ddlZddlmZ  e            Z	 G d dee                   Z
 e
            Zeed<   dej        j        d	efd
ZdS )z

Evaluate an expression.

Used by stubtest; in a separate file because things break if we don't
put it in a mypyc-compiled file.

    N)Final)ExpressionVisitorc                   >   e Zd Zdej        j        defdZdej        j        de	fdZ
dej        j        defdZdej        j        defdZdej        j        defdZdej        j        defdZdej        j        defd	Zdej        j        defd
Zdej        j        defdZdej        j        defdZdej        j        defdZdej        j        defdZ dej        j!        defdZ"dej        j#        defdZ$dej        j%        defdZ&dej        j'        defdZ(dej        j)        defdZ*dej        j+        defdZ,dej        j-        defdZ.dej        j/        defdZ0dej        j1        defdZ2dej        j3        defdZ4dej        j5        defdZ6dej        j7        defdZ8dej        j9        defdZ:dej        j;        defdZ<dej        j=        defdZ>dej        j?        defdZ@dej        jA        defdZBdej        jC        defd ZDdej        jE        defd!ZFdej        jG        defd"ZHdej        jI        defd#ZJdej        jK        defd$ZLdej        jM        defd%ZNdej        jO        defd&ZPdej        jQ        defd'ZRdej        jS        defd(ZTdej        jU        defd)ZVdej        jW        defd*ZXdej        jY        defd+ZZdej        j[        defd,Z\dej        j]        defd-Z^dej        j_        defd.Z`d/S )0_NodeEvaluatororeturnc                     |j         S Nvalueselfr   s     M/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypy/evalexpr.pyvisit_int_exprz_NodeEvaluator.visit_int_expr   	    w    c                     |j         S r
   r   r   s     r   visit_str_exprz_NodeEvaluator.visit_str_expr   r   r   c                     	 t          j        d|j         d          S # t          $ r  t          j        d|j         d          cY S w xY w)Nzb''zb"")astliteral_evalr   SyntaxErrorr   s     r   visit_bytes_exprz_NodeEvaluator.visit_bytes_expr   s^    	5#OOOO444 	5 	5 	5#OOOO44444	5s    'A	A	c                     |j         S r
   r   r   s     r   visit_float_exprz_NodeEvaluator.visit_float_expr"   r   r   c                     |j         S r
   r   r   s     r   visit_complex_exprz!_NodeEvaluator.visit_complex_expr%   r   r   c                     t           S r
   )Ellipsisr   s     r   visit_ellipsisz_NodeEvaluator.visit_ellipsis(   s    r   c                     t           S r
   UNKNOWNr   s     r   visit_star_exprz_NodeEvaluator.visit_star_expr+       r   c                 ^    |j         dk    rdS |j         dk    rdS |j         dk    rd S t          S )NTrueTFalseFNone)namer%   r   s     r   visit_name_exprz_NodeEvaluator.visit_name_expr.   s?    6V4Vw5Vv4 r   c                     t           S r
   r$   r   s     r   visit_member_exprz _NodeEvaluator.visit_member_expr9   r'   r   c                     t           S r
   r$   r   s     r   visit_yield_from_exprz$_NodeEvaluator.visit_yield_from_expr<   r'   r   c                     t           S r
   r$   r   s     r   visit_yield_exprz_NodeEvaluator.visit_yield_expr?   r'   r   c                     t           S r
   r$   r   s     r   visit_call_exprz_NodeEvaluator.visit_call_exprB   r'   r   c                     t           S r
   r$   r   s     r   visit_op_exprz_NodeEvaluator.visit_op_exprE   r'   r   c                     t           S r
   r$   r   s     r   visit_comparison_exprz$_NodeEvaluator.visit_comparison_exprH   r'   r   c                 6    |j                             |           S r
   expracceptr   s     r   visit_cast_exprz_NodeEvaluator.visit_cast_exprK       v}}T"""r   c                 6    |j                             |           S r
   r;   r   s     r   visit_assert_type_exprz%_NodeEvaluator.visit_assert_type_exprN   r?   r   c                     t           S r
   r$   r   s     r   visit_reveal_exprz _NodeEvaluator.visit_reveal_exprQ   r'   r   c                     t           S r
   r$   r   s     r   visit_super_exprz_NodeEvaluator.visit_super_exprT   r'   r   c                    |j                             |           }|t          u rt          S |j        dk    r&t	          |t
          t          t          f          r| S n|j        dk    r&t	          |t
          t          t          f          r|
 S n`|j        dk    rt	          |t
                    r| S n<|j        dk    r1t	          |t          t
          t          t          t          f          r| S t          S )N-+~not)r<   r=   r%   op
isinstanceintfloatcomplexboolstrbytes)r   r   operands      r   visit_unary_exprz_NodeEvaluator.visit_unary_exprW   s    &--%%gN43;;'C#899  x TS[['C#899  x TS[['3''  x TU]]'D#uc5#ABB #"{"r   c                 6    |j                             |           S r
   )r   r=   r   s     r   visit_assignment_exprz$_NodeEvaluator.visit_assignment_expri   s    w~~d###r   c                 n      fd|j         D             }t          d |D                       r|S t          S )Nc                 :    g | ]}|                               S  r=   .0itemr   s     r   
<listcomp>z2_NodeEvaluator.visit_list_expr.<locals>.<listcomp>m   %    777tT""777r   c              3   (   K   | ]}|t           uV  d S r
   r$   r\   r]   s     r   	<genexpr>z1_NodeEvaluator.visit_list_expr.<locals>.<genexpr>n   '      55tt7"555555r   )itemsallr%   r   r   rd   s   `  r   visit_list_exprz_NodeEvaluator.visit_list_exprl   sG    7777qw77755u55555 	Lr   c                       fd|j         D             }t          d |D                       rt          |          S t          S )Nc                 |    g | ]8\  }}|t           n|                              |                              f9S r
   )r%   r=   )r\   keyr   r   s      r   r^   z2_NodeEvaluator.visit_dict_expr.<locals>.<listcomp>s   sR     
 
 
U WWD)9)95<<;M;MN
 
 
r   c              3   6   K   | ]\  }}|t           uo|d uV  d S r
   r$   )r\   rj   r   s      r   rb   z1_NodeEvaluator.visit_dict_expr.<locals>.<genexpr>w   s5      PPJCs'!7e4&7PPPPPPr   )rd   re   dictr%   rf   s   `  r   visit_dict_exprz_NodeEvaluator.visit_dict_exprr   s_    
 
 
 
g
 
 
 PP%PPPPP 	;;r   c                       fd|j         D             }t          d |D                       rt          |          S t          S )Nc                 :    g | ]}|                               S rY   rZ   r[   s     r   r^   z3_NodeEvaluator.visit_tuple_expr.<locals>.<listcomp>|   r_   r   c              3   (   K   | ]}|t           uV  d S r
   r$   ra   s     r   rb   z2_NodeEvaluator.visit_tuple_expr.<locals>.<genexpr>}   rc   r   )rd   re   tupler%   rf   s   `  r   visit_tuple_exprz_NodeEvaluator.visit_tuple_expr{   sN    7777qw77755u55555 	 <<r   c                       fd|j         D             }t          d |D                       rt          |          S t          S )Nc                 :    g | ]}|                               S rY   rZ   r[   s     r   r^   z1_NodeEvaluator.visit_set_expr.<locals>.<listcomp>   r_   r   c              3   (   K   | ]}|t           uV  d S r
   r$   ra   s     r   rb   z0_NodeEvaluator.visit_set_expr.<locals>.<genexpr>   rc   r   )rd   re   setr%   rf   s   `  r   visit_set_exprz_NodeEvaluator.visit_set_expr   sN    7777qw77755u55555 	u::r   c                     t           S r
   r$   r   s     r   visit_index_exprz_NodeEvaluator.visit_index_expr   r'   r   c                     t           S r
   r$   r   s     r   visit_type_applicationz%_NodeEvaluator.visit_type_application   r'   r   c                     t           S r
   r$   r   s     r   visit_lambda_exprz _NodeEvaluator.visit_lambda_expr   r'   r   c                     t           S r
   r$   r   s     r   visit_list_comprehensionz'_NodeEvaluator.visit_list_comprehension   r'   r   c                     t           S r
   r$   r   s     r   visit_set_comprehensionz&_NodeEvaluator.visit_set_comprehension   r'   r   c                     t           S r
   r$   r   s     r   visit_dictionary_comprehensionz-_NodeEvaluator.visit_dictionary_comprehension   r'   r   c                     t           S r
   r$   r   s     r   visit_generator_exprz#_NodeEvaluator.visit_generator_expr   r'   r   c                     t           S r
   r$   r   s     r   visit_slice_exprz_NodeEvaluator.visit_slice_expr   r'   r   c                     t           S r
   r$   r   s     r   visit_conditional_exprz%_NodeEvaluator.visit_conditional_expr   r'   r   c                     t           S r
   r$   r   s     r   visit_type_var_exprz"_NodeEvaluator.visit_type_var_expr   r'   r   c                     t           S r
   r$   r   s     r   visit_paramspec_exprz#_NodeEvaluator.visit_paramspec_expr   r'   r   c                     t           S r
   r$   r   s     r   visit_type_var_tuple_exprz(_NodeEvaluator.visit_type_var_tuple_expr   r'   r   c                     t           S r
   r$   r   s     r   visit_type_alias_exprz$_NodeEvaluator.visit_type_alias_expr   r'   r   c                     t           S r
   r$   r   s     r   visit_namedtuple_exprz$_NodeEvaluator.visit_namedtuple_expr   r'   r   c                     t           S r
   r$   r   s     r   visit_enum_call_exprz#_NodeEvaluator.visit_enum_call_expr   r'   r   c                     t           S r
   r$   r   s     r   visit_typeddict_exprz#_NodeEvaluator.visit_typeddict_expr   r'   r   c                     t           S r
   r$   r   s     r   visit_newtype_exprz!_NodeEvaluator.visit_newtype_expr   r'   r   c                     t           S r
   r$   r   s     r   visit__promote_exprz"_NodeEvaluator.visit__promote_expr   r'   r   c                     t           S r
   r$   r   s     r   visit_await_exprz_NodeEvaluator.visit_await_expr   r'   r   c                     t           S r
   r$   r   s     r   visit_temp_nodez_NodeEvaluator.visit_temp_node   r'   r   N)a__name__
__module____qualname__mypynodesIntExprrM   r   StrExprrQ   r   	BytesExprobjectr   	FloatExprrN   r   ComplexExprr   EllipsisExprr"   StarExprr&   NameExprr-   
MemberExprr/   YieldFromExprr1   	YieldExprr3   CallExprr5   OpExprr7   ComparisonExprr9   CastExprr>   AssertTypeExprrA   
RevealExprrC   	SuperExprrE   	UnaryExprrT   AssignmentExprrV   ListExprrg   DictExprrm   	TupleExprrr   SetExprrw   	IndexExprry   TypeApplicationr{   
LambdaExprr}   ListComprehensionr   SetComprehensionr   DictionaryComprehensionr   GeneratorExprr   	SliceExprr   ConditionalExprr   TypeVarExprr   ParamSpecExprr   TypeVarTupleExprr   TypeAliasExprr   NamedTupleExprr   EnumCallExprr   TypedDictExprr   NewTypeExprr   PromoteExprr   	AwaitExprr   TempNoder   rY   r   r   r   r      s       
 2 s    
 2 s    5$*"6 56 5 5 5 5$*"6 5    DJ$: v    
 7 F    !4     	!4 	 	 	 	 	4:#8 V    tz'? F    $*"6 6    !4     tz0 V    tz'@ V    #!4 # # # # ##
(A #f # # # #4:#8 V    $*"6 6    $*"6 6    $$tz'@ $V $ $ $ $!4     !4     $*"6 6    
 2 v    $*"6 6    
(B v    4:#8 V    $**F 6    )D     
0R W]    dj&> 6    $*"6 6    
(B v    TZ%;     dj&> 6    4:+F 6    tz'? F    tz'@ V    dj&= &    dj&> 6    DJ$: v    TZ%;     $*"6 6    !4       r   r   
_evaluatorr<   r   c                 6    |                      t                    S )zEvaluate an expression at runtime.

    Return the result of the expression, or UNKNOWN if the expression cannot be
    evaluated.
    )r=   r   )r<   s    r   evaluate_expressionr      s     ;;z"""r   )__doc__r   typingr   
mypy.nodesr   mypy.visitorr   r   r%   r   r   __annotations__r   
Expressionr   rY   r   r   <module>r      s      


           * * * * * *
&((n n n n n&v. n n nb #N$$
E $ $ $#dj3 # # # # # # #r   