
    *e-"                       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<   dS )    )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)ExpressionVisitorer   returnintc                   t          | t                    rt          d | j        D                       S t          | t                    r4t          t          | j                  t          | j                            S t          | t          t          t          f          rt          | j                  S t          | t                    rt          | j                  S t          | t                    r8t          | j                  t           k    rt          | j                  S t$          S t          | t&                    r@t          | j        t*                    r| 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  4   K   | ]}t          |          V  d S N)literal.0os     -lib/python3.11/site-packages/mypy/literals.py	<genexpr>zliteral.<locals>.<genexpr>d   s(      22!71::222222    )
isinstancer   minoperandsr&   rB   leftrightr"   r7   r-   exprr   targetr   indexr   baser
   r$   noder8   is_finalfinal_valuer   r   r   r   r.   r   literal_hashr<   s    rF   rB   rB   b   so   !^$$ 22qz222222	Av		 716??GAG$4$4555	A
Ix8	9	9 qv	A~	&	& qx   	Ay	!	! 	17{**16??"	Ax	 	  afc"" 	qv 	16;M;Y!gy+w	JKK A rH   .
_TypeAliasKeykeyIterable[Key]c                    d | D             S )Nc                <    g | ]}t          |t                    |S  )rI   tuple)rD   elts     rF   
<listcomp>zsubkeys.<locals>.<listcomp>   s'    999C*S%"8"89C999rH   r]   rY   s    rF   subkeysrb      s    9939999rH   
Key | Nonec                6    |                      t                    S rA   )accept_hasherrV   s    rF   rU   rU      s    88GrH   
Var | Nonec                    t          |           dk    r/| d         dk    r#t          | d         t                    r| d         S dS )zHIf key refers to a Var node, return it.

    Return None otherwise.
       r   r8      N)lenrI   r8   ra   s    rF   extract_var_from_literal_hashrl      s?    
 3xx1}}Q5ZA-D-D1v4rH   c                  v   e Zd 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dwd1Zdxd3Zdyd5Zdzd7Zd{d9Zd|d;Zd}d=Zd~d?ZddAZddCZ ddEZ!ddG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/dbS )_Hasherr<   r   r=   rX   c                    d|j         fS NLiteralvalueselfr<   s     rF   visit_int_exprz_Hasher.visit_int_expr       17##rH   r.   c                    d|j         fS rp   rr   rt   s     rF   visit_str_exprz_Hasher.visit_str_expr   rw   rH   r   c                    d|j         fS rp   rr   rt   s     rF   visit_bytes_exprz_Hasher.visit_bytes_expr   rw   rH   r   c                    d|j         fS rp   rr   rt   s     rF   visit_float_exprz_Hasher.visit_float_expr   rw   rH   r   c                    d|j         fS rp   rr   rt   s     rF   visit_complex_exprz_Hasher.visit_complex_expr   rw   rH   r-   c                .    dt          |j                  fS )NStar)rU   rN   rt   s     rF   visit_star_exprz_Hasher.visit_star_expr   s    QV,,--rH   r$   c                    t          |j        t                    r&|j        j        r|j        j        d|j        j        fS d|j        fS )Nrq   r8   )rI   rR   r8   rS   rT   rt   s     rF   visit_name_exprz_Hasher.visit_name_expr   sI    afc"" 	3qv 	316;M;Yqv122 qvrH   r"   c                :    dt          |j                  |j        fS )NMember)rU   rN   namert   s     rF   visit_member_exprz_Hasher.visit_member_expr   s    ,qv..77rH   r&   c                `    d|j         t          |j                  t          |j                  fS )NBinary)oprU   rL   rM   rt   s     rF   visit_op_exprz_Hasher.visit_op_expr   s'    !$QV 4 4l176K6KLLrH   r   c                v    t          |j                  }|t          d |j        D                       z  }d|z   S )Nc              3  4   K   | ]}t          |          V  d S rA   rU   rC   s     rF   rG   z0_Hasher.visit_comparison_expr.<locals>.<genexpr>   s(      ::!l1oo::::::rH   )
Comparison)r^   	operatorsrK   ru   r<   rests      rF   visit_comparison_exprz_Hasher.visit_comparison_expr   s?    -21;-?-?::qz::::::%%rH   r7   c                :    d|j         t          |j                  fS )NUnary)r   rU   rN   rt   s     rF   visit_unary_exprz_Hasher.visit_unary_expr   s    |AF3344rH   ListExpr | TupleExpr | SetExprr   strrc   c                    t          d |j        D                       r$t          d |j        D                       }|f|z   S d S )Nc              3  F   K   | ]}t          |          t          k    V  d S rA   rB   r   rD   xs     rF   rG   z#_Hasher.seq_expr.<locals>.<genexpr>   s-      ::Qwqzz[(::::::rH   c              3  4   K   | ]}t          |          V  d S rA   r   r   s     rF   rG   z#_Hasher.seq_expr.<locals>.<genexpr>   s(      0R0RQa0R0R0R0R0R0RrH   allitemsr^   )ru   r<   r   r   s       rF   seq_exprz_Hasher.seq_expr   sR    ::!'::::: 	"+00R0R!'0R0R0R+R+RD7T>!trH   r!   c                .    |                      |d          S )NListr   rt   s     rF   visit_list_exprz_Hasher.visit_list_expr   s    }}Q'''rH   r   c                    t          d |j        D                       r#t          d |j        D                       }d|z   S d S )Nc              3  ~   K   | ]8\  }}|o.t          |          t          |          cxk    o
t          k    nc V  9d S rA   r   rD   abs      rF   rG   z*_Hasher.visit_dict_expr.<locals>.<genexpr>   sS      QQAq<WQZZ71::<<<<<<<<QQQQQQrH   c              3  `   K   | ])\  }}|rt          |          nd t          |          fV  *d S rA   r   r   s      rF   rG   z*_Hasher.visit_dict_expr.<locals>.<genexpr>   sQ       1 1FJaA/a4aA1 1 1 1 1 1rH   )Dictr   r   s      rF   visit_dict_exprz_Hasher.visit_dict_expr   sb    QQQQQQQ 	$+0 1 1NOg1 1 1 , ,D t##trH   r1   c                .    |                      |d          S )Nr   r   rt   s     rF   visit_tuple_exprz_Hasher.visit_tuple_expr   s    }}Q(((rH   r+   c                .    |                      |d          S )NSetr   rt   s     rF   visit_set_exprz_Hasher.visit_set_expr   s    }}Q&&&rH   r   c                    t          |j                  t          k    r)dt          |j                  t          |j                  fS d S )NIndex)rB   rP   r   rU   rQ   rt   s     rF   visit_index_exprz_Hasher.visit_index_expr   s=    17{**\!&11<3H3HIItrH   r   c                *    t          |j                  S rA   )rU   rO   rt   s     rF   visit_assignment_exprz_Hasher.visit_assignment_expr   s    AH%%%rH   r   Nonec                    d S rA   r]   rt   s     rF   visit_call_exprz_Hasher.visit_call_expr       trH   r,   c                    d S rA   r]   rt   s     rF   visit_slice_exprz_Hasher.visit_slice_expr   r   rH   r   c                    d S rA   r]   rt   s     rF   visit_cast_exprz_Hasher.visit_cast_expr   r   rH   r   c                    d S rA   r]   rt   s     rF   visit_assert_type_exprz_Hasher.visit_assert_type_expr   r   rH   r   c                    d S rA   r]   rt   s     rF   visit_conditional_exprz_Hasher.visit_conditional_expr   r   rH   r   c                    d S rA   r]   rt   s     rF   visit_ellipsisz_Hasher.visit_ellipsis   r   rH   r:   c                    d S rA   r]   rt   s     rF   visit_yield_from_exprz_Hasher.visit_yield_from_expr   r   rH   r9   c                    d S rA   r]   rt   s     rF   visit_yield_exprz_Hasher.visit_yield_expr   r   rH   r)   c                    d S rA   r]   rt   s     rF   visit_reveal_exprz_Hasher.visit_reveal_expr   r   rH   r/   c                    d S rA   r]   rt   s     rF   visit_super_exprz_Hasher.visit_super_expr   r   rH   r3   c                    d S rA   r]   rt   s     rF   visit_type_applicationz_Hasher.visit_type_application   r   rH   r   c                    d S rA   r]   rt   s     rF   visit_lambda_exprz_Hasher.visit_lambda_expr  r   rH   r    c                    d S rA   r]   rt   s     rF   visit_list_comprehensionz _Hasher.visit_list_comprehension  r   rH   r*   c                    d S rA   r]   rt   s     rF   visit_set_comprehensionz_Hasher.visit_set_comprehension  r   rH   r   c                    d S rA   r]   rt   s     rF   visit_dictionary_comprehensionz&_Hasher.visit_dictionary_comprehension
  r   rH   r   c                    d S rA   r]   rt   s     rF   visit_generator_exprz_Hasher.visit_generator_expr  r   rH   r5   c                    d S rA   r]   rt   s     rF   visit_type_var_exprz_Hasher.visit_type_var_expr  r   rH   r'   c                    d S rA   r]   rt   s     rF   visit_paramspec_exprz_Hasher.visit_paramspec_expr  r   rH   r6   c                    d S rA   r]   rt   s     rF   visit_type_var_tuple_exprz!_Hasher.visit_type_var_tuple_expr  r   rH   r2   c                    d S rA   r]   rt   s     rF   visit_type_alias_exprz_Hasher.visit_type_alias_expr  r   rH   r#   c                    d S rA   r]   rt   s     rF   visit_namedtuple_exprz_Hasher.visit_namedtuple_expr  r   rH   r   c                    d S rA   r]   rt   s     rF   visit_enum_call_exprz_Hasher.visit_enum_call_expr  r   rH   r4   c                    d S rA   r]   rt   s     rF   visit_typeddict_exprz_Hasher.visit_typeddict_expr"  r   rH   r%   c                    d S rA   r]   rt   s     rF   visit_newtype_exprz_Hasher.visit_newtype_expr%  r   rH   r(   c                    d S rA   r]   rt   s     rF   visit__promote_exprz_Hasher.visit__promote_expr(  r   rH   r   c                    d S rA   r]   rt   s     rF   visit_await_exprz_Hasher.visit_await_expr+  r   rH   r0   c                    d S rA   r]   rt   s     rF   visit_temp_nodez_Hasher.visit_temp_node.  r   rH   N)r<   r   r=   rX   )r<   r.   r=   rX   )r<   r   r=   rX   )r<   r   r=   rX   )r<   r   r=   rX   )r<   r-   r=   rX   )r<   r$   r=   rX   )r<   r"   r=   rX   )r<   r&   r=   rX   )r<   r   r=   rX   )r<   r7   r=   rX   )r<   r   r   r   r=   rc   )r<   r!   r=   rc   )r<   r   r=   rc   )r<   r1   r=   rc   )r<   r+   r=   rc   )r<   r   r=   rc   )r<   r   r=   rc   )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<   r9   r=   r   )r<   r)   r=   r   )r<   r/   r=   r   )r<   r3   r=   r   )r<   r   r=   r   )r<   r    r=   r   )r<   r*   r=   r   )r<   r   r=   r   )r<   r   r=   r   )r<   r5   r=   r   )r<   r'   r=   r   )r<   r6   r=   r   )r<   r2   r=   r   )r<   r#   r=   r   )r<   r   r=   r   )r<   r4   r=   r   )r<   r%   r=   r   )r<   r(   r=   r   )r<   r   r=   r   )r<   r0   r=   r   )0__name__
__module____qualname__rv   ry   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]   rH   rF   rn   rn      s       $ $ $ $$ $ $ $$ $ $ $$ $ $ $$ $ $ $. . . .   8 8 8 8M M M M& & & &
5 5 5 5   ( ( ( (   ) ) ) )' ' ' '   
& & & &                                                                                   rH   rn   r   rf   N)r<   r   r=   r>   )rY   rX   r=   rZ   )r<   r   r=   rc   )rY   rX   r=   rg   )G
__future__r   typingr   r   r   r   r   typing_extensionsr	   rW   
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;   rB   rX   __annotations__rb   rU   rl   rn   rf   r]   rH   rF   <module>r      s2   " " " " " " " 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 52 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2f + * * * * *R   B S/ ! ! ! !: : : :      W W W W W. W W Wt       rH   