a
    Lf                     @  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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`.    )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   X/var/www/ai-form-bot/venv/lib/python3.9/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"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_origin,   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_hints4   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$   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)   )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    
r/      
   )_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selfr9   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 |r8J d S )Nz<Protocols with non-method members don't support issubclass())_nptr2   pytestZxfail
issubclassr
   r<   r   r   r   test_issubclassg   s    
z#TestRuntimeProtocol.test_issubclassN)r   r   r   r>   rB   r   r   r   r   r7   a   s   r7   ).__doc__
__future__r   typingr   r   r   r   r   r   r@   numpynpZnumpy.typingr-   Znumpy._typingZ_typingr?   r	   r   __args__ZndarrayZ
NDArrayTupr   r   r   r*   markZparametrizeitemsr+   r   r    r(   r)   r/   r2   Zint64r3   Zaranger4   r5   r6   r   valuesr7   r   r   r   r   <module>   s:    	
