
    X-Ph$                       U d dl mZ d dlmZ d dl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> e?edf         Z@deAd	<   ddZBddZCddZDddZE G d de>ee@                            ZF eF            ZGdeAd<   dS )    )annotations)Iterable)AnyFinalOptional)	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.
_TypeAliasKeyer   return
Key | Nonec                6    |                      t                    S )a  Generate a hashable, (mostly) opaque key for expressions supported by the binder.

    These allow using expressions as dictionary keys based on structural/value
    matching (instead of based on expression identity).

    Return None if the expression type is not supported (it cannot be narrowed).

    See the comment above for more information.

    NOTE: This is not directly related to literal types.
    )accept_hasherr=   s    M/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypy/literals.pyliteral_hashrE   f   s     88G    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 )z*Return the literal kind for an expression.c              3  4   K   | ]}t          |          V  d S N)literal.0os     rD   	<genexpr>zliteral.<locals>.<genexpr>y   s(      22!71::222222rF   )
isinstancer   minoperandsr%   rK   leftrightr!   r6   r,   exprr   targetr   indexr   baser	   r#   noder7   is_finalfinal_valuer
   r   r   r   r-   r   rE   rC   s    rD   rK   rK   u   sq    !^$$ 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 rF   keyIterable[Key]c                    d | D             S )Nc                <    g | ]}t          |t                    |S  )rP   tuple)rM   elts     rD   
<listcomp>zsubkeys.<locals>.<listcomp>   s'    999C*S%"8"89C999rF   r`   r\   s    rD   subkeysre      s    9939999rF   
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   r7      N)lenrP   r7   rd   s    rD   extract_var_from_literal_hashrk      s?    
 3xx1}}Q5ZA-D-D1v4rF   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>   r<   c                    d|j         fS NLiteralvalueselfr=   s     rD   visit_int_exprz_Hasher.visit_int_expr       17##rF   r-   c                    d|j         fS ro   rq   rs   s     rD   visit_str_exprz_Hasher.visit_str_expr   rv   rF   r   c                    d|j         fS ro   rq   rs   s     rD   visit_bytes_exprz_Hasher.visit_bytes_expr   rv   rF   r   c                    d|j         fS ro   rq   rs   s     rD   visit_float_exprz_Hasher.visit_float_expr   rv   rF   r   c                    d|j         fS ro   rq   rs   s     rD   visit_complex_exprz_Hasher.visit_complex_expr   rv   rF   r,   c                .    dt          |j                  fS )NStar)rE   rU   rs   s     rD   visit_star_exprz_Hasher.visit_star_expr   s    QV,,--rF   r#   c                    t          |j        t                    r&|j        j        r|j        j        d|j        j        fS d|j        fS )Nrp   r7   )rP   rY   r7   rZ   r[   rs   s     rD   visit_name_exprz_Hasher.visit_name_expr   sI    afc"" 	3qv 	316;M;Yqv122 qvrF   r!   c                :    dt          |j                  |j        fS )NMember)rE   rU   namers   s     rD   visit_member_exprz_Hasher.visit_member_expr   s    ,qv..77rF   r%   c                `    d|j         t          |j                  t          |j                  fS )NBinary)oprE   rS   rT   rs   s     rD   visit_op_exprz_Hasher.visit_op_expr   s'    !$QV 4 4l176K6KLLrF   r   c                v    t          |j                  }|t          d |j        D                       z  }d|z   S )Nc              3  4   K   | ]}t          |          V  d S rJ   rE   rL   s     rD   rO   z0_Hasher.visit_comparison_expr.<locals>.<genexpr>   s(      ::!l1oo::::::rF   )
Comparison)ra   	operatorsrR   rt   r=   rests      rD   visit_comparison_exprz_Hasher.visit_comparison_expr   s?    -21;-?-?::qz::::::%%rF   r6   c                :    d|j         t          |j                  fS )NUnary)r   rE   rU   rs   s     rD   visit_unary_exprz_Hasher.visit_unary_expr   s    |AF3344rF   ListExpr | TupleExpr | SetExprr   strr?   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 rJ   rK   r   rM   xs     rD   rO   z#_Hasher.seq_expr.<locals>.<genexpr>   s-      ::Qwqzz[(::::::rF   c              3  4   K   | ]}t          |          V  d S rJ   r   r   s     rD   rO   z#_Hasher.seq_expr.<locals>.<genexpr>   s(      0R0RQa0R0R0R0R0R0RrF   allitemsra   )rt   r=   r   r   s       rD   seq_exprz_Hasher.seq_expr   sR    ::!'::::: 	"+00R0R!'0R0R0R+R+RD7T>!trF   r    c                .    |                      |d          S )NListr   rs   s     rD   visit_list_exprz_Hasher.visit_list_expr   s    }}Q'''rF   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 rJ   r   rM   abs      rD   rO   z*_Hasher.visit_dict_expr.<locals>.<genexpr>   sS      QQAq<WQZZ71::<<<<<<<<QQQQQQrF   c              3  `   K   | ])\  }}|rt          |          nd t          |          fV  *d S rJ   r   r   s      rD   rO   z*_Hasher.visit_dict_expr.<locals>.<genexpr>   sQ       1 1FJaA/a4aA1 1 1 1 1 1rF   )Dictr   r   s      rD   visit_dict_exprz_Hasher.visit_dict_expr   sb    QQQQQQQ 	$+0 1 1NOg1 1 1 , ,D t##trF   r0   c                .    |                      |d          S )NTupler   rs   s     rD   visit_tuple_exprz_Hasher.visit_tuple_expr   s    }}Q(((rF   r*   c                .    |                      |d          S )NSetr   rs   s     rD   visit_set_exprz_Hasher.visit_set_expr   s    }}Q&&&rF   r   c                    t          |j                  t          k    r)dt          |j                  t          |j                  fS d S )NIndex)rK   rW   r   rE   rX   rs   s     rD   visit_index_exprz_Hasher.visit_index_expr   s=    17{**\!&11<3H3HIItrF   r   c                *    t          |j                  S rJ   )rE   rV   rs   s     rD   visit_assignment_exprz_Hasher.visit_assignment_expr   s    AH%%%rF   r   Nonec                    d S rJ   r`   rs   s     rD   visit_call_exprz_Hasher.visit_call_expr       trF   r+   c                    d S rJ   r`   rs   s     rD   visit_slice_exprz_Hasher.visit_slice_expr   r   rF   r   c                    d S rJ   r`   rs   s     rD   visit_cast_exprz_Hasher.visit_cast_expr   r   rF   r   c                    d S rJ   r`   rs   s     rD   visit_assert_type_exprz_Hasher.visit_assert_type_expr   r   rF   r   c                    d S rJ   r`   rs   s     rD   visit_conditional_exprz_Hasher.visit_conditional_expr   r   rF   r   c                    d S rJ   r`   rs   s     rD   visit_ellipsisz_Hasher.visit_ellipsis   r   rF   r9   c                    d S rJ   r`   rs   s     rD   visit_yield_from_exprz_Hasher.visit_yield_from_expr   r   rF   r8   c                    d S rJ   r`   rs   s     rD   visit_yield_exprz_Hasher.visit_yield_expr  r   rF   r(   c                    d S rJ   r`   rs   s     rD   visit_reveal_exprz_Hasher.visit_reveal_expr  r   rF   r.   c                    d S rJ   r`   rs   s     rD   visit_super_exprz_Hasher.visit_super_expr	  r   rF   r2   c                    d S rJ   r`   rs   s     rD   visit_type_applicationz_Hasher.visit_type_application  r   rF   r   c                    d S rJ   r`   rs   s     rD   visit_lambda_exprz_Hasher.visit_lambda_expr  r   rF   r   c                    d S rJ   r`   rs   s     rD   visit_list_comprehensionz _Hasher.visit_list_comprehension  r   rF   r)   c                    d S rJ   r`   rs   s     rD   visit_set_comprehensionz_Hasher.visit_set_comprehension  r   rF   r   c                    d S rJ   r`   rs   s     rD   visit_dictionary_comprehensionz&_Hasher.visit_dictionary_comprehension  r   rF   r   c                    d S rJ   r`   rs   s     rD   visit_generator_exprz_Hasher.visit_generator_expr  r   rF   r4   c                    d S rJ   r`   rs   s     rD   visit_type_var_exprz_Hasher.visit_type_var_expr  r   rF   r&   c                    d S rJ   r`   rs   s     rD   visit_paramspec_exprz_Hasher.visit_paramspec_expr!  r   rF   r5   c                    d S rJ   r`   rs   s     rD   visit_type_var_tuple_exprz!_Hasher.visit_type_var_tuple_expr$  r   rF   r1   c                    d S rJ   r`   rs   s     rD   visit_type_alias_exprz_Hasher.visit_type_alias_expr'  r   rF   r"   c                    d S rJ   r`   rs   s     rD   visit_namedtuple_exprz_Hasher.visit_namedtuple_expr*  r   rF   r   c                    d S rJ   r`   rs   s     rD   visit_enum_call_exprz_Hasher.visit_enum_call_expr-  r   rF   r3   c                    d S rJ   r`   rs   s     rD   visit_typeddict_exprz_Hasher.visit_typeddict_expr0  r   rF   r$   c                    d S rJ   r`   rs   s     rD   visit_newtype_exprz_Hasher.visit_newtype_expr3  r   rF   r'   c                    d S rJ   r`   rs   s     rD   visit__promote_exprz_Hasher.visit__promote_expr6  r   rF   r   c                    d S rJ   r`   rs   s     rD   visit_await_exprz_Hasher.visit_await_expr9  r   rF   r/   c                    d S rJ   r`   rs   s     rD   visit_temp_nodez_Hasher.visit_temp_node<  r   rF   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=   r#   r>   r<   )r=   r!   r>   r<   )r=   r%   r>   r<   )r=   r   r>   r<   )r=   r6   r>   r<   )r=   r   r   r   r>   r?   )r=   r    r>   r?   )r=   r   r>   r?   )r=   r0   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=   r9   r>   r   )r=   r8   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=   r   r>   r   )r=   r   r>   r   )r=   r4   r>   r   )r=   r&   r>   r   )r=   r5   r>   r   )r=   r1   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   )0__name__
__module____qualname__ru   rx   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   r   r   r`   rF   rD   rm   rm      s       $ $ $ $$ $ $ $$ $ $ $$ $ $ $$ $ $ $. . . .   8 8 8 8M M M M& & & &
5 5 5 5   ( ( ( (   ) ) ) )' ' ' '   
& & & &                                                                                   rF   rm   r   rB   N)r=   r   r>   r?   )r=   r   r>   rG   )r\   r<   r>   r]   )r\   r<   r>   rf   )H
__future__r   collections.abcr   typingr   r   r   typing_extensionsr   r;   
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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   mypy.visitorr:   ra   r<   __annotations__rE   rK   re   rk   rm   rB   r`   rF   rD   <module>r      s8   " " " " " " " $ $ $ $ $ $ ' ' ' ' ' ' ' ' ' ' 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 S/ ! ! ! !          F: : : :   W W W W W. W W Wt       rF   