U
    (if/                     @  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   R/home/mars/bis/venv/lib/python3.8/site-packages/numpy/typing/tests/test_runtime.pyr	      s   
r	   )   	   r   )	ArrayLike	DTypeLikeNBitBaseNDArrayzname,tup)Z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    
r2      
   )_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())_nptr5   pytestZxfail
issubclassr
   r   r?   r   r   r   test_issubclassk   s    
z#TestRuntimeProtocol.test_issubclassN)r   r   r   rA   rE   r   r   r   r   r:   e   s   r:   )0__doc__
__future__r   systypingr   r   r   r   r   r   rC   numpynpZnumpy.typingr0   Znumpy._typingZ_typingrB   r	   version_infor   __args__ZndarrayZ
NDArrayTupr   r   r   r-   markZparametrizeitemsr.   r"   r#   r+   r,   r2   r5   Zint64r6   Zaranger7   r8   r9   r   valuesr:   r   r   r   r   <module>   s@    	

