a
    Pf%                     @   sb   d dl Zd dlZd dlmZmZmZmZ d dlm	Z	 G dd dZ
G dd dZG dd	 d	ZdS )
    N)NaTSparseDtype	Timestampisna)SparseArrayc                	   @   s~  e Zd Zejdg dddfg dddfg dd	d
fgdd Zejdg dddfg dddfg dd	d
fgdd Zejdg dddfg dddfg ddd
fgdd Zejdg dddfg dddfg ddd
fgdd Z	dd Z
ejdeddejdgeg dgejdddejgejdddejfgd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*S )+TestReductionszdata,pos,neg)TTTTF)      r   r   r   )      ?       @r
   r
           c                 C   sd   t | }|sJ t ||d }|s,J ||d< t | }|rHJ t ||d }|r`J d S N
fill_valuer   )r   allselfdataposnegout r   c/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/arrays/sparse/test_reductions.pytest_all   s    
zTestReductions.test_allc                 C   s   t t|}|sJ t t||d}|s0J ||d< t t|}|rNJ t t||d}|rhJ d}tjt|d( t jt|t g d W d    n1 s0    Y  d S Nr   r   $the 'out' parameter is not supportedmatchr   )npr   r   pytestraises
ValueErrorarrayr   r   r   r   r   msgr   r   r   test_numpy_all%   s    
zTestReductions.test_numpy_all)FTF)r   r	   r   r	   )r   r   r   r   c                 C   sd   t | }|sJ t ||d }|s,J ||d< t | }|rHJ t ||d }|r`J d S r   )r   anyr   r   r   r   test_anyA   s    
zTestReductions.test_anyc                 C   s   t t|}|sJ t t||d}|s0J ||d< t t|}|rNJ t t||d}|rhJ d}tjt|d" t jt||d W d    n1 s0    Y  d S r   )r   r'   r   r    r!   r"   r$   r   r   r   test_numpy_anyX   s    
zTestReductions.test_numpy_anyc                 C   sp   t dt}t| }|dks(J t j|d< t|dd }|dksNJ t|t jd }|dkslJ d S )N
        F@   r	   r         D@)r   arangeastypefloatr   sumnanr   r   r   r   r   r   test_sums   s    
zTestReductions.test_sumarr)r   r   r   r   zmin_count, expected)   r	      c                 C   sB   t ||d}|j|d}t|r2t|s>J n||ks>J d S )Nr   	min_count)r   r1   r   isnan)r   r5   r   r9   expectedZsparrayresultr   r   r   test_sum_min_count   s
    
z!TestReductions.test_sum_min_countc                 C   sL   t ddgd tjdd}|jdd}|dks0J |jdd}t|sHJ d S )NFTr,   )dtyper   r   r8      )r   r   Zbool_r1   r   )r   Z	spar_boolresr   r   r   test_bool_sum_min_count   s
    z&TestReductions.test_bool_sum_min_countc                 C   s   t dt}t t|}|dks*J t j|d< t t|dd}|dksRJ t t|t jd}|dksrJ d}tjt	|d$ t jt|t j
d	 W d    n1 s0    Y  d
}tjt	|d" t jt||d W d    n1 s0    Y  d S )Nr*   r+   r,   r	   r   r-   &the 'dtype' parameter is not supportedr   r>   r   r   )r   r.   r/   r0   r1   r   r2   r    r!   r"   int64r   r   r   r%   r   r   r   test_numpy_sum   s    
2zTestReductions.test_numpy_sumc                 C   sN   t dt}t| }|dks(J t j|d< t| }|dksJJ d S )Nr*         @r,   rq@)r   r.   r/   r0   r   meanr2   r3   r   r   r   	test_mean   s    
zTestReductions.test_meanc                 C   s   t dt}t t|}|dks*J t j|d< t t|}|dksNJ d}tjt	|d$ t jt|t j
d W d    n1 s0    Y  d}tjt	|d" t jt||d	 W d    n1 s0    Y  d S )
Nr*   rG   r,   rH   rB   r   rC   r   r   )r   r.   r/   r0   rI   r   r2   r    r!   r"   rD   rE   r   r   r   test_numpy_mean   s    
2zTestReductions.test_numpy_meanN)__name__
__module____qualname__r    markparametrizer   r&   r(   r)   r4   r   r#   r2   r=   rA   rF   rJ   rK   r   r   r   r   r      sX   



 		r   c                   @   sH  e Zd Zejdeddgdgfed dgdgfedddej	dgdgdgfeej	gd ej	gej	gfeg ej	gej	gfgd	d
 Z
ejdddgdd Zdd Zejdddgejdeg eej	ej	ggejdeejej	ej	feejdej	fedeefededefgdd ZdS )
TestMinMaxz"raw_data,max_expected,min_expectedg      @r7   r   r   r	   r,   c                 C   s   t |}| }| }||v s$J ||v s0J |jdd}|jdd}t| rtt|sdJ t|sJ n||v sJ ||v sJ d S )NFZskipna)r   maxminr   r:   r'   )r   raw_datamax_expectedmin_expectedr5   
max_result
min_resultr   r   r   test_nan_fill_value   s    zTestMinMax.test_nan_fill_valuez$fill_value,max_expected,min_expected)d   r\   r   )r   r]   c                 C   sJ   t t|ddgtd|d}| }||ks2J | }||ksFJ d S )Nr   r   intrC   )r   r   r#   r   rT   rU   )r   r   rW   rX   r5   rY   rZ   r   r   r   test_fill_value   s    zTestMinMax.test_fill_valuec                 C   s   d}t t|||gtd|d}t|jdks4J | |ksDJ | |ksTJ |jdd|kshJ |jdd|ks|J d S )Nr\   r^   rC   r   FrS   )r   r   r#   r   lenZ_valid_sp_valuesrT   rU   )r   Zfvr5   r   r   r   test_only_fill_value   s    zTestMinMax.test_only_fill_valuefuncrU   rT   r   zdtype,expectedzdatetime64[ns]z
2018-05-05c                 C   sJ   t ||d}t|| }|tu r8|tu sFt|sFJ nt|sFJ d S )NrC   )r   getattrr   r   Zisnatr:   )r   rb   r   r>   r;   r5   r<   r   r   r    test_na_value_if_no_valid_values   s
    z+TestMinMax.test_na_value_if_no_valid_valuesN)rL   rM   rN   r    rO   rP   r   r.   r#   r2   r[   r_   ra   r   Zfloat64r   r   rd   r   r   r   r   rQ      s:   




$	rQ   c                   @   s  e Zd Zejdeg dddfeg dddfeejdddejdgddfeejdddejdgddfeejdddejdgdd	ddfeejdddejdgdd	ddfeejdddejdgdd	ddfeejdddejdgdd	ddfeejdddejdgd
d	ddfedgd dg dd	ddfedgd dg dd	ddfedgd dg dd	ddfedgdgd  dd	ddfedgdgd  dd	ddfedgdgd  dd	ddfedgdgd  dd	ddfgdd Z	ejdeg dfeg dfgdd Z
dS )TestArgmaxArgminz#arr,argmax_expected,argmin_expected)r   r	   r   r   r	   r   r	   )r   rf   rg   r   rf   r,   r   r6   r*   c                 C   s,   |  }| }||ksJ ||ks(J d S )N)argmaxargmin)r   r5   Zargmax_expectedZargmin_expectedZargmax_resultZargmin_resultr   r   r   test_argmax_argmin  s    z#TestArgmaxArgmin.test_argmax_argminz
arr,methodrh   ri   c                 C   sV   d| d}t jt|d( |dkr,| n|  W d    n1 sH0    Y  d S )Nzattempt to get z of an empty sequencer   rh   )r    r!   r"   rh   ri   )r   r5   methodr%   r   r   r   test_empty_array+  s    z!TestArgmaxArgmin.test_empty_arrayN)rL   rM   rN   r    rO   rP   r   r   r2   rj   rl   r   r   r   r   re     s4        
re   )numpyr   r    Zpandasr   r   r   r   Zpandas.core.arrays.sparser   r   rQ   re   r   r   r   r   <module>   s    8K