o
    5c,                     @   sl  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 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<d=d>gejd?g d@ejd0ej+g dAdBdCej+g dAdDdCej+g dEdFdCej+g dEdGdCej+g dHdIdCgdJdK Z,dS )Lz
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}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 |< qdt|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/gps/gps/lib/python3.10/site-packages/pandas/tests/groupby/aggregate/test_cython.py<lambda>7       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>F)dropna)r   r   )npnanrandomrandnr   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   

rF   c                  C   sd   t tjdddtjddddd} | dd  }| dd tj}t	|| d S )	Nr      2   r   boolabrK   rL   )
r   r.   r0   randintastyper4   r   aggr7   r=   framerB   expectedr#   r#   r$   test_cython_agg_booleanO   s   rS   c               	   C   s`  t tjdddddgd d} tjtdd	* tjt	d
d	 | 
dd jdd W d    n1 s6w   Y  W d    n1 sEw   Y  tjtdd	 | 
dd   W d    n1 sew   Y  t tjdddddgd d} tt | dg 
| d  }W d    n1 sw   Y  t g | d   d}t|| d S )Nr   rG   rH   foobar   rJ   This will raise a TypeErrormatchdoes not implementrK   rL   Tnumeric_onlyzCould not convert (foo|bar)*r5   )r   r.   r0   rM   r7   assert_produces_warningFutureWarningpytestraisesNotImplementedErrorr4   r   	TypeErrorsort_valuesdrop_duplicatesr8   rP   r#   r#   r$   test_cython_agg_nothing_to_agg\   s    ""rf   c               	   C   s   t tjdddddgd tjdddd	d
} tjtdd2 t	j
tdd | djjdd W d    n1 s<w   Y  W d    d S W d    d S 1 sTw   Y  d S )Nr   rG   rH   rT   rU   rV   nowr:   )periodsfreq)rK   rL   datesrW   rX   rZ   rL   Tr[   )r   r.   r0   rM   pd
date_ranger7   r^   r_   r`   ra   rb   r4   rj   r   )rQ   r#   r#   r$   )test_cython_agg_nothing_to_agg_with_datesn   s   
"rm   c                  C   sb   t g dg dd} | jddd  | jddd  | jddd  | jddd  d S )N)r   r      )rn      rG   )r"   yr   columns)levelr'   )r   r4   r   )r?   r#   r#   r$   test_cython_agg_frame_columns{   s
   rs   c                  C   s   t g dg dtjdtj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)rT   rU   rT   rU   rT   rU   rT   rT   )onert   twothreeru   ru   rt   rv      )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   )ru   rt   rv   r   rU   rT   r6   )r5   r6   )
r   r.   r0   r1   r4   rO   r   r   r7   r=   )r?   tsrR   r#   r#   r$   test_cython_agg_return_dict   s   

	r}   c                  C   sR   t ddd} tg dd | d}|dd }| }|tj}t|| d S )	Nz1/1/2000rH   )rh   )r   r   r   rx   Er   r]   c                 S   s   | j S r   )monthr!   r#   r#   r$   r%      s    z&test_cython_fail_agg.<locals>.<lambda>)r
   r   r4   r   rO   r.   r7   r=   )drr|   r@   summedrR   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}tjjddddt}||j| d dd}||	|}t
|| d S )Ni  r   rH   )sizeTaltr\   )r   r.   r0   r1   rM   rN   floatr4   _cython_agg_generalrO   r7   r8   )r+   targopr?   labelsrB   rR   r#   r#   r$   test__cython_agg_general   s
   r   c                 C   s   t | dkrt| S tjS r   )lenr.   r   r/   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   rG   observedTr   c                    s    | S r   r#   r!   r   r#   r$   r%      s    z/test_cython_agg_empty_buckets.<locals>.<lambda>)	r   ranger4   rk   cutr   rO   r7   r8   )r+   r   r   r?   grpsgrB   rR   r#   r   r$   test_cython_agg_empty_buckets   s   r   c                 C   s   t g ddgd}tdd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}| rC||jdk }t	
|| |jt|d || djdd d	d
}t dg ditj|dd	dd}| ru||jdk }t	
|| d S )Nr   rK   )rq   r   rV   rG   r   r   Tr      )ri   )r   r   $   r   )r6   orderedr]   r   )r   r   i  r   r   )r   r   r4   rk   r   r   interval_rangeCategoricalIndexrK   r7   r8   )r   r?   r   rB   	intervalsrR   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   rJ   rK   r{   rL   r]   )r   r   r   r4   	aggregater7   r8   )r+   r>   r?   r5   rR   rB   r#   r#   r$   "test_cython_with_timestamp_and_nat   s
   r   rO   )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	writeabler4   rO   copyr7   assert_equal)rO   r?   rB   rR   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krE|d}t	|| d S )Nr   r   rG   r   r   rn   ro   r      rw   	   Int64dtype)r   r   float64)r   r   )
r   rk   arrayNAr    r4   assignrN   r7   r=   )r   r?   rB   df2rR   r#   r#   r$   test_cython_agg_nullable_int,  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?Float32Float64)TTFFbooleanc                 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   )rK   rK   rL   rL   )keycolr   
always_intr   r   r   r   )rk   r   r   r4   
Int64Dtyper   r   r   Float64Dtyper    r   )r>   r   actionr   r?   r@   expected_dtyperB   r#   r#   r$   test_cython_agg_EA_known_dtypesO  s4   








r   )-__doc__numpyr.   r`   pandas.core.dtypes.commonr   r   pandasrk   r   r   r   r   r   r	   r
   pandas._testing_testingr7   markparametrizeparamfilterwarningsrF   rS   rf   rm   rs   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r#   r#   r$   <module>   s    $	
!




	



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