o
    ŀg 2                     @   s  d Z ddlZddlZddlmZmZ ddlZddlm	Z	m
Z
mZmZmZmZmZ ddlmZ ddlm  mZ ejddddd	d
dejdejdgddddg
dd Zdd Zdd Zdd Zdd Zdd Z dd Z!ejd dej"fdej#fd	ej$fdej%fdej&fdej'fdej(fd!d"d# fd$d%d# fg	d&d' Z)ejd dej"fdd(d# fd	d)d# fdej'fdej(fgd*d+ Z*d,d- Z+ejd.g d/ejd0ed1ed2gd3d4 Z,ejd5g d6d7d8 Z-ejdg d9d:d; Z.ejd<g d=d>d? Z/ejd@dAdBgejdCg dDejd0ej0g dEdFdGej0g dEdHdGej0g dIdJdGej0g dIdKdGej0g dLdMdGgdNdO Z1dS )Pz
test cython .agg behavior
    N)is_float_dtypeis_integer_dtype)	DataFrameIndexNaTSeries	Timedelta	Timestampbdate_rangeop_namecountsumstdvarsemmeanmedianzignore::RuntimeWarning)marksprodminmaxc           
         s@  ddddddddddt jt jgddgd t jddd	}t|}t j|jdd
ddf< fdd |jdgddd} fdd|D }td|i}d|j	_
 |}t|| |ddg}i }|D ]\\}}}	 |	d ||i |< qgt|jjdd}ddg|j	_d|_
 |d }dv rt|| d S d S )Nr      g      ?AB         r   r   C
   r   c                    s   t |   S N)getattrx)r    ^/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/groupby/aggregate/test_cython.py<lambda>8       z(test_cythonized_aggers.<locals>.<lambda>)axisc                    s   i | ]\}}| |d  qS )r   r$   ).0catgroup)opr$   r%   
<dictcomp><   s    z*test_cythonized_aggers.<locals>.<dictcomp>T)future_stack)r   r   )npnanrandomdefault_rngstandard_normalr   locdropgroupbyindexnametmassert_frame_equal
setdefaultTstacknamesassert_series_equal)
r   datadfgroupedexpresultexpdcat1cat2r+   r$   )r,   r   r%   test_cythonized_aggers   s0   
rH   c                  C   s   t tjddddtjdddddd} | dd  }d	}tj	t
|d
 | dd tj}W d    n1 sDw   Y  t|| d S )Nr   r      2   boolabrM   rN   zusing SeriesGroupBy.meanmatch)r   r/   r1   r2   integersastyper6   r   r9   assert_produces_warningFutureWarningaggr?   )framerD   msgexpectedr$   r$   r%   test_cython_agg_booleanP   s   rY   c                  C   s   t tjddddddgd d} d	}tjt|d
 | dd j	dd W d    n1 s3w   Y  t tjddddddgd d} | dg | d j	dd}t g | d 
  g d}t|| d S )Nr   r   rI   rJ   foobar   rL   KCannot use numeric_only=True with SeriesGroupBy.mean and non-numeric dtypesrO   rM   rN   Tnumeric_only)r7   columns)r   r/   r1   r2   rQ   pytestraises	TypeErrorr6   r   sort_valuesdrop_duplicatesr9   r:   )rV   rW   rD   rX   r$   r$   r%   test_cython_agg_nothing_to_agg`   s   ""rf   c                  C   s   t tjddddddgd tjddd	d
d} d}tjt	|d | 
djjdd W d    d S 1 s:w   Y  d S )Nr   r   rI   rJ   rZ   r[   r\   nowr   )periodsfreq)rM   rN   datesr]   rO   rN   Tr^   )r   r/   r1   r2   rQ   pd
date_rangera   rb   rc   r6   rj   r   )rV   rW   r$   r$   r%   )test_cython_agg_nothing_to_agg_with_datest   s   
"rm   c                  C   s   t g dg dd} d}tjt|d | jddd  W d    n1 s(w   Y  tjt|d | jddd  W d    n1 sHw   Y  tjt|d | jddd  W d    n1 shw   Y  tjt|d | jddd  W d    d S 1 sw   Y  d S )	N)r   r      )rn      rI   )r#   yz+DataFrame.groupby with axis=1 is deprecatedrO   r   r`   )levelr(   )r   r9   rS   rT   r6   r   )rA   rW   r$   r$   r%   test_cython_agg_frame_columns   s   "rr   c                  C   s   t g dg dtjddtjddd} | dd dd	 }td
d
d
dddd
dgtddgdddd}t	
|| d S )N)rZ   r[   rZ   r[   rZ   r[   rZ   rZ   )oners   twothreert   rt   rs   ru   r      )r   r   r   Dr   r   c                 S   s   |    S r    )value_countsto_dictr"   r$   r$   r%   r&      r'   z-test_cython_agg_return_dict.<locals>.<lambda>r   )rt   rs   ru   r[   rZ   r8   )r7   r8   )r   r/   r1   r2   r3   r6   rU   r   r   r9   r?   )rA   tsrX   r$   r$   r%   test_cython_agg_return_dict   s   	r|   c                  C   s   t ddd} tg dd | d}|dd }| }d	}tjt|d
 |tj}W d    n1 s5w   Y  t	|| d S )Nz1/1/2000rJ   )rh   )r   r   r   rw   Er   r7   c                 S   s   | j S r    )monthr"   r$   r$   r%   r&      s    z&test_cython_fail_agg.<locals>.<lambda>zusing SeriesGroupBy.sumrO   )
r
   r   r6   r   r9   rS   rT   rU   r/   r?   )drr{   rB   summedrW   rX   r$   r$   r%   test_cython_fail_agg   s   r   z
op, targopfirstc                 C   
   | j d S Nr   ilocr"   r$   r$   r%   r&         
 r&   lastc                 C   r   )Nr   r"   r$   r$   r%   r&      r   c                 C   s   t tjdd}tjdjddddt}||j	| d dd}|t
jv r,tnd }d|  }tj||d	 |||}W d    n1 sMw   Y  t|| d S )
Nr   i  r   rJ   )sizeTaltr_   zusing DataFrameGroupBy.rO   )r   r/   r1   r2   r3   rQ   rR   floatr6   _cython_agg_generalcom_cython_tablerT   r9   rS   rU   r:   )r,   targoprA   labelsrD   warnrW   rX   r$   r$   r%   test__cython_agg_general   s   
r   c                 C   s   t | dkrt| S tjS r   )lenr/   r   r0   r"   r$   r$   r%   r&      s    c                 C   s   t j| ddS )Nr   )ddof)r/   r   r"   r$   r$   r%   r&      s    c                    s~   t g d}tddd}|jt|d ||d}|j| d dd}|jt|d ||d}| fdd	}t|| d S )
N   r      r   7   rI   observedTr   c                    s    | S r    r$   r"   r   r$   r%   r&      s    z/test_cython_agg_empty_buckets.<locals>.<lambda>)	r   ranger6   rk   cutr   rU   r9   r:   )r,   r   r   rA   grpsgrD   rX   r$   r   r%   test_cython_agg_empty_buckets   s   r   c                 C   s   t g ddgd}tjdddtd}|jt|d || djd	d d
d}tjdddd}t dg ditj	|dd
dd}| rF||j
dk }t|| |jt|d || djdd d
d}t dg ditj	|dd
dd}| rx||j
dk }t|| d S )Nr   rM   )r`   r   r\   rI   dtyper   r   Tr      )ri   )r   r   $   r   )r8   orderedr~   r   )r   r   i  r   r   )r   r/   arangeintr6   rk   r   r   interval_rangeCategoricalIndexrM   r9   r:   )r   rA   r   rD   	intervalsrX   r$   r$   r%   $test_cython_agg_empty_buckets_nanops   s.   

r   r,   )r   r   r   r   r@   z2016-10-14 21:00:44.557z17088 days 21:00:44.557c                 C   sZ   t ddg|tgd}tddgdd}t d|tgi|d}|d| }t|| d S )Nr   r   rL   rM   rz   rN   r~   )r   r   r   r6   	aggregater9   r:   )r,   r@   rA   r7   rX   rD   r$   r$   r%   "test_cython_with_timestamp_and_nat  s
   r   rU   )r   r   r   r   r   r   r   r   ohlccumprodcumsumshiftanyallquantiler   r   rankcummincummaxc                 C   sf   t g dg dd}d|jjd j_|dgd| i}| dgd| i}t	|| d S )N)gffffff@g@g@gffffff@g      @)setosar   r   r   r   )sepal_lengthspeciesFr   r   r   )
r   _mgrarraysflags	writeabler6   rU   copyr9   assert_equal)rU   rA   rD   rX   r$   r$   r%    test_read_only_buffer_source_agg  s   r   )
r   r   r   r   r   r   r   r   r   r   c                 C   s   t ddgd tjddddddd	d
dtjg
ddd}t|dd |  }|j|d dd}t|dd |  }| dv rCd}nd}|j|d}t	
|| d S )Nr   r   rI   r   r   rn   ro   r      rv   	   Int64r   )r   r   float64)r   )r   r   FT)convert_integer)r   rk   arrayNAr!   r6   assignrR   convert_dtypesr9   r?   )r   rA   rD   df2rX   r   r$   r$   r%   test_cython_agg_nullable_int>  s   
"r   r   )r   Float64booleanc                 C   st   t ddgtjdtjg| dtjddg| dd}|d }t ddggtdgddddgd	d
}t|| d S )Nr   r   r   r   r   rz   r   r   r   )r7   r`   r   )	r   rk   r   r   r6   r   r   r9   r:   )r   rA   rD   rX   r$   r$   r%   &test_count_masked_returns_masked_dtypea  s   r   with_naTFzop_name, action)	)r   	large_int)r   always_float)r   r   )r   r   )r   r   )r   preserve)r   r   )r   r   )r   r   )r   r   rn   ro   r   r   Int8)g?g?g333333?g?Float32r   )TTFFr   c                 C   s  |rt j| d< tg d| d}|d}|dkrt  }n4|dkr9t| jr+| j}n't| jr4| j}nt  }n|dkrKt| jrF| j}nt  }n|dkrR| j}t	|| }|d	 j|ksaJ |
|}|d	 j|ksoJ t	|d	 | }|j|ks~J |d	 
|}|j|ksJ d S )
Nrn   )rM   rM   rN   rN   )keycolr   
always_intr   r   r   r   )rk   r   r   r6   
Int64Dtyper   r   r   Float64Dtyper!   r   )r@   r   actionr   rA   rB   expected_dtyperD   r$   r$   r%   test_cython_agg_EA_known_dtypesq  s4   








r   )2__doc__numpyr/   ra   pandas.core.dtypes.commonr   r   pandasrk   r   r   r   r   r   r	   r
   pandas._testing_testingr9   pandas.core.commoncorecommonr   markparametrizeparamfilterwarningsrH   rY   rf   rm   rr   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$   r$   r$   r%   <module>   s    $	
!






!



