o
    Je                     @  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Ze
jjd	e e d
d"ddZ e
jjd	e e d
d"ddZ!e
jjd	e e d
d"ddZ"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   m/home/seandotau/au.memorygallery.club/gallery/lib/python3.10/site-packages/numpy/typing/tests/test_runtime.pyr	      s   
 r	   r   )	ArrayLike	DTypeLikeNBitBaseNDArrayzname,tup)Zidsnamer
   tupreturnNonec                 C  &   |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$      r    c                 C  r   )zTest `typing.get_origin`.N)r   r   r   r   r   r   r   test_get_origin,   r!   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     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s$J dS )zATest `typing.get_type_hints` with string-representation of types.znpt.c                 S  r#   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,   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   
r2      
   )_SupportsDType_SupportsArray_SupportsArrayFunc_NestedSequencez#dict[str, tuple[type[Any], object]]	PROTOCOLSzcls,objc                   @  s    e Zd ZdddZdd	d
ZdS )TestRuntimeProtocolcls	type[Any]objobjectr   r   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 |rJ d S )Nz<Protocols with non-method members don't support issubclass())_nptr5   pytestZxfail
issubclassr
   r@   r   r   r   test_issubclassg   s   
z#TestRuntimeProtocol.test_issubclassN)r;   r<   r=   r>   r   r   )r   r   r   rB   rF   r   r   r   r   r:   a   s    
r:   )r   r
   r   r	   r   r   )r   r   ).__doc__
__future__r   typingr   r   r   r   r   r   rD   numpynpZnumpy.typingr0   Znumpy._typingZ_typingrC   r	   r   __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<     	

