U
    c/                     @  s   U d Z ddlmZ ddl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jdkreejejjejZneejdd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`.    )annotationsN)get_type_hintsUnion
NamedTupleget_args
get_originAnyc                   @  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   C/tmp/pip-unpacked-wheel-1pi10zg0/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"tdS )zTest `typing.get_args`.N)r   r   r   AssertionErrorr   r   r   refoutr   r   r   test_get_args(   s    r#   c                 C  s&   |j |j }}t|}||ks"tdS )zTest `typing.get_origin`.N)r   r   r   r   r    r   r   r   test_get_origin0   s    r$   c                 C  s@   |j }dd }|dd|_t|}|tdd}||ks<t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   r   test_get_type_hints8   s    r,   c                 C  sL   d|  |j  }}dd }|dd|_t|}|tdd}||ksHt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(   N   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_strG   s    r-   )r   c                  C  s"   t  } ttj}| |kstdS )zCTest that ``TYPES.keys()`` and ``numpy.typing.__all__`` are synced.N)TYPESkeyssetnpt__all__r   )r/   r!   r   r   r   	test_keysV   s    
r3      
   )_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tt d |rtd S r%   )
isinstancer   selfr=   r>   r   r   r   test_isinstanceg   s    z#TestRuntimeProtocol.test_isinstancec                 C  s<   |t jkrtd tt||s&tttd |r8td S )Nz<Protocols with non-method members don't support issubclass())_nptr6   pytestZxfail
issubclassr
   r   r@   r   r   r   test_issubclassk   s    
z#TestRuntimeProtocol.test_issubclassN)r   r   r   rB   rF   r   r   r   r   r;   e   s   r;   )0__doc__
__future__r   systypingr   r   r   r   r   r   rD   ZnumpynpZnumpy.typingr1   Znumpy._typing_typingrC   r	   version_infor   __args__ZndarrayZ
NDArrayTupr   r   r   r.   markZparametrizeitemsr/   r#   r$   r,   r-   r3   r6   Zint64r7   Zaranger8   r9   r:   r   valuesr;   r   r   r   r   <module>   s@    	

