U
    #c~                     @   s   d Z ddlmZmZ ddlZddlmZ ddlZddlm	Z	 ddl
mZ ddlmZmZmZ dd	 ZdddZdd ZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZdS ) z
Tests for array coercion, mainly through testing `np.array` results directly.
Note that other such tests exist e.g. in `test_api.py` and many corner-cases
are tested (sometimes indirectly) elsewhere.
    )permutationsproductN)param)rational)_discover_array_parameters)assert_array_equalassert_warnsIS_PYPYc                  #   s   dd } t | ddV  G dd dtj  fdd}|V  G d	d
 d
}G dd d|}t |ddV  t tddV  G dd d|}t |ddV  G dd d|}t |ddV  dS )z
    Generator for functions converting an array into various array-likes.
    If full is True (default) includes array-likes not capable of handling
    all dtypes
    c                 S   s   | S N ar   r   H/tmp/pip-unpacked-wheel-b2rbor69/numpy/core/tests/test_array_coercion.pyndarray   s    zarraylikes.<locals>.ndarrayr   idc                   @   s   e Zd ZdS )zarraylikes.<locals>.MyArrN__name__
__module____qualname__r   r   r   r   MyArr!   s   r   c                    s
   |   S r
   )viewr   r   r   r   subclass$   s    zarraylikes.<locals>.subclassc                   @   s   e Zd Zdd Zdd ZdS )z!arraylikes.<locals>._SequenceLikec                 S   s   t d S r
   	TypeErrorselfr   r   r   __len__-   s    z)arraylikes.<locals>._SequenceLike.__len__c                 S   s   t d S r
   r   r   r   r   r   __getitem__0   s    z-arraylikes.<locals>._SequenceLike.__getitem__Nr   r   r   r   r   r   r   r   r   _SequenceLike)   s   r!   c                   @   s   e Zd Zdd ZdddZdS )zarraylikes.<locals>.ArrayDunderc                 S   s
   || _ d S r
   r   r   r   r   r   r   __init__5   s    z(arraylikes.<locals>.ArrayDunder.__init__Nc                 S   s   | j S r
   r   )r   dtyper   r   r   	__array__8   s    z)arraylikes.<locals>.ArrayDunder.__array__)N)r   r   r   r#   r%   r   r   r   r   ArrayDunder4   s   r&   r%   
memoryviewc                   @   s   e Zd Zdd ZdS )z"arraylikes.<locals>.ArrayInterfacec                 S   s   || _ |j| _d S r
   )r   __array_interface__r"   r   r   r   r#   B   s    z+arraylikes.<locals>.ArrayInterface.__init__Nr   r   r   r#   r   r   r   r   ArrayInterfaceA   s   r*   r(   c                   @   s   e Zd Zdd ZdS )zarraylikes.<locals>.ArrayStructc                 S   s   || _ |j| _d S r
   )r   __array_struct__r"   r   r   r   r#   J   s    z(arraylikes.<locals>.ArrayStruct.__init__Nr)   r   r   r   r   ArrayStructI   s   r,   r+   N)r   npr   r'   )r   r   r!   r&   r*   r,   r   r   r   
arraylikes   s    r.   Tc                 c   sp  t ttdddV  t ttdddV  t ttdddV  |rlt ttdddV  t ttdddV  t ttdd	dV  |rt tt	dd
dV  t t
dddV  t tdddV  t tdddV  t tdddV  t tdddV  t tdddV  t tdddV  t tdddV  |rxt tddddV  tdgdd }t|tjst|jtdkstt |ddV  | r0t tdddV  t tddddV  t tddddV  t tdd dV  t td!d"d#dV  t td$d%dV  t td&d'dV  t td(d)dV  d S )*N   float16r   float32float64
longdoubley       @      @	complex64
complex128Zclongdouble   int8int16int32int64uint8uint16uint32uint64   r   )r?      zi,ir   
structuredtimedelta64[generic]   stimedelta64[s]NaTtimedelta64[s](NaT)datetime64[generic](NaT)z2020-06-07 12:43mszdatetime64[ms]s   1234bytesZ2345unicodes   4321Zunstructured_void)r   r-   sqrtr0   r1   r2   r3   r4   r5   Zlongcomplexr7   r8   r9   r:   r;   r<   r=   r>   r   array
isinstancevoidAssertionErrorr$   timedelta64
datetime64Zbytes_Zunicode_)timesZextended_precisionZ
user_dtyperA   r   r   r   scalar_instancesQ   s@    rT   c                 C   s6   | j dkrdS t| jtjtjfr2| jdr2dS dS )zlReturns True if the dtype is a parametric legacy dtype (itemsize
    is 0, or a datetime without units)
    r   TZ64F)itemsize
issubclasstyper-   rR   rQ   nameendswithr$   r   r   r   is_parametric_dtype   s    
r[   c                   @   s   e Zd Zejjde ddd ddgddd	d
dgddd Zejjde ddd ddgddd	d
dgddd Zejde	 dd Z
dS )TestStringDiscoveryobj333333?
   +   Nstringobjectz1.2z10**43None)idsc                 C   s   t t|}td| }tj|ddj|ks4ttj|gddj|ksNttj|dd}tj|ddj|kstt|dj|kstd S )NSrZ   O)lenstrr-   r$   rM   rP   astyper   r]   lengthexpectedarrr   r   r   test_basic_stringlength   s    z+TestStringDiscovery.test_basic_stringlengthc                 C   sJ   t t|}td| }tj|dd}tj||gddj|ksFtd S )Nre   rf   rZ   )rg   rh   r-   r$   rM   rP   rj   r   r   r   test_nested_arrays_stringlength   s    z3TestStringDiscovery.test_nested_arrays_stringlength	arraylikec                 C   sr   t d g}t d|d< tt|d }t d| }||}t j|gdd}|jdks`t|j|ksntd S )Nr^   r   re   rZ   r?   r?   )r-   rM   rg   rh   r$   shaperP   )r   rp   r]   rk   rl   rm   r   r   r   test_unpack_first_level   s    z+TestStringDiscovery.test_unpack_first_level)r   r   r   pytestmarkparametrizerb   rn   ro   r.   rs   r   r   r   r   r\      s   

r\   c                   @   s6  e Zd Zdd Zdd Zdd Zdd Zej	d	e
 d
d Zejddd Zej	d	e
 dd Zejjeddejdej	de
 dd Zej	dddddd gdd Zej	dejd d d! Zej	d"ejd# ej	d	d$geejefed%ejd& efgd'd( Zd)S )*TestScalarDiscoveryc                 C   s>   t jddd}|jdkstt jdgdd}|jdks:td S )N)r?   r6   r@   zi,i,irZ   r   r?   )r-   rM   rr   rP   r   rm   r   r   r   test_void_special_case   s    z*TestScalarDiscovery.test_void_special_casec                 C   s^   t jddd}|jdkst|jjdks,tt jdgdd}|jdksJt|jjdksZtd S )Nra   crZ      )r?   r}   )r-   rM   rr   rP   r$   charry   r   r   r   test_char_special_case   s    z*TestScalarDiscovery.test_char_special_casec              	   C   st   dg}t tjd D ]
}|g}qtj|dd}|jdtjd  d ksJttt tj|gdd W 5 Q R X d S )Nra   r6   r{   rZ   rx   r?   r|   )	ranger-   MAXDIMSrM   rr   rP   rt   raises
ValueError)r   nestedirm   r   r   r   test_char_special_case_deep   s    z/TestScalarDiscovery.test_char_special_case_deepc                 C   s2   t t }|jdkst|jt dks.td S )Nr   rf   )r-   rM   rb   rr   rP   r$   ry   r   r   r   test_unknown_object   s    z'TestScalarDiscovery.test_unknown_objectscalarc                 C   sZ   t |}|jdkst|j|jks(tt ||gg}|jdksFt|j|jksVtd S )Nr   r?   r6   )r-   rM   rr   rP   r$   )r   r   rm   r   r   r   test_scalar   s    
zTestScalarDiscovery.test_scalarz)ignore:Promotion of numbers:FutureWarningc                 C   s   t t t D ]\}}|jd |jd  }}zt||g}W n ttfk
rZ   Y qY nX |jdksjtz,|j	|j	 }}t
||}|j	|kstW q tk
r } z|j	t	dkstW 5 d }~X Y qX qd S )Nr   r6   rf   )r   rT   valuesr-   rM   r   r   rr   rP   r$   Zpromote_types)r   Zsc1Zsc2rm   Zdt1Zdt2Zexpected_dtypeer   r   r   test_scalar_promotion   s    
z)TestScalarDiscovery.test_scalar_promotionc                 C   s   t |tjr t||d d }t|tkr6td tj|td	|j
}t|d}t|g}tjd|j
d}||d< tjd|j
d}|g|d d < t|| t|| t|| t|| d S )Nr6   g      ?z/Rational to object cast is undefined currently.rZ   r?   r   )rN   r-   ZinexactrW   r   rt   xfailrM   rb   ri   r$   reshapeemptyr   )r   r   rm   Zarr1Zarr2Zarr3Zarr4r   r   r   test_scalar_coercion  s    



z(TestScalarDiscovery.test_scalar_coercionz%`int(np.complex128(3))` fails on PyPyreasonzignore::numpy.ComplexWarningcast_toc                 C   s  |j }tddD ]z}|jd }|jtjkr|j jdk	r|jdkrtt	 t
|| W 5 Q R X tj
||d tj
|g|d qzt
||}W n t	ttfk
rR   tt tj
||d W 5 Q R X t|trt|tjrY  dS tt tj
|g|d W 5 Q R X tjd|d}tt ||d< W 5 Q R X Y  dS X tj
||d}t|| tjd|d}||d< t|| qdS )aP  
        Test that in most cases:
           * `np.array(scalar, dtype=dtype)`
           * `np.empty((), dtype=dtype)[()] = scalar`
           * `np.array(scalar).astype(dtype)`
        should behave the same.  The only exceptions are paramteric dtypes
        (mainly datetime/timedelta without unit) and void without fields.
        F)rS   r   NrZ   r   )r$   rT   r   rW   r-   rO   fieldsrt   r   r   rM   ri   r   RuntimeError	ExceptionrN   r   Z
issubdtypeZsignedintegerzerosr   )r   r   r$   r   castresrm   assr   r   r   0test_scalar_coercion_same_as_cast_and_assignment  s<    



zDTestScalarDiscovery.test_scalar_coercion_same_as_cast_and_assignmentpyscalarr_   gp=
ף$@y        HzG$@d   c                 C   s:   G dd dt |}t||}t|}t|| dS )a  NumPy arrays are read/write which means that anything but invariant
        behaviour is on thin ice.  However, we currently are happy to discover
        subclasses of Python float, int, complex the same as the base classes.
        This should potentially be deprecated.
        c                   @   s   e Zd ZdS )z>TestScalarDiscovery.test_pyscalar_subclasses.<locals>.MyScalarNr   r   r   r   r   MyScalar`  s   r   N)rW   r-   rM   r   )r   r   r   r   rl   r   r   r   test_pyscalar_subclassesY  s    
z,TestScalarDiscovery.test_pyscalar_subclasses
dtype_charZAllc                 C   sh   |dkrt |d }n|dkr,t d}n
t |}tg t|\}}||ksTt|j|jksdtd S )NZSU1VZV8)r-   r$   r   rW   rP   rU   )r   r   r$   Zdiscovered_dtype_r   r   r   test_default_dtype_instanceg  s    
z/TestScalarDiscovery.test_default_dtype_instancer$   ZIntegererrorr   c              	   C   s   t |}t jdd$ t j||d}t ||}W 5 Q R X t|| t| t j|g|d W 5 Q R X t| ||d< W 5 Q R X dS )z
        Signed integers are currently different in that they do not cast other
        NumPy scalar, but instead use scalar.__int__(). The hardcoded
        exception to this rule is `np.array(scalar, dtype=integer)`.
        ignore)invalidrZ   r   N)r-   r$   ZerrstaterM   ri   r   rt   r   )r   r$   r   r   Zcoercedr   r   r   r   'test_scalar_to_int_coerce_does_not_castw  s    


z;TestScalarDiscovery.test_scalar_to_int_coerce_does_not_castN)r   r   r   rz   r   r   r   rt   ru   rv   rT   r   filterwarningsr   r   r   r	   r   r   r-   Z	typecodesr   r2   nanr   rM   ri   Z	ulonglongOverflowErrorr   r   r   r   r   rw      s2   




8

rw   c                   @   sF  e Zd Zejdejejgejde	e
dddde	e
dddde	edd	d
de	eddddgdd Zejdejejgejde	e
dddde	e
dd	ddgdd Zejdddgejddge	dddde	ddddgdd Zejddge	dddde	ddddgdd Zd S )!TestTimeScalarsr$   r   rF   rD   rG   r   {   rE   ZgenericrH   r?   Dzdatetime64[D]c              	   C   sx   t j||d}t ||}t|| t jd|d}t|t jrbtt	 ||d< W 5 Q R X n||d< t|| d S NrZ   r   )
r-   rM   ri   r   onesrV   integerrt   r   r   r   r$   r   rm   r   r   r   r   r   test_coercion_basic  s    	
z#TestTimeScalars.test_coercion_basicnsztimedelta64[ns]   rB   c                 C   sL   t j||d}t ||}t jd|d}||d< t|| t|| d S r   )r-   rM   ri   r   r   r   r   r   r   )test_coercion_timedelta_convert_to_number  s    
z9TestTimeScalars.test_coercion_timedelta_convert_to_numberS6ZU6valunitz[s]z[D]c              	   C   s   t ||}t |}|t|d d }t j||d}|d |ksJtt jd|d}||d< |d |ksptt	t
 t || W 5 Q R X d S )Nr}   rZ   r   )r-   rR   r$   rW   rh   rM   rP   r   rt   r   r   ri   )r   r   r   r$   r   Z
cut_stringrm   r   r   r   r   !test_coercion_assignment_datetime  s    

z1TestTimeScalars.test_coercion_assignment_datetimec                 C   sv   t ||}t j|dd t |d}t jddd}||d< |dd d }|d |ksbt|d |ksrtd S )Nr   rZ   r   re   r}   )r-   rQ   rM   ri   r   rP   )r   r   r   r   r   r   rl   r   r   r   "test_coercion_assignment_timedelta  s    z2TestTimeScalars.test_coercion_assignment_timedeltaN)r   r   r   rt   ru   rv   r-   r:   r1   r   rQ   rR   r   r   r   r   r   r   r   r   r     s2   r   c                   @   s\   e Zd Zdd Zdd Zejde dd Z	ejde dd	 Z
d
d Zdd ZdS )
TestNestedc              	   C   s   dg}|}t tjd D ]
}|g}qtj|dd}|jdtj ksFttt tj|gdd W 5 Q R X tjtdd t|g W 5 Q R X tj|gt	d}|j
t
dkst|jdtj kst| |kstd S )	Nr^   r?   r2   rZ   rx   .*would exceed the maximummatchrf   )r   r-   r   rM   rr   rP   rt   r   r   rb   r$   item)r   initialr   r   rm   r   r   r   test_nested_simple  s    zTestNested.test_nested_simplec                 C   sf   g }| | tj|||gtd}|jddtjd   ks>ttj|d g|gtd}|jdksbtd S )NrZ   r@   rx   r?   )r@   r?   )appendr-   rM   rb   rr   r   rP   )r   lrm   r   r   r   !test_pathological_self_containing  s    
z,TestNested.test_pathological_self_containingrp   c              	   C   s   |t d}|}tt jd D ]
}|g}q tjtdd t j|dd W 5 Q R X t j|td}|j	dt j ksvt
| t | kst
d S )Nrq   r?   r   r   r2   rZ   rx   )r-   r   r   r   rt   r   r   rM   rb   rr   rP   r   )r   rp   r   r   r   rm   r   r   r   test_nested_arraylikes   s    	z!TestNested.test_nested_arraylikesc              	   C   s   t dd}||}t j||ggtd}|jdks:t|d |ksJtt|d tks^tt	
t t j|||ggtd W 5 Q R X d S )N   )r6   r6   rZ   r   r   r?   )r-   Zaranger   rM   rb   rr   rP   rW   listrt   r   r   )r   rp   rm   outr   r   r   test_uneven_depth_ragged  s    z#TestNested.test_uneven_depth_raggedc              	   C   sZ   t jg dgdgggtd}|jdks(ttt t jg t dgtd W 5 Q R X d S )Nr?   rZ   r   )r   r?   )	r-   rM   rb   rr   rP   rt   r   r   r   ry   r   r   r   test_empty_sequence+  s    zTestNested.test_empty_sequencec                 C   s   t d}t d}t d}t||gt dd\}}|dksDtt||gt dd\}}|dksjtt j||gt dd}|d |kst|d	 |kstd S )
N)r@   r6   r   )r@   r@   rf   rZ   )r6   r@   r   r   r?   )r-   r   r   r$   rP   asarray)r   rm   Zmismatch_first_dimZmismatch_second_dimr$   rr   r   r   r   r   test_array_of_different_depths4  s     


 
 
z)TestNested.test_array_of_different_depthsN)r   r   r   r   r   rt   ru   rv   r.   r   r   r   r   r   r   r   r   r     s   

	r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestBadSequencesc              	      sN   g  G  fdddt } |ddg tt t  W 5 Q R X d S )Nc                       s   e Zd Z fddZ  ZS )z2TestBadSequences.test_growing_list.<locals>.mylistc                    s    ddg t  S )Nr?   r6   )r   superr   r   	__class__r]   r   r   r   T  s    z:TestBadSequences.test_growing_list.<locals>.mylist.__len__r   r   r   r   __classcell__r   r]   r   r   mylistS  s   r   r?   r6   )r   r   rt   r   r   r-   rM   r   r   r   r   r   test_growing_listP  s
    z"TestBadSequences.test_growing_listc                    sF   g  G  fdddt } ddg  |ddg t  d S )Nc                       s   e Zd Z fddZ  ZS )z2TestBadSequences.test_mutated_list.<locals>.mylistc                    s   ddgd< t   S )Nr6   r@   r   )r   r   r   r   r   r   r   e  s    z:TestBadSequences.test_mutated_list.<locals>.mylist.__len__r   r   r   r   r   r   d  s   r   r6   r@   r?   )r   r   r-   rM   r   r   r   r   test_mutated_lista  s
    z"TestBadSequences.test_mutated_listc              	      sP   g  G  fddd}  td| g tt t  W 5 Q R X d S )Nc                       s    e Zd Z fddZdd ZdS )z7TestBadSequences.test_replace_0d_array.<locals>.baditemc                    s   d d d< t dd S )Nr6   r   znot actually a sequence!)r   r   r   r   r   r   r  s    z?TestBadSequences.test_replace_0d_array.<locals>.baditem.__len__c                 S   s   d S r
   r   r   r   r   r   r   v  s    zCTestBadSequences.test_replace_0d_array.<locals>.baditem.__getitem__Nr    r   r   r   r   baditemq  s   r   r6   )r   r-   rM   rt   r   r   )r   r   r   r   r   test_replace_0d_arrayn  s
    
z&TestBadSequences.test_replace_0d_arrayN)r   r   r   r   r   r   r   r   r   r   r   J  s   r   c                   @   s   e Zd Zejde dd Zdd Zdd Z	ejj
eejjdk d	d
dd Zejddddgejdeegdd Zejdeegdd ZdS )TestArrayLikesrp   c                 C   sN   t d}||}t j|td}t|| t j|gtd}|d |ksJtd S )N        rZ   r   )r-   rM   rb   r   rP   )r   rp   rm   r]   r   r   r   r   test_0d_object_special_case  s    

z*TestArrayLikes.test_0d_object_special_casec              	   C   s   G dd dt j}t d}||}t |}t|| tt t |g W 5 Q R X t|}t |}t|| tt	 t |g W 5 Q R X d S )Nc                   @   s   e Zd Zdd ZdS )zBTestArrayLikes.test_0d_generic_special_case.<locals>.ArraySubclassc                 S   s   t dd S )Nze.g. quantities raise on thisr   r   r   r   r   	__float__  s    zLTestArrayLikes.test_0d_generic_special_case.<locals>.ArraySubclass.__float__N)r   r   r   r   r   r   r   r   ArraySubclass  s   r   r   )
r-   r   rM   r   r   rt   r   r   r'   r   )r   r   rm   r]   r   r   r   r   test_0d_generic_special_case  s    





z+TestArrayLikes.test_0d_generic_special_casec                 C   s   t t j}|d t jkstt t jg}|d t jks>tG dd d}t |}|d |ksftt |g}|d |kstd S )Nr   r   c                   @   s,   e Zd Zedd Zedd Zdd ZdS )z8TestArrayLikes.test_arraylike_classes.<locals>.ArrayLikec                 S   s   d S r
   r   r   r   r   r   r(     s    zLTestArrayLikes.test_arraylike_classes.<locals>.ArrayLike.__array_interface__c                 S   s   d S r
   r   r   r   r   r   r+     s    zITestArrayLikes.test_arraylike_classes.<locals>.ArrayLike.__array_struct__c                 S   s   d S r
   r   r   r   r   r   r%     s    zBTestArrayLikes.test_arraylike_classes.<locals>.ArrayLike.__array__N)r   r   r   propertyr(   r+   r%   r   r   r   r   	ArrayLike  s
   

r   )r-   rM   r:   rP   )r   rm   r   r   r   r   test_arraylike_classes  s    
z%TestArrayLikes.test_arraylike_classes   zNeeds 64bit platformr   c              
   C   sn   t jddd}t |d}tdD ]F}tt t | W 5 Q R X tt t |g W 5 Q R X q"dS )z0Test the error paths, including for memory leaksr   r;   rZ   l            r/   N)r-   rM   Zbroadcast_tor   rt   r   MemoryError)r   rm   r   r   r   r    test_too_large_array_error_paths  s    z/TestArrayLikes.test_too_large_array_error_paths	attributer(   r%   r+   r   c              	      s:   G  fddd}t  t|  W 5 Q R X d S )Nc                       s    e Zd Z fddZ  ZS )zCTestArrayLikes.test_bad_array_like_attributes.<locals>.BadInterfacec                    s   |krt  | d S r
   )r   __getattr__)r   attr)r   r   r   r   r   r     s    zOTestArrayLikes.test_bad_array_like_attributes.<locals>.BadInterface.__getattr__)r   r   r   r   r   r   r   r   r   r   BadInterface  s   r   rt   r   r-   rM   )r   r   r   r   r   r   r   test_bad_array_like_attributes  s    z-TestArrayLikes.test_bad_array_like_attributesc              	      s8   G  fddd}t   t|  W 5 Q R X d S )Nc                       s    e Zd Z fddZdd ZdS )zBTestArrayLikes.test_bad_array_like_bad_length.<locals>.BadSequencec                    s    d S r
   r   r   r   r   r   r     s    zJTestArrayLikes.test_bad_array_like_bad_length.<locals>.BadSequence.__len__c                 S   s   dS )Nr?   r   r   r   r   r   r     s    zNTestArrayLikes.test_bad_array_like_bad_length.<locals>.BadSequence.__getitem__Nr    r   r   r   r   BadSequence  s   r   r   )r   r   r   r   r   r   test_bad_array_like_bad_length  s    z-TestArrayLikes.test_bad_array_like_bad_lengthN)r   r   r   rt   ru   rv   r.   r   r   r   Zskipifr-   r$   ZintprU   r   RecursionErrorr   r   r   r   r   r   r   r     s    
 
r   c                   @   s   e Zd ZdZdd ZdS )TestAsArrayz'Test expected behaviors of ``asarray``.c                 C   s  t jdddgdd}t ||ks&tt j|dd|ks<tt jdddid}t j||d}||k	sht|j|ksvtt jdddid}t j||d}||kst||k	st||k	st|j|kstd	}d
d |D }d}d}	t|ddD ]$\}}	||	kr||	k	st qqt|t jr0t|	t js4tt j|dd}
t j|dd}|
|k	s^t||k	sltt j|
dd|
k	stt j||d}||	kst||	k	st|j|kst|t j||	dk	stt j||	dj|	kst|t j||	djks
tdS )a  Confirm the intended behavior for *dtype* kwarg.

        The result of ``asarray()`` should have the dtype provided through the
        keyword argument, when used. This forces unique array handles to be
        produced for unique np.dtype objects, but (for equivalent dtypes), the
        underlying data (the base object) is shared with the original array
        object.

        Ref https://github.com/numpy/numpy/issues/1468
        r?   r6   r@   r   rZ   ZspamT)metadata)r   r   qc                 S   s   g | ]}t |qS r   )r-   r$   ).0coder   r   r   
<listcomp>  s     z3TestAsArray.test_dtype_identity.<locals>.<listcomp>N)rr   r   )r-   rM   r   rP   r$   baser   rN   )r   Z	int_arrayZunequal_typeZannotated_int_arrayZequivalent_requirementZannotated_int_array_altZinteger_type_codesZinteger_dtypesZtypeAZtypeBZlong_int_arrayZlong_long_int_arrayZarray_ar   r   r   test_dtype_identity  sH     zTestAsArray.test_dtype_identityN)r   r   r   __doc__r   r   r   r   r   r     s   r   c                   @   s0   e Zd ZG dd dZG dd dZdd ZdS )!TestSpecialAttributeLookupFailurec                   @   s   e Zd Zedd ZdS )z0TestSpecialAttributeLookupFailure.WeirdArrayLikec                 C   s   t dd S Nzoops!r   r   r   r   r   r%   6  s    z:TestSpecialAttributeLookupFailure.WeirdArrayLike.__array__N)r   r   r   r   r%   r   r   r   r   WeirdArrayLike5  s   r  c                   @   s   e Zd Zedd ZdS )z5TestSpecialAttributeLookupFailure.WeirdArrayInterfacec                 C   s   t dd S r  r  r   r   r   r   r(   ;  s    zITestSpecialAttributeLookupFailure.WeirdArrayInterface.__array_interface__N)r   r   r   r   r(   r   r   r   r   WeirdArrayInterface:  s   r  c              	   C   sL   t t t|   W 5 Q R X t t t|   W 5 Q R X d S r
   )rt   r   r   r-   rM   r  r  r   r   r   r   test_deprecated?  s    z1TestSpecialAttributeLookupFailure.test_deprecatedN)r   r   r   r  r  r  r   r   r   r   r  2  s   r  )TTT)r   	itertoolsr   r   rt   r   Znumpyr-   Znumpy.core._rational_testsr   Znumpy.core._multiarray_umathr   Znumpy.testingr   r   r	   r.   rT   r[   r\   rw   r   r   r   r   r   r  r   r   r   r   <module>   s&   =
8* RPi6pB