U
    -e@,                     @   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 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.d!d$ddgejd/ed0ed1gd2d3 Z(ejd4dddddd	ddd5d6d7d8d9d:d;d!d$d<d=d>gd?d@ Z)ejddddd	d
dddddg
dAdB Z*ejdCdDdEgejdFdGdHdIdJdKdLdMdNdOg	ejd/ej+dPdQdRdSgdTdUej+dPdQdRdSgdVdUej+dWdXdYdZgd[dUej+dWdXdYdZgd\dUej+dDdDdEdEgd]dUgd^d_ Z,dS )`z
test cython .agg behavior
    N)is_float_dtypeis_integer_dtype)	DataFrameIndexNaTSeries	Timedelta	Timestampbdate_rangeop_namecountsumZstdvarZsemmeanmedianzignore::RuntimeWarning)Zmarksprodminmaxc           
         s8  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 |< qt|jjdd}ddg|j_d|_	 |d }dkr4t
|| d S )Nr      g      ?AB      )r   r   C   
   r   c                    s   t |   S N)getattrx)r    k/var/www/html/Darija-Ai-Train/env/lib/python3.8/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)Zdropna)r   r   )npnanrandomrandnr   locZdropgroupbyindexnametmassert_frame_equal
setdefaultTstacknamesassert_series_equal)
r   datadfgroupedexpresultZexpdZcat1cat2r'   r    )r(   r   r!   test_cythonized_aggers   s.    


r?   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brD   rE   )
r   r*   r,   randintastyper/   r   aggr2   r8   )framer=   expectedr    r    r!   test_cython_agg_booleanO   s    rK   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 5 Q R X 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   r@   rA   foobar   rC   KCannot use numeric_only=True with SeriesGroupBy.mean and non-numeric dtypesmatchrD   rE   Tnumeric_only)r0   columns)r   r*   r,   rF   pytestraises	TypeErrorr/   r   Zsort_valuesZdrop_duplicatesr2   r3   )rI   msgr=   rJ   r    r    r!   test_cython_agg_nothing_to_agg\   s    " "  rY   c               	   C   sf   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 5 Q R X d S )Nr   r@   rA   rL   rM   rN   nowr5   )periodsfreq)rD   rE   datesrO   rP   rE   TrR   )r   r*   r,   rF   pdZ
date_rangerU   rV   rW   r/   r]   r   )rI   rX   r    r    r!   )test_cython_agg_nothing_to_agg_with_datesl   s    
r_   c                  C   sf   t dddgdddgd} | jddd	  | jddd	  | jddd	  | jddd	  d S )
Nr   r         r@   )r   yr   rT   )levelr$   )r   r/   r   )r:   r    r    r!   test_cython_agg_frame_columnsy   s
    rd   c               
   C   s   t ddddddddgddddddddg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 )NrL   rM   onetwothree   )r   r   r   Dr   r   c                 S   s   |    S r   )Zvalue_countsto_dictr   r    r    r!   r"      r#   z-test_cython_agg_return_dict.<locals>.<lambda>r   )rf   re   rg   r   r1   )r0   r1   )
r   r*   r,   r-   r/   rH   r   r   r2   r8   )r:   tsrJ   r    r    r!   test_cython_agg_return_dict   s    

	rm   c                  C   sX   t ddd} tdddddgd	 | d
}|dd }| }|tj}t|| d S )Nz1/1/2000rA   )r[   r   r   r   ri   Er   r0   c                 S   s   | j S r   )monthr   r    r    r!   r"      r#   z&test_cython_fail_agg.<locals>.<lambda>)r
   r   r/   r   rH   r*   r2   r8   )Zdrrl   r;   ZsummedrJ   r    r    r!   test_cython_fail_agg   s    rq   z
op, targopfirstc                 C   s
   | j d S Nr   Zilocr   r    r    r!   r"      r#   r"   lastc                 C   s
   | j d S )Nrt   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   rA   )sizeTZaltrS   )r   r*   r,   r-   rF   rG   floatr/   _cython_agg_generalrH   r2   r3   )r(   targopr:   labelsr=   rJ   r    r    r!   test__cython_agg_general   s
    r}   c                 C   s   t | dkrt| S tjS rs   )lenr*   r   r+   r   r    r    r!   r"      r#   c                 C   s   t j| ddS )Nr   )Zddof)r*   r   r   r    r    r!   r"      r#   c                    s   t dddg}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   r@   observedTrx   c                    s    | S r   r    r   r{   r    r!   r"      r#   z/test_cython_agg_empty_buckets.<locals>.<lambda>)	r   ranger/   r^   cutrz   rH   r2   r3   )r(   r{   r   r:   grpsgr=   rJ   r    r   r!   test_cython_agg_empty_buckets   s    r   c                 C   s  t dddg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ddddgitj	|dddd}| r||j
dk }t|| |jt|d || d
jdd dd}t dddddgitj	|dddd}| r||j
dk }t|| d S )Nr   r   r   rD   )rT   r   rN   r@   dtyper   r   Trx      )r\   $   )r1   Zorderedro   r   r   i  )r   r*   Zarangeint_r/   r^   r   rz   Zinterval_rangeZCategoricalIndexrD   r2   r3   )r   r:   r   r=   Z	intervalsrJ   r    r    r!   $test_cython_agg_empty_buckets_nanops   s6        r   r(   r9   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   rC   rD   rk   rE   ro   )r   r   r   r/   	aggregater2   r3   )r(   r9   r:   r0   rJ   r=   r    r    r!   "test_cython_with_timestamp_and_nat   s
    r   rH   ZohlcZcumprodZcumsumshiftanyallZquantileZrankZcumminZcummaxc                 C   sr   t dddddgdddddgd}d|jjd	 j_|d
gd| i}| d
gd| i}t	|| d S )Ngffffff@g@g@gffffff@g      @Zsetosa)sepal_lengthspeciesFr   r   r   )
r   Z_mgrZarraysflagsZ	writeabler/   rH   copyr2   Zassert_equal)rH   r:   r=   rJ   r    r    r!    test_read_only_buffer_source_agg  s    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r|d}t	|| d S )Nr   r   r@   r   r   r`   ra   r      rh   	   Int64r   )r   r   Zfloat64)r   r   )
r   r^   arrayNAr   r/   ZassignrG   r2   r8   )r   r:   r=   Zdf2rJ   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   )rr   r   )ru   r   r   r   r`   ra   r   r   ZInt8g?g?g333333?g?ZFloat32ZFloat64booleanc                 C   s$  |rt j| d< tddddg| d}|d}|dkr@t  }nh|dkrvt| jrZ| j}qt| jrl| j}qt  }n2|dkrt| jr| j}qt  }n|d	kr| j}t	|| }|d
 j|kst
||}|d
 j|kst
t	|d
 | }|j|kst
|d
 |}|j|ks t
d S )Nr`   rD   rE   )keycolr   Z
always_intr   r   r   r   )r^   r   r   r/   Z
Int64Dtyper   r   r   ZFloat64Dtyper   AssertionErrorr   )r9   r   actionr   r:   r;   Zexpected_dtyper=   r    r    r!   test_cython_agg_EA_known_dtypesM  s4    








r   )-__doc__numpyr*   rU   Zpandas.core.dtypes.commonr   r   Zpandasr^   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingr2   markZparametrizeparamfilterwarningsr?   rK   rY   r_   rd   rm   rq   r   r   r   r   r   r   r   r}   r   r   r   r   r   r   r   r    r    r    r!   <module>   s   $	
!




	



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