o
    ØÝ2gÐ  ã                   @  sì   d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
mZ ddlmZ edƒZeG dd	„ d	e
ƒƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )z2Classes for representing match statement patterns.é    )Úannotations)ÚTypeVar)Útrait)Ú
ExpressionÚNameExprÚNodeÚRefExpr)ÚPatternVisitorÚTc                   @  s   e Zd ZdZdZd
dd„Zd	S )ÚPatternzA pattern node.© ÚvisitorúPatternVisitor[T]Úreturnr
   c                 C  s   t dt| ƒƒ‚)NzNot implemented)ÚRuntimeErrorÚtype©Úselfr   r   r   úE/home/garg/my-data/venv/lib/python3.10/site-packages/mypy/patterns.pyÚaccept   s   zPattern.acceptN©r   r   r   r
   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r   r   r   r   r      s    r   c                      s>   e Zd ZU dZded< ded< d‡ fdd	„Zddd„Z‡  ZS )Ú	AsPatternzThe pattern <pattern> as <name>úPattern | NoneÚpatternúNameExpr | NoneÚnamer   ÚNonec                   s   t ƒ  ¡  || _|| _d S ©N)ÚsuperÚ__init__r   r    )r   r   r    ©Ú	__class__r   r   r$   $   s   

zAsPattern.__init__r   r   r
   c                 C  ó
   |  | ¡S r"   )Úvisit_as_patternr   r   r   r   r   )   ó   
zAsPattern.accept)r   r   r    r   r   r!   r   ©r   r   r   r   Ú__annotations__r$   r   Ú__classcell__r   r   r%   r   r      s   
 r   c                      ó6   e Zd ZU dZded< d‡ fdd„Zddd„Z‡  ZS )Ú	OrPatternz'The pattern <pattern> | <pattern> | ...úlist[Pattern]Úpatternsr   r!   c                   ó   t ƒ  ¡  || _d S r"   ©r#   r$   r0   ©r   r0   r%   r   r   r$   2   ó   

zOrPattern.__init__r   r   r
   c                 C  r'   r"   )Úvisit_or_patternr   r   r   r   r   6   r)   zOrPattern.accept©r0   r/   r   r!   r   r*   r   r   r%   r   r.   -   ó
   
 r.   c                      r-   )ÚValuePatternzThe pattern x.y (or x.y.z, ...)r   Úexprr   r!   c                   r1   r"   )r#   r$   r9   )r   r9   r%   r   r   r$   ?   r4   zValuePattern.__init__r   r   r
   c                 C  r'   r"   )Úvisit_value_patternr   r   r   r   r   C   r)   zValuePattern.accept)r9   r   r   r!   r   r*   r   r   r%   r   r8   :   r7   r8   c                      ó2   e Zd ZU ded< d‡ fdd„Zdd
d„Z‡  ZS )ÚSingletonPatternúbool | NoneÚvaluer   r!   c                   r1   r"   )r#   r$   r>   )r   r>   r%   r   r   r$   K   r4   zSingletonPattern.__init__r   r   r
   c                 C  r'   r"   )Úvisit_singleton_patternr   r   r   r   r   O   r)   zSingletonPattern.accept)r>   r=   r   r!   r   ©r   r   r   r+   r$   r   r,   r   r   r%   r   r<   G   s   
 r<   c                      r-   )ÚSequencePatternzThe pattern [<pattern>, ...]r/   r0   r   r!   c                   r1   r"   r2   r3   r%   r   r   r$   X   r4   zSequencePattern.__init__r   r   r
   c                 C  r'   r"   )Úvisit_sequence_patternr   r   r   r   r   \   r)   zSequencePattern.acceptr6   r   r*   r   r   r%   r   rA   S   r7   rA   c                      r;   )ÚStarredPatternr   Úcapturer   r!   c                   r1   r"   )r#   r$   rD   )r   rD   r%   r   r   r$   e   r4   zStarredPattern.__init__r   r   r
   c                 C  r'   r"   )Úvisit_starred_patternr   r   r   r   r   i   r)   zStarredPattern.accept)rD   r   r   r!   r   r@   r   r   r%   r   rC   `   s   
 rC   c                      sB   e Zd ZU ded< ded< ded< d‡ fd	d
„Zddd„Z‡  ZS )ÚMappingPatternúlist[Expression]Úkeysr/   Úvaluesr   Úrestr   r!   c                   s4   t ƒ  ¡  t|ƒt|ƒksJ ‚|| _|| _|| _d S r"   )r#   r$   ÚlenrH   rI   rJ   )r   rH   rI   rJ   r%   r   r   r$   r   s
   

zMappingPattern.__init__r   r   r
   c                 C  r'   r"   )Úvisit_mapping_patternr   r   r   r   r   {   r)   zMappingPattern.accept)rH   rG   rI   r/   rJ   r   r   r!   r   r@   r   r   r%   r   rF   m   s   
 	rF   c                      sN   e Zd ZU dZded< ded< ded< ded< d‡ fdd„Zddd„Z‡  ZS )ÚClassPatternzThe pattern Cls(...)r   Ú	class_refr/   Úpositionalsú	list[str]Úkeyword_keysÚkeyword_valuesr   r!   c                   s:   t ƒ  ¡  t|ƒt|ƒksJ ‚|| _|| _|| _|| _d S r"   )r#   r$   rK   rN   rO   rQ   rR   )r   rN   rO   rQ   rR   r%   r   r   r$   ‡   s   

zClassPattern.__init__r   r   r
   c                 C  r'   r"   )Úvisit_class_patternr   r   r   r   r   •   r)   zClassPattern.accept)
rN   r   rO   r/   rQ   rP   rR   r/   r   r!   r   r*   r   r   r%   r   rM      s   
 rM   N)r   Ú
__future__r   Útypingr   Úmypy_extensionsr   Ú
mypy.nodesr   r   r   r   Úmypy.visitorr	   r
   r   r   r.   r8   r<   rA   rC   rF   rM   r   r   r   r   Ú<module>   s"    	