o
    թZh%                     @   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   d   t | }|s
J t ||d }|sJ ||d< t | }|r$J t ||d }|r0J d S N
fill_valuer   )r   allselfdataposnegout r   a/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/arrays/sparse/test_reductions.pytest_all      
zTestReductions.test_allc                 C   s   t t|}|sJ t t||d}|sJ ||d< t t|}|r'J t t||d}|r4J d}tjt|d t jt|t g d W d    d S 1 sUw   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   r   r   )r   anyr   r   r   r   test_anyA   r   zTestReductions.test_anyc                 C   s   t t|}|sJ t t||d}|sJ ||d< t t|}|r'J t t||d}|r4J d}tjt|d t jt||d W d    d S 1 sRw   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s'J t|t jd }|dks6J 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   sD   t ||d}|j|d}t|rt|sJ d S ||ks J d S )Nr   	min_count)r   r3   r!   isnan)r   r7   r   r;   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sJ |jdd}t|s$J d S )NFTr.   )dtyper   r   r:      )r   r!   Zbool_r3   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s)J t t|t jd}|dks9J d}tjt	|d t jt|t j
d	 W d    n1 sWw   Y  d
}tjt	|d t jt||d W d    d S 1 szw   Y  d S )Nr,   r-   r.   r	   r   r/   &the 'dtype' parameter is not supportedr   r@   r   r    )r!   r0   r1   r2   r3   r   r4   r"   r#   r$   int64r   r   r   r'   r   r   r   test_numpy_sum   s    
"zTestReductions.test_numpy_sumc                 C   sN   t dt}t| }|dksJ t j|d< t| }|dks%J d S )Nr,         @r.   rq@)r!   r0   r1   r2   r   meanr4   r5   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s'J d}tjt	|d t jt|t j
d W d    n1 sEw   Y  d}tjt	|d t jt||d	 W d    d S 1 shw   Y  d S )
Nr,   rI   r.   rJ   rD   r   rE   r   r    )r!   r0   r1   r2   rK   r   r4   r"   r#   r$   rF   rG   r   r   r   test_numpy_mean   s   
"zTestReductions.test_numpy_meanN)__name__
__module____qualname__r"   markparametrizer   r(   r*   r+   r6   r!   r%   r4   r?   rC   rH   rL   rM   r   r   r   r   r      sZ    



 		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      @r9   r   r   r	   r.   c                 C   s   t |}| }| }||v sJ ||v sJ |jdd}|jdd}t| r;t|s2J t|s9J d S ||v sAJ ||v sGJ d S )NFZskipna)r   maxminr!   r<   r)   )r   raw_datamax_expectedmin_expectedr7   
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sJ | }||ks#J d S )Nr   r   intrE   )r   r!   r%   r   rV   rW   )r   r   rY   rZ   r7   r[   r\   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sJ | |ks"J | |ks*J |jdd|ks4J |jdd|ks>J d S )Nr^   r`   rE   r   FrU   )r   r!   r%   r   lenZ_valid_sp_valuesrV   rW   )r   Zfvr7   r   r   r   test_only_fill_value   s   zTestMinMax.test_only_fill_valuefuncrW   rV   r   zdtype,expectedzdatetime64[ns]z
2018-05-05c                 C   sP   t ||d}t|| }|tu r|tu st|sJ d S d S t|s&J d S )NrE   )r   getattrr   r!   Zisnatr<   )r   rd   r   r@   r=   r7   r>   r   r   r    test_na_value_if_no_valid_values   s
   z+TestMinMax.test_na_value_if_no_valid_valuesN)rN   rO   rP   r"   rQ   rR   r!   r0   r%   r4   r]   ra   rc   r   Zfloat64r   r   rf   r   r   r   r   rS      s<    




$	rS   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   rh   ri   r   rh   r.   r   r8   r,   c                 C   s,   |  }| }||ksJ ||ksJ d S )N)argmaxargmin)r   r7   Zargmax_expectedZargmin_expectedZargmax_resultZargmin_resultr   r   r   test_argmax_argmin  s   z#TestArgmaxArgmin.test_argmax_argminz
arr,methodrj   rk   c                 C   sj   d| d}t jt|d |dkr| n|  W d    d S  W d    d S 1 s.w   Y  d S )Nzattempt to get z of an empty sequencer   rj   )r"   r#   r$   rj   rk   )r   r7   methodr'   r   r   r   test_empty_array+  s   "z!TestArgmaxArgmin.test_empty_arrayN)rN   rO   rP   r"   rQ   rR   r   r!   r4   rl   rn   r   r   r   r   rg     s6         
rg   )numpyr!   r"   Zpandasr   r   r   r   Zpandas.core.arrays.sparser   r   rS   rg   r   r   r   r   <module>   s     8K