
    %^g-"                       U d dl mZ d dlmZmZmZmZ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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< d dl=m>Z> ddZ?eedf   Z@deAd	<   dd
ZBddZCddZD G d de>ee@            ZE eE       ZFdeAd<   y)    )annotations)AnyFinalIterableOptionalTuple)	TypeAlias)1
LITERAL_NOLITERAL_TYPELITERAL_YESAssertTypeExprAssignmentExpr	AwaitExpr	BytesExprCallExprCastExprComparisonExprComplexExprConditionalExprDictExprDictionaryComprehensionEllipsisExprEnumCallExpr
Expression	FloatExprGeneratorExpr	IndexExprIntExpr
LambdaExprListComprehensionListExpr
MemberExprNamedTupleExprNameExprNewTypeExprOpExprParamSpecExprPromoteExpr
RevealExprSetComprehensionSetExpr	SliceExprStarExprStrExpr	SuperExprTempNode	TupleExprTypeAliasExprTypeApplicationTypedDictExprTypeVarExprTypeVarTupleExpr	UnaryExprVar	YieldExprYieldFromExpr)ExpressionVisitorc                ^   t        | t              rt        d | j                  D              S t        | t              r2t        t        | j                        t        | j                              S t        | t        t        t        f      rt        | j                        S t        | t              rt        | j                        S t        | t              r7t        | j                        t         k(  rt        | j"                        S t$        S t        | t&              rRt        | j(                  t*              r2| j(                  j,                  r| j(                  j.                  t         S t0        S t        | t2        t4        t6        t8        t:        f      rt         S t=        |       rt         S t$        S )Nc              3  2   K   | ]  }t        |        y wN)literal.0os     -lib/python3.12/site-packages/mypy/literals.py	<genexpr>zliteral.<locals>.<genexpr>d   s     2z!71:z   )
isinstancer   minoperandsr&   r?   leftrightr"   r7   r-   exprr   targetr   indexr   baser
   r$   noder8   is_finalfinal_valuer   r   r   r   r.   r   literal_hashes    rC   r?   r?   b   s   !^$2qzz222	Av	7166?GAGG$455	A
Ix8	9qvv	A~	&qxx  	Ay	!177{*166?"	Ax	 affc"qvv166;M;M;Y!gy+w	JKA    .
_TypeAliasKeyc                N    | D cg c]  }t        |t              s| c}S c c}w r>   )rF   tuple)keyelts     rC   subkeysr\      s#    93C*S%"8C3999s   ""c                ,    | j                  t              S r>   )accept_hasherrS   s    rC   rR   rR      s    88GrU   c                `    t        |       dk(  r | d   dk(  rt        | d   t              r| d   S y)zHIf key refers to a Var node, return it.

    Return None otherwise.
       r   r8      N)lenrF   r8   )rZ   s    rC   extract_var_from_literal_hashrd      s2    
 3x1}Q5ZA-D1vrU   c                  t   e Zd Zd/dZd0dZd1dZd2dZd3dZd4dZd5dZ	d6dZ
d7d	Zd8d
Zd9dZd:dZd;dZd<dZd=dZd>dZd?dZd@dZdAdZdBdZdCdZdDdZdEdZdFdZdGdZdHdZdIdZdJdZdKdZdLdZ dMdZ!dNd Z"dOd!Z#dPd"Z$dQd#Z%dRd$Z&dSd%Z'dTd&Z(dUd'Z)dVd(Z*dWd)Z+dXd*Z,dYd+Z-dZd,Z.d[d-Z/y.)\_Hasherc                    d|j                   fS NLiteralvalueselfrT   s     rC   visit_int_exprz_Hasher.visit_int_expr       177##rU   c                    d|j                   fS rh   rj   rl   s     rC   visit_str_exprz_Hasher.visit_str_expr   ro   rU   c                    d|j                   fS rh   rj   rl   s     rC   visit_bytes_exprz_Hasher.visit_bytes_expr   ro   rU   c                    d|j                   fS rh   rj   rl   s     rC   visit_float_exprz_Hasher.visit_float_expr   ro   rU   c                    d|j                   fS rh   rj   rl   s     rC   visit_complex_exprz_Hasher.visit_complex_expr   ro   rU   c                0    dt        |j                        fS )NStar)rR   rK   rl   s     rC   visit_star_exprz_Hasher.visit_star_expr   s    QVV,--rU   c                    t        |j                  t              rD|j                  j                  r.|j                  j                  d|j                  j                  fS d|j                  fS )Nri   r8   )rF   rO   r8   rP   rQ   rl   s     rC   visit_name_exprz_Hasher.visit_name_expr   sN    affc"qvv166;M;M;Yqvv1122 qvvrU   c                F    dt        |j                        |j                  fS )NMember)rR   rK   namerl   s     rC   visit_member_exprz_Hasher.visit_member_expr   s    ,qvv.77rU   c                n    d|j                   t        |j                        t        |j                        fS )NBinary)oprR   rI   rJ   rl   s     rC   visit_op_exprz_Hasher.visit_op_expr   s'    !$$QVV 4l1776KLLrU   c                t    t        |j                        }|t        d |j                  D              z  }d|z   S )Nc              3  2   K   | ]  }t        |        y wr>   rR   r@   s     rC   rD   z0_Hasher.visit_comparison_expr.<locals>.<genexpr>   s     :z!l1ozrE   )
Comparison)rY   	operatorsrH   rm   rT   rests      rC   visit_comparison_exprz_Hasher.visit_comparison_expr   s4    -21;;-?:qzz:::%%rU   c                F    d|j                   t        |j                        fS )NUnary)r   rR   rK   rl   s     rC   visit_unary_exprz_Hasher.visit_unary_expr   s    |AFF344rU   c                    t        d |j                  D              r"t        d |j                  D              }|f|z   S y )Nc              3  @   K   | ]  }t        |      t        k(    y wr>   r?   r   rA   xs     rC   rD   z#_Hasher.seq_expr.<locals>.<genexpr>   s     :'Qwqz[('s   c              3  2   K   | ]  }t        |        y wr>   r   r   s     rC   rD   z#_Hasher.seq_expr.<locals>.<genexpr>   s     0R'Qa'rE   allitemsrY   )rm   rT   r   r   s       rC   seq_exprz_Hasher.seq_expr   s7    :!''::+00R!''0R+RD7T>!rU   c                &    | j                  |d      S )NListr   rl   s     rC   visit_list_exprz_Hasher.visit_list_expr   s    }}Q''rU   c                ~    t        d |j                  D              r!t        d |j                  D              }d|z   S y )Nc              3  v   K   | ]1  \  }}|xr& t        |      t        |      cxk(  xr	 t        k(  nc  3 y wr>   r   rA   abs      rC   rD   z*_Hasher.visit_dict_expr.<locals>.<genexpr>   s/     QAq<WQZ71:<<<s   79c              3  V   K   | ]!  \  }}|rt        |      nd t        |      f # y wr>   r   r   s      rC   rD   z*_Hasher.visit_dict_expr.<locals>.<genexpr>   s)      1NUdaAa4aAgs   '))Dictr   r   s      rC   visit_dict_exprz_Hasher.visit_dict_expr   s?    QQQ+0 1NOgg1 ,D t##rU   c                &    | j                  |d      S )Nr   r   rl   s     rC   visit_tuple_exprz_Hasher.visit_tuple_expr   s    }}Q((rU   c                &    | j                  |d      S )NSetr   rl   s     rC   visit_set_exprz_Hasher.visit_set_expr   s    }}Q&&rU   c                    t        |j                        t        k(  r+dt        |j                        t        |j                        fS y )NIndex)r?   rM   r   rR   rN   rl   s     rC   visit_index_exprz_Hasher.visit_index_expr   s5    177{*\!&&1<3HIIrU   c                ,    t        |j                        S r>   )rR   rL   rl   s     rC   visit_assignment_exprz_Hasher.visit_assignment_expr   s    AHH%%rU   c                     y r>    rl   s     rC   visit_call_exprz_Hasher.visit_call_expr       rU   c                     y r>   r   rl   s     rC   visit_slice_exprz_Hasher.visit_slice_expr   r   rU   c                     y r>   r   rl   s     rC   visit_cast_exprz_Hasher.visit_cast_expr   r   rU   c                     y r>   r   rl   s     rC   visit_assert_type_exprz_Hasher.visit_assert_type_expr   r   rU   c                     y r>   r   rl   s     rC   visit_conditional_exprz_Hasher.visit_conditional_expr   r   rU   c                     y r>   r   rl   s     rC   visit_ellipsisz_Hasher.visit_ellipsis   r   rU   c                     y r>   r   rl   s     rC   visit_yield_from_exprz_Hasher.visit_yield_from_expr   r   rU   c                     y r>   r   rl   s     rC   visit_yield_exprz_Hasher.visit_yield_expr   r   rU   c                     y r>   r   rl   s     rC   visit_reveal_exprz_Hasher.visit_reveal_expr   r   rU   c                     y r>   r   rl   s     rC   visit_super_exprz_Hasher.visit_super_expr   r   rU   c                     y r>   r   rl   s     rC   visit_type_applicationz_Hasher.visit_type_application   r   rU   c                     y r>   r   rl   s     rC   visit_lambda_exprz_Hasher.visit_lambda_expr  r   rU   c                     y r>   r   rl   s     rC   visit_list_comprehensionz _Hasher.visit_list_comprehension  r   rU   c                     y r>   r   rl   s     rC   visit_set_comprehensionz_Hasher.visit_set_comprehension  r   rU   c                     y r>   r   rl   s     rC   visit_dictionary_comprehensionz&_Hasher.visit_dictionary_comprehension
  r   rU   c                     y r>   r   rl   s     rC   visit_generator_exprz_Hasher.visit_generator_expr  r   rU   c                     y r>   r   rl   s     rC   visit_type_var_exprz_Hasher.visit_type_var_expr  r   rU   c                     y r>   r   rl   s     rC   visit_paramspec_exprz_Hasher.visit_paramspec_expr  r   rU   c                     y r>   r   rl   s     rC   visit_type_var_tuple_exprz!_Hasher.visit_type_var_tuple_expr  r   rU   c                     y r>   r   rl   s     rC   visit_type_alias_exprz_Hasher.visit_type_alias_expr  r   rU   c                     y r>   r   rl   s     rC   visit_namedtuple_exprz_Hasher.visit_namedtuple_expr  r   rU   c                     y r>   r   rl   s     rC   visit_enum_call_exprz_Hasher.visit_enum_call_expr  r   rU   c                     y r>   r   rl   s     rC   visit_typeddict_exprz_Hasher.visit_typeddict_expr"  r   rU   c                     y r>   r   rl   s     rC   visit_newtype_exprz_Hasher.visit_newtype_expr%  r   rU   c                     y r>   r   rl   s     rC   visit__promote_exprz_Hasher.visit__promote_expr(  r   rU   c                     y r>   r   rl   s     rC   visit_await_exprz_Hasher.visit_await_expr+  r   rU   c                     y r>   r   rl   s     rC   visit_temp_nodez_Hasher.visit_temp_node.  r   rU   N)rT   r   returnrW   )rT   r.   r   rW   )rT   r   r   rW   )rT   r   r   rW   )rT   r   r   rW   )rT   r-   r   rW   )rT   r$   r   rW   )rT   r"   r   rW   )rT   r&   r   rW   )rT   r   r   rW   )rT   r7   r   rW   )rT   zListExpr | TupleExpr | SetExprr   strr   
Key | None)rT   r!   r   r   )rT   r   r   r   )rT   r1   r   r   )rT   r+   r   r   )rT   r   r   r   )rT   r   r   r   )rT   r   r   None)rT   r,   r   r   )rT   r   r   r   )rT   r   r   r   )rT   r   r   r   )rT   r   r   r   )rT   r:   r   r   )rT   r9   r   r   )rT   r)   r   r   )rT   r/   r   r   )rT   r3   r   r   )rT   r   r   r   )rT   r    r   r   )rT   r*   r   r   )rT   r   r   r   )rT   r   r   r   )rT   r5   r   r   )rT   r'   r   r   )rT   r6   r   r   )rT   r2   r   r   )rT   r#   r   r   )rT   r   r   r   )rT   r4   r   r   )rT   r%   r   r   )rT   r(   r   r   )rT   r   r   r   )rT   r0   r   r   )0__name__
__module____qualname__rn   rq   rs   ru   rw   rz   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   rU   rC   rf   rf      s    $$$$$.8M&
5()'
&rU   rf   r   r_   N)rT   r   r   int)rZ   rW   r   zIterable[Key])rT   r   r   r   )rZ   rW   r   z
Var | None)G
__future__r   typingr   r   r   r   r   typing_extensionsr	   rV   
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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   mypy.visitorr;   r?   rW   __annotations__r\   rR   rd   rf   r_   r   rU   rC   <module>r      s    " 8 8 52 2 2 2 2 2 2 2 2 2 2 2 2f +RB S/Z !:W. Wt  rU   