o
    ØÝ2g-"  ã                   @  st  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
d„Z?eedf Z@deAd< ddd„ZBd dd„ZCd!dd„ZDG dd„ de>ee@  ƒZEeEƒ 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                 C  sì   t | tƒrtdd„ | jD ƒƒS t | tƒrtt| jƒt| jƒƒS t | tt	t
fƒr,t| jƒS t | tƒr6t| jƒS t | tƒrIt| jƒtkrGt| jƒS tS t | tƒrbt | jtƒr`| jjr`| jjd ur`tS tS t | tttttfƒrntS t| ƒrttS tS )Nc                 s  ó    | ]}t |ƒV  qd S ©N)Úliteral©Ú.0Úo© rD   úE/home/garg/my-data/venv/lib/python3.10/site-packages/mypy/literals.pyÚ	<genexpr>d   ó   € zliteral.<locals>.<genexpr>)Ú
isinstancer   ÚminÚoperandsr%   r@   ÚleftÚrightr!   r6   r,   Úexprr   Útargetr   Úindexr   Úbaser	   r#   Únoder7   Úis_finalÚfinal_valuer
   r   r   r   r-   r   Úliteral_hash©r;   rD   rD   rE   r@   b   s*   







 r@   .Ú
_TypeAliasÚKeyÚkeyúIterable[Key]c                 C  s   dd„ | D ƒS )Nc                 S  s   g | ]	}t |tƒr|‘qS rD   )rH   Útuple)rB   ÚeltrD   rD   rE   Ú
<listcomp>‡   s    zsubkeys.<locals>.<listcomp>rD   ©rX   rD   rD   rE   Úsubkeys†   ó   r^   ú
Key | Nonec                 C  s
   |   t¡S r?   )ÚacceptÚ_hasherrU   rD   rD   rE   rT   Š   ó   
rT   ú
Var | Nonec                 C  s2   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)ÚlenrH   r7   r]   rD   rD   rE   Úextract_var_from_literal_hashŽ   s   &rh   c                   @  sÎ  e Zd Zddd„Zd‘dd	„Zd’dd„Zd“dd„Zd”dd„Zd•dd„Zd–dd„Z	d—dd„Z
d˜dd„Zd™d d!„Zdšd#d$„Zd›d)d*„Zdœd,d-„Zdd/d0„Zdžd2d3„ZdŸd5d6„Zd d8d9„Zd¡d;d<„Zd¢d?d@„Zd£dBdC„Zd¤dEdF„Zd¥dHdI„Zd¦dKdL„Zd§dNdO„Zd¨dQdR„Zd©dTdU„ZdªdWdX„Zd«dZd[„Zd¬d]d^„Zd­d`da„Z d®dcdd„Z!d¯dfdg„Z"d°didj„Z#d±dldm„Z$d²dodp„Z%d³drds„Z&d´dudv„Z'dµdxdy„Z(d¶d{d|„Z)d·d~d„Z*d¸dd‚„Z+d¹d„d…„Z,dºd‡dˆ„Z-d»dŠd‹„Z.d¼ddŽ„Z/dS )½Ú_Hasherr;   r   r<   rW   c                 C  ó
   d|j fS ©NÚLiteral©Úvalue©Úselfr;   rD   rD   rE   Úvisit_int_expr™   rc   z_Hasher.visit_int_exprr-   c                 C  rj   rk   rm   ro   rD   rD   rE   Úvisit_str_exprœ   rc   z_Hasher.visit_str_exprr   c                 C  rj   rk   rm   ro   rD   rD   rE   Úvisit_bytes_exprŸ   rc   z_Hasher.visit_bytes_exprr   c                 C  rj   rk   rm   ro   rD   rD   rE   Úvisit_float_expr¢   rc   z_Hasher.visit_float_exprr   c                 C  rj   rk   rm   ro   rD   rD   rE   Úvisit_complex_expr¥   rc   z_Hasher.visit_complex_exprr,   c                 C  s   dt |jƒfS )NÚStar)rT   rM   ro   rD   rD   rE   Úvisit_star_expr¨   r_   z_Hasher.visit_star_exprr#   c                 C  s6   t |jtƒr|jjr|jjd urd|jjfS d|jfS )Nrl   r7   )rH   rQ   r7   rR   rS   ro   rD   rD   rE   Úvisit_name_expr«   s    
z_Hasher.visit_name_exprr!   c                 C  s   dt |jƒ|jfS )NÚMember)rT   rM   Únamero   rD   rD   rE   Úvisit_member_expr³   ó   z_Hasher.visit_member_exprr%   c                 C  s   d|j t|jƒt|jƒfS )NÚBinary)ÚoprT   rK   rL   ro   rD   rD   rE   Úvisit_op_expr¶   s   z_Hasher.visit_op_exprr   c                 C  s*   t |jƒ}|t dd„ |jD ƒƒ7 }d| S )Nc                 s  r>   r?   ©rT   rA   rD   rD   rE   rF   »   rG   z0_Hasher.visit_comparison_expr.<locals>.<genexpr>)Ú
Comparison)rZ   Ú	operatorsrJ   ©rp   r;   ÚrestrD   rD   rE   Úvisit_comparison_expr¹   s   
z_Hasher.visit_comparison_exprr6   c                 C  s   d|j t|jƒfS )NÚUnary)r~   rT   rM   ro   rD   rD   rE   Úvisit_unary_expr¾   r|   z_Hasher.visit_unary_exprúListExpr | TupleExpr | SetExprrz   Ústrr`   c                 C  s6   t dd„ |jD ƒƒrtdd„ |jD ƒƒ}|f| S d S )Nc                 s  s    | ]	}t |ƒtkV  qd S r?   ©r@   r   ©rB   ÚxrD   rD   rE   rF   Â   s   € z#_Hasher.seq_expr.<locals>.<genexpr>c                 s  r>   r?   r€   r‹   rD   rD   rE   rF   Ã   rG   ©ÚallÚitemsrZ   )rp   r;   rz   r„   rD   rD   rE   Úseq_exprÁ   s   
z_Hasher.seq_exprr    c                 C  ó   |   |d¡S )NÚList©r   ro   rD   rD   rE   Úvisit_list_exprÇ   ó   z_Hasher.visit_list_exprr   c                 C  s4   t dd„ |jD ƒƒrtdd„ |jD ƒƒ}d| S d S )Nc                 s  s8    | ]\}}|ot |ƒt |ƒ  kotkn  V  qd S r?   rŠ   ©rB   ÚaÚbrD   rD   rE   rF   Ë   s   €6 z*_Hasher.visit_dict_expr.<locals>.<genexpr>c                 s  s,    | ]\}}|rt |ƒnd t |ƒfV  qd S r?   r€   r–   rD   rD   rE   rF   Ì   s   € 
ÿ)ÚDictr   rƒ   rD   rD   rE   Úvisit_dict_exprÊ   s   ÿz_Hasher.visit_dict_exprr0   c                 C  r‘   )Nr   r“   ro   rD   rD   rE   Úvisit_tuple_exprÒ   r•   z_Hasher.visit_tuple_exprr*   c                 C  r‘   )NÚSetr“   ro   rD   rD   rE   Úvisit_set_exprÕ   r•   z_Hasher.visit_set_exprr   c                 C  s(   t |jƒtkrdt|jƒt|jƒfS d S )NÚIndex)r@   rO   r   rT   rP   ro   rD   rD   rE   Úvisit_index_exprØ   s   z_Hasher.visit_index_exprr   c                 C  s
   t |jƒS r?   )rT   rN   ro   rD   rD   rE   Úvisit_assignment_exprÝ   rc   z_Hasher.visit_assignment_exprr   ÚNonec                 C  ó   d S r?   rD   ro   rD   rD   rE   Úvisit_call_exprà   ó   z_Hasher.visit_call_exprr+   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_slice_exprã   r¤   z_Hasher.visit_slice_exprr   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_cast_expræ   r¤   z_Hasher.visit_cast_exprr   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_assert_type_expré   r¤   z_Hasher.visit_assert_type_exprr   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_conditional_exprì   r¤   z_Hasher.visit_conditional_exprr   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_ellipsisï   r¤   z_Hasher.visit_ellipsisr9   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_yield_from_exprò   r¤   z_Hasher.visit_yield_from_exprr8   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_yield_exprõ   r¤   z_Hasher.visit_yield_exprr(   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_reveal_exprø   r¤   z_Hasher.visit_reveal_exprr.   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_super_exprû   r¤   z_Hasher.visit_super_exprr2   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_type_applicationþ   r¤   z_Hasher.visit_type_applicationr   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_lambda_expr  r¤   z_Hasher.visit_lambda_exprr   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_list_comprehension  r¤   z _Hasher.visit_list_comprehensionr)   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_set_comprehension  r¤   z_Hasher.visit_set_comprehensionr   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_dictionary_comprehension
  r¤   z&_Hasher.visit_dictionary_comprehensionr   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_generator_expr  r¤   z_Hasher.visit_generator_exprr4   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_type_var_expr  r¤   z_Hasher.visit_type_var_exprr&   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_paramspec_expr  r¤   z_Hasher.visit_paramspec_exprr5   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_type_var_tuple_expr  r¤   z!_Hasher.visit_type_var_tuple_exprr1   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_type_alias_expr  r¤   z_Hasher.visit_type_alias_exprr"   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_namedtuple_expr  r¤   z_Hasher.visit_namedtuple_exprr   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_enum_call_expr  r¤   z_Hasher.visit_enum_call_exprr3   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_typeddict_expr"  r¤   z_Hasher.visit_typeddict_exprr$   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_newtype_expr%  r¤   z_Hasher.visit_newtype_exprr'   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit__promote_expr(  r¤   z_Hasher.visit__promote_exprr   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_await_expr+  r¤   z_Hasher.visit_await_exprr/   c                 C  r¢   r?   rD   ro   rD   rD   rE   Úvisit_temp_node.  r¤   z_Hasher.visit_temp_nodeN)r;   r   r<   rW   )r;   r-   r<   rW   )r;   r   r<   rW   )r;   r   r<   rW   )r;   r   r<   rW   )r;   r,   r<   rW   )r;   r#   r<   rW   )r;   r!   r<   rW   )r;   r%   r<   rW   )r;   r   r<   rW   )r;   r6   r<   rW   )r;   rˆ   rz   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__rq   rr   rs   rt   ru   rw   rx   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¾   rD   rD   rD   rE   ri   ˜   s\    











































ri   r   rb   N)r;   r   r<   r=   )rX   rW   r<   rY   )r;   r   r<   r`   )rX   rW   r<   rd   )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.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   Úmypy.visitorr:   r@   rW   Ú__annotations__r^   rT   rh   ri   rb   rD   rD   rD   rE   Ú<module>   s    Ì3
)!



 