B
    F0d                 @  sH  d dl mZ d dlZd dl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 d dlZddgZedddZdd	d
ddZdddddZddddddZG dd dZejdkreejfZnefZedejddZerejeeje f Z nNejdkr&eejefZ!eejee!fZ neejefZ!eejee!fZ dS )    )annotationsN)AnyClassVar	FrozenSet	GeneratorIterableIteratorListNoReturnTupleTypeTypeVarTYPE_CHECKING_GenericAliasNDArray_T)boundobjectstr)objreturnc             C  sP   | t krdS t| trDt| tsD| jdkr0| jS | j d| j S nt| S dS )z-Helper function for `_GenericAlias.__repr__`.z...builtins.N)Ellipsis
isinstancetype_GENERIC_ALIAS_TYPE
__module____qualname__repr)r    r    M/var/www/html/venv/lib/python3.7/site-packages/numpy/typing/_generic_alias.py_to_str   s    
r"   zIterable[Any]zGenerator[TypeVar, None, None])argsr   c             c  s:   x4| D ],}t |dr"|jE dH  qt|tr|V  qW 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'   zIterator[TypeVar])alias
parametersr   c               s   g }xr| j D ]h}t|tr$t }nFt|tr:t| }n0t|drft fdd|jD }|| }n|}|	| qW t
| }|| jt|S )z{Recursivelly 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>B   s    z%_reconstruct_alias.<locals>.<genexpr>)__args__r   r   r*   r   _reconstruct_aliasr%   tupler$   appendr   
__origin__)r(   r)   r#   r&   valueZprm_tupclsr    )r)   r!   r/   5   s    




r/   c            	      sD  e Zd ZU dZdZedd fddZedd fdd	Zed
d fddZddddddZ	eddddZ
dddddZdddddZdddd Zd!d fd"d#Zd$d%d&d'd(Zdd%d)d*d+Zd,dd-d.Zdddd/d0d1Zd$d2d3d4d5Zed6d7d8d9d:d;d<d=hZd>ed?< d,dd@ fdAdBZ  ZS )Cr   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_hashr   )r   c               s   t  dS )Nr6   )super__getattribute__)self)	__class__r    r!   r2   [   s    z_GenericAlias.__origin__zTuple[Any, ...]c               s   t  dS )Nr7   )r:   r;   )r<   )r=   r    r!   r.   _   s    z_GenericAlias.__args__zTuple[TypeVar, ...]c               s   t  dS )z'Type variables in the ``GenericAlias``.r8   )r:   r;   )r<   )r=   r    r!   r$   c   s    z_GenericAlias.__parameters__r   None)originr#   r   c             C  s.   || _ t|tr|n|f| _tt|| _d S )N)r6   r   r0   r7   r'   r8   )r<   r?   r#   r    r    r!   __init__h   s    z_GenericAlias.__init__c             C  s   | j S )N)r2   )r<   r    r    r!   __call__m   s    z_GenericAlias.__call__r   z-Tuple[Type[_T], Tuple[type, Tuple[Any, ...]]])r<   r   c             C  s   t | }|| j| jffS )N)r   r2   r.   )r<   r4   r    r    r!   
__reduce__q   s    z_GenericAlias.__reduce__zIterable[object]zTuple[type])basesr   c             C  s   | j fS )N)r2   )r<   rC   r    r    r!   __mro_entries__u   s    z_GenericAlias.__mro_entries__z	List[str]c             C  s$   t | }tt| j}t|j|B S )zImplement ``dir(self)``.)r   setdirr2   sorted_ATTR_EXCEPTIONS)r<   r4   Z
dir_originr    r    r!   __dir__x   s    z_GenericAlias.__dir__intc               sD   yt  dS  tk
r>   t| jt| jA | _t  dS X dS )zReturn ``hash(self)``.r9   N)r:   r;   AttributeErrorhashr2   r.   r9   )r<   )r=   r    r!   __hash__~   s
    z_GenericAlias.__hash__r   r
   )r   r   c             C  s   t ddS )z!Check if an `obj` is an instance.z9isinstance() argument 2 cannot be a parameterized genericN)	TypeError)r<   r   r    r    r!   __instancecheck__   s    z_GenericAlias.__instancecheck__)r4   r   c             C  s   t ddS )zCheck if a `cls` is a subclass.z9issubclass() argument 2 cannot be a parameterized genericN)rN   )r<   r4   r    r    r!   __subclasscheck__   s    z_GenericAlias.__subclasscheck__r   c             C  s0   d dd | jD }t| j}| d| dS )zReturn ``repr(self)``.z, c             s  s   | ]}t |V  qd S )N)r"   )r+   r&   r    r    r!   r-      s    z)_GenericAlias.__repr__.<locals>.<genexpr>[])joinr.   r"   r2   )r<   r#   r?   r    r    r!   __repr__   s    
z_GenericAlias.__repr__)r<   keyr   c             C  s   t |tr|n|f}t| jdkr2td|  nBt|t| jkrTtd|  n t|t| jk rtt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   r0   lenr$   rN   iterr/   )r<   rU   Zkey_tupZkey_iterr    r    r!   __getitem__   s    z_GenericAlias.__getitem__bool)r3   r   c             C  s&   t |tstS | j|jko$| j|jkS )zReturn ``self == value``.)r   r   NotImplementedr2   r.   )r<   r3   r    r    r!   __eq__   s    
z_GenericAlias.__eq__r2   r.   r$   rD   rB   __reduce_ex____copy____deepcopy__zClassVar[FrozenSet[str]]rH   )namer   c               s*   t | }||jkrt |S t| j|S )zReturn ``getattr(self, name)``.)r   rH   r:   r;   getattrr2   )r<   r_   r4   )r=   r    r!   r;      s    
z_GenericAlias.__getattribute__)__name__r   r   __doc__	__slots__propertyr2   r.   r$   r@   rA   rB   rD   rI   rM   rO   rP   rT   rX   r[   	frozensetrH   __annotations__r;   __classcell__r    r    )r=   r!   r   L   s4   
		)   	   
ScalarTypeT)r   	covariant)"
__future__r   systypestypingr   r   r   r   r   r   r	   r
   r   r   r   r   numpynp__all__r   r"   r'   r/   r   version_infoGenericAliasr   Zgenericrj   ZndarrayZdtyper   Z_DTyper    r    r    r!   <module>   s*   8x
