a
    ߙfbL                     @   s  d Z ddlZddlZddlZddlZddlmZ ddlm	Z	m
Z
mZ ddlmZ ddlmZmZ ddlmZmZmZmZmZ dd	lmZmZ eeZee ZG d
d deZG dd deZG dd deZ G dd deZ!G dd deZ"G dd deZ#G dd deZ$G dd deZ%G dd de Z&G dd de Z'G dd deZ(G d d! d!eZ)G d"d# d#eZ*G d$d% d%eZ+G d&d' d'eZ,G d(d) d)Z-G d*d+ d+eZ.G d,d- d-e Z/G d.d/ d/Z0G d0d1 d1eZ1G d2d3 d3eZ2ej34d4G d5d6 d6Z5G d7d8 d8eZ6G d9d: d:Z7G d;d< d<eZ8G d=d> d>eZ9G d?d@ d@eZ:G dAdB dBZ;G dCdD dDZ<G dEdF dFeZ=G dGdH dHeZ>G dIdJ dJeZ?G dKdL dLeZ@G dMdN dNZAej34d4G dOdP dPZBe ZCe
rdQdR e D ZDeCeDO ZCerejEejFhZGne ZGeCeGO ZCejHejIejJejKhZLeCeLO ZCejMejNejOejPejQejRejSejTejUejVejWhZXeCeXO ZCe ZYeZe[ej\e]  D ]XZ^e^j_` D ]F\ZaZbecebreaddSreaedTdUZfefev reYgeef  qqdVdW Zhej3jidXdYdZd[ ZjG d\d] d]ZkdS )^as  Test all functions covered by __array_function__.

Here, run through all functions, with simple tests just to check the helpers.
More complicated tests of functionality, including with subclasses, are done
in test_functions.

TODO: finish full coverage (see also `~astropy.utils.masked.function_helpers`)
- np.linalg
- np.fft (is there any point?)
- np.lib.nanfunctions

    N)assert_array_equal)NUMPY_LT_1_19NUMPY_LT_1_20NUMPY_LT_1_23)get_wrapped_functions)MaskedMaskedNDArray)MASKED_SAFE_FUNCTIONSAPPLY_TO_BOTH_FUNCTIONSDISPATCHED_FUNCTIONSIGNORED_FUNCTIONSUNSUPPORTED_FUNCTIONS   )assert_masked_equalMaskedArraySetupc                   @   s   e Zd Zdd Zdd ZdS )BasicTestSetupc                 O   sZ   || j g|R i |}t|| jg|R i ||| jg|R i |d}t|| d S Nmask)mar   amask_ar   )selffuncargskwargsoutexpected r   Olib/python3.9/site-packages/astropy/utils/masked/tests/test_function_helpers.pycheck)   s
    zBasicTestSetup.checkc                 O   s   || j | jg|R i |}t|| j| jg|R i ||| j| jg|R i |d}t|tt	frt
||D ]\}}t|| qpn
t|| d S r   )r   mbr   r   br   mask_b
isinstancetuplelistzipr   )r   r   r   r   r   r   oxr   r   r   check2/   s    zBasicTestSetup.check2N)__name__
__module____qualname__r    r*   r   r   r   r   r   (   s   r   c                   @   s   e Zd Zdd ZdS )NoMaskTestSetupc                 O   s>   || j g|R i |}|| jg|R i |}t|| d S N)r   r   r   r   r   r   r   r(   r   r   r   r   r    ;   s    zNoMaskTestSetup.checkNr+   r,   r-   r    r   r   r   r   r.   :   s   r.   c                   @   s   e Zd Zdd ZdS )InvariantMaskTestSetupc                 O   sN   || j g|R i |}|| jg|R i |}t|j| t|j| j d S r/   )r   r   r   unmaskedr   r   r0   r   r   r   r    B   s    zInvariantMaskTestSetup.checkNr1   r   r   r   r   r2   A   s   r2   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestShapeInformationc                 C   s   t | jdksJ d S )N      )npshaper   r   r   r   r   
test_shapeJ   s    zTestShapeInformation.test_shapec                 C   s   t | jdksJ d S )N   )r8   sizer   r:   r   r   r   	test_sizeM   s    zTestShapeInformation.test_sizec                 C   s   t | jdksJ d S Nr6   )r8   ndimr   r:   r   r   r   	test_ndimP   s    zTestShapeInformation.test_ndimN)r+   r,   r-   r;   r>   rA   r   r   r   r   r4   I   s   r4   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#S )$TestShapeManipulationc                 C   s   |  tjd d S )N)r<   r   )r    r8   reshaper:   r   r   r   test_reshapeW   s    z"TestShapeManipulation.test_reshapec                 C   s   |  tj d S r/   )r    r8   ravelr:   r   r   r   
test_ravelZ   s    z TestShapeManipulation.test_ravelc                 C   s   |  tjdd d S Nr   r   )r    r8   Zmoveaxisr:   r   r   r   test_moveaxis]   s    z#TestShapeManipulation.test_moveaxisc                 C   s   |  tjdd d S )Nr   r6   )r    r8   Zrollaxisr:   r   r   r   test_rollaxis`   s    z#TestShapeManipulation.test_rollaxisc                 C   s   |  tjdd d S rG   )r    r8   Zswapaxesr:   r   r   r   test_swapaxesc   s    z#TestShapeManipulation.test_swapaxesc                 C   s   |  tj d S r/   )r    r8   Z	transposer:   r   r   r   test_transposef   s    z$TestShapeManipulation.test_transposec                 C   sf   |  tj t| jd | jd \}}|j|jj  kr\|j  kr\|jj  kr\dksbn J d S )Nr   r   )r    r8   Z
atleast_1dr!   mcr9   r   r   r(   Zsor   r   r   test_atleast_1di   s    z%TestShapeManipulation.test_atleast_1dc                 C   sf   |  tj t| jd | jd \}}|j|jj  kr\|j  kr\|jj  kr\dksbn J d S )Nr   r   r   )r    r8   Z
atleast_2dr!   rM   r9   r   rN   r   r   r   test_atleast_2dn   s    z%TestShapeManipulation.test_atleast_2dc                 C   sf   |  tj t| jd | jd \}}|j|jj  kr\|j  kr\|jj  kr\dksbn J d S )Nr   r   r   r   )r    r8   Z
atleast_3dr!   rM   r9   r   rN   r   r   r   test_atleast_3ds   s    z%TestShapeManipulation.test_atleast_3dc                 C   s   |  tjd d S Nr   )r    r8   expand_dimsr:   r   r   r   test_expand_dimsx   s    z&TestShapeManipulation.test_expand_dimsc                 C   sT   t | j}|j|jj  kr&dks,n J t|j| j  t|j| j  d S )N)r6   )	r8   ZsqueezerM   r9   r   r   r3   cmask_cr   r(   r   r   r   test_squeeze{   s     z"TestShapeManipulation.test_squeezec                 C   s   |  tj d S r/   )r    r8   Zflipr:   r   r   r   	test_flip   s    zTestShapeManipulation.test_flipc                 C   s   |  tj d S r/   )r    r8   Zfliplrr:   r   r   r   test_fliplr   s    z!TestShapeManipulation.test_fliplrc                 C   s   |  tj d S r/   )r    r8   Zflipudr:   r   r   r   test_flipud   s    z!TestShapeManipulation.test_flipudc                 C   s   |  tj d S r/   )r    r8   Zrot90r:   r   r   r   
test_rot90   s    z TestShapeManipulation.test_rot90c                 C   s$   |  tjd | j tjddd d S )N)r7   r6   r7   FZsubok)r    r8   broadcast_tor:   r   r   r   test_broadcast_to   s    z'TestShapeManipulation.test_broadcast_toc                 C   s    |  tj | j tjdd d S )NFr_   )r*   r8   broadcast_arraysr:   r   r   r   test_broadcast_arrays   s    z+TestShapeManipulation.test_broadcast_arraysN)r+   r,   r-   rD   rF   rH   rI   rJ   rK   rO   rQ   rS   rV   rZ   r[   r\   r]   r^   ra   rc   r   r   r   r   rB   T   s"   rB   c                   @   sp   e Zd ZejdddZdd Zdd Zdd	 Zd
d Z	dd Z
ejddd Zdd Zdd Zdd ZdS )TestArgFunctions
fill_valuec                O   sJ   || j g|R i |}| j j|d}||g|R i |}t|| d S Nre   )r   filledr   )r   functionrf   r   r   r(   Za_filledr   r   r   r   r       s    zTestArgFunctions.checkc                 C   s   | j tjtjd d S rg   )r    r8   Zargmininfr:   r   r   r   test_argmin   s    zTestArgFunctions.test_argminc                 C   s   | j tjtj d d S rg   )r    r8   argmaxrj   r:   r   r   r   test_argmax   s    zTestArgFunctions.test_argmaxc                 C   s   | j tjtjd d S rg   )r    r8   Zargsortnanr:   r   r   r   test_argsort   s    zTestArgFunctions.test_argsortc                 C   s   | j tjtjd d S rg   )r    r8   lexsortrn   r:   r   r   r   test_lexsort   s    zTestArgFunctions.test_lexsortc                 C   s   | j tjdd d S N        re   )r    r8   nonzeror:   r   r   r   test_nonzero   s    zTestArgFunctions.test_nonzeroz1ignore:Calling nonzero on 0d arrays is deprecatedc                 C   s|   t ddd }t|dks J t|d td d  t ddd }t|dks\J t|d td d  d S )Nr   Fr   r   r   T)r   rt   lenr   r8   oneszeros)r   Zres1Zres2r   r   r   test_nonzero_0d   s    z TestArgFunctions.test_nonzero_0dc                 C   s   | j tjdd d S rr   )r    r8   Zargwherer:   r   r   r   test_argwhere   s    zTestArgFunctions.test_argwherec                 C   s   | j tjdtjd d S )Nr6   re   )r    r8   Zargpartitionrj   r:   r   r   r   test_argpartition   s    z"TestArgFunctions.test_argpartitionc                 C   s   | j tjdd d S rr   )r    r8   Zflatnonzeror:   r   r   r   test_flatnonzero   s    z!TestArgFunctions.test_flatnonzeroN)r+   r,   r-   r8   rn   r    rk   rm   ro   rq   ru   pytestmarkfilterwarningsry   rz   r{   r|   r   r   r   r   rd      s   

rd   c                   @   s\   e Zd Zdd Zdd Zejdddd Zejd	g d
dd Z	dd Z
dd ZdS )TestAlongAxisc                 C   sl   t jt j| jdddd}t j| j|dd}t j| j|dd}t j| j|dd}t|j| t|j	| d S Nr   axis)
r8   rU   rl   r   Ztake_along_axisr   r   r   r3   r   )r   indicesr   r   expected_maskr   r   r   test_take_along_axis   s    z"TestAlongAxis.test_take_along_axisc                 C   s   | j  }tjtj| j dddd}tj||ddd | j }tj||ddd t|j| t|j	| j
 tj||dtj jd t|j| | j
 }tj||ddd t|j	| d S )Nr   r   )r   valuesT)r   copyr8   rU   rl   Zput_along_axisr   r   r3   r   r   masked)r   r   r   r   r   r   r   r   test_put_along_axis   s    


z!TestAlongAxis.test_put_along_axisr   )r   r   c                 C   sB   t t j|| j}t t j|| j}t|j| t|j| j d S r/   )	r8   Zapply_along_axissquarer   r   r   r3   r   r   )r   r   r   r   r   r   r   test_apply_along_axis   s    z#TestAlongAxis.test_apply_along_axisaxes)rL   r   )r   r   c                 C   sj   dd }t || j|}| j}t|tr,|n|fD ]}|d j|dd}q2t|j|j t|j|j d S )Nc                 S   s   t t | |S r/   )r8   meanr   r)   r   r   r   r   ri      s    z4TestAlongAxis.test_apply_over_axes.<locals>.functionr6   T)Zkeepdims)	r8   apply_over_axesr   r$   r%   r   r   r3   r   )r   r   ri   r   r   r   r   r   r   test_apply_over_axes   s    z"TestAlongAxis.test_apply_over_axesc                 C   s.   t t j| jd}| jjdd}t|| d S r   )r8   r   cumsumr   r   r   r   r   r   r   r   !test_apply_over_axes_no_reduction   s    z/TestAlongAxis.test_apply_over_axes_no_reductionc                 C   sF   t jtdd$ tdd | jd W d    n1 s80    Y  d S )Nznot.*correct shapematchc                 S   s   | dt jf S )N.)r8   newaxisr   r   r   r   <lambda>       z?TestAlongAxis.test_apply_over_axes_wrong_size.<locals>.<lambda>r   )r}   raises
ValueErrorr8   r   r   r:   r   r   r   test_apply_over_axes_wrong_size   s    z-TestAlongAxis.test_apply_over_axes_wrong_sizeN)r+   r,   r-   r   r   r}   r~   parametrizer   r   r   r   r   r   r   r   r      s   

r   c                   @   s0   e Zd Zedd Zdd Zdd Zdd Zd	S )
TestIndicesFromc                 C   s8   t ddd| _t jdtd| _t| j| j| _d S )N	   r7   dtype)	r8   arangerC   r   Zeyeboolr   r   r   r:   r   r   r   setup_class   s    zTestIndicesFrom.setup_classc                 C   s   |  tj d S r/   )r    r8   diag_indices_fromr:   r   r   r   test_diag_indices_from   s    z&TestIndicesFrom.test_diag_indices_fromc                 C   s   |  tj d S r/   )r    r8   Ztriu_indices_fromr:   r   r   r   test_triu_indices_from   s    z&TestIndicesFrom.test_triu_indices_fromc                 C   s   |  tj d S r/   )r    r8   tril_indices_fromr:   r   r   r   test_tril_indices_from   s    z&TestIndicesFrom.test_tril_indices_fromN)r+   r,   r-   classmethodr   r   r   r   r   r   r   r   r      s
   
r   c                   @   s(   e Zd Zedd Zdd Zdd ZdS )TestRealImagc                 C   s6   t ddg| _t ddg| _t| j| jd| _d S )N      ?       @y      @      @TFr   )r8   arrayr   r   r   r   r:   r   r   r   r     s    zTestRealImag.setup_classc                 C   s   |  tj d S r/   )r    r8   realr:   r   r   r   	test_real  s    zTestRealImag.test_realc                 C   s   |  tj d S r/   )r    r8   imagr:   r   r   r   	test_imag  s    zTestRealImag.test_imagN)r+   r,   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S )TestCopyAndCreationc                 C   s*   |  tj tj| jd}t|| j d S N)r   )r    r8   r   r   r   )r   r   r   r   r   	test_copy  s    zTestCopyAndCreation.test_copyc                 C   s*   |  tj tj| jd}t|| j d S r   )r    r8   Zasfarrayr   r   )r   Zfarrayr   r   r   test_asfarray  s    z!TestCopyAndCreation.test_asfarrayN)r+   r,   r-   r   r   r   r   r   r   r     s   r   c                   @   sL   e Zd Zdd Zdd Zdd Zejdde	dd	d
e
jjgdd ZdS )TestArrayCreationc                 C   s   t | j}|jdksJ t|ts(J t|t js8J t j| jd}|jdksTJ t|tsbJ t|t jsrJ t j| jdd}t|tu sJ d S )Nr5   )Z	prototypeFr_   )	r8   
empty_liker   r9   r$   r   Zndarraytyper   )r   r(   o2Zo3r   r   r   test_empty_like   s    z!TestArrayCreation.test_empty_likec                 C   sn   t | j}t|jt | j t|jt | j t j| jd}t|jt | j t|jt | j d S r   )r8   
zeros_liker   r   r3   r   r   r   r   r(   r   r   r   r   test_zeros_like,  s    z!TestArrayCreation.test_zeros_likec                 C   sn   t | j}t|jt | j t|jt | j t j| jd}t|jt | j t|jt | j d S r   )	r8   Z	ones_liker   r   r3   r   r   r   r   r   r   r   r   test_ones_like4  s    z TestArrayCreation.test_ones_likevalue      ?Tr   c                 C   s`   t | j|}|t jju r(t|jd}ntt | j}||d< t|j|j t|j	|j	 d S )NT.)
r8   	full_liker   r   r   r3   r   r   r   r   )r   r   r(   r   r   r   r   test_full_like<  s    z TestArrayCreation.test_full_likeN)r+   r,   r-   r   r   r   r}   r~   r   r   r8   r   r   r   r   r   r   r   r     s
   r   c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestAccessingPartsc                 C   s   |  tj d S r/   )r    r8   diagr:   r   r   r   	test_diagI  s    zTestAccessingParts.test_diagc                 C   sH   | j  }t|}t|jt| j  t|jt| j  d S r/   )	r   rE   r8   r   r   r3   r   r   r   r   r   r(   r   r   r   test_diag_1d_inputL  s    

z%TestAccessingParts.test_diag_1d_inputc                 C   s   |  tj d S r/   )r    r8   Zdiagonalr:   r   r   r   test_diagonalR  s    z TestAccessingParts.test_diagonalc                 C   s   |  tj d S r/   )r    r8   Zdiagflatr:   r   r   r   test_diagflatU  s    z TestAccessingParts.test_diagflatc                 C   s^   t jddg| jdd}t jddg| jdd}t jddg| jdd}t|j| t|j| d S )NTFr   r   )r8   compressr   r   r   r   r3   r   r   r(   r   r   r   r   r   test_compressX  s
    z TestAccessingParts.test_compressc                 C   sR   t g d| j}t g d| j}t g d| j}t|j| t|j| d S )NTFT)r8   extractr   r   r   r   r3   r   r   r   r   r   test_extract_  s
    zTestAccessingParts.test_extractc                 C   s.   |  tjtddd |  tjddgd d S )Nr   r6   r   )r    r8   deleteslicer:   r   r   r   test_deletef  s    zTestAccessingParts.test_deletec                 C   s$   |  tjd | j tjddd d S )Nr   r   r   )r    r8   Zrollr:   r   r   r   	test_rollj  s    zTestAccessingParts.test_rollc                 C   s(   | j tjddgdd |  tjd d S )Nr   r   r   )r    r8   Ztaker:   r   r   r   	test_taken  s    zTestAccessingParts.test_takeN)r+   r,   r-   r   r   r   r   r   r   r   r   r   r   r   r   r   r   H  s   r   c                   @   sJ   e Zd Zdd Zdd Zdd Zdd Zej	d	d
e
jjgdd ZdS )TestSettingPartsc                 C   s  | j  }tddgddg}t|ddg| | j }t|ddgddg | j }t|ddgddg t|j| t|j	| t
t& t|tddg| W d    n1 s0    Y  t
t( t| j ddg| W d    n1 s0    Y  d S )N2      FTr   r6   )r   r   r   r8   Zputr   r   r   r3   r   r}   r   	TypeError)r   r   vr   r   r   r   r   test_putt  s    


4zTestSettingParts.test_putc                 C   s   | j  }g d}ttdddg dd}t||| | j }t|||j | j }t|||j	 t
|j| t
|j	| tt$ t| j || W d    n1 s0    Y  d S )NTFFFTFd     FTTTFFr   )r   flattenr   r8   r   Zputmaskr   r3   r   r   r   r}   r   r   r   r   r   r   r   r   r   r   r   test_putmask  s    


zTestSettingParts.test_putmaskc                 C   s   | j  }g d}tddgddgd}t||| | j }t|||j | j }t|||j t	|j| t	|j| t
t$ t| j || W d    n1 s0    Y  d S )Nr   r      FTr   )r   r   r   r8   Zplacer   r3   r   r   r   r}   r   r   r   r   r   r   
test_place  s    


zTestSettingParts.test_placec                 C   s   | j  }g d}ttdddg dd}tj|||d | j }tj||j|d | j }tj||j	|d t
|j| t
|j	| tt& tj| j ||d W d    n1 s0    Y  d S )Nr   r   r   r   r   )where)r   r   r   r8   r   Zcopytor   r3   r   r   r   r}   r   r   r   r   r   r   test_copyto  s    


zTestSettingParts.test_copytor         ?c                 C   s\   | j d dd df  }t|| | }||t|< t|j|j t|j|j d S r?   )r   r   r8   Zfill_diagonalr   r   r3   r   )r   r   r   r   r   r   r   test_fill_diagonal  s    z#TestSettingParts.test_fill_diagonalN)r+   r,   r-   r   r   r   r   r}   r~   r   r8   r   r   r   r   r   r   r   r   s  s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )
TestRepeatc                 C   s   |  tjd d S r?   )r    r8   Ztiler:   r   r   r   	test_tile  s    zTestRepeat.test_tilec                 C   s   |  tjd d S r?   )r    r8   repeatr:   r   r   r   test_repeat  s    zTestRepeat.test_repeatc                 C   s   |  tjd d S )N)   r   )r    r8   Zresizer:   r   r   r   test_resize  s    zTestRepeat.test_resizeN)r+   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d Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TestConcatenatec           
      O   s   | d| j| jg}dd |D }dd |D }||g|R i |}||g|R i |}||g|R i |}	t|j| t|j|	 d S )Nma_listc                 S   s   g | ]}t |jqS r   )r   r3   .0r   r   r   r   
<listcomp>  r   z)TestConcatenate.check.<locals>.<listcomp>c                 S   s   g | ]}t |jqS r   )r   r   r   r   r   r   r     r   )popr   r   r3   r   )
r   r   r   r   r   a_listZm_listr(   r   r   r   r   r   r      s    zTestConcatenate.checkc                 C   s   |  tj | j tjdd | j tj| j| jgd ttd}tj| j| jg|d}||u sdJ t| j| jg}t| j| jg}t|j	| t|j
| tt, tj| j| jgtdd W d    n1 s0    Y  d S )Nr   r   )r   )r   r7   r   )r    r8   concatenater   r   r   emptyr   r   r3   r   r}   r   r   )r   r   resultr   r   r   r   r   test_concatenate  s    z TestConcatenate.test_concatenatec                 C   s   |  tj d S r/   )r    r8   stackr:   r   r   r   
test_stack  s    zTestConcatenate.test_stackc                 C   s   |  tj d S r/   )r    r8   Zcolumn_stackr:   r   r   r   test_column_stack  s    z!TestConcatenate.test_column_stackc                 C   s   |  tj d S r/   )r    r8   Zhstackr:   r   r   r   test_hstack  s    zTestConcatenate.test_hstackc                 C   s   |  tj d S r/   )r    r8   Zvstackr:   r   r   r   test_vstack  s    zTestConcatenate.test_vstackc                 C   s   |  tj d S r/   )r    r8   Zdstackr:   r   r   r   test_dstack  s    zTestConcatenate.test_dstackc                 C   s|   |  tj tdtddgtddtddgg}tddgddgg}tddgddgg}t|j| t|j| d S )Nrs         ?Tr   Fr6   r   )r    r8   blockr   r   r   r3   r   r   r   r   r   r   r   r   
test_block  s    zTestConcatenate.test_blockc                 C   sX   t j| j| jdd}t j| j| jdd}t j| j| jdd}t|j	| t|j
| d S Nr   r   )r8   appendr   rM   r   rW   r   rX   r   r3   r   r  r   r   r   test_append   s
    zTestConcatenate.test_appendc                 C   s   d}t ddgddgd}t| j ||}t| j |ddg}t| j |ddg}t|j| t|j	| t
t$ t| j || W d    n1 s0    Y  t
t( t| j t || W d    n1 s0    Y  d S )NrP   g      I@g      9@TFr   )r   r8   insertr   r   r   r   r   r3   r   r}   r   r   )r   objr   r   r   r   r   r   r   test_insert  s    2zTestConcatenate.test_insertN)r+   r,   r-   r    r   r   r   r   r   r   r  r  r
  r   r   r   r   r     s   

r   c                   @   sH   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dS )	TestSplitc                 C   s^   t dddd| _t j| jjtd| _d| jd< d| jd< d| jd< t| j| jd	| _	d S )
Ng      K@r7   r<   r   TrR   )r   r   r   )r   r6      r   )
r8   r   rC   r   rx   r9   r   r   r   r   r:   r   r   r   r     s    


zTestSplit.setup_classc           
      O   s   || j g|R i |}|| jg|R i |}|| jg|R i |}t|t|ks\J t|||D ]"\}}}	t|j| t|j|	 qhd S r/   )r   r   r   rv   r'   r   r3   r   )
r   r   r   r   r   r   r   r(   r)   Zxmr   r   r   r    !  s    zTestSplit.checkc                 C   s   |  tjdg d S rT   )r    r8   splitr:   r   r   r   
test_split*  s    zTestSplit.test_splitc                 C   s   |  tjd d S r?   )r    r8   Zarray_splitr:   r   r   r   test_array_split-  s    zTestSplit.test_array_splitc                 C   s   |  tjddg d S )Nr   r   )r    r8   Zhsplitr:   r   r   r   test_hsplit0  s    zTestSplit.test_hsplitc                 C   s   |  tjdg d S rT   )r    r8   Zvsplitr:   r   r   r   test_vsplit3  s    zTestSplit.test_vsplitc                 C   s   |  tjdg d S rT   )r    r8   Zdsplitr:   r   r   r   test_dsplit6  s    zTestSplit.test_dsplitN)r+   r,   r-   r   r   r    r  r  r  r  r  r   r   r   r   r    s   
	r  c                   @   s   e Zd ZddddZdd Zdd Zd	d
 Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* ZdS )+TestMethodLikesNmethodc                O   sJ   |d u r|j }|| jg|R i |}t| j||i |}t|| d S r/   )r+   r   getattrr   )r   ri   r  r   r   r(   r)   r   r   r   r    ;  s
    zTestMethodLikes.checkc                 C   s   | j tjdd d S )Nmaxr  )r    r8   Zamaxr:   r   r   r   	test_amaxC  s    zTestMethodLikes.test_amaxc                 C   s   | j tjdd d S )Nminr  )r    r8   Zaminr:   r   r   r   	test_aminF  s    zTestMethodLikes.test_aminc                 C   s   |  tj d S r/   )r    r8   sumr:   r   r   r   test_sumI  s    zTestMethodLikes.test_sumc                 C   s   |  tj d S r/   )r    r8   r   r:   r   r   r   test_cumsumL  s    zTestMethodLikes.test_cumsumc                 C   s   |  tj d S r/   )r    r8   anyr:   r   r   r   test_anyO  s    zTestMethodLikes.test_anyc                 C   s   |  tj d S r/   )r    r8   allr:   r   r   r   test_allR  s    zTestMethodLikes.test_allc                 C   s   | j tjdd d S )Nr  r  )r    r8   Zsometruer:   r   r   r   test_sometrueU  s    zTestMethodLikes.test_sometruec                 C   s   | j tjdd d S )Nr   r  )r    r8   Zalltruer:   r   r   r   test_alltrueX  s    zTestMethodLikes.test_alltruec                 C   s   |  tj d S r/   )r    r8   prodr:   r   r   r   	test_prod[  s    zTestMethodLikes.test_prodc                 C   s   | j tjdd d S )Nr$  r  )r    r8   productr:   r   r   r   test_product^  s    zTestMethodLikes.test_productc                 C   s   |  tj d S r/   )r    r8   cumprodr:   r   r   r   test_cumproda  s    zTestMethodLikes.test_cumprodc                 C   s   | j tjdd d S )Nr(  r  )r    r8   Z
cumproductr:   r   r   r   test_cumproductd  s    zTestMethodLikes.test_cumproductc                 C   s    |  tj | j tjdd d S r   )r    r8   Zptpr:   r   r   r   test_ptpg  s    zTestMethodLikes.test_ptpc                 C   s   | j tjdd d S Nroundr  )r    r8   Zround_r:   r   r   r   test_round_k  s    zTestMethodLikes.test_round_c                 C   s   | j tjdd d S r,  )r    r8   Zaroundr:   r   r   r   test_aroundn  s    zTestMethodLikes.test_aroundc                 C   s(   |  tjdd |  tj| j| j d S )N       @      @)r    r8   Zclipr!   rM   r:   r   r   r   	test_clipq  s    zTestMethodLikes.test_clipc                 C   s   |  tj d S r/   )r    r8   r   r:   r   r   r   	test_meanu  s    zTestMethodLikes.test_meanc                 C   s   |  tj d S r/   )r    r8   Zstdr:   r   r   r   test_stdx  s    zTestMethodLikes.test_stdc                 C   s   |  tj d S r/   )r    r8   varr:   r   r   r   test_var{  s    zTestMethodLikes.test_var)r+   r,   r-   r    r  r  r  r  r  r!  r"  r#  r%  r'  r)  r*  r+  r.  r/  r2  r3  r4  r6  r   r   r   r   r  :  s(   r  c                	   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zejddejjedddgdd Zdd Zdd Zdd Zd d! Zd"d# Zd$S )%TestUfuncLikec                 C   s   |  tj d S r/   )r    r8   Zfixr:   r   r   r   test_fix  s    zTestUfuncLike.test_fixc                 C   sZ   t g d}t g d}t||d}t |}t |j}t|j| t|j| d S N)y      ?        y              ?      ?      ?y                )TFTFr   )r8   r   r   Zangler3   r   r   r   r   r   r   r   r   r   r   r   
test_angle  s    
zTestUfuncLike.test_anglec                 C   s   |  tj d S r/   )r    r8   Zi0r:   r   r   r   test_i0  s    zTestUfuncLike.test_i0c                 C   s   |  tj d S r/   )r    r8   Zsincr:   r   r   r   	test_sinc  s    zTestUfuncLike.test_sincc           	      C   s   g d}t || jd}t || jd}t || jd}t|j| t|j| t|g d}t || jd}t || jd}t || jd|jB }t|j| t|j| d S )Nr   g     @@FTFF)	r8   r   r   r   r   r   r3   r   r   )	r   r   r   r   r   Zmask2out2Z	expected2Zexpected_mask2r   r   r   
test_where  s    zTestUfuncLike.test_wherec                 C   sX   t tdg dd}t|}| }t|tr>t|dksBJ t|d |d  d S )Nr7   r?  r   r   r   )	r   r8   r   r   rt   r$   r%   rv   r   )r   mr   r   r   r   r   test_where_single_arg  s
    
z#TestUfuncLike.test_where_single_argc                 C   sD   t jtdd" tg d| j W d    n1 s60    Y  d S )Nzeither both or neitherr   r?  )r}   r   r   r8   r   r   r:   r   r   r   test_where_wrong_number_of_arg  s    z,TestUfuncLike.test_where_wrong_number_of_argc                 C   s   t ddgd}t || j| jf}t || j| jf}t || j| j	f}t
|j| t
|j| t |}t j|| j| jf|d}||u sJ t
|| tt. t j|| j| jft |d W d    n1 s0    Y  d S )Nr   r   r6   r   r   )r8   r   rC   chooser   r!   r   r"   r   r#   r   r3   r   r   r}   r   r   )r   r   r   r   r   r   result2r   r   r   test_choose  s    

zTestUfuncLike.test_choosec                 C   s   t tddgddgdd}|| j| jf}t|d| j| j	f}t|d| j
| jf|jB }t|j| t|j| tt$ |j| j| jf W d    n1 s0    Y  d S )Nr   r   TFr   rE  r   )r   r8   r   rC   rF  r   r!   rh   r   r"   r   r#   r   r   r3   r}   r   r   )r   r   r   r   r   r   r   r   test_choose_masked  s      z TestUfuncLike.test_choose_maskeddefaultg      r   Tr   c                 C   s   | j | j| j  }}}tj|dk |dkg||d g|d}tj|dk |dkg||d g|tjjurfdndd}tj|dk |dkg||gt|ddd}t|j| t|j	| d S )	N      ?g      @r   )rJ  r   r   r   F)
r   r   r   r8   Zselectr   r  r   r3   r   )r   rJ  r   r   r   r   r   r   r   r   r   test_select  s    $
zTestUfuncLike.test_selectc                 C   sX   t g d}t g d}t||d}t |}t |}t|j| t|j| d S r9  )r8   r   r   Zreal_if_closer   r3   r   r;  r   r   r   test_real_if_close  s    

z TestUfuncLike.test_real_if_closec                 C   s   |  tj d S r/   )r    r8   Ztrilr:   r   r   r   	test_tril  s    zTestUfuncLike.test_trilc                 C   s   |  tj d S r/   )r    r8   Ztriur:   r   r   r   	test_triu  s    zTestUfuncLike.test_triuc                 C   s   |  tj d S r/   )r    r8   Zunwrapr:   r   r   r   test_unwrap  s    zTestUfuncLike.test_unwrapc                 C   sZ   |  tj ttjdgddgd}tj|dd}t|tddgddgd ||u sVJ d S )Nr  TFr   )r   rs   )r    r8   Z
nan_to_numr   rn   r   r   r   r   r   test_nan_to_num  s
    zTestUfuncLike.test_nan_to_numN)r+   r,   r-   r8  r<  r=  r>  rA  rC  rD  rH  rI  r}   r~   r   r8   r   r   r   rL  rM  rN  rO  rP  rQ  r   r   r   r   r7    s    	

	r7  c                   @   s`   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd ZdS )TestUfuncLikeTestsc                 C   s   t t j t j
 t jddggd | _t dgd dgd dg g| _t| j| jd| _t d	gd
gg| _t dgdgg| _	t| j| j	d| _
d S )N      @r1  r6   Fr  Tr   r   g9m4 @g):@)r8   r   rj   rn   r   r   r   r   r"   r#   r!   r:   r   r   r   r     s    &"zTestUfuncLikeTests.setup_classc                 C   sf   || j }|| j}t|tu s$J |jjdks4J t|j| t|j| j	 t
|j| j	rbJ d S )Nr"   )r   r   r   r   r   kindr   r3   r   r   r8   may_share_memory)r   r   r   r   r   r   r   r      s    

zTestUfuncLikeTests.checkc                 C   s   |  tj d S r/   )r    r8   Zisposinfr:   r   r   r   test_isposinf  s    z TestUfuncLikeTests.test_isposinfc                 C   s   |  tj d S r/   )r    r8   Zisneginfr:   r   r   r   test_isneginf  s    z TestUfuncLikeTests.test_isneginfc                 C   sX   |  tj ttdgdd}|js,|jr0J ttdgdd}|jsP|jsTJ d S Nr:  Fr   T)r    r8   Zisrealr   r3   r   rY   r   r   r   test_isreal  s
    zTestUfuncLikeTests.test_isrealc                 C   sX   |  tj ttdgdd}|jr,|jr0J ttdgdd}|jrP|jsTJ d S rX  )r    r8   Z	iscomplexr   r3   r   rY   r   r   r   test_iscomplex  s
    z!TestUfuncLikeTests.test_iscomplexc                 C   sP   t j| j| jdd}t j| j| jdd}| j| jB }t|j| t|j| d S Ng{Gz?)Zatol)	r8   iscloser   r!   r   r#   r   r3   r   r  r   r   r   test_isclose  s
    zTestUfuncLikeTests.test_isclosec                 C   sF   t j| j| jdd}t j| j| jdd| j| jB   }t|| d S r[  )	r8   Zallcloser   r!   r\  r   r#   r   r   r   r   r   r   test_allclose  s    
z TestUfuncLikeTests.test_allclosec                 C   s   t | j| jrJ t | j| jr(J ts\t j| j| jddsDJ t j| j| jdds\J t | j| jrpJ | j }| jt | jO  _t || jsJ d S )NT)Z	equal_nan)	r8   Zarray_equalr   r   r   r!   r   r   isnan)r   ma2r   r   r   test_array_equal   s    
z#TestUfuncLikeTests.test_array_equalc                 C   s`   t | j| jsJ t | j| js(J t | j| jr<J t | jt | j| jgs\J d S r/   )r8   Zarray_equivr!   r"   r   r   r:   r   r   r   test_array_equiv+  s    z#TestUfuncLikeTests.test_array_equivN)r+   r,   r-   r   r   r    rV  rW  rY  rZ  r]  r^  ra  rb  r   r   r   r   rR    s   
	rR  c                   @   s   e Zd Zdd Zdd ZdS )TestOuterLikeFunctionsc                 C   s   t | j| j}t | j | j }t j| j | j	 }t
|j| t
|j| t |}t j| j| j|d}||u sJ ||usJ t|| t |j}tt$ t j| j| j|d W d    n1 s0    Y  d S )Nr   )r8   outerr   r!   r   rE   r"   
logical_orr   r#   r   r3   r   r   r   r}   r   r   )r   r   expected_datar   r   rG  r@  r   r   r   
test_outer3  s    

z!TestOuterLikeFunctions.test_outerc                 C   sV   t | j| j}t | j| j}t j| j| j	
|j}t|j| t|j| d S r/   )r8   Zkronr   r!   r   r"   re  rd  r   r#   rC   r9   r   r3   r   )r   r   rf  r   r   r   r   	test_kronE  s    
z TestOuterLikeFunctions.test_kronN)r+   r,   r-   rg  rh  r   r   r   r   rc  2  s   rc  c                   @   s6   e Zd Zdd Zdd Zejdg ddd Zd	S )
TestReductionLikeFunctionsc                 C   sr   t | j}t|| j  t j| j| jdd}t j| j| jdd}| j| j	B 
d}t|j| t|j| d S )Nr   )Zweightsr   )r8   Zaverager   r   r   r!   r   r"   r   r#   r  r   r3   r   r   r   r   r   test_averageO  s    z'TestReductionLikeFunctions.test_averagec                 C   sF   t | j}t | j}t | jt}t|j| t|j	| d S r/   )
r8   Ztracer   r   r   astyper   r   r3   r   r   r   r   r   
test_traceY  s
    z%TestReductionLikeFunctions.test_tracer   )r   r   Nc                 C   s4   t j| j|d}t j| jd|d}t|| d S Nr   r   )r8   Zcount_nonzeror   rh   r   )r   r   r(   r   r   r   r   test_count_nonzero`  s    z-TestReductionLikeFunctions.test_count_nonzeroN)	r+   r,   r-   rj  rl  r}   r~   r   rn  r   r   r   r   ri  N  s   
ri  zignore:all-nanc                   @   sv   e Zd Zedd Zdd Zejdg ddd Z	ejdg dd	d
 Z
dd Zejdg ddd ZdS )TestPartitionLikeFunctionsc                 C   sL   t ddd| _t | jt| _d| jt | j< t| j| jd| _	d S )Ng      B@r<   Tr   )
r8   r   rC   r   r   r   r   r   r   r   r:   r   r   r   r   i  s    z&TestPartitionLikeFunctions.setup_classc           
      O   s  || j g|R i |}ttd|j }| j tj}||g|R i |}t|tj| t|jt| |	ddsd S t
|}|| j g|R d|i|}	|	|u sJ t|	| tt2 || j g|R dt
|i| W d    n1 s0    Y  d S )Nrn   r   r   r   )r   r  r8   r+   rh   rn   r   r   r_  getr   r   r}   r   r   )
r   ri   r   r   r(   ZnanfuncZ	nanfilledr   r   r   r   r   r   r    q  s    

z TestPartitionLikeFunctions.checkr   rG   c                 C   s   | j tj|d d S )Nr   )r    r8   Zmedianr   r   r   r   r   test_median  s    z&TestPartitionLikeFunctions.test_medianc                 C   s   | j tjddg|d d S )Nr   r   qr   )r    r8   quantilerq  r   r   r   test_quantile  s    z(TestPartitionLikeFunctions.test_quantilec                 C   sB   t jtdd  tj| jdd W d    n1 s40    Y  d S )Nzmust be in the ranger   rK  rt  )r}   r   r   r8   ru  r   r:   r   r   r   test_quantile_out_of_range  s    z5TestPartitionLikeFunctions.test_quantile_out_of_rangec                 C   s   | j tjd|d d S )Nr   rs  )r    r8   Z
percentilerq  r   r   r   test_percentile  s    z*TestPartitionLikeFunctions.test_percentileN)r+   r,   r-   r   r   r    r}   r~   r   rr  rv  rx  ry  r   r   r   r   ro  g  s   


ro  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestIntDiffFunctionsc                 C   s`   t | j}t | j}| jd d dd f | jd d d df B }t|j| t|j| d S )Nr   r   )r8   diffr   r   r   r   r3   r   r  r   r   r   	test_diff  s
    ,zTestIntDiffFunctions.test_diffc                 C   s   t j| jtddddd}t j| jddd}t jt dt| jt 	dtgdd}|d d dd f |d d d df B }t
|j| t
|j| d S )	Nr   Tr   r   )Zprependr  r  rE  r   )r8   r{  r   r   r   r   rw   r   r   rx   r   r3   r   )r   r   r   r   r   r   r   r   test_diff_prepend_append  s    
(z-TestIntDiffFunctions.test_diff_prepend_appendc                 C   sL   | j  }d|jd< t|}t|jt| j t|jtddg d S )NFr   T)	r   r   r   r8   Ztrapzr   r3   r   r   )r   r   r   r   r   r   
test_trapz  s
    


zTestIntDiffFunctions.test_trapzc                 C   s   t | j}t | j}| jdd  | jd d B jdddt j| jd d df | jd d df B | jd d df | jd d df B | jd d df | jd d df B gddg}t|||D ]"\}}}t|j	| t|j
| qd S )Nr   r   r6   r   r   )r8   Zgradientr   r   r   r   r   r'   r   r3   r   )r   r   r   r   r(   r)   rB  r   r   r   test_gradient  s    $"""z"TestIntDiffFunctions.test_gradientN)r+   r,   r-   r|  r}  r~  r  r   r   r   r   rz    s   
rz  c                   @   s8   e Zd Zedd Zdd Zdd Zdd Zd	d
 ZdS )TestSpaceFunctionsc                 C   sv   t dddd| _t g dg dg| _t| j| jd| _t g d| _t g d| _	t| j| j	d| _
d S )	Nr  g      @r6   r7   r?  FTFr   )      @      $@rS  )r8   r   rC   r   r   r   r   r   r"   r#   r!   r:   r   r   r   r     s    
zTestSpaceFunctions.setup_classc                 O   sx   || j | jd}|| j| jd}t| j| jB |j	 }| j|d< t
s\|tju r\| j|d< t|j| t|j| d S )Nr  r   r   )r   r!   r   r"   r8   r`   r   r#   r9   r   r   	geomspacer   r3   r   )r   ri   r   r   r   r   r   r   r   r   r      s    

zTestSpaceFunctions.checkc                 C   s   |  tjd d S Nr  )r    r8   Zlinspacer:   r   r   r   test_linspace  s    z TestSpaceFunctions.test_linspacec                 C   s   |  tjd d S )N
   )r    r8   Zlogspacer:   r   r   r   test_logspace  s    z TestSpaceFunctions.test_logspacec                 C   s   |  tjd d S r  )r    r8   r  r:   r   r   r   test_geomspace  s    z!TestSpaceFunctions.test_geomspaceN)	r+   r,   r-   r   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S )TestInterpolationFunctionsc           
      C   s   t d}t g d}t g d}t||d}t ddg}t ddg}t||d}t |||}t ||| || }	t|j|	 t|j| d S )	N      @)r  r        @g      3@g      4@)FFFTFr   rK  g      1@FT)r8   r   r   r   Zinterpr   r3   r   )
r   ZxpfpZmask_fpZmfpr)   Zmask_xZmxr   r   r   r   r   test_interp  s    
z&TestInterpolationFunctions.test_interpc                 C   s.  | j dk | j dkg}t| j|tddddg}t| j |ddg}t| j|ddg}t|j| t|j| | j dk | j dkg}t| j|tddddd	 g}t| j |g d
}t| j|dddd	 g}t|j| t|j| t	j
tdd  t| j|g  W d    n1 s 0    Y  d S )Nr   r   Tr   r  Fr7   c                 S   s   t t| d| j dS )Nr0  r   )r   r8   r   r   r)   r   r   r   r     s   z;TestInterpolationFunctions.test_piecewise.<locals>.<lambda>)r   r   r6   c                 S   s   |  S r/   r   r  r   r   r   r     r   zwith 2 conditionr   )r   r8   Z	piecewiser   r   r   r   r3   r   r}   r   r   )r   Zcondlistr   r   r   Z	condlist2r@  r   r   r   test_piecewise  s$    

z)TestInterpolationFunctions.test_piecewiseN)r+   r,   r-   r  r  r   r   r   r   r    s   r  c                   @   s   e Zd Zdd ZdS )TestBincountc                 C   s  t g d}t g d}t||d}t |}t ||  }t|| t t|}t dgdgd  }t||d}t ||}	t ||}t g d}
t|	j| t|	j|
 t ||}t ||  ||  }t g d}
t|j| t|j|
 d S )	N)r   r   r6   r7   r6   r   )TFFTFFr   TFr  )FTFFF)FFFFF)	r8   r   r   Zbincountr   r   rv   r3   r   )r   iZmask_imir   r   wZmask_wZmwr@  r   out3r   r   r   test_bincount  s&    

zTestBincount.test_bincountN)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d Zd	S )
TestSortFunctionsc                 C   s,   t | j}| j }|  t|| d S r/   )r8   sortr   r   r   r   r(   r   r   r   r   	test_sort  s    
zTestSortFunctions.test_sortc                 C   sT   t tg dg dd}t|}t|jj|jj|jf}|| }t	|| d S )N)r   y              @y      @        y            )TFFFr   )
r   r8   r   Zsort_complexrp   r3   r   r   r   r   )r   r   r(   Zindxr   r   r   r   test_sort_complex!  s    
z#TestSortFunctions.test_sort_complexc                 C   s*   t | j}t j| jdd}t|| d S r   )r8   Zmsortr   r  r   r  r   r   r   
test_msort)  s    zTestSortFunctions.test_msortc                 C   s0   t | jd}| j }|d t|| d S rT   )r8   	partitionr   r   r   r  r   r   r   test_partition.  s    

z TestSortFunctions.test_partitionN)r+   r,   r-   r  r  r  r  r   r   r   r   r    s   r  c                   @   s0   e Zd Zedd Zdd Zdd Zdd Zd	S )
TestStringFunctionsc                 C   s   t tdg dd| _d S )Nr7   r?  r   )r   r8   r   r   r:   r   r   r   r   7  s    zTestStringFunctions.setup_classc                 C   s   t | j}|dksJ t j| jdd}|dks4J t j| jddtid}|dksVJ t | jd d d ddt jd	ti}||ksJ t j| jdd
tid}||ksJ d S )N	   [— 1 2]z, )	separatoru   [—, 1, 2]r   )r  Z	formatteru   [———, 0x1, 0x2] intfloat)r8   Zarray2stringr   hexZ_NoValue)r   Zout0Zout1r@  r  Zout4r   r   r   test_array2string;  s    
z%TestStringFunctions.test_array2stringc                 C   s>   t | j}|dksJ | jd}t |}|dks:J d S )Nu   MaskedNDArray([—, 1, 2])f4u.   MaskedNDArray([——, 1., 2.], dtype=float32))r8   Z
array_reprr   rk  )r   r   r`  r@  r   r   r   test_array_reprL  s
    
z#TestStringFunctions.test_array_reprc                 C   s   t | j}|dksJ d S )Nr  )r8   Z	array_strr   )r   r   r   r   r   test_array_strS  s    z"TestStringFunctions.test_array_strN)r+   r,   r-   r   r   r  r  r  r   r   r   r   r  5  s
   
r  c                   @   s:   e Zd Zedd Zejdg ddd Zdd Z	d	S )
TestBitFunctionsc                 C   s   t jg ddd| _t g d| _t| j| jd| _t | jdd| _t dgd	 d
d
g dgd  dd| _	t| j| j	d| _
d S )N)      r   Zu1r   r  r   r<   r   Fr  T   )r8   r   r   r   r   r   
unpackbitsrC   r"   r#   r!   r:   r   r   r   r   Y  s    ,zTestBitFunctions.setup_classr   )Nr   r   c                 C   s`   t j| j|d}|d u r | j}nt j| j|d}t j| j|ddk}t|j| t|j| d S rm  )	r8   Zpackbitsr!   r   r"   r#   r   r3   r   )r   r   r   r   r   r   r   r   test_packbitsb  s    zTestBitFunctions.test_packbitsc                 C   sX   t | j}t | jt dt d}t |dk}t|j| j	  t|j
| d S )Nr  r   )r8   r  r   r   r   Zuint8r   r3   r"   rE   r   )r   r   r   r   r   r   r   test_unpackbitsm  s
    z TestBitFunctions.test_unpackbitsN)
r+   r,   r-   r   r   r}   r~   r   r  r  r   r   r   r   r  X  s
   


r  c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestIndexFunctionsz,Does not seem much sense to support these...c                 C   s<   t t t| jd W d    n1 s.0    Y  d S Nr7   )r}   r   r   r8   Zunravel_indexr   r:   r   r   r   test_unravel_indexw  s    z%TestIndexFunctions.test_unravel_indexc                 C   s>   t t  t| jfd W d    n1 s00    Y  d S r  )r}   r   r   r8   Zravel_multi_indexr   r:   r   r   r   test_ravel_multi_index{  s    z)TestIndexFunctions.test_ravel_multi_indexc                 C   s:   t t t| j W d    n1 s,0    Y  d S r/   )r}   r   r   r8   Zix_r   r:   r   r   r   test_ix_  s    zTestIndexFunctions.test_ix_N)r+   r,   r-   __doc__r  r  r  r   r   r   r   r  u  s   r  c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestDtypeFunctionsc                 O   s@   || j g|R i |}|| jg|R i |}||ks<J d S r/   )r   r   )r   ri   r   r   r   r   r   r   r   r      s    zTestDtypeFunctions.checkc                 C   s   |  tj d S r/   )r    r8   Zcommon_typer:   r   r   r   test_common_type  s    z#TestDtypeFunctions.test_common_typec                 C   s   |  tj d S r/   )r    r8   Zresult_typer:   r   r   r   test_result_type  s    z#TestDtypeFunctions.test_result_typec                 C   s$   |  tj| jj |  tjd d S )Nr  )r    r8   Zcan_castr   r   r:   r   r   r   test_can_cast  s    z TestDtypeFunctions.test_can_castc                 C   s0   t | jd }t | jd }||ks,J d S )N)r   r   )r8   Zmin_scalar_typer   r   r   r   r   r   test_min_scalar_type  s    z'TestDtypeFunctions.test_min_scalar_typec                 C   s   |  tj d S r/   )r    r8   Ziscomplexobjr:   r   r   r   test_iscomplexobj  s    z$TestDtypeFunctions.test_iscomplexobjc                 C   s   |  tj d S r/   )r    r8   Z	isrealobjr:   r   r   r   test_isrealobj  s    z!TestDtypeFunctions.test_isrealobjN)
r+   r,   r-   r    r  r  r  r  r  r  r   r   r   r   r    s   r  c                   @   s   e Zd Zdd ZdS )TestMeshGridc                 C   s   t dd}t g d}t||d}t g d}t g d}t||d}t ||\}}t ||d d t jf \}	}
t ||d d t jf \}}||	|f||
|ffD ]"\}}}t|j| t|j	| qd S )Nr  r1  r?  r   )r  r  rS  r1  )FTFT)
r8   r   r   r   Zmeshgridrb   r   r   r3   r   )r   r   r   r   r"   r#   r!   ZoaobZxaZxbr(   r)   rB  r   r   r   test_meshgrid  s    zTestMeshGrid.test_meshgridN)r+   r,   r-   r  r   r   r   r   r    s   r  c                   @   s   e Zd Zdd Zdd ZdS )TestMemoryFunctionsc                 C   s0   t | j| jjsJ t | j| jjr,J d S r/   )r8   Zshares_memoryr   r3   r   r:   r   r   r   test_shares_memory  s    z&TestMemoryFunctions.test_shares_memoryc                 C   s0   t | j| jjsJ t | j| jjr,J d S r/   )r8   rU  r   r3   r   r:   r   r   r   test_may_share_memory  s    z)TestMemoryFunctions.test_may_share_memoryN)r+   r,   r-   r  r  r   r   r   r   r    s   r  c                   @   s    e Zd Zedd Zdd ZdS )TestDatetimeFunctionsc                 C   sx   t jg ddd| _t g d| _t| j| jd| _t jdgdggdd| _t dgd	gg| _t| j| jd| _d S )
N)z
2020-12-31z
2021-01-01z
2021-01-02Mr   r  r   z
2021-01-07z
2021-01-31FT)	r8   r   r   r   r   r   r"   r#   r!   r:   r   r   r   r     s    z!TestDatetimeFunctions.setup_classc                 C   s6   t | j}t | j}t|j| t|j| j d S r/   )r8   Zdatetime_as_stringr   r   r   r3   r   r   r   r   r   r   test_datetime_as_string  s    z-TestDatetimeFunctions.test_datetime_as_stringN)r+   r,   r-   r   r   r  r   r   r   r   r    s   
r  c                   @   s   e Zd Zdd Zd%ddZdd Zd	d
 Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ ZdS )&TestNaNFunctionsc                 C   s|   t t jt jdgg dg| _t g dg dg| _t dddd| _| j| _t	| j| jd	| _
t	| j| jd	| _d S )
NrS  )r1  r  r  r?  r  r   r  r6   r7   r   )r8   r   rn   r   r   r   rC   r"   r#   r   r   r!   r:   r   r   r   r     s    
zTestNaNFunctions.setup_classNTc           
      K   s   || j fi |}|| j tjfi |}t|}|rht|tsHJ t|j| t	||ksJ n&t|trvJ t|| t
|rJ t|}|| j fd|i|}	|	|u sJ t|	| d S )Nr   )r   rh   r8   rn   r_  r$   r   r   r   r   r  r   )
r   ri   Zexact_fill_valuemasked_resultr   r   rf  r   r   rG  r   r   r   r      s    


zTestNaNFunctions.checkc                 K   sH   || j fi |}t|tr J || j tjfi |}t|| d S r/   )r   r$   r   rh   r8   rn   r   )r   ri   r   r   r   r   r   r   	check_arg  s    zTestNaNFunctions.check_argc                 C   sl   |  tj | j tjdd | j tjdd tj| jdd}t|jtddg t|jtddg d S )Nr   r   r   r6   r   F)r    r8   Znanminr!   r   r3   r   r   r   Zresir   r   r   test_nanmin  s    zTestNaNFunctions.test_nanminc                 C   s   |  tj d S r/   )r    r8   Znanmaxr:   r   r   r   test_nanmax  s    zTestNaNFunctions.test_nanmaxc                 C   s    |  tj | j tjdd d S r  )r  r8   Z	nanargminr:   r   r   r   test_nanargmin  s    zTestNaNFunctions.test_nanargminc                 C   s   |  tj d S r/   )r  r8   Z	nanargmaxr:   r   r   r   test_nanargmax   s    zTestNaNFunctions.test_nanargmaxc                 C   sF   | j tjdd tj| jdd}t|tr.J t|tddg d S )NFr  r   r   r  r  )r    r8   Znansumr!   r$   r   r   r   r  r   r   r   test_nansum  s    zTestNaNFunctions.test_nansumc                 C   sF   | j tjdd tj| jdd}t|tr.J t|tddg d S )NFr  r   r   r<      )r    r8   Znanprodr!   r$   r   r   r   r  r   r   r   test_nanprod	  s    zTestNaNFunctions.test_nanprodc                 C   sN   | j tjdd tj| jdd}t|tr.J t|tg dg dg d S )NFr  r   r   )r   r6   r  )r   r   r  )r    r8   Z	nancumsumr!   r$   r   r   r   r  r   r   r   test_nancumsum  s    zTestNaNFunctions.test_nancumsumc                 C   sN   | j tjdd tj| jdd}t|tr.J t|tg dg dg d S )NFr  r   r   )r   r6   r<   )r   r   r  )r    r8   Z
nancumprodr!   r$   r   r   r   r  r   r   r   test_nancumprod  s    z TestNaNFunctions.test_nancumprodc                 C   sP   |  tj tj| jdd}t|jtj| jddj t|jtddg d S )Nr   r   F)	r    r8   Znanmeanr!   r   r3   r   r   r   r  r   r   r   test_nanmean  s    zTestNaNFunctions.test_nanmeanc                 C   s    |  tj | j tjdd d S )Nr   )Zddof)r    r8   Znanvarr:   r   r   r   test_nanvar!  s    zTestNaNFunctions.test_nanvarc                 C   s   |  tj d S r/   )r    r8   Znanstdr:   r   r   r   test_nanstd%  s    zTestNaNFunctions.test_nanstdc                 C   s   |  tj d S r/   )r    r8   Z	nanmedianr:   r   r   r   test_nanmedian(  s    zTestNaNFunctions.test_nanmedianc                 C   s   | j tjdd d S )Nr   rw  )r    r8   Znanquantiler:   r   r   r   test_nanquantile+  s    z!TestNaNFunctions.test_nanquantilec                 C   s   | j tjdd d S )Nr   rw  )r    r8   Znanpercentiler:   r   r   r   test_nanpercentile.  s    z#TestNaNFunctions.test_nanpercentile)NT)r+   r,   r-   r   r    r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r    s"   

r  c                 C   s"   h | ]}|t jjj v r|qS r   )r8   libZ	financial__dict__r   )r   fr   r   r   	<setcomp>4  s   r  testZtest_r  c                   C   s   t ttB tB ksJ d S r/   )all_wrappedtested_functionsr   r   r   r   r   r   test_basic_testing_completenessU  s
    r  "coverage not completely set up yetreasonc                   C   s"   t trJ tt tB ksJ d S r/   )r  intersectionuntested_functionsr  r   r   r   r   test_testing_completeness[  s    r  c                   @   s`   e Zd Zejdeee	e
e e
e fddd Zdd Zejjddd	d
 ZdS )TestFunctionHelpersCompletenesszone, twor6   c                 C   s   | |rJ d S r/   )r  )r   ZoneZtwor   r   r   test_no_duplicatesb  s    z2TestFunctionHelpersCompleteness.test_no_duplicatesc                 C   s0   t tB tt B tt B }t|ks,J d S r/   )r	   r   setr
   keysr   r  )r   Zincluded_in_helpersr   r   r   test_all_includedj  s    

z1TestFunctionHelpersCompleteness.test_all_includedr  r  c                 C   s   t tksJ d S r/   )r   r  r:   r   r   r   test_ignored_are_untestedq  s    z9TestFunctionHelpersCompleteness.test_ignored_are_untestedN)r+   r,   r-   r}   r~   r   	itertoolscombinationsr	   r   r  r
   r  r   r  r  xfailr  r   r   r   r   r  a  s   


r  )lr  inspectr  r}   Znumpyr8   Znumpy.testingr   Zastropy.utils.compatr   r   r   Z,astropy.units.tests.test_quantity_non_ufuncsr   Zastropy.utils.maskedr   r   Z%astropy.utils.masked.function_helpersr	   r
   r   r   r   Ztest_maskedr   r   Zall_wrapped_functionsr  r   r  r   r.   r2   r4   rB   rd   r   r   r   r   r   r   r   r   r   r  r  r7  rR  rc  ri  r~   r   ro  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  Zfinancial_functionsZasscalaralenZdeprecated_functionsZsaveZsavezZsavetxtZsavez_compressedZio_functionsZpolyZpolyaddZpolyderZpolydivZpolyfitZpolyintZpolymulZpolysubZpolyvalrootsZvanderZpoly_functionsr  r&   filterZisclasslocalsZcov_clsr  itemskr   Z
isfunction
startswithreplacer  addr  r  r  r  r   r   r   r   <module>   s   B)4)+ML#EmF
-'###

e

