o
    ŀg%                     @   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   ^/var/www/html/myenv/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;   expected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!   bool_r3   r   )r   	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   rA   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,   rL   r.   rM   rG   r   rH   r   r    )r!   r0   r1   r2   rN   r   r4   r"   r#   r$   rI   rJ   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@   rF   rK   rO   rP   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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   rb   r   )r   rc   c                 C   sJ   t t|ddgtd|d}| }||ksJ | }||ks#J d S )Nr   r   intrH   )r   r!   r%   r   rZ   r[   )r   r   r]   r^   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 )Nrb   rd   rH   r   FrX   )r   r!   r%   r   len_valid_sp_valuesrZ   r[   )r   fvr7   r   r   r   test_only_fill_value   s   zTestMinMax.test_only_fill_valuefuncr[   rZ   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 )NrH   )r   getattrr   r!   isnatr<   )r   rj   r   rA   r=   r7   r?   r   r   r    test_na_value_if_no_valid_values   s
   z+TestMinMax.test_na_value_if_no_valid_valuesN)rQ   rR   rS   r"   rT   rU   r!   r0   r%   r4   ra   re   ri   r   float64r   r   rm   r   r   r   r   rV      s<    




$	rV   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   rp   rq   r   rp   r.   r   r8   r,   c                 C   s,   |  }| }||ksJ ||ksJ d S )N)argmaxargmin)r   r7   argmax_expectedargmin_expectedargmax_resultargmin_resultr   r   r   test_argmax_argmin  s   z#TestArgmaxArgmin.test_argmax_argminz
arr,methodrr   rs   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   rr   )r"   r#   r$   rr   rs   )r   r7   methodr'   r   r   r   test_empty_array+  s   "z!TestArgmaxArgmin.test_empty_arrayN)rQ   rR   rS   r"   rT   rU   r   r!   r4   rx   rz   r   r   r   r   ro     s6         
ro   )numpyr!   r"   pandasr   r   r   r   pandas.core.arrays.sparser   r   rV   ro   r   r   r   r   <module>   s     8K