o
    1ήcW                     @   sR  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dd Zdd Zejdddgdd Zejdg d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d(ej!ej"ej#gd)d* Z$ejdej%d+ d,d- Z&d.d/ Z'd0d1 Z(d2d3 Z)d4d5 Z*d6d7 Z+d8d9 Z,ejg d:d;d<d=ge-d<d=gd<d=ggfd>d?d@ge-d?d@gd?d@gd?d@ggfgdAdB Z.dCdD Z/dS )E    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rWt	| }tjd tjd t|t	|  ttjdtjdtjdtjd trt	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|g d t|jj tju  ttd}t|g d t|jj tju  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__get)g     H@g      G@g      H@)1   .   0         Y@o)__array_interface__)r	         @Hello)r         @Worldf0f1f2)__array_struct__c                  W   s   t jdt jdS )Nr   r
   )nparrayfloat64)xr   r   @/tmp/pip-target-vg8gfxp4/lib/python/numpy/core/tests/test_api.py<lambda>Z   s    z"test_array_array.<locals>.<lambda>)	__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rangeMAXDIMSr   
ValueErrorfull)tobjones11tndarrayold_refcountS2S3S5U2U3U5builtinsdatar   nestedir   r   r'   test_array_array   s   





 

rQ   r$   TFc                 C   sT   t dd}| rt|}tt tj|dd W d    d S 1 s#w   Y  d S )Nr	   r   M8r
   )r   r#   r$   r   	TypeError)r$   rtr   r   r'   test_array_impossible_casts   s   


"rU   c                  C   s   t d} t | }t|| j t|jj t g d} t | }t|| j t|jj t d	dd} t | }t|| j t|jj d S )Nr   )r   r      r      r   )
r#   r$   fastCopyAndTransposer   Tr   flagsowndataarangereshape)rN   br   r   r'   test_fastCopyAndTranspose   s   



r_   c                  C   sV  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| |u | jddd}t| |u  | jdd	dd
}t| | t| |u t|j	j
 | jdddd
}t| | t| |u  t|j	j | jddd}t| | t|jt d tt| jddd | jdddd}t| |u  G dd dt j}t jg dg dgdd|} | jdddd}t| |u  | jddd}t| | tt|| | jdddd}t| | t| |u tt||u 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 ),NrW   f4r
   r   r   i4FcopyF)orderrc   Cc8safecastingr   )subokrc   c                   @   s   e Zd ZdS )z$test_array_astype.<locals>.MyNDArrayN)__name__
__module____qualname__r   r   r   r'   	MyNDArray   s    ro   )r   r	   r   )r      r   Tsd   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOSS100daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUU100s
   aaaaaaaaaaS10
aaaaaaaaaaU10l   
~l!]c s   123456789012345678901234567890S30123456789012345678901234567890U30u   aŀuint32)bufferr   shapei  S1U1)r#   r\   r]   astyper   r   stridesrY   r   rZ   f_contiguousc_contiguousr   rS   ndarrayr$   viewr-   r   size)rN   r^   ro   r   r   r'   test_array_astype   s   






 









r   dtrr   ru   c                 C   st   t jdgtd}|| jjt |  djksJ t j|| dds$J t j|| ddr.J t jd| dds8J d S )N r
   r   unsaferi   	same_kindrq   )r#   r$   r.   r   r   itemsizecan_castr   arrr   r   r'   +test_array_astype_to_string_discovery_empty  s
   $r   )dfS13U32c                 C   s4   t | } t jg | d}|djj| jksJ d S )Nr
   V)r#   r   r$   r   r   r   r   r   r'   test_array_astype_to_void'  s   
r   c                  C   s&   t jg ddd} | jdksJ d S )Nrq   r
   r   V8)r#   r$   r   r   )r   r   r   r'    test_object_array_astype_to_void-  s   r   tuintr;   r<   c                 C   s$   t jdt jd}tt j|j|  d S )Nr+   r
   )r#   r$   complex_r   ComplexWarningr   )r   rN   r   r   r'   test_array_astype_warning3  s   r   r   	out_dtypezS10,S9z?,?c                 C   s8   t jg d| d}t jg d|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
   )TTFFN)r#   r$   r   r   )r   r   r   expectedr   r   r'   test_string_to_boolean_cast;  s   
r   c              	   C   sP   dD ]#}t j|g| d}tt || W d   n1 s w   Y  qdS )zn
    These currently error out, since cast to integers fails, but should not
    error out in the future.
    )FalseTruer    z	non-emptyr
   N)r#   r$   r   r@   r   )r   r   invalidr   r   r   r'   "test_string_to_boolean_cast_errorsI  s   	
r   str_typescalar_typec                 C   s   |d}||dksJ t j|gtd|d dksJ t ||d dks+J t jd|d}||d< |d dks>J d S )Ns   1+3jy      ?      @r
   r   r	   r   )r#   r$   r.   r   zeros)r   r   valuer   r   r   r'   test_string_to_complex_castW  s   "r   AllFloatc                 C   s   t jd| d}d |d< t |d sJ t t jd | dd s"J t t jd g| dd s1J t t d | d s@J d S )Nr	   r
   r   r   )r#   r   isnanr$   r   )r   r   r   r   r'   test_none_to_nan_castc  s   "r   c                  C   s   t jddddd} t | d t| d t | jd t| d t jg dg d	gd
d}t j| d|d t| g dg dg t jddgddgddggd
d}t j| jd|d t| g dg dg d S )NrW   r`   r
   r   r   r*         @)r   r	   r   )r   r   r	   ?      @where)r   r   r   )r   r   r   r   r	         @)r   r   r   )r   r   r   )r#   r\   r]   copytor   rY   r$   )rN   maskr   r   r'   test_copyto_fromscalarn  s   

 r   c                  C   s  t jddddd} t | g dg dg t| g dg dg t | d d d df | d d dd	d df  t| g d
g dg ttt j| d t j| ddd t| d	 t j| dg dd t| g dg dg ttt j| dg dd t j| ddg dg dgd t| g dg dg t j| d d d df | d d dd	d df dd	gd	d	ggd t| g dg dg ttt jg dg d d S )NrW   ra   r
   r   r   )r   r	   r   )rW   r   r	   r	   )r   rW   r   r	   r   r	   r*   r   ri   )TFTr   )r   r	   r   r   r   )r   r	   r	   )r	   r   r   )rj   r   )r   rp   rp   )rp   r	   r   r   )rp   r   r   r	   r   r   )r   r   rp   )r#   r\   r]   r   r   r   rS   )rN   r   r   r'   test_copyto  s    0
@r   c                     s   d} dg|  g d }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 ]4}t |}t |}t |
t j}|||dk< t j|||d t|d
k| t|	 t	| qq@t |}t j||dd t|	 |j t |}t |}t j||dd t|	 |j d S )Ni  T)TTTTr   r   	   r   c                    s   g | ]} |@ d kqS )r   r   ).0r&   rP   r   r'   
<listcomp>  s    z&test_copyto_permut.<locals>.<listcomp>r	   )      r      r   F)r#   r   lenr/   r$   r   r>   r   r   sumr   r9   r   )padlrr   r   powercimaskr   r   r'   test_copyto_permut  sV   




."&
."&


	

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   rp   rd   re   Fc                    s6   t | |u t| | t jj| t jj| d S r,   )r   r   rZ   r   r   )r&   yccontigfcontigr   resr   r'   check_copy_result  s   
z*test_copy_order.<locals>.check_copy_resultrf   T)r   r   r   K)F)	r#   r\   r]   rc   swapaxesr   rZ   r   r   )rN   r^   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)rp   rp   r	   r   )i)r   r   r	   r   r   r   rp   c                 S   s$   t | jj|k t | jj|k d S r,   )r   rZ   r   r   )rN   r   r   r   r   r'   check_contig  s   z+test_contiguous_flags.<locals>.check_contigF)r   r   r   r   r   Tr	   rd   r   r   r   rb   rf   )rc   re   )ndminrc   re   r   .)r   r   .r   )r#   r/   r   r   emptyr$   ravelsqueeze)rN   r^   r   r   r   r'   test_contiguous_flags  s&   " .r   c                  C   sj   t jdgdd} t jg ddd}t | |}t|d t jg ddd t|d t jg ddd d S )Nr   zu4,u4,u4r
   )r   )rp   r   rW   )rV      r   r   )r   r   r   r	   )r#   r$   broadcast_arraysr   )rN   r^   resultr   r   r'   test_broadcast_arrays5  s
    r   )r   
fill_valueexpected_outputr   g      @r   )r   r   r   g       @c                 C   s   t | |}t|| d S r,   )r#   rA   r   )r   r   r   outputr   r   r'   test_full_from_list=  s   r   c                  C   s  t jdt jd} | jt jdd}t | |rJ | jt jt jjd}t | |r*J | jt jdd}t | |s:J | jt jt jjd}t | |sLJ | jt jt jjd}t | |s^J | 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
   Trb   F)r#   r\   intpr   may_share_memory	_CopyModeALWAYS	IF_NEEDEDNEVERr%   r   r   r@   )r   res_true
res_always	res_falseres_if_needed	res_neverr   r   r'   test_astype_copyflagD  s(   


r   )0r0   numpyr#   numpy.core._rational_testsr   pytestnumpy.testingr   r   r   r   r   r   rQ   markparametrizerU   r_   r   r   r   r   sctypesr   bytes_bool_unicode_r   r   r   r4   r3   str_	complex64
complex128clongdoubler   	typecodesr   r   r   r   r   r   r   r$   r   r   r   r   r   r'   <module>   sl      

m







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