o
    z¨ÊhË  ã                   @  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   úQ/var/www/html/env/lib/python3.10/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   Ú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__)r0   r   r   r   r   Ú	test_keysR   s   
r4   é   é
   )Ú_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())Ú_nptr7   ÚpytestÚxfailÚ
issubclassr
   rB   r   r   r   Útest_issubclassg   s   
ÿz#TestRuntimeProtocol.test_issubclassN)r=   r>   r?   r@   r   r   )r   r   r   rD   rI   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   rF   ÚnumpyÚnpÚnumpy.typingr2   Únumpy._typingÚ_typingrE   r	   r   Ú__args__ÚndarrayÚ
NDArrayTupr   r   r   r/   ÚmarkÚparametrizeÚitemsr0   r!   r#   r,   r.   r4   r7   Úint64r8   Úaranger9   r:   r;   r   Úvaluesr<   r   r   r   r   Ú<module>   s<     	ü

ü