
    Dg                       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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                            d	e                                e                                
          dd            Ze
j                            d	e                                e                                
          dd            Z e
j                            d	e                                e                                
          dd            Z!e
j                            d	e                                e                                
          dd            Z"ddZ#ej$         ej%        d          fej&         ej'        d          fej(         ej'        d          fej)        dgfdZ*de+d<   e
j                            de*,                                e*                                
           G d d                      Z-dS )z)Test the runtime usage of `numpy.typing`.    )annotations)get_type_hintsUnion
NamedTupleget_args
get_originAnyNc                  .    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__     T/var/www/sysmax/venv/lib/python3.11/site-packages/numpy/typing/tests/test_runtime.pyr   r      s3         IIIr   r   r   )	ArrayLike	DTypeLikeNBitBaseNDArrayzname,tup)idsnamer   tupreturnNonec                P    |j         |j        }}t          |          }||k    sJ dS )zTest `typing.get_args`.N)r   r   r   r   r   r   refouts        r   test_get_argsr$   $   s-     wC
3--C#::::::r   c                P    |j         |j        }}t          |          }||k    sJ dS )zTest `typing.get_origin`.N)r   r   r   r!   s        r   test_get_originr&   ,   s-     w
C
S//C#::::::r   c                    |j         }d }|dd|_        t          |          }|t          d          d}||k    sJ dS )zTest `typing.get_type_hints`.c                    d S Nr   as    r   funcz!test_get_type_hints.<locals>.func;         r   Nr+   r   r   r   r   r   )r   r   r   r,   r#   r"   s         r   test_get_type_hintsr0   4   sW     'C !$55D


CtDzz
*
*C#::::::r   c                    d|  |j         }}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                    d S r)   r   r*   s    r   r,   z%test_get_type_hints_str.<locals>.funcJ   r-   r   Nr.   r/   )r   r   typ_strr   r,   r#   r"   s          r   test_get_type_hints_strr4   C   sa     !$==#'SG !(D99D


CtDzz
*
*C#::::::r   c                 z    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__)r7   r"   s     r   	test_keysr;   R   s/    ::<<D
ck

C3;;;;;;r      
   )_SupportsDType_SupportsArray_SupportsArrayFunc_NestedSequencez#dict[str, tuple[type[Any], object]]	PROTOCOLSzcls,objc                      e Zd Zd
dZd
dZd	S )TestRuntimeProtocolcls	type[Any]objobjectr   r   c                N    t          ||          sJ t          d |          rJ d S r)   )
isinstanceselfrE   rG   s      r   test_isinstancez#TestRuntimeProtocol.test_isinstancec   s4    #s#####dC(((((((r   c                    |t           j        u rt          j        d           t	          t          |          |          sJ t	          t          d           |          rJ d S )Nz<Protocols with non-method members don't support issubclass())_nptr>   pytestxfail
issubclassr   rK   s      r   test_issubclassz#TestRuntimeProtocol.test_issubclassg   sg    $%%%LN   $s))S)))))d4jj#.......r   N)rE   rF   rG   rH   r   r   )r   r   r   rM   rS   r   r   r   rD   rD   a   s<        ) ) ) )/ / / / / /r   rD   )r   r   r   r   r   r   )r   r   ).__doc__
__future__r   typingr   r   r   r   r   r	   rP   numpynpnumpy.typingr9   numpy._typing_typingrO   r   r   __args__ndarray
NDArrayTupr   r   r   r6   markparametrizeitemsr7   r$   r&   r0   r4   r;   r>   int64r?   aranger@   rA   rB   r   valuesrD   r   r   r   <module>re      sZ   / / / " " " " " "                                    j    WS[#+"6
CC
 (>FF(>FFb$//		 	 U[[]]

EE   FE U[[]]

EE   FE U[[]]

EE   FE U[[]]

EE   FE    *HBHQKK8*IBIbMM:2IBIbMMB,qc2	2 2	     I$4$4$6$6INN<L<LMM/ / / / / / / NM/ / /r   