o
    Gg8                     @  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   `C:\Users\micha\Documents\internet-seite\env\Lib\site-packages\numpy/typing/tests/test_runtime.pyr	      s   
 r	   r   )	ArrayLike	DTypeLikeNBitBaseNDArrayzname,tup)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   
r3      
   )_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())_nptr6   pytestZxfail
issubclassr
   rA   r   r   r   test_issubclassg   s   
z#TestRuntimeProtocol.test_issubclassN)r<   r=   r>   r?   r   r   )r   r   r   rC   rG   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   rE   numpynpZnumpy.typingr1   Znumpy._typingZ_typingrD   r	   r   __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<     	

