a
    d                      @   s  d dl Zd dlZd dlmZ d dlZd dlmZmZm	Z	 d dl
mZ dd Zdd Zdd	 Zd
d Zdd Zejdddgdd Zejdddgdd Zdd Zejdddge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 )#    N)iNaT)	DataFrameIndexSeriesc                  C   s   t g dg dddg d} | d }d|v s8J | djdd	}d|v sVJ | d }d|v spJ | djdd	}d|v sJ d S )
N)   r      r   )            r   Zmama)nniissr   r   F)Znumeric_only)r   groupbymaxmin)Zaaresult r   j/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/groupby/test_min_max.pytest_max_min_non_numeric   s    r   c                 C   s   t g dg dg dd}|  | s<t|jjdks<J |d}|dg  }tg ddd	}t dg d
i|d}t	|| |dg 
 }tg ddd	}t dg di|d}t	|| d S )N)r   r   r	   r	   r
   )r   Zfoor	   barF)abcde)ABCr	   r   r   r   r	   r
   name)r   r   r   index)r   r   r   )r   Z_consolidate_inplacelenZ_mgrblocksr   r   r   tmassert_frame_equalr   )Zusing_array_managerdfgbr   eiexpectedr   r   r   $test_max_min_object_multiple_columns    s$    
r,   c                  C   s   t jtg dddjj} ttjdtjgg d| d}|jddd	d
 	 d
 }t jtddgd
dddjj}t
|| |dd
 	 }d|j_t
|| d S )N)
2019-05-09r-   r-   z%Y-%m-%d)format1)r   r   r   )r   r   r   r   F)Zas_indexr   r-   r    )pdto_datetimer   dtdater   npnanr   r   r&   assert_series_equalr#   r!   )datesr(   r   r+   r   r   r   test_min_date_with_nans?   s    

r8   c                  C   s   t dtg} tjddgtjd}| |}|jdd}t dditjd}tj||dd |j	dd}t dtitjd}tj||dd |j	dd}t dtj
i}tj||dd d S )Nr   dtyper	   Z	min_countTZcheck_exactr
   )r   r   r4   arrayint64r   r   r&   r6   r   r5   )serkeyr)   r   r+   r   r   r   test_max_inatQ   s    
rA   c                  C   sj   t dtdtd g} | g d}|jdd}t tjtjtd d}|jtj|_t	j
||dd d S )Nr   r	   )r   r	   r
   r
   r;   r   Tr<   )r   r   r   r   r4   r5   r#   astypeint_r&   r6   )r?   r)   r   r+   r   r   r   test_max_inat_not_all_nae   s    rD   funcr   r   c                 C   sj   ddg}t jdddd}t||d}t|dd |  }tddgdd	}t||dd
}t|| d S )Nr   r	   2020Yperiodsfreqr   r   r   r   r    )r#   r!   )	r0   period_ranger   getattrr   r   r   r&   r6   rE   groupsrI   r(   r   idxr+   r   r   r   $test_groupby_aggregate_period_columns   s    rQ   c                 C   sh   ddg}t jdddd}t||d}t|d|  }tddgdd}td	|i|d
}t|| d S )Nr   r	   rF   rG   rH   rK   r   r    r   r"   )r0   rL   r   rM   r   r   r&   r'   rN   r   r   r   #test_groupby_aggregate_period_frame   s    rR   c                  C   s   t g dtdtjgd dt} | d }t ddgdd	gtjtjgddt}t	
|| t g dtdtddt} | d }t ddgdd	gd
dgddt}t	
|| d S )N)r   r   r   r   Zabcdr   )r@   col1col2r@   r   r   r   r   r   r	   )r   listr4   r5   rB   objectr   r   	set_indexr&   r'   range)r(   r   r+   r   r   r   #test_aggregate_numeric_object_dtype   s8    rY   )rE   c                 C   sx   t dgddj }tdg|d}|dd| i}tddgitdgddd	}|d |j|d< t	
|| d S )
Nr   categoryr9   i  r   r   r   r   r    r"   )r   catZ
as_orderedr   r   Zaggr   rB   r:   r&   r'   )rE   Zdsr(   r   r+   r   r   r   %test_aggregate_categorical_lost_index   s    r]   r:   )Int64ZInt32ZFloat64ZFloat32booleanc                 C   s  | dkrd}n| dkrd}nd}t ddg||d gd}|d	 | |d	< |d
}| }|jd d d
}t|| | }|jdd  d
}t|| |jdd}t d	t	j
gi|j| d}	t||	 |jdd}
t|
|	 t g d|t	j
|d gd}|d	 | |d	< |d
}| }t|| | }t|| |jdd}t||	 |jdd}t||	 d S )Nr^   l   .D3 r_   r   g      @r	   r   )idtsra   r`   r
   r;   )r#   r:   )r	   r	   r	   d   )r   rB   r   r   ilocrW   r&   r'   r   r0   NAr#   )r:   ra   r(   r)   r   r+   Zres_maxZexpected_maxZresult2Z	expected2Zres_max2Zdf2Zgb2Zresult3Zres_max3Zresult4Zres_max4r   r   r   test_groupby_min_max_nullable   s<    

re   c                  C   s   t jdgd ddgd} t| t tjdtjdd}|jddd	}| }t j	ddg| j
dd
}tdt jdt jgddi|d}t|| | }d|jd< t|| d S )Nr   
   r   )
categoriesr9   r[   r   FZobserved)r:   r!   r   ZUInt64r"   	   )r   r   )r0   Categoricalr   r=   r4   ZarangeZuint64r   r   CategoricalIndexr:   rd   r&   r'   r   rc   )r\   r(   r)   resrP   r+   r   r   r   (test_min_max_nullable_uint64_empty_group   s      
rm   )firstlastr   r   c                 C   s   t tjdgtdddtjdgddgdddd}t|jd	d
d|  }tjddgd	dd}t tjdd gddgdddd gd|d}t|| d S )Nr   ZABT)rg   orderedr   r	   g?)rS   rT   valuerS   Frh   r   )datar!   rp   )rT   rq   r"   )	r   r0   rj   rU   rM   r   rk   r&   r'   )rE   r(   r   rP   r+   r   r   r    test_groupby_min_max_categorical   s    rs   )numpyr4   ZpytestZpandas._libs.tslibsr   Zpandasr0   r   r   r   Zpandas._testingZ_testingr&   r   r,   r8   rA   rD   markZparametrizerQ   rR   rY   strr]   re   rm   rs   r   r   r   r   <module>   s,   


/