o
    d@,                     @   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    o/var/www/html/visualizacion-main/env/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   rR   c                  C   s   t tjdddddgd d} d}tjt|d	 | d
d jdd W d    n1 s0w   Y  t tjdddddgd d} | dg | d
 jdd}t g | d
 	 
 g d}t|| d S )Nr   rG   rH   foobar   rJ   KCannot use numeric_only=True with SeriesGroupBy.mean and non-numeric dtypesmatchrK   rL   Tnumeric_only)r5   columns)r   r.   r0   rM   pytestraises	TypeErrorr4   r   sort_valuesdrop_duplicatesr7   r8   )rP   msgrB   rQ   r#   r#   r$   test_cython_agg_nothing_to_agg\   s   ""rb   c                  C   s|   t tj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 s7w   Y  d S )Nr   rG   rH   rS   rT   rU   nowr:   )periodsfreq)rK   rL   datesrV   rW   rL   TrY   )r   r.   r0   rM   pd
date_ranger\   r]   r^   r4   rf   r   )rP   ra   r#   r#   r$   )test_cython_agg_nothing_to_agg_with_datesl   s   
"ri   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      )rj      rG   )r"   yr   r[   )levelr'   )r   r4   r   )r?   r#   r#   r$   test_cython_agg_frame_columnsy   s
   rn   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)rS   rT   rS   rT   rS   rT   rS   rS   )onero   twothreerp   rp   ro   rq      )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   )rp   ro   rq   r   rT   rS   r6   )r5   r6   )
r   r.   r0   r1   r4   rO   r   r   r7   r=   )r?   tsrQ   r#   r#   r$   test_cython_agg_return_dict   s   

	rx   c                  C   sR   t ddd} tg dd | d}|dd }| }|tj}t|| d S )	Nz1/1/2000rH   )rd   )r   r   r   rs   Er   r5   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=   )drrw   r@   summedrQ   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altrZ   )r   r.   r0   r1   rM   rN   floatr4   _cython_agg_generalrO   r7   r8   )r+   targopr?   labelsrB   rQ   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   rg   cutr   rO   r7   r8   )r+   r   r   r?   grpsgrB   rQ   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j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}| rG||j
dk }t|| |jt|d || djdd d
d}t dg ditj	|dd
dd}| ry||j
dk }t|| d S )Nr   rK   )r[   r   rU   rG   dtyper   r   Tr      )re   )r   r   $   r   )r6   orderedrz   r   )r   r   i  r   r   )r   r.   arangeint_r4   rg   r   r   interval_rangeCategoricalIndexrK   r7   r8   )r   r?   r   rB   	intervalsrQ   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   rv   rL   rz   )r   r   r   r4   	aggregater7   r8   )r+   r>   r?   r5   rQ   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   rQ   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   rj   rk   r      rr   	   Int64r   )r   r   float64)r   r   )
r   rg   arrayNAr    r4   assignrN   r7   r=   )r   r?   rB   df2rQ   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   rj   rk   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 )
Nrj   )rK   rK   rL   rL   )keycolr   
always_intr   r   r   r   )rg   r   r   r4   
Int64Dtyper   r   r   Float64Dtyper    r   )r>   r   actionr   r?   r@   expected_dtyperB   r#   r#   r$   test_cython_agg_EA_known_dtypesM  s4   








r   )-__doc__numpyr.   r\   pandas.core.dtypes.commonr   r   pandasrg   r   r   r   r   r   r	   r
   pandas._testing_testingr7   markparametrizeparamfilterwarningsrF   rR   rb   ri   rn   rx   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r#   r#   r$   <module>   s    $	
!




	



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