U
    -e                     @   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dddddgd d! Zd"d# ZdS )$    N)iNaT)	DataFrameIndexSeriesc                  C   s   t ddddgddddgddg d} | d	 }d
|ks@t| d	jdd}d
|ks^t| d	 }d
|ksxt| d	jdd}d
|kstd S )N                  Zmama)nniissr   r   F)Znumeric_only)r   groupbymaxAssertionErrormin)Zaaresult r   b/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pandas/tests/groupby/test_min_max.pytest_max_min_non_numeric   s    &r   c                 C   s   t dddddgdddddgddd	d
dgd}|  | sNt|jjdksNt|d}|dg  }tdddgdd}t ddd
dgi|d}t	
|| |dg  }tdddgdd}t ddd	dgi|d}t	
|| d S )Nr   r	   r
   ZfoobarFabcde)ABCr   r   nameindex)r   Z_consolidate_inplacelenZ_mgrblocksr   r   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dddgddjj} ttjdtjgdddg| 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 )Nz
2019-05-09z%Y-%m-%d)format1r   r   )r   r   r   r   F)Zas_indexr   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     
  
r7   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   r3   arrayZint64r   r   r&   r5   r   r4   )serkeyr)   r   r+   r   r   r   test_max_inatQ   s    
r?   c                  C   sn   t dtdtd g} | ddddg}|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
   Tr;   )r   r   r   r   r3   r4   r#   astypeint_r&   r5   )r=   r)   r   r+   r   r   r   test_max_inat_not_all_nae   s    rB   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!   )	r/   period_ranger   getattrr   r   r   r&   r5   rC   groupsrG   r(   r   idxr+   r   r   r   $test_groupby_aggregate_period_columns   s    rO   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	   rD   rE   rF   rI   r   r    r   r"   )r/   rJ   r   rK   r   r   r&   r'   rL   r   r   r   #test_groupby_aggregate_period_frame   s    rP   c                  C   s   t ddddg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 ddddgtdtddt} | d }t ddgddgd	d
gddt}t	
|| d S )Nr   r   abcdr   )r>   Zcol1Zcol2r>   r   r   r   r	   )r   listr3   r4   r@   objectr   r   	set_indexr&   r'   range)r(   r   r+   r   r   r   #test_aggregate_numeric_object_dtype   s8    rV   )rC   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   categoryr8   i  r   r   r   r   r    r"   )r   catZ
as_orderedr   r   Zaggr   r@   r9   r&   r'   )rC   Zdsr(   r   r+   r   r   r   %test_aggregate_categorical_lost_index   s    rZ   r9   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 dddg|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tsr^   r]   r
   r:   )r#   r9   d   )r   r@   r   r   ilocrT   r&   r'   r   r/   NAr#   )r9   r^   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<    
 
rb   c                  C   s   t jdgd ddgd} t| t tjdt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   )
categoriesr8   rX   r   )r9   r!   r   ZUInt64r"   	   )r   r   )r/   ZCategoricalr   r<   r3   ZarangeZuint64r   r   ZCategoricalIndexr9   ra   r&   r'   r   r`   )rY   r(   r)   resrN   r+   r   r   r   (test_min_max_nullable_uint64_empty_group   s     
 
rg   )numpyr3   ZpytestZpandas._libs.tslibsr   Zpandasr/   r   r   r   Zpandas._testingZ_testingr&   r   r,   r7   r?   rB   markZparametrizerO   rP   rV   strrZ   rb   rg   r   r   r   r   <module>   s(   


/