o
    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defddZejdg ddd Zdd ZdS )    N)iNaT)	DataFrameIndexSeriesc                  C   s   t g dg dddg d} | d }d|v sJ | djdd	}d|v s+J | d }d|v s8J | djdd	}d|v sGJ d S )
N)   r      r   )            r   Zmama)nniissr   r   F)Znumeric_only)r   groupbymaxmin)Zaaresult r   U/app/.heroku/python/lib/python3.10/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   arrayZint64r   r   r&   r6   r   r5   )serkeyr)   r   r+   r   r   r   test_max_inatQ   s   
r@   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   rC   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   rD   groupsrH   r(   r   idxr+   r   r   r   $test_groupby_aggregate_period_columns   s   rP   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	   rE   rF   rG   rJ   r   r    r   r"   )r0   rK   r   rL   r   r   r&   r'   rM   r   r   r   #test_groupby_aggregate_period_frame   s   rQ   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   abcdr   )r?   Zcol1Zcol2r?   r   r   r   r   r   r	   )r   listr4   r5   rA   objectr   r   	set_indexr&   r'   range)r(   r   r+   r   r   r   #test_aggregate_numeric_object_dtype   s0   rW   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   rA   r:   r&   r'   )rD   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tsr_   r^   r
   r;   )r#   r:   )r	   r	   r	   d   )r   rA   r   r   ilocrU   r&   r'   r   r0   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<   

rc   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   )
categoriesr9   rY   r   )r:   r!   r   ZUInt64r"   	   )r   r   )r0   ZCategoricalr   r=   r4   ZarangeZuint64r   r   ZCategoricalIndexr:   rb   r&   r'   r   ra   )rZ   r(   r)   resrO   r+   r   r   r   (test_min_max_nullable_uint64_empty_group   s    
 
rh   )numpyr4   ZpytestZpandas._libs.tslibsr   Zpandasr0   r   r   r   Zpandas._testingZ_testingr&   r   r,   r8   r@   rC   markZparametrizerP   rQ   rW   strr[   rc   rh   r   r   r   r   <module>   s*    


/