o
    1ήc7                     @  s  d dl mZ d dlZd dlZd dlmZmZmZ d dlm	Z	m
Z
mZmZmZ d dlZddgZedddZdddZdddZd ddZG dd dZejdkrUeejfZnefZedejddZesgejdkrxeje Zeje	eje f ZdS eejefZeeje	efZdS )!    )annotationsN)	GeneratorIterableIterator)AnyClassVarNoReturnTypeVarTYPE_CHECKING_GenericAliasNDArray_T)boundobjobjectreturnstrc                 C  sJ   | t u rdS t| tr!t| ts!| jdkr| jS | j d| j S t| S )z-Helper function for `_GenericAlias.__repr__`.z...builtins.)Ellipsis
isinstancetype_GENERIC_ALIAS_TYPE
__module____qualname__repr)r    r   C/tmp/pip-target-vg8gfxp4/lib/python/numpy/_typing/_generic_alias.py_to_str   s   
r   argsIterable[Any]Generator[TypeVar, None, None]c                 c  s8    | D ]}t |dr|jE dH  qt|tr|V  qdS )zzSearch for all typevars and typevar-containing objects in `args`.

    Helper function for `_GenericAlias.__init__`.

    __parameters__N)hasattrr"   r   r	   )r   ir   r   r   _parse_parameters"   s   

r%   alias
parametersIterator[TypeVar]c                   s   g }| j D ]4}t|trt }n#t|trt| }nt|dr2t fdd|jD }|| }n|}|	| qt
| }|| jt|| jS )zzRecursively replace all typevars with those from `parameters`.

    Helper function for `_GenericAlias.__getitem__`.

    r"   c                 3  s    | ]}t  V  qd S N)next).0_r'   r   r   	<genexpr><       z%_reconstruct_alias.<locals>.<genexpr>)__args__r   r	   r*   r   _reconstruct_aliasr#   tupler"   appendr   
__origin____unpacked__)r&   r'   r   r$   valueprm_tupclsr   r-   r   r1   /   s   





r1   c                      s  e Zd ZU dZdZedI fddZedJ fdd	ZedK fddZedL fddZ	edMddZ
	dNdOddZedPddZdQd!d"ZdRd&d'ZdSd)d*ZdT fd,d-ZdUd1d2ZdVd4d5ZdWd7d8ZdXd:d;ZdYd=d>ZdZd@dAZeh dBZdCedD< d[ fdGdHZ  ZS )\r   a  A python-based backport of the `types.GenericAlias` class.

    E.g. for ``t = list[int]``, ``t.__origin__`` is ``list`` and
    ``t.__args__`` is ``(int,)``.

    See Also
    --------
    :pep:`585`
        The PEP responsible for introducing `types.GenericAlias`.

    )__weakref___origin_args_parameters_hash_starredr   r   c                      t  dS )Nr:   super__getattribute__self	__class__r   r   r4   \      z_GenericAlias.__origin__tuple[object, ...]c                   r?   )Nr;   r@   rC   rE   r   r   r0   `   rG   z_GenericAlias.__args__tuple[TypeVar, ...]c                   r?   )z'Type variables in the ``GenericAlias``.r<   r@   rC   rE   r   r   r"   d   s   z_GenericAlias.__parameters__boolc                   r?   )Nr>   r@   rC   rE   r   r   r5   i   rG   z_GenericAlias.__unpacked__tuple[object, ...] | Nonec                 C  s   d S r)   r   rC   r   r   r   __typing_unpacked_tuple_args__m   s   z,_GenericAlias.__typing_unpacked_tuple_args__Foriginr   object | tuple[object, ...]starredNonec                 C  s6   || _ t|tr
|n|f| _tt| j| _|| _d S r)   )r:   r   r2   r;   r%   r0   r<   r>   )rD   rM   r   rO   r   r   r   __init__t   s   
z_GenericAlias.__init__	type[Any]c                 C  s   | j S r)   r4   rC   r   r   r   __call__   s   z_GenericAlias.__call__rD   r   ;tuple[type[_T], tuple[type[Any], tuple[object, ...], bool]]c                 C  s   t | }|| j| j| jffS r)   )r   r4   r0   r5   rD   r8   r   r   r   
__reduce__   s   z_GenericAlias.__reduce__basesIterable[object]tuple[type[Any]]c                 C  s   | j fS r)   rS   )rD   rX   r   r   r   __mro_entries__   s   z_GenericAlias.__mro_entries__	list[str]c                 C  s$   t | }tt| j}t|j|B S )zImplement ``dir(self)``.)r   setdirr4   sorted_ATTR_EXCEPTIONS)rD   r8   
dir_originr   r   r   __dir__   s   z_GenericAlias.__dir__intc                   sN   zt  dW S  ty&   t| jt| jA t| jA | _t  d Y S w )zReturn ``hash(self)``.r=   )rA   rB   AttributeErrorhashr4   r0   r5   r=   rC   rE   r   r   __hash__   s   z_GenericAlias.__hash__r   r   r   c                 C     t d)z!Check if an `obj` is an instance.z9isinstance() argument 2 cannot be a parameterized generic	TypeError)rD   r   r   r   r   __instancecheck__      z_GenericAlias.__instancecheck__r8   c                 C  rg   )zCheck if a `cls` is a subclass.z9issubclass() argument 2 cannot be a parameterized genericrh   rV   r   r   r   __subclasscheck__   rk   z_GenericAlias.__subclasscheck__r   c                 C  sB   d dd | jD }t| j}| jrdnd}| | d| dS )zReturn ``repr(self)``.z, c                 s  s    | ]}t |V  qd S r)   )r   )r+   r$   r   r   r   r.      r/   z)_GenericAlias.__repr__.<locals>.<genexpr>* [])joinr0   r   r4   r5   )rD   r   rM   prefixr   r   r   __repr__   s   
z_GenericAlias.__repr__keyc                 C  s   t |tr|n|f}t| jdkrtd|  t|t| jkr(td|  t|t| jk r8td|  t|}t| |S )zReturn ``self[key]``.r   z$There are no type variables left in zToo many arguments for zToo few arguments for )r   r2   lenr"   ri   iterr1   )rD   rt   key_tupkey_iterr   r   r   __getitem__   s   
z_GenericAlias.__getitem__r6   c                 C  s:   t |tstS | j|jko| j|jko| jt|d| jkS )zReturn ``self == value``.r5   )r   r   NotImplementedr4   r0   r5   getattr)rD   r6   r   r   r   __eq__   s   

z_GenericAlias.__eq__Generator[_T, None, None]c                 c  s     t | }|| j| jdV  dS )zReturn ``iter(self)``.TN)r   r4   r0   rV   r   r   r   __iter__   s   z_GenericAlias.__iter__>   r0   __copy__rF   r4   rW   __deepcopy__r5   __reduce_ex__r"   r[   rL   zClassVar[frozenset[str]]r`   namer   c                   s*   t | }||jv rt |S t| j|S )zReturn ``getattr(self, name)``.)r   r`   rA   rB   r{   r4   )rD   r   r8   rE   r   r   rB      s   
z_GenericAlias.__getattribute__)r   r   )r   rH   )r   rI   )r   rJ   )r   rK   )F)rM   r   r   rN   rO   rJ   r   rP   )r   rR   )rD   r   r   rU   )rX   rY   r   rZ   )r   r\   )r   rc   )r   r   r   r   )r8   r   r   r   )r   r   )rD   r   rt   rN   r   r   )r6   r   r   rJ   )rD   r   r   r}   )r   r   r   r   )__name__r   r   __doc__	__slots__propertyr4   r0   r"   r5   rL   rQ   rT   rW   r[   rb   rf   rj   rl   rs   ry   r|   r~   	frozensetr`   __annotations__rB   __classcell__r   r   rE   r   r   F   s:   
 	









)   	   
ScalarTypeT)r   	covariant)r   r   r   r   )r   r    r   r!   )r&   r   r'   r(   r   r   )
__future__r   systypescollections.abcr   r   r   typingr   r   r   r	   r
   numpynp__all__r   r   r%   r1   r   version_infoGenericAliasr   genericr   dtype_DTypendarrayr   r   r   r   r   <module>   s,    


 
$
