a
    ³ÐOc/  ã                   @  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r’e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   úV/var/www/html/gsl.tools/lib/python3.9/site-packages/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"J ‚dS )zTest `typing.get_args`.N)r   r   r   ©r   r   r   ÚrefÚoutr   r   r   Útest_get_args(   s    r"   c                 C  s&   |j |j }}t|ƒ}||ks"J ‚dS )zTest `typing.get_origin`.N)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<J ‚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   Útest_get_type_hints8   s    r+   c                 C  sL   d| › �|j  }}dd„ }|ddœ|_t|ƒ}|tdƒdœ}||ksHJ ‚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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_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J ‚t d |ƒrJ ‚d S r$   )Ú
isinstance©Úselfr<   r=   r   r   r   Útest_isinstanceg   s    z#TestRuntimeProtocol.test_isinstancec                 C  s<   |t ju rt d¡ tt|ƒ|ƒs&J ‚ttd ƒ|ƒr8J ‚d S )Nz<Protocols with non-method members don't support issubclass())Ú_nptr5   ÚpytestZxfailÚ
issubclassr
   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._typingÚ_typingrB   r	   Úversion_infor   Ú__args__ZndarrayZ
NDArrayTupr   r   r   r-   ÚmarkZparametrizeÚitemsr.   r"   r#   r+   r,   r2   r5   Úint64r6   Zaranger7   r8   r9   r   Úvaluesr:   r   r   r   r   Ú<module>   s@    	
ü
ü