U
    +if                     @   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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S )#    N)iNaT)	DataFrameIndexSeries)
Int64Indexc                  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   T/home/mars/bis/venv/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}tjt	dd |j
dd}W 5 Q R X tdddgdd}t ddd
dgi|d}t|| tjt	dd |jdd}W 5 Q R X 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   zDropping invalid)matchr   namer!   index)r   Z_consolidate_inplacelenZ_mgrblocksr   r   tmZassert_produces_warningFutureWarningr   r   assert_frame_equalr   )Zusing_array_managerdfgbr   eiexpectedr   r   r   $test_max_min_object_multiple_columns!   s(    
r0   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_nansB   s     
  
r;   c                  C   s   t dtg} | ddg}|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	   r
   Z	min_countdtypeTZcheck_exactr   )
r   r   r   r   r7   Zint64r)   r9   r   r8   Zserr-   r   r/   r   r   r   test_max_inatT   s    rA   c                  C   s^   t dtdtd g} | ddddg}|jdd}t tjtjtd d}tj||dd d S )Nr	   r
   r   r<   )r	   r
   r   Tr?   )r   r   r   r   r7   r8   r)   r9   r@   r   r   r   test_max_inat_not_all_nag   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$   )	r3   period_ranger   getattrr   r   r   r)   r9   rC   groupsrG   r,   r   idxr/   r   r   r   $test_groupby_aggregate_period_columnt   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%   )r3   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 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	
|| d S )Nr   r    abcdr   )keyZcol1Zcol2rR   r   r   r   r
   )r   listr7   r8   astypeobjectr   r   	set_indexr)   r+   range)r,   r   r/   r   r   r   #test_aggregate_numeric_object_dtype   s0    rX   )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   categoryr=   i  )r   r    r   r    r#   r%   )r   catZ
as_orderedr   r   Zaggr   rT   r>   r)   r+   )rC   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 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&   r>   d   )r   rT   r   r   ZilocrV   r)   r+   r   r3   ZNAr&   )r>   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<    
 
ra   )numpyr7   ZpytestZpandas._libs.tslibsr   Zpandasr3   r   r   r   Zpandas._testingZ_testingr)   Zpandas.core.apir   r   r0   r;   rA   rB   markZparametrizerO   rP   rX   strr[   ra   r   r   r   r   <module>   s(   !

