
    ni$                       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<m=Z= d dl>m?Z? e@edf         ZAdeBd	<   ddZCddZDddZEddZF G d de?eeA                            ZG eG            ZHdeBd<   dS )    )annotations)Iterable)AnyFinalOptional)	TypeAlias)2
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TypeFormExpr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    J/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/mypy/literals.pyliteral_hashrF   g   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     rE   	<genexpr>zliteral.<locals>.<genexpr>z   s(      22!71::222222rG   )
isinstancer   minoperandsr%   rL   leftrightr!   r7   r,   exprr   targetr   indexr   baser	   r#   noder8   is_finalfinal_valuer
   r   r   r   r-   r   rF   rD   s    rE   rL   rL   v   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 rG   keyIterable[Key]c                    d | D             S )Nc                <    g | ]}t          |t                    |S  )rQ   tuple)rN   elts     rE   
<listcomp>zsubkeys.<locals>.<listcomp>   s'    999C*S%"8"89C999rG   ra   r]   s    rE   subkeysrf      s    9939999rG   
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)lenrQ   r8   re   s    rE   extract_var_from_literal_hashrl      s?    
 3xx1}}Q5ZA-D-D1v4rG   c                  ~   e Zd 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dyd1Zdzd3Zd{d5Zd|d7Zd}d9Zd~d;Zdd=Zdd?ZddA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/ddcZ0ddS )_Hasherr>   r   r?   r=   c                    d|j         fS NLiteralvalueselfr>   s     rE   visit_int_exprz_Hasher.visit_int_expr       17##rG   r-   c                    d|j         fS rp   rr   rt   s     rE   visit_str_exprz_Hasher.visit_str_expr   rw   rG   r   c                    d|j         fS rp   rr   rt   s     rE   visit_bytes_exprz_Hasher.visit_bytes_expr   rw   rG   r   c                    d|j         fS rp   rr   rt   s     rE   visit_float_exprz_Hasher.visit_float_expr   rw   rG   r   c                    d|j         fS rp   rr   rt   s     rE   visit_complex_exprz_Hasher.visit_complex_expr   rw   rG   r,   c                .    dt          |j                  fS )NStar)rF   rV   rt   s     rE   visit_star_exprz_Hasher.visit_star_expr   s    QV,,--rG   r#   c                    t          |j        t                    r&|j        j        r|j        j        d|j        j        fS d|j        fS )Nrq   r8   )rQ   rZ   r8   r[   r\   rt   s     rE   visit_name_exprz_Hasher.visit_name_expr   sI    afc"" 	3qv 	316;M;Yqv122 qvrG   r!   c                :    dt          |j                  |j        fS )NMember)rF   rV   namert   s     rE   visit_member_exprz_Hasher.visit_member_expr   s    ,qv..77rG   r%   c                `    d|j         t          |j                  t          |j                  fS )NBinary)oprF   rT   rU   rt   s     rE   visit_op_exprz_Hasher.visit_op_expr   s'    !$QV 4 4l176K6KLLrG   r   c                v    t          |j                  }|t          d |j        D                       z  }d|z   S )Nc              3  4   K   | ]}t          |          V  d S rK   rF   rM   s     rE   rP   z0_Hasher.visit_comparison_expr.<locals>.<genexpr>   s(      ::!l1oo::::::rG   )
Comparison)rb   	operatorsrS   ru   r>   rests      rE   visit_comparison_exprz_Hasher.visit_comparison_expr   s?    -21;-?-?::qz::::::%%rG   r7   c                :    d|j         t          |j                  fS )NUnary)r   rF   rV   rt   s     rE   visit_unary_exprz_Hasher.visit_unary_expr   s    |AF3344rG   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 rK   rL   r   rN   xs     rE   rP   z#_Hasher.seq_expr.<locals>.<genexpr>   s-      ::Qwqzz[(::::::rG   c              3  4   K   | ]}t          |          V  d S rK   r   r   s     rE   rP   z#_Hasher.seq_expr.<locals>.<genexpr>   s(      0R0RQa0R0R0R0R0R0RrG   allitemsrb   )ru   r>   r   r   s       rE   seq_exprz_Hasher.seq_expr   sR    ::!'::::: 	"+00R0R!'0R0R0R+R+RD7T>!trG   r    c                .    |                      |d          S )NListr   rt   s     rE   visit_list_exprz_Hasher.visit_list_expr   s    }}Q'''rG   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 rK   r   rN   abs      rE   rP   z*_Hasher.visit_dict_expr.<locals>.<genexpr>   sS      QQAq<WQZZ71::<<<<<<<<QQQQQQrG   c              3  `   K   | ])\  }}|rt          |          nd t          |          fV  *d S rK   r   r   s      rE   rP   z*_Hasher.visit_dict_expr.<locals>.<genexpr>   sQ       1 1FJaA/a4aA1 1 1 1 1 1rG   )Dictr   r   s      rE   visit_dict_exprz_Hasher.visit_dict_expr   sb    QQQQQQQ 	$+0 1 1NOg1 1 1 , ,D t##trG   r0   c                .    |                      |d          S )NTupler   rt   s     rE   visit_tuple_exprz_Hasher.visit_tuple_expr   s    }}Q(((rG   r*   c                .    |                      |d          S )NSetr   rt   s     rE   visit_set_exprz_Hasher.visit_set_expr   s    }}Q&&&rG   r   c                    t          |j                  t          k    r)dt          |j                  t          |j                  fS d S )NIndex)rL   rX   r   rF   rY   rt   s     rE   visit_index_exprz_Hasher.visit_index_expr   s=    17{**\!&11<3H3HIItrG   r   c                *    t          |j                  S rK   )rF   rW   rt   s     rE   visit_assignment_exprz_Hasher.visit_assignment_expr   s    AH%%%rG   r   Nonec                    d S rK   ra   rt   s     rE   visit_call_exprz_Hasher.visit_call_expr       trG   r+   c                    d S rK   ra   rt   s     rE   visit_slice_exprz_Hasher.visit_slice_expr   r   rG   r   c                    d S rK   ra   rt   s     rE   visit_cast_exprz_Hasher.visit_cast_expr   r   rG   r4   c                    d S rK   ra   rt   s     rE   visit_type_form_exprz_Hasher.visit_type_form_expr   r   rG   r   c                    d S rK   ra   rt   s     rE   visit_assert_type_exprz_Hasher.visit_assert_type_expr   r   rG   r   c                    d S rK   ra   rt   s     rE   visit_conditional_exprz_Hasher.visit_conditional_expr   r   rG   r   c                    d S rK   ra   rt   s     rE   visit_ellipsisz_Hasher.visit_ellipsis  r   rG   r:   c                    d S rK   ra   rt   s     rE   visit_yield_from_exprz_Hasher.visit_yield_from_expr  r   rG   r9   c                    d S rK   ra   rt   s     rE   visit_yield_exprz_Hasher.visit_yield_expr  r   rG   r(   c                    d S rK   ra   rt   s     rE   visit_reveal_exprz_Hasher.visit_reveal_expr
  r   rG   r.   c                    d S rK   ra   rt   s     rE   visit_super_exprz_Hasher.visit_super_expr  r   rG   r2   c                    d S rK   ra   rt   s     rE   visit_type_applicationz_Hasher.visit_type_application  r   rG   r   c                    d S rK   ra   rt   s     rE   visit_lambda_exprz_Hasher.visit_lambda_expr  r   rG   r   c                    d S rK   ra   rt   s     rE   visit_list_comprehensionz _Hasher.visit_list_comprehension  r   rG   r)   c                    d S rK   ra   rt   s     rE   visit_set_comprehensionz_Hasher.visit_set_comprehension  r   rG   r   c                    d S rK   ra   rt   s     rE   visit_dictionary_comprehensionz&_Hasher.visit_dictionary_comprehension  r   rG   r   c                    d S rK   ra   rt   s     rE   visit_generator_exprz_Hasher.visit_generator_expr  r   rG   r5   c                    d S rK   ra   rt   s     rE   visit_type_var_exprz_Hasher.visit_type_var_expr"  r   rG   r&   c                    d S rK   ra   rt   s     rE   visit_paramspec_exprz_Hasher.visit_paramspec_expr%  r   rG   r6   c                    d S rK   ra   rt   s     rE   visit_type_var_tuple_exprz!_Hasher.visit_type_var_tuple_expr(  r   rG   r1   c                    d S rK   ra   rt   s     rE   visit_type_alias_exprz_Hasher.visit_type_alias_expr+  r   rG   r"   c                    d S rK   ra   rt   s     rE   visit_namedtuple_exprz_Hasher.visit_namedtuple_expr.  r   rG   r   c                    d S rK   ra   rt   s     rE   visit_enum_call_exprz_Hasher.visit_enum_call_expr1  r   rG   r3   c                    d S rK   ra   rt   s     rE   visit_typeddict_exprz_Hasher.visit_typeddict_expr4  r   rG   r$   c                    d S rK   ra   rt   s     rE   visit_newtype_exprz_Hasher.visit_newtype_expr7  r   rG   r'   c                    d S rK   ra   rt   s     rE   visit__promote_exprz_Hasher.visit__promote_expr:  r   rG   r   c                    d S rK   ra   rt   s     rE   visit_await_exprz_Hasher.visit_await_expr=  r   rG   r/   c                    d S rK   ra   rt   s     rE   visit_temp_nodez_Hasher.visit_temp_node@  r   rG   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>   r7   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>   r4   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>   r2   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>   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   )1__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   ra   rG   rE   rn   rn      s       $ $ $ $$ $ $ $$ $ $ $$ $ $ $$ $ $ $. . . .   8 8 8 8M M M M& & & &
5 5 5 5   ( ( ( (   ) ) ) )' ' ' '   
& & & &                                                                                      rG   rn   r   rC   N)r>   r   r?   r@   )r>   r   r?   rH   )r]   r=   r?   r^   )r]   r=   r?   rg   )I
__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   r:   mypy.visitorr;   rb   r=   __annotations__rF   rL   rf   rl   rn   rC   ra   rG   rE   <module>r      sB   " " " " " " " $ $ $ $ $ $ ' ' ' ' ' ' ' ' ' ' 5 5 5 5 5 53 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3h + * * * * *R S/ ! ! ! !          F: : : :   Z Z Z Z Z. Z Z Zz       rG   