U
    #cW                     @   s  d dl Z d dl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 Zejdddgd	d
 Zejdededddd gedddfdd Zdd Zejdddgdd Zejdddddgdd Zdd  Zejd!ejd" ejd#  ejd$  d%d& Zejd'd(gejejfejejfed)ed*fgd+d, Zejd'd(gejejfejejfed)ed*fgd-d. Z ejd/e!e"ej#ejgejd0ej$ej%ej&gd1d2 Z'ejd'ej(d3 d4d5 Z)d6d7 Z*d8d9 Z+d:d; Z,d<d= Z-d>d? Z.d@dA Z/ejdBdCdDgdEdFdGgedFdGgdFdGggfdHdIdJgedIdJgdIdJgdIdJggfgdKdL Z0dMdN Z1dS )O    N)rational)assert_assert_equalassert_array_equalassert_raisesassert_warnsHAS_REFCOUNTc                  C   s  t t} tdtj}t |}ttj|tjd| tr\t	|}t| t|t	| ttjd tjdtjtj
tjd trt	| }tjd tjd t|t	|  ttjdtjdtjdtjd trt	tj}tjtjdtjdtjd t|t	tj ttdf}ttdf}ttdf}ttjdtjdtjdtjd ttdj| ttjdtdj| ttjd|dtd	 ttjd
|dtjd|d ttdf}ttdf}ttdf}	ttjdtjdtjdtjd ttdj| ttjdtdj| ttjd|dttd ttjd|	dtjd|	d ttdt}
tt|
d tjtdtjd}t|dddg t|jj tjk ttd}t|dddg t|jj tjk tjdtjd}t dtft|jd}ttj|tjd| tjddgdtfdtfdtfgd}t dtft|jd}ttt|jt|j t dtftdd  d! }ttj|tjdtdtj d"}ttjD ]}|g}qt| tttj|gtjd ttjd gd# tjdtjd$tj
tjd ttjd ggd# tjdtjd%tj
tjd ttjd gd# gtjdtjd&tj
tjd ttjd gd# gd# tjdtjd'tj
tjd ttjdgd# tjdtjd$tjd ttjdggd# tjdtjd%tjd ttjdgd# gtjdtjd&tjd ttjdgd# gd# tjdtjd'tjd ttjd(tjdtjd$tj
tjd ttjd)gd# tjdtjd%tj
tjd ttjd(gtjdtjd&tj
tjd ttjd(gd# tjdtjd'tj
tjd ttjd*tjdtjd$tjd ttjd+gd# tjdtjd%tjd ttjd*gtjdtjd&tjd ttjd*gd# tjdtjd'tjd d S ),N)   r	   dtype      ?          s   1.0s   1.   1z1.0z1.1__dict__getg     H@g      G@g      H@1   .   0         Y@o)__array_interface__)r	         @ZHello)r         @ZWorldZf0f1f2)__array_struct__c                  W   s   t jdt jdS )Nr   r
   )nparrayfloat64)xr   r   =/tmp/pip-unpacked-wheel-b2rbor69/numpy/core/tests/test_api.py<lambda>Z       z"test_array_array.<locals>.<lambda>)Z	__array__      ?
   )r(   )r(   r	   )r	   r(   )r(   r(   )
NNNNNNNNNNN)
r   r   r   r   r   r   r   r   r   r   )r   )typeobjectr    onesr"   r   r!   r   sysgetrefcountnanr   bytesstrgetattr__builtins__r   hasattr
memoryviewuint8dictr   intfloatr   datarangeZMAXDIMSr   
ValueErrorfull)ZtobjZones11ZtndarrayZold_refcountZS2ZS3ZS5ZU2ZU3ZU5builtinsZdatar   nestedir   r   r$   test_array_array   s    





 

rB   r!   TFc              	   C   s>   t dd}| rt|}tt tj|dd W 5 Q R X d S )Nr	   r   ZM8r
   )r   r    r!   r   	TypeError)r!   rtr   r   r$   test_array_impossible_casts   s
    


rE   r?   r   r         c              	   C   s:   t  ( t| }t|| j |jjs,tW 5 Q R X d S r)   )	pytestZdeprecated_callr    ZfastCopyAndTransposer   TflagsZowndataAssertionError)r?   br   r   r$   test_fastCopyAndTranspose   s    

rM   c                  C   sZ  t jddddd} | d}t| | t|jt d t| j|j | jd}t| j| t|jt d t| jj|j | d}t| | t| |k	 | jddd}t| |k | jdd	dd
}t| | t| |k	 t|j	j
 | jdddd
}t| | t| |k t|j	j | jddd}t| | t|jt d tt| jddd | jdddd}t| |k G dd dt j}t jdddgdddggdd|} | jdddd}t| |k | jddd}t| | tt|| | jdddd}t| | t| |k	 tt||k	 t jdgdd} | d}t| | t|jt d t jdgdd} | d}t| | t|jt d t jdgdd} | d}t| | t|jt d t jd gdd} | d}t| | t|jt d! t jd"ddd} t| t jd#d$d t jd"ddd} t| t jd%d&d t jd"gddd} t| t jd#d$d t jd"gddd} t| t jd%d&d t jd"dd} t| t jd#d$d t jd"dd} t| t jd%d&d t jd'dd} t j| d(dd)}t|jdk t jd*gdd} tt| jd+dd t jd*dd} tt| jd,dd d S )-NrG   f4r
   r   r   i4FcopyF)orderrQ   CZc8safecastingr   )ZsubokrQ   c                   @   s   e Zd ZdS )z$test_array_astype.<locals>.MyNDArrayN)__name__
__module____qualname__r   r   r   r$   	MyNDArray   s   r[   r	      r   Tsd   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOSZS100ZdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUZU100s
   aaaaaaaaaaZS10Z
aaaaaaaaaaZU10l   
~l!]c s   123456789012345678901234567890ZS30Z123456789012345678901234567890ZU30u   aŀZuint32)bufferr   shapei  ZS1ZU1)r    arangereshapeastyper   r   stridesrI   r   rJ   f_contiguousc_contiguousr   rC   Zndarrayr!   viewr*   r   size)r?   rL   r[   r   r   r$   test_array_astype   s    






$









rj   dtr^   r_   c                 C   st   t jdgtd}|| jjt |  djks4tt j|| ddsHtt j|| ddr\tt jd| ddsptd S )N r
   r   unsaferV   Z	same_kindr]   )r    r!   r+   rd   r   itemsizerK   Zcan_castrk   arrr   r   r$   +test_array_astype_to_string_discovery_empty  s
    $rq   dfZS13ZU32c                 C   s4   t | } t jg | d}|djj| jks0td S )Nr
   V)r    r   r!   rd   rn   rK   ro   r   r   r$   test_array_astype_to_void#  s    
ru   c                  C   s&   t jg ddd} | jdks"td S )Nr]   r
   rt   ZV8)r    r!   rd   r   rK   )rp   r   r   r$    test_object_array_astype_to_void)  s    rv   tZuintr8   r9   c                 C   s$   t jdt jd}tt j|j|  d S )Nr(   r
   )r    r!   Zcomplex_r   ZComplexWarningrd   )rw   r?   r   r   r$   test_array_astype_warning/  s    rx   r   	out_dtypezS10,S9z?,?c                 C   s@   t jddddg| d}t jddddg|d}t||| dS )	z
    Currently, for `astype` strings are cast to booleans effectively by
    calling `bool(int(string)`. This is not consistent (see gh-9875) and
    will eventually be deprecated.
    10z10   z0  0r
   TFN)r    r!   r   rd   )r   ry   rp   expectedr   r   r$   test_string_to_boolean_cast7  s    
r}   c              
   C   s<   dD ]2}t j|g| d}tt || W 5 Q R X qdS )zn
    These currently error out, since cast to integers fails, but should not
    error out in the future.
    )FalseTruerl    z	non-emptyr
   N)r    r!   r   r<   rd   )r   ry   invalidrp   r   r   r$   "test_string_to_boolean_cast_errorsE  s    	
r   str_typescalar_typec                 C   s   |d}||dkst tj|gtd|d dks:t t||d dksVt tjd|d}||d< |d dks|t d S )Ns   1+3jy      ?      @r
   r   r	   r   )rK   r    r!   r+   rd   zeros)r   r   valuerp   r   r   r$   test_string_to_complex_castS  s    "r   ZAllFloatc                 C   s   t jd| d}d |d< t |d s(tt t jd | dd sDtt t jd g| dd sbtt t d | d std S )Nr	   r
   r   r   )r    r   isnanrK   r!   rd   )r   rp   r   r   r$   test_none_to_nan_cast_  s    r   c                  C   s   t jddddd} t | d t| d t | jd t| d t jdd	dgddd	ggd
d}t j| d|d t| dddgdddgg t jdd	gd	d	gd	dggd
d}t j| jd|d t| dddgdddgg d S )NrG   rN   r
   r   r   r'   g      @r   r	   ?      @whereg      @)r    rb   rc   copytor   rI   r!   )r?   maskr   r   r$   test_copyto_fromscalarj  s    

 r   c                  C   s  t jddddd} t | dddgdddgg t| dddgdddgg t | d d d df | d d ddd df  t| dddgdddgg ttt j| d	 t j| d	d
d t| d t j| ddddgd t| dddgdddgg ttt j| ddddgd t j| dd
dddgdddggd t| dddgdddgg t j| d d d df | d d ddd df ddgddggd t| dddgdddgg ttt jdddgdddg d S )NrG   rO   r
   r   r   r	   r   r'   rm   rV   TFr   r   r   r   )rW   r   r\   )r    rb   rc   r   r   r   rC   )r?   r   r   r$   test_copyto{  s     0
"@r   c                     s  d} dg|  ddddg }t t||  }t t||  }t || d  }t j|||d d d d d}t |}td| D ] t |} fddt|D }t |}t j|||d t|d	k| t|	 t	| t |}t j|||d d d d t|d	k|d d d  t|	 t	| t |}t j|d d d |d d d |d d d d t|d d d d	k|d d d  t|d d d 	 t	|d d d  t |}t j|d d d |d d d |d d d
 d t|d d d d	k|d d d
  t|d d d 	 t	|d d d
  dD ]h}t |}t |}t |
t j}|||dk< t j|||d t|d	k| t|	 t	| q6qt |}t j||dd t|	 |j t |}t |}t j||dd t|	 |j d S )Ni  Tr   r   	   r   c                    s   g | ]} |@ d kqS )r   r   ).0r#   rA   r   r$   
<listcomp>  s     z&test_copyto_permut.<locals>.<listcomp>r	   )      r      r   F)r    r   lenr,   r!   r   r;   r   r   sumrh   r6   ri   )padlrrr   r   powercZimaskr   r   r$   test_copyto_permut  sT    




."&
."&




r   c                     s  t ddddd} | jdd}t ddddddd}d fd	d
	}t| jj t| jj  t|jj  t|jj t|jj  t|jj  | jdd | | dddd |jdd | |dddd |jdd | |dddd t j| dd | | dddd t j|dd | |dddd t j|dd | |dddd | jdd | | dddd |jdd | |dddd |jdd | |dddd t j| dd | | dddd t j|dd | |dddd t j|dd | |dddd | jdd | | dddd |jdd | |dddd |jdd | |dddd t j| dd | | dddd t j|dd | |dddd t j|dd | |dddd d S )N   r   r	   r   r\   rR   rS   Fc                    s6   t | |k	 t| | t jj| t jj| d S r)   )r   r   rJ   rg   rf   )r#   yccontigfcontigre   resr   r$   check_copy_result  s    
z*test_copy_order.<locals>.check_copy_resultrT   T)r   r   re   K)F)	r    rb   rc   rQ   swapaxesr   rJ   rg   rf   )r?   rL   r   r   r   r   r$   test_copy_order  s\    r   c                  C   s  t dd d dd d d d f } | jd d d | _t ddd}dd }|| d	d	 ||d	d	 |t d
dd |t jdgdgggdddd |t ddd	 |t jdddd	d |t j| d	dd	d	 |t j| d	dddd	 |t j| dd	ddd	d || d dd || d d d ddd f dd ||d d	d ||d d d d ddd d d d f dd ||  dd |t d dd d S )N)r\   r\   r	   r   )i)r   r   r	   r   r   r   r\   c                 S   s$   t | jj|k t | jj|k d S r)   )r   rJ   rg   rf   )r?   r   r   r   r   r$   check_contig  s    z+test_contiguous_flags.<locals>.check_contigF)r   r   r   r   r   Tr	   rR   r   r   r   rP   rT   )rQ   rS   )ZndminrQ   rS   r   .)r   r   .)r	   r   r	   )r    r,   re   r   emptyr!   ZravelZsqueeze)r?   rL   r   r   r   r$   test_contiguous_flags  s&    " .r   c                  C   sp   t jdgdd} t jdddgdd}t | |}t|d t jdddgdd t|d t jdddgdd d S )N)r	   r   r   zu4,u4,u4r
   )r\   r   rG   )rF      r   r   r	   )r    r!   Zbroadcast_arraysr   )r?   rL   resultr   r   r$   test_broadcast_arrays1  s
    r   ra   
fill_valueexpected_outputr   g      @r   )r   r   r   g       @c                 C   s   t | |}t|| d S r)   )r    r=   r   )ra   r   r   outputr   r   r$   test_full_from_list9  s    r   c                  C   s  t jdt jd} | jt jdd}t | |r0t| jt jt jjd}t | |rTt| jt jdd}t | |stt| jt jt jjd}t | |st| jt jt jj	d}t | |st| jt j
dd}t||  | jt j
t jjd}t||  tt| jt j
t jj	d d S )Nr(   r
   TrP   F)r    rb   Zintprd   Zmay_share_memoryrK   Z	_CopyModeZALWAYSZ	IF_NEEDEDZNEVERr"   r   r   r<   )rp   Zres_trueZ
res_alwaysZ	res_falseZres_if_neededZ	res_neverr   r   r$   test_astype_copyflag@  s(    

r   )2r-   Znumpyr    Znumpy.core._rational_testsr   rH   Znumpy.testingr   r   r   r   r   r   rB   markZparametrizerE   r!   rb   rc   rM   rj   rq   ru   rv   Zsctypesrx   Zbytes_Zbool_Zunicode_r   r}   r   r1   r0   Zstr_Z	complex64Z
complex128Zclongdoubler   Z	typecodesr   r   r   r   r   r   r   r   r   r   r   r   r$   <module>   sv     

m










	

$5= $
