a
    ;e                     @  s  U d Z ddlmZ ddlmZmZmZmZmZm	Z	 ddl
Z
ddlZddlmZ ddlmZ G dd deZeejejjejZeejejjeeejejjeeejddedZe
jjd	e e d
ddddddZe
jjd	e e d
ddddddZ e
jjd	e e d
ddddddZ!e
jjd	e e d
ddddddZ"ddddZ#ej$e%dfej&e'dfej(e'dfej)dgfdZ*de+d< e
jjde*, e* d
G dd  d Z-dS )!z)Test the runtime usage of `numpy.typing`.    )annotations)get_type_hintsUnion
NamedTupleget_args
get_originAnyNc                   @  s&   e Zd ZU ded< ded< ded< dS )TypeTuptypetypztuple[type, ...]argszNone | typeoriginN)__name__
__module____qualname____annotations__ r   r   S/var/www/sunrise/env/lib/python3.9/site-packages/numpy/typing/tests/test_runtime.pyr	      s   
r	   r   )	ArrayLike	DTypeLikeNBitBaseNDArrayzname,tup)idsr
   None)nametupreturnc                 C  s&   |j |j }}t|}||ks"J dS )zTest `typing.get_args`.N)r   r   r   r   r   r   refoutr   r   r   test_get_args$   s    r    c                 C  s&   |j |j }}t|}||ks"J dS )zTest `typing.get_origin`.N)r   r   r   r   r   r   r   test_get_origin,   s    r!   c                 C  s@   |j }dd }|dd|_t|}|tdd}||ks<J dS )zTest `typing.get_type_hints`.c                 S  s   d S Nr   ar   r   r   func;       z!test_get_type_hints.<locals>.funcNr$   r   r   r   r   r
   )r   r   r   r%   r   r   r   r   r   test_get_type_hints4   s    r)   c                 C  sL   d|  |j  }}dd }|dd|_t|}|tdd}||ksHJ dS )zATest `typing.get_type_hints` with string-representation of types.znpt.c                 S  s   d S r"   r   r#   r   r   r   r%   J   r&   z%test_get_type_hints_str.<locals>.funcNr'   r(   )r   r   Ztyp_strr   r%   r   r   r   r   r   test_get_type_hints_strC   s    r*   )r   c                  C  s"   t  } ttj}| |ksJ dS )zCTest that ``TYPES.keys()`` and ``numpy.typing.__all__`` are synced.N)TYPESkeyssetnpt__all__)r,   r   r   r   r   	test_keysR   s    
r0      
   )_SupportsDType_SupportsArray_SupportsArrayFunc_NestedSequencez#dict[str, tuple[type[Any], object]]	PROTOCOLSzcls,objc                   @  s0   e Zd ZddddddZddddddZd	S )
TestRuntimeProtocolz	type[Any]objectr   )clsobjr   c                 C  s    t ||sJ t d |rJ d S r"   )
isinstanceselfr:   r;   r   r   r   test_isinstancec   s    z#TestRuntimeProtocol.test_isinstancec                 C  s<   |t ju rtd tt||s&J ttd |r8J d S )Nz<Protocols with non-method members don't support issubclass())_nptr3   pytestZxfail
issubclassr
   r=   r   r   r   test_issubclassg   s    
z#TestRuntimeProtocol.test_issubclassN)r   r   r   r?   rC   r   r   r   r   r8   a   s   r8   ).__doc__
__future__r   typingr   r   r   r   r   r   rA   numpynpZnumpy.typingr.   Znumpy._typing_typingr@   r	   r   __args__ZndarrayZ
NDArrayTupr   r   r   r+   markZparametrizeitemsr,   r    r!   r)   r*   r0   r3   int64r4   Zaranger5   r6   r7   r   valuesr8   r   r   r   r   <module>   s:    	
