o
    i                     @   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defddZejdg ddd Zdd ZdS )     N)iNaT)	DataFrameIndexSeries)
Int64Indexc                  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   mama)nniissr   r   Fnumeric_only)r   groupbymaxmin)aaresult r   \/var/www/edux/Edux_v2/venv/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}tjtdd |j	d	d
}W d    n1 s;w   Y  t
g ddd}t dg di|d}t|| tjtdd |jd	d
}W d    n1 spw   Y  t
g ddd}t dg di|d}t|| d S )N)r	   r	   r
   r
   r   )r	   foor
   barF)abcde)ABCr
   r"   zDropping invalid)matchFr   r	   r
   r   namer$   )r   r    r!   index)r   r   r!   )r   _consolidate_inplacelen_mgrblocksr   tmassert_produces_warningFutureWarningr   r   assert_frame_equalr   )using_array_managerdfgbr   eiexpectedr   r   r   $test_max_min_object_multiple_columns!   s,   
r8   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-09r9   r9   z%Y-%m-%d)format1)r   r	   r	   )r   r   r   r   F)as_indexr   r9   r'   )pdto_datetimer   dtdater   npnanr   r   r/   assert_series_equalr*   r(   )datesr4   r   r7   r   r   r   test_min_date_with_nansB   s    rE   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
   	min_countdtypeTcheck_exactr   )
r   r   r   r   rA   int64r/   rC   r   rB   serr5   r   r7   r   r   r   test_max_inatT   s   rO   c                  C   sZ   t dtdtd g} | g d}|jdd}t tjtjtd d}tj||dd d S )Nr	   r
   )r	   r
   r   r   rF   r&   TrJ   )r   r   r   r   rA   rB   r/   rC   rM   r   r   r   test_max_inat_not_all_nag   s
   rP   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/   rC   rQ   groupsrU   r4   r   idxr7   r   r   r   $test_groupby_aggregate_period_columnt   s   r]   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
   rR   rS   rT   rW   r   r'   r   r)   )r=   rX   r   rY   r   r   r/   r2   rZ   r   r   r   #test_groupby_aggregate_period_frame   s   r^   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 g dtdtddt} | d }t ddgdd	gd
dgdd}t	
|| d S )N)r"   r"   r#   r#   abcdr   )keycol1col2r`   r"   r#   r   r   r   r
   )r   listrA   rB   astypeobjectr   r   	set_indexr/   r2   range)r4   r   r7   r   r   r   #test_aggregate_numeric_object_dtype   s0   rh   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   categoryrH   i  r"   r#   r"   r#   r'   r)   )r   cat
as_orderedr   r   aggr   rd   rI   r/   r2   )rQ   dsr4   r   r7   r   r   r   %test_aggregate_categorical_lost_index   s   ro   rI   )Int64Int32Float64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 )Nrp   l   .D3 rt   r   g      @r
   r	   )idtsrv   ru   r   rF   )r*   rI   )r
   r
   r
   d   )r   rd   r   r   ilocrf   r/   r2   r   r=   NAr*   )rI   rv   r4   r5   r   r7   res_maxexpected_maxresult2	expected2res_max2df2gb2result3res_max3result4res_max4r   r   r   test_groupby_min_max_nullable   s<   

r   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	   )
categoriesrH   rj   r"   )rI   r(   r#   UInt64r)   	   )r   r   )r=   Categoricalr   arrayrA   arangeuint64r   r   CategoricalIndexrI   ry   r/   r2   r   rx   )rk   r4   r5   resr\   r7   r   r   r   (test_min_max_nullable_uint64_empty_group   s    
 
r   )numpyrA   pytestpandas._libs.tslibsr   pandasr=   r   r   r   pandas._testing_testingr/   pandas.core.apir   r   r8   rE   rO   rP   markparametrizer]   r^   rh   strro   r   r   r   r   r   r   <module>   s,    !


/