a
    ç´«j�  ã                   @   sŽ   d dl Zd dl mZmZmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlZG dd„ dƒZG dd„ dƒZG d	d
„ d
ƒZdS )é    N)Ú	histogramÚhistogramddÚhistogram_bin_edges)
Úassert_Úassert_equalÚassert_array_equalÚassert_almost_equalÚassert_array_almost_equalÚassert_raisesÚassert_allcloseÚassert_array_max_ulpÚassert_raises_regexÚsuppress_warnings)Úrequires_memoryc                   @   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#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!e"j#j$d?d@�dAdB„ ƒZ%dCdD„ Z&dES )FÚTestHistogramc                 C   s   d S ©N© ©Úselfr   r   ú^/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/numpy/lib/tests/test_histograms.pyÚsetup_method   s    zTestHistogram.setup_methodc                 C   s   d S r   r   r   r   r   r   Úteardown_method   s    zTestHistogram.teardown_methodc                 C   sT   d}t j |¡}t|ƒ\}}tt j|dd�|ƒ tt  ddd¡ƒ\}}t|dƒ d S )Néd   r   ©Zaxisé
   )ÚnpÚrandomÚrandr   r   ÚsumÚlinspacer   )r   ÚnÚvÚaÚbr   r   r   Útest_simple   s    zTestHistogram.test_simplec                 C   s‚   t g d¢ddgƒ\}}t|dgƒ t|ddgƒ ttt ddgdd� t ddgdd�\}}t|t dg¡ƒ t|t ddg¡ƒ d S )N©é   é   é   é   r&   r'   r   ©Úbinsç      ð?ç       @)r   r   r
   Ú
ValueErrorr   r   Úarrayr   )r   ÚhistÚedgesÚhÚer   r   r   Útest_one_bin    s    zTestHistogram.test_one_binc           	      C   s  d}t j |¡}t|dd�\}}t  |t  |¡ ¡}t|dƒ t  d¡}g d¢}t||dd�\}}t|dƒ t	t  |t  |¡ ¡dƒ t||dd�\}}t|g d	¢ƒ t  d¡}d
dddt j
g}t||dd�\}}t|g d¢ƒ t jg d	¢ddt j
gdd�\}}t	|dd
gƒ d S )Nr   T©Údensityr&   r   ©r   r&   r(   é   r   çš™™™™™¹?Fr%   r   r(   r8   )r9   r9   r9   ç        ç      à?ç      ø?ç      Ð?)r   r   r   r   r   Údiffr   Úaranger   r   Úinf)	r   r    r!   r"   r#   Úarear+   ÚcountsZdmyr   r   r   Útest_density*   s(    



ÿ
zTestHistogram.test_densityc                 C   sð   t  d¡d }t|ddgd�\}}t| ¡ dƒ t|ddgd�\}}t| ¡ dƒ t|ddgdd�\}}t|t  |¡  ¡ dd	d
� t  d¡d }t|ddg|dd�\}}t|t  |¡  ¡ dƒ t|dddg|d�\}}t||dd… ƒ d S )Nr   r;   r   é	   ©Úranger&   T©rF   r6   é   ©Údecimal©rF   Úweightsr6   é   ©r+   rF   rL   éÿÿÿÿ)r   r?   r   r   r   r   r>   )r   r"   r2   r#   Úwr   r   r   Útest_outliersJ   s    zTestHistogram.test_outliersc                 C   sb   t  d¡d }t  d¡d }ttdƒ�( t|ddg|dd�\}}W d   ƒ n1 sT0    Y  d S )	Nr   r;   é   zsame shape asr&   rD   TrK   )r   r?   r   r.   r   )r   r"   rP   r2   r#   r   r   r   Útest_arr_weights_mismatchb   s    z'TestHistogram.test_arr_weights_mismatchc                 C   s®   t  d¡d }t|ƒ\}}tt  |jt j¡ƒ t|dd�\}}tt  |jt j¡ƒ t|t  dt	¡d�\}}tt  |jt j¡ƒ t|t  dt
¡d�\}}tt  |jt j¡ƒ d S )Nr   r;   Tr5   ©rL   )r   r?   r   r   Z
issubdtypeÚdtypeÚintegerZfloatingÚonesÚintÚfloat)r   r"   r2   r#   r   r   r   Ú	test_typei   s    zTestHistogram.test_typec                 C   sP   t jg d¢t jd�}t jg d¢t jd�}t j||dd�\}}}t| ¡ dƒ d S )N)g2V›ÿEq@g“áx>fQÀg-³ÅVT5@©rU   )g!çý°�³@gö·àS�±@g§’ ^z·@r   r*   ç      @)r   r/   Zfloat32Zhistogram2dr   r   )r   ÚxÚyZcounts_histZxedgesZyedgesr   r   r   Útest_f32_roundingx   s    zTestHistogram.test_f32_roundingc                 C   sŒ   t jg d¢t jd�}t  |¡\}}tƒ �P}| td¡}t  g d¢¡\}}tt|ƒdƒ t	||ƒ t	||ƒ W d   ƒ n1 s~0    Y  d S )N)r&   r&   r   r[   zConverting input from .*)TTFr&   )
r   r/   Zuint8r   r   ÚrecordÚRuntimeWarningr   Úlenr   )r   r"   Zint_histZ	int_edgesÚsupZrecr0   r1   r   r   r   Útest_bool_conversion   s    
z"TestHistogram.test_bool_conversionc                 C   sR  t j d¡}t  d¡d }t|ƒ\}}t|dd�\}}t||d�\}}t||dd�\}	}
t|d |ƒ t||	ƒ t  ddd¡}t  t  d¡t  d¡f¡}t|t  	d	¡|d
�\}}t||ƒ tg d¢dg d¢d
�\}}t
|g d¢ƒ tg d¢dg d¢dd�\}}t|t  g d¢¡d d d ƒ tt  	d¡g d¢g d¢dd�\}}t|g d¢ƒ d S )Nr   é   Tr5   rT   ©rL   r6   r   r   rR   ©r+   rL   )r&   r'   r'   r)   r)   )r)   r(   r'   r&   )r)   re   r   r&   )r+   rL   r6   g      $@r\   rD   r7   )	r'   r&   r&   r&   r&   r&   r&   r&   r&   )gš™™™™™É?r9   r9   g333333³?)r   r   r   rW   r   r	   r   ÚconcatenateÚzerosr?   r   r/   r   )r   r!   rP   r"   r#   ÚnaÚnbÚwaÚwbZnwaZnwbr   r   r   Útest_weights�   s.    

ÿ
 þ
zTestHistogram.test_weightsc                 C   s<  t  g d¢¡}t  g d¢¡dt  g d¢¡  }t|g d¢|d�\}}t|t  ddg¡dt  dd	g¡  ƒ t|ddd	g|d
�\}}t|t  ddg¡dt  dd	g¡  ƒ ddlm} t  g d¢¡}t  |dƒ|dƒ|d	ƒg¡}t|g d¢|d�\}}t||dƒ|dƒgƒ t|ddd	g|d
�\}}t||dƒ|dƒgƒ d S )N©gÍÌÌÌÌÌô?ç      @gffffff@)r&   rO   r'   y              ð?)r'   r&   r'   )r   r'   r(   rg   r&   r'   r(   rN   r   )ÚDecimalre   )r   r/   r   r	   rJ   rq   )r   ÚvaluesrL   rl   rm   rq   r   r   r   Útest_exotic_weights­   s     &&z!TestHistogram.test_exotic_weightsc                 C   s4   t  g d¢¡}t j|ddgdd� t|g d¢ƒ d S )Nro   éöÿÿÿr   r   )rF   r+   )r   r/   r   r	   )r   rr   r   r   r   Útest_no_side_effectsË   s    z"TestHistogram.test_no_side_effectsc                 C   s>   t g ddgd�\}}t|t dg¡ƒ t|t ddg¡ƒ d S )Nr   r&   r*   ©r   r   r   r/   ©r   r"   r#   r   r   r   Ú
test_emptyÒ   s    zTestHistogram.test_emptyc                 C   s,   t jdddd�}t|dƒ ttt|dƒ d S )Nr:   r,   r   ©Únumre   g333333@)r   r   r   r
   Ú	TypeError©r   Úvalsr   r   r   Útest_error_binnum_type×   s    
z$TestHistogram.test_error_binnum_typec                 C   sP   t jdddd�}t|ddgd� ttt|t jdgd� ttt|dt jgd� d S )Nr:   r,   r   ry   r=   ç      è?rE   )r   r   r   r
   r.   Únanr@   r|   r   r   r   Útest_finite_rangeÝ   s    zTestHistogram.test_finite_rangec                 C   sP   t jdddd�}ttdƒ�" t j|ddgd� W d   ƒ n1 sB0    Y  d S )	Nr:   r,   r   ry   zmax must be larger thanr9   g{®Gáz„?rE   )r   r   r   r.   r   r|   r   r   r   Útest_invalid_rangeä   s    z TestHistogram.test_invalid_rangec           
      C   s~   t  g d¢¡}t j|ddd�\}}|dk}|d d… | }|dd … | }t|||ƒD ]"\}}}	t||kƒ t||	k ƒ qVd S )N)iQ  i”  iã  i&  iï  i  iÜ  ih   )r'   iè  ©r+   rF   r   rO   r&   )r   r/   r   Úzipr   )
r   Úarrr0   r1   ÚmaskZ
left_edgesZright_edgesr]   ÚleftÚrightr   r   r   Útest_bin_edge_casesê   s    z!TestHistogram.test_bin_edge_casesc                 C   s4   t  g d¢¡}t j|ddd�\}}t|d dƒ d S )N©	r:   r:   r:   r,   r-   r\   r\   g      @g      @é   ©ç      à¿re   rƒ   rO   r&   )r   r/   r   r   )r   r…   r0   r1   r   r   r   Útest_last_bin_inclusive_rangeõ   s    z+TestHistogram.test_last_bin_inclusive_rangec                 C   sb   t jdddd�}t  ddgddgg¡}ttdƒ� t j||d	� W d   ƒ n1 sT0    Y  d S )
Nr:   r,   r   ry   r   r;   g333333ã?z
must be 1dr*   )r   r   r/   r   r.   r   )r   r}   r+   r   r   r   Útest_bin_array_dimsú   s    z!TestHistogram.test_bin_array_dimsc                 C   s\   t  dg¡}t jg d¢dd�}ttƒ�" t j||d�\}}W d   ƒ n1 sN0    Y  d S )Nr'   )r&   r(   r&   Zuint64r[   r*   )r   r/   r
   r.   r   )r   r…   r+   r0   r1   r   r   r   Ú test_unsigned_monotonicity_check  s    
z.TestHistogram.test_unsigned_monotonicity_checkc                 C   s†   t ttdd„ tdƒD ƒtj g ƒ t ttdd„ tdƒD ƒtjg ƒ t dd„ tdƒD ƒdg ¡ t dd„ tdƒD ƒdg ¡ d S )	Nc                 S   s   g | ]}t  d ¡‘qS ©gš™™™™™Ù?©r   r/   ©Ú.0Úir   r   r   Ú
<listcomp>  ó    z9TestHistogram.test_object_array_of_0d.<locals>.<listcomp>r   c                 S   s   g | ]}t  d ¡‘qS r‘   r’   r“   r   r   r   r–     r—   c                 S   s   g | ]}t  d ¡‘qS ©r;   r’   r“   r   r   r   r–     r—   g	     à?c                 S   s   g | ]}t  d ¡‘qS r˜   r’   r“   r   r   r   r–     r—   r;   )r
   r.   r   rF   r   r@   r   r   r   r   Útest_object_array_of_0d	  s    ÿÿz%TestHistogram.test_object_array_of_0dc                 C   s   t  ddt jg¡}t  t jt jg¡}tƒ }| t¡ |�´ ttt|dd� ttt|dd� t|ddd�\}}t	| 
¡ dƒ t|ddd�\}}t	| 
¡ dƒ t|ddgd�\}}t	| 
¡ dƒ t|ddgd�\}}t	| 
¡ dƒ W d   ƒ n1 sò0    Y  d S )Nr   r&   Úautor*   ©r   r&   rƒ   r'   )r   r/   r€   r   Úfilterra   r
   r.   r   r   r   )r   Zone_nanZall_nanrc   r2   r#   r   r   r   Útest_some_nan_values  s    
z"TestHistogram.test_some_nan_valuesc                 C   sÔ   t  dd¡}t  g d¢¡}t  g d¢¡}|| }|| }t  d¡}t||d�\}}t| |¡| |¡d�\}	}
t||d�\}}t||ƒ t|	|ƒ t||  t¡|ƒ t|
 t¡|ƒ t|j|jƒ t|
j|ƒ d S )Nz
2000-01-01ÚD)	r   r   r&   r&   r'   r(   re   r   é   )r   r'   é   rŸ   ztimedelta64[D]r*   )r   Z
datetime64r/   rU   r   Úastyper   rX   )r   ÚbeginÚoffsetsr+   ÚdatesZ	date_binsÚtdZd_countZd_edgeZt_countZt_edgeZi_countZi_edger   r   r   Útest_datetime-  s    


zTestHistogram.test_datetimec                 C   s|   dt  |¡j d }t jd|  d d| d g|d�}t|dd�\}}t|d|  d dd| d gƒ t|ddgƒ d S )NrM   r&   r'   r)   r[   r*   r   )r   rU   Úitemsizer/   r   r   )r   rU   Úexponentr…   r0   r3   r   r   r   Údo_signed_overflow_boundsF  s
    $"z'TestHistogram.do_signed_overflow_boundsc                 C   s@   |   tj¡ |   tj¡ |   tj¡ |   tj¡ |   tj¡ d S r   )r©   r   ÚbyteÚshortZintcÚint_Zlonglongr   r   r   r   Útest_signed_overflow_boundsM  s
    z)TestHistogram.test_signed_overflow_boundsc                 C   st   t  |¡j}t  dg|¡}t  d| dg|¡}| |¡d dkrDd S t j|d|d�\}}t|dgƒ t|j|ƒ d S )Nr,   r-   r   r&   rƒ   ©r   ZfinfoÚepsr/   r¡   r   r   rU   ©r   Úfloat_smallÚfloat_larger¯   r…   rF   ÚcountZx_locr   r   r   Údo_precision_lower_boundT  s    z&TestHistogram.do_precision_lower_boundc                 C   st   t  |¡j}t  dg|¡}t  dd| g|¡}| |¡d dkrDd S t j|d|d�\}}t|dgƒ t|j|ƒ d S )Nr,   r:   rO   r&   rƒ   r   r®   r°   r   r   r   Údo_precision_upper_boundc  s    z&TestHistogram.do_precision_upper_boundc                 C   s   |   ||¡ |  ||¡ d S r   )r´   rµ   )r   r±   r²   r   r   r   Údo_precisions  s    zTestHistogram.do_precisionc                 C   sd   |   tjtj¡ |   tjtj¡ |   tjtj¡ |   tjtj¡ |   tjtj¡ |   tjtj¡ d S r   )r¶   r   ZhalfÚsingleÚdoubleZ
longdoubler   r   r   r   Útest_precisionw  s    zTestHistogram.test_precisionc                 C   s˜   t g d¢ddgƒ\}}tg d¢ddgƒ}t||ƒ t g d¢¡}t |ddd�\}}t|ddd�}t||ƒ t |dd	d�\}}t|dd	d�}t||ƒ d S )
Nr%   r&   r'   rŠ   r‹   rŒ   rƒ   rš   r›   )r   r   r   r   r/   )r   r0   r3   r1   r…   r   r   r   Útest_histogram_bin_edges€  s    

z&TestHistogram.test_histogram_bin_edgesz,Bad memory reports lead to OOM in ci testing)Úreasonc                 C   sJ   t  ddg¡}d}d}t  d¡}t j||||fd�}tt|ƒtdƒƒ d S )Ni áõr(   i�  i€>  )Úsampler+   )r&   r'   )r   ri   r?   r   r   Útype)r   r¼   ZxbinsZybinsZzbinsr0   r   r   r   Útest_big_arrays�  s    
zTestHistogram.test_big_arraysc                 C   s<   t jt jdgdd�ddd�\}}t  ddg¡}t||ƒ d S )	Ng$ë°Áx€z>f8r[   r'   )gÒèxÖ0€ge¨Òl	  €rƒ   r&   r   )r   r   r/   r   )r   r0   r3   Zexpected_histr   r   r   Útest_gh_23110™  s    þ
zTestHistogram.test_gh_23110N)'Ú__name__Ú
__module__Ú__qualname__r   r   r$   r4   rC   rQ   rS   rZ   r_   rd   rn   rs   ru   rx   r~   r�   r‚   r‰   rŽ   r�   r�   r™   r�   r¦   r©   r­   r´   rµ   r¶   r¹   rº   ÚpytestÚmarkÚskipr¾   r¿   r   r   r   r   r      sD   
 	
r   c                   @   sz   e Zd 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g d¢¡dd„ ƒZdd„ ZdS )ÚTestHistogramOptimBinNumsz]
    Provide test coverage when using provided estimators for optimal number of
    bins
    c                 C   sL   g d¢}|D ]:}t g |d�\}}t|t dg¡ƒ t|t ddg¡ƒ qd S )N©ÚfdÚscottÚriceÚsturgesÚdoaneÚsqrtrš   Ústoner*   r   r&   rv   )r   Úestimator_listÚ	estimatorr"   r#   r   r   r   rx   §  s
    z$TestHistogramOptimBinNums.test_emptyc                 C   sÎ   dddddddddœdddddd	dd
dœdddddddddœdœ}|  ¡ D ]~\}}t dd|d d ¡}t dd|d d ¡}t ||f¡}|  ¡ D ]2\}}t ||¡\}	}
tt|	ƒ|d ||¡d� q”qJdS )z²
        Straightforward testing with a mixture of linspace data (for
        consistency). All test values have been precomputed and the values
        shouldn't change
        r)   rM   r    r'   rÇ   é   r   é   é   rD   é   é#   é   éG   rŸ   ©é2   iô  iˆ  rt   rO   re   r&   r(   ú*For the {0} estimator with datasize of {1}©Úerr_msgN)Úitemsr   r   rh   r   r   rb   Úformat)r   Ú
basic_testÚtestlenÚexpectedResultsÚx1Úx2r]   rÐ   Únumbinsr"   r#   r   r   r   r$   °  s&    ÿÿÿüÿz%TestHistogramOptimBinNums.test_simplec           	   
   C   s˜   ddddddddœddddddddœddddddddœdœ}|  ¡ D ]N\}}t |¡}|  ¡ D ]2\}}t ||¡\}}tt|ƒ|d ||¡d� q^qDdS )	z¸
        Smaller datasets have the potential to cause issues with the data
        adaptive methods, especially the FD method. All bin numbers have been
        precalculated.
        r&   )rÈ   rÉ   rÊ   rË   rÌ   rÍ   rÎ   r'   r(   ©r&   r'   r(   rÚ   rÛ   N)rÝ   r   r?   r   r   rb   rÞ   )	r   Z	small_datrà   rá   ZtestdatrÐ   Zexpbinsr"   r#   r   r   r   Ú
test_smallÊ  s"    ÿÿÿü
ÿz$TestHistogramOptimBinNums.test_smallc                 C   s(   g d¢}|D ]}t ttg d¢|ƒ qdS )zS
        Check a Value Error is thrown when an unknown string is passed in
        )ZmadZfreemanZ
histogramsZIQRrå   N)r
   r.   r   )r   Z
check_listrÐ   r   r   r   Útest_incorrect_methodsÞ  s    z0TestHistogramOptimBinNums.test_incorrect_methodsc              	   C   s^   t  d¡}dddddddddœ}| ¡ D ]0\}}t  ||¡\}}tt|ƒ|d |¡d� q(dS )zŒ
        Check that methods handle no variance in data
        Primarily for Scott and FD as the SD and IQR are both 0 in this case
        r   r&   rÇ   z{0} estimator, No Variance testrÛ   N)r   rW   rÝ   r   r   rb   rÞ   )r   Znovar_datasetZnovar_resultdictrÐ   rä   r"   r#   r   r   r   Útest_novarianceæ  s    
ÿÿz)TestHistogramOptimBinNums.test_novariancec                 C   s€   t  d¡}d|dd…< d|dd…< t|dƒ}t|t  ddd¡ƒ t|d	ƒ}t|t  ddg¡ƒ t|d
ƒ}t|t  ddd¡ƒ dS )zu
        Check when IQR is 0, but variance exists, we return the sturges value
        and not the fd value.
        iè  r   Nr(   r   éüÿÿÿrš   rÒ   rÈ   rË   )r   rW   r   r   r   r/   )r   Zlim_var_dataZ
edges_autoZedges_fdZedges_sturgesr   r   r   Útest_limited_varianceô  s    



z/TestHistogramOptimBinNums.test_limited_variancec                 C   sh   t  ddd¡}t  t  ddd¡|f¡}dddd	d
œ}| ¡ D ]&\}}t  ||¡\}}tt|ƒ|ƒ q<dS )aû  
        Check the FD, Scott and Doane with outliers.

        The FD estimates a smaller binwidth since it's less affected by
        outliers. Since the range is so (artificially) large, this means more
        bins, most of which will be empty, but the data of interest usually is
        unaffected. The Scott estimator is more affected and returns fewer bins,
        despite most of the variance being in one area of the data. The Doane
        estimator lies somewhere between the other two.
        rt   r   rÙ   i’ÿÿÿéœÿÿÿre   é   rR   r8   )rÈ   rÉ   rÌ   rÎ   N)r   r   ÚhstackrÝ   r   r   rb   )r   ZxcenterZoutlier_datasetZoutlier_resultdictrÐ   rä   r"   r#   r   r   r   Útest_outlier  s    z&TestHistogramOptimBinNums.test_outlierc                    sJ   dd„ ‰ ‡ fdd„t dƒD ƒ}ttj|dd�d ƒ}t|g d	¢d
d� dS )zQVerify that Scott's rule and Stone's rule converges for normally distributed datac                 S   sR   t j | ¡}|jdd|d�}tt  |d¡d ƒtt  |d¡d ƒ }}|||  S )Nr   r'   )ÚlocÚscaleÚsizerÎ   rÉ   )r   r   ZRandomStateÚnormalrb   r   )Úseedrñ   Úrngr]   r"   r#   r   r   r   Únbins_ratio  s    *zBTestHistogramOptimBinNums.test_scott_vs_stone.<locals>.nbins_ratioc                    s6   g | ].‰ ‡‡ fd d„t jdddd� ¡  t¡D ƒ‘qS )c                    s   g | ]}ˆ ˆ|ƒ‘qS r   r   )r”   rñ   )rõ   ró   r   r   r–   #  r—   zLTestHistogramOptimBinNums.test_scott_vs_stone.<locals>.<listcomp>.<listcomp>r   r   r)   )ÚstartÚstoprz   )r   Z	geomspaceÚroundr¡   rX   )r”   ©rõ   )ró   r   r–   #  s   ÿzATestHistogramOptimBinNums.test_scott_vs_stone.<locals>.<listcomp>r   r   r   r;   )g333333Ã?g
×£p=
·?g{®Gáz´?g¸…ëQ¸ž?r'   rI   N)rF   Úabsr   Úmeanr   )r   ÚllÚavgr   rù   r   Útest_scott_vs_stone  s    
ÿz-TestHistogramOptimBinNums.test_scott_vs_stonec              	   C   sæ   dddddddœdddddddœd	d	d
dd	ddœdœ}|  ¡ D ]¢\}}t dd|d d ¡}t dd|d d ¡}t dd|¡}t |||f¡}|  ¡ D ]F\}}	tj||dd�\}
}d |¡}|d |¡7 }tt|
ƒ|	|d� q˜q>dS )zò
        Straightforward testing with a mixture of linspace data (for
        consistency). Adding in a 3rd mixture that will then be
        completely ignored. All test values have been precomputed and
        the shouldn't change.
        rM   rH   rÖ   )rÈ   rÉ   rÊ   rË   rš   rÎ   rÑ   é    rŸ   éP   é!   éE   é   rØ   rt   rO   re   r'   r&   r   r(   rë   iÎÿÿÿ)iìÿÿÿrŸ   rE   zFor the {0} estimatorz with datasize of {0}rÛ   N)rÝ   r   r   rí   r   rÞ   r   rb   )r   rß   rà   rá   râ   rã   Zx3r]   rÐ   rä   r"   r#   Úmsgr   r   r   Útest_simple_range*  s(    
ÿÿÿû	
z+TestHistogramOptimBinNums.test_simple_ranger+   )rš   rÈ   rÌ   rÉ   rÎ   rÊ   rË   c                 C   sX   t jg d¢t jd�}t j||d�\}}t j| t j¡|d�\}}t||ƒ t||ƒ d S )N)éþÿÿÿr   é   r[   r*   )r   r/   Zint8r   r¡   Zint32r   )r   r+   r"   r0   r1   Zhist32Zedges32r   r   r   Útest_signed_integer_dataI  s
    
z2TestHistogramOptimBinNums.test_signed_integer_datac                 C   s0   g d¢}|D ]}t ttg d¢|g d¢d� qdS )z=
        Check that weighted data raises a TypeError
        )rÈ   rÉ   rÊ   rË   rš   rå   rT   N)r
   r{   r   )r   rÏ   rÐ   r   r   r   Útest_simple_weightedS  s
    ÿz.TestHistogramOptimBinNums.test_simple_weightedN)rÀ   rÁ   rÂ   Ú__doc__rx   r$   ræ   rç   rè   rê   rî   rþ   r  rÃ   rÄ   Zparametrizer  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d„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) ÚTestHistogramddc              	   C   s:  t  g d¢g d¢g d¢g d¢g d¢g d¢g¡}t|ddd	gd
dgd
dggd�\}}t  g d¢g d¢g d¢gg d¢g d¢g d¢gg¡}t||ƒ g d¢g d¢g d¢g}t||dd�\}}tt  ||d k¡ƒ t|ddd	gd
dgd
dggdd�\}}t  g d¢g d¢g d¢gg d¢g d¢g d¢gg¡}t||d dƒ dd„ t j|dd	d�D ƒ}t|dd d!gd
dgd
d!ggd"�\}}t  d
d
gd
d
gd
d
ggd
d	gd
d
gd	d
ggd
d	gd
d
gd
d
ggd
d
gd
d
gd
d
ggg¡}t||ƒ t  d#¡}d$|t	t
d%ƒƒt	t
d%ƒƒt	t
d%ƒƒf< tt  d%¡t  d%¡t  d%¡gd%ƒ\}}t||ƒ d S )&N)r�   r;   r<   )r�   r<   rp   )r�   rp   r;   )r;   r;   r<   )r;   r<   rp   )r;   rp   rp   )r'   r(   r(   rO   r&   r   r(   rE   )r   r&   r   )r   r   r&   )r&   r   r   )r  r   r'   )r   r&   r'   r(   T©r+   r6   g      (@)r'   r(   r)   r)   rG   )r   r&   r   r   )r   r   r&   r   )r&   r   r   r   g      @c                 S   s   g | ]}t  |¡‘qS r   )r   Zsqueeze)r”   r^   r   r   r   r–   v  r—   z/TestHistogramdd.test_simple.<locals>.<listcomp>r   )r)   r(   r'   r  r'   rƒ   )re   re   re   r,   re   )r   r/   r   r   r   Úallr	   Úsplitri   ÚlistrF   r?   )r   r]   ÚHr1   ZanswerZedÚzÚZr   r   r   r$   _  sF    ÿÿ
ÿ
þ
ÿÿ
ý

&&zTestHistogramdd.test_simplec                 C   s<   d}t j dd¡}|D ] }t||ƒ\}}t|j|kƒ qd S )N))re   r)   r8   )r8   r)   re   )re   r8   r)   )r)   r8   re   )r8   re   r)   )r)   re   r8   r   r(   ©r   r   r   r   r   Úshape©r   r+   Úrr#   r  r1   r   r   r   Útest_shape_3d„  s
    zTestHistogramdd.test_shape_3dc                 C   s<   d}t j dd¡}|D ] }t||ƒ\}}t|j|kƒ qd S )N))r    r)   re   r8   )r)   re   r    r8   )re   r8   r)   r    )r    r8   re   r)   )re   r    r8   r)   )r)   r8   r    re   )r8   re   r    r)   )r    re   r)   r8   )r    r)   r8   re   )r8   r)   r    re   )r8   r    re   r)   )r)   r8   re   r    )r)   r    re   r8   )re   r)   r8   r    )re   r    r)   r8   )r8   r    r)   re   )r8   re   r)   r    )r)   r    r8   re   )r)   re   r8   r    )r    r8   r)   re   )re   r)   r    r8   )re   r8   r    r)   )r8   r)   re   r    )r    re   r8   r)   r   r)   r  r  r   r   r   Útest_shape_4d�  s
    zTestHistogramdd.test_shape_4dc                 C   sž   t j dd¡}t|ƒ\}}t|dd�\}}t|t  d¡d�\}}t||ƒ t|t  d¡d dd�\}}t||ƒ t|t  dt¡d d�\}}t|d| ƒ d S )Nr   r'   Tr5   rT   rf   )r   r   r   r   rW   r   rX   )r   r!   r0   r1   Zn_histZw_histr   r   r   rn   ›  s    

zTestHistogramdd.test_weightsc                 C   s8   t  dt¡}t|dd�\}}t|d t  g d¢¡ƒ d S )N)r   r'   r'   r*   r   )r�   r:   r;   )r   ri   rX   r   r   r/   )r   r]   r0   r1   r   r   r   Útest_identical_samples¦  s    z&TestHistogramdd.test_identical_samplesc                 C   s`   t g g gddgddgfd�\}}t|t dgg¡ƒ tj g g g gdd�\}}t|t d¡ƒ d S )Nr   r&   r*   r:   r'   )r'   r'   r'   )r   r   r   r/   ri   rw   r   r   r   rx   «  s     zTestHistogramdd.test_emptyc              	   C   s~   t  d¡ dd¡}ttt j|g d¢d� ttt j|g d¢d� ttt j|dddg d¢gd� tt j|dddg d	¢gd�ƒ d S )
NrM   r'   r)   )rO   r'   r)   re   r*   )r&   g®Gáz®ï?r&   r&   r&   )r&   r'   r(   éýÿÿÿr%   )r   r?   Úreshaper
   r.   r   r   )r   r]   r   r   r   Útest_bins_errors±  s    ÿz TestHistogramdd.test_bins_errorsc              	   C   sâ   t jdd��Â t  d¡ dd¡}t  ddgddgddgg¡}t j|dt j ddggd	�\}}t||ƒ t j|dt  d
dt jg¡gd	�\}}t||ƒ t j|dt j dt jggd	�\}}t||ƒ W d   ƒ n1 sÔ0    Y  d S )NÚignore)Úinvalidr8   r(   r'   r&   r   r   r*   rO   )r   Zerrstater?   r  r/   r   r@   r   )r   r]   Úexpectedr2   r3   r   r   r   Útest_inf_edges»  s     
$
"zTestHistogramdd.test_inf_edgesc                 C   s  dg}g d¢g}t ||d�\}}t|d dkƒ t|d dkƒ dg}g d¢g}t ||d�\}}t|d dkƒ t|d dkƒ dg}g d¢g}t ||d�\}}t|d dkƒ t|d dkƒ d	g}g d¢g}t ||d�\}}t|d dkƒ t|d dkƒ d S )
NgÐG»ÿÿÿï?)r:   r;   r,   r*   r   r:   r&   r,   g8ß   ð?gq¬‹Ûh ð?)r   r   )r   r]   r+   r0   Ú_r   r   r   Útest_rightmost_binedgeÇ  s(    



z&TestHistogramdd.test_rightmost_binedgec                 C   sv   t j d¡}t|ddgddgddggd� ttt|ddgddgdt jggd� ttt|ddgt jdgddggd� d S )N)r   r(   r:   r,   r=   r   r;   rE   )r   r   r   r
   r.   r@   r€   r|   r   r   r   r�   Þ  s    ÿÿz!TestHistogramdd.test_finite_rangec                 C   sf   t  g d¢¡}t  g d¢¡}t  g d¢¡}d}t||f||fd�\}}t  dgdgg¡}t||ƒ dS )z: Test that adjacent entries in an edge array can be equal )r   r&   r'   )r   r'   r'   r&   r*   r-   r,   N©r   r/   r   r   )r   r]   r^   Úx_edgesÚy_edgesr0   r1   Zhist_expectedr   r   r   Útest_equal_edgesæ  s    þz TestHistogramdd.test_equal_edgesc                 C   sl   t  g d¢¡}|d }t  g d¢¡}|d }t||f||fd�\}}t|d j|jƒ t|d j|jƒ dS )z< Test that if an edge array is input, its type is preserved )r   r   rŸ   r   )r   re   rH   rŸ   r*   r   r&   N)r   r/   r   r   rU   )r   r]   r^   r$  r%  r0   r1   r   r   r   Útest_edge_dtypeô  s    zTestHistogramdd.test_edge_dtypec                 C   s`   d}t  dgt j¡}t  ddgt j¡}|| }|| }t||f||fd�\}}t|d dƒ d S )Nl            r   rO   r&   r*   )r   r   )r   r/   Zint64r   r   )r   Úbigr]   r$  r^   r%  r0   r1   r   r   r   Útest_large_integersÿ  s    z#TestHistogramdd.test_large_integersc                 C   sÐ   t  g d¢¡}t  g d¢¡}t  ddgddgg¡}t  dgdgd  dgd  dgd  ¡}t  dgdgd  dgd  dgd  ¡}t||f||fd�\}}t||ƒ t||f||fdd	�\}}t|d
ƒ d S )N)r   r'   rM   )r   r8   rM   r(   rD   r&   r    r*   Tr  g      �?r#  )r   r$  r%  Zrelative_areasr]   r^   r0   r1   r   r   r   Útest_density_non_uniform_2d  s    	þ**
z+TestHistogramdd.test_density_non_uniform_2dc                 C   s\   t  d¡}t  g d¢¡}t||dd�\}}t|f|fdd�\}}t||ƒ t||d ƒ d S )Nr   r7   Tr5   r   )r   r?   r/   r   r   r   )r   r!   r+   r0   r1   Zhist_ddZedges_ddr   r   r   Útest_density_non_uniform_1d&  s    

z+TestHistogramdd.test_density_non_uniform_1dN)rÀ   rÁ   rÂ   r$   r  r  rn   r  rx   r  r   r"  r�   r&  r'  r)  r*  r+  r   r   r   r   r  ]  s   %	
r  )Únumpyr   r   r   r   Znumpy.testingr   r   r   r   r	   r
   r   r   r   r   Znumpy.testing._private.utilsr   rÃ   r   rÆ   r  r   r   r   r   Ú<module>   s   0    =