a
    PªfÙ(  ã                	   @   sª  d dl Zd dlZd dlmZ d dlmZmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ G dd„ dƒZG dd	„ d	eƒZG d
d„ deƒZej dddg¡dd„ ƒZdd„ Zej dg d¢¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Z ej d#ej!gej!gej!ggej!gej!ggfej!gej!gej! ggej!gej"ggfej!gej! gej!ggej!gej"ggfej!gej! gej! ggej!gej! ggfg¡d$d%„ ƒZ#dS )&é    N)Úgroupby)Úgroup_cumprodÚgroup_cumsumÚ
group_meanÚ	group_sumÚ	group_var)Úensure_platform_int)Úisnac                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚGroupVarTestMixinc                 C   sÌ   t j d¡}t jt  d¡  | j¡}t jddd}d| d¡ | j¡ }t  t  	d¡d¡ d	¡}t  
|¡jd
ddjdddd d d …t jf }|d }|  ||||¡ t  ||| j¡s¼J ‚t ||¡ d S )Né   ©é   é   r   Úint64©Údtypeé
   )é   r   )é   Úintp)r   r   ÚF©Úorderr   )ÚaxisÚddofr   )ÚnpÚrandomÚdefault_rngÚnanÚonesÚastyper   ÚzerosÚtileÚarangeZsqueezeÚreshapeÚstdZnewaxisÚalgoÚallcloseÚrtolÚtmÚassert_numpy_array_equal©ÚselfÚprngÚoutÚcountsÚvaluesÚlabelsZexpected_outZexpected_counts© r2   ú]/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/groupby/test_libgroupby.pyÚtest_group_var_generic_1d   s     þz+GroupVarTestMixin.test_group_var_generic_1dc                 C   s¬   t j d¡}t jt  d¡  | j¡}t jddd}d| d¡ | j¡ }t jdd	d}t  |j	dd
d gg¡}|d }|  
||||¡ t  ||| j¡sœJ ‚t ||¡ d S )Nr   ©r   r   r   r   r   r   r   r   r   )r   )r   r   r   r   r   r    r   r!   Úarrayr%   r&   r'   r(   r)   r*   r+   r2   r2   r3   Ú%test_group_var_generic_1d_flat_labels%   s    z7GroupVarTestMixin.test_group_var_generic_1d_flat_labelsc                 C   sº   t j d¡}t jt  d¡  | j¡}t jddd}d| d¡ | j¡ }t  t  	d¡d¡ d	¡}t j
| ddd¡d
ddd }|d }|  ||||¡ t  ||| j¡sªJ ‚t ||¡ d S )Nr   ©r   r   r   r   r   r   ©r   r   ©r   r   r   r   ©r   r   )r   r   r   r   r   r    r   r!   r"   r#   r%   r$   r&   r'   r(   r)   r*   r+   r2   r2   r3   Ú$test_group_var_generic_2d_all_finite5   s    z6GroupVarTestMixin.test_group_var_generic_2d_all_finitec                 C   sô   t j d¡}t jt  d¡  | j¡}t jddd}d| d¡ | j¡ }t j|d d …df< t  t  	d¡d	¡ d
¡}t  
|d d …df jddddjdddd t jt  d¡ g¡j | j¡}|d }|  ||||¡ tj||dd t ||¡ d S )Nr   r8   r   r   r   r   r9   r   r:   r   r   r   r   r;   gíµ ÷Æ >©r(   )r   r   r   r   r   r    r   r!   r"   r#   Zvstackr$   r%   ÚTr&   r)   Úassert_almost_equalr*   r+   r2   r2   r3   Ú"test_group_var_generic_2d_some_nanD   s"    (þÿûz4GroupVarTestMixin.test_group_var_generic_2d_some_nanc                 C   sŒ   t jt jgg| jd}t jdgdd}dt jd| jd }t jddd}|  ||||¡ |d dkshJ ‚|d dksxJ ‚t |d d	¡ d S )
Nr   r   r   gUUUÕª¦ê?)r   r   r   r   ©r   r   g        )	r   r6   r   r   r   r!   r&   r)   r?   )r,   r.   r/   r0   r1   r2   r2   r3   Útest_group_var_constantY   s    z)GroupVarTestMixin.test_group_var_constantN)Ú__name__Ú
__module__Ú__qualname__r4   r7   r<   r@   rB   r2   r2   r2   r3   r
      s
   r
   c                   @   s*   e Zd ZdZeeƒZejZ	dZ
dd„ ZdS )ÚTestGroupVarFloat64Tgñhãˆµøä>c                 C   s”   t j d¡}t jt jgg| jd}t jdgdd}| d¡d  | j¡}d|_t jddd}|  	||||¡ |d dks|J ‚t
j|d	 d
dd d S )Nr   r   r   r   é@B l    J)£)rG   r   r   rA   gUUUUUUµ?gü©ñÒMb@?r=   )r   r   r   r6   r   r   r    Úshaper!   r&   r)   r?   )r,   r-   r.   r/   r0   r1   r2   r2   r3   Útest_group_var_large_inputso   s    z/TestGroupVarFloat64.test_group_var_large_inputsN)rC   rD   rE   Ú__test__Ústaticmethodr   r&   r   Úfloat64r   r(   rI   r2   r2   r2   r3   rF   h   s
   rF   c                   @   s"   e Zd ZdZeeƒZejZ	dZ
dS )ÚTestGroupVarFloat32Tg{®Gáz„?N)rC   rD   rE   rJ   rK   r   r&   r   Úfloat32r   r(   r2   r2   r2   r3   rM   ~   s   rM   r   rN   rL   c           	   	   C   s6  t jt j d¡ d¡| d}t  g d¢¡}t  d| ¡}t jt|ƒt jd}tt  	t  
d¡t  t jd|f ¡¡ƒ}tj}||||d d …d f |ƒ dd	„ }t  ||d d
… ƒ||d
d… ƒ||dd … ƒg¡}t ||¡ t |t jg d¢t jd¡ t j|d d
…< ||||d d …d f |ƒ t j|d< t ||¡ d S )Nr   é   r   )é   é   rO   )r   é   r   r   c                 S   s6   t | ƒ ¡ rt tjd¡S | d |  ¡ |  ¡ | d gS )NrR   r   éÿÿÿÿ)r	   Úallr   Úrepeatr   ÚmaxÚmin)Úgroupr2   r2   r3   Ú_ohlc’   s    ztest_group_ohlc.<locals>._ohlcrP   rQ   )rP   rP   é   )r   r6   r   r   Zstandard_normalr!   Úlenr   r   rU   r#   ÚdiffZr_Ú
libgroupbyZ
group_ohlcr)   r?   r*   r   )	r   ÚobjZbinsr.   r/   r1   ÚfuncrY   Úexpectedr2   r2   r3   Útest_group_ohlc†   s    &4
ra   c                 C   sx   d}t jdgdgdgdgg|d}t  |¡}t jg d¢t jd}d}| |||||ƒ tj||ƒ|dd…d	f dd
 dS )a  
    Check a group transform that executes a cumulative function.

    Parameters
    ----------
    pd_op : callable
        The pandas cumulative function.
    np_op : callable
        The analogous one in NumPy.
    dtype : type
        The specified dtype of the data.
    Fr   r   r   rR   r   )r   r   r   r   Nr   )Zcheck_dtype)r   r6   Ú
zeros_liker   r)   r*   )Úpd_opÚnp_opr   Úis_datetimelikeÚdataZanswerr1   Úngroupsr2   r2   r3   Ú(_check_cython_group_transform_cumulative¢   s    
rh   Únp_dtype)r   Zuint64rN   rL   c                 C   s(   t  | ¡j}tt j }}t|||ƒ d S ©N)r   r   Útyper   Zcumsumrh   )ri   r   rc   rd   r2   r2   r3   Ú"test_cython_group_transform_cumsum»   s    rl   c                  C   s"   t j} tt j }}t||| ƒ d S rj   )r   rL   r   Zcumprodrh   )r   rc   rd   r2   r2   r3   Ú#test_cython_group_transform_cumprodÃ   s    rm   c               
   C   sž  d} t jg d¢t jd}d}t jdgdgdgt jgdggdd}t  |¡}| t j¡ t||||| ƒ t jddd	t jd
gdd}t |d d …df |¡ t  |¡}| t j¡ t	||||| ƒ t jddd	t jdgdd}t |d d …df |¡ d} t jt  
dd¡gd ddd d …d f }t j|dd}t	|| d¡||| ƒ t  t  
dd¡t  
dd¡t  
dd¡t  
dd¡t  
dd¡g¡}t |d d …df  d¡|¡ d S )NF)r   r   r   r   r   r   r   r   r   rR   rL   rP   é   r   r   TÚnsr   úm8[ns]r   )r   r6   r   r   rb   Úfillr   r)   r*   r   Útimedelta64Úview)re   r1   rg   rf   Úactualr`   r2   r2   r3   Ú!test_cython_group_transform_algosÊ   s6    $

(




ûÿ	ru   c                  C   s®   t jddd} t jdgdd}t jt  dd¡t  d	d¡t  d
¡gddd d …d f  d¡ d¡}t jt|ƒt jd}t| |||dd t	 
| d d …df t jdgdd¡ d S )Nr5   rL   ©rH   r   r   r   r   r   ro   rR   ÚNaTrp   T©re   r   )r   r!   r6   rr   rs   r    r[   r   r   r)   r*   ©rt   r/   rf   r1   r2   r2   r3   Ú#test_cython_group_mean_datetimelikeð   s     þ
ýüûÿrz   c               	   C   sŒ   t jddd} t jddd}t jdddd d …d f }t jdt jd}tjtdd$ t| |||d	d
d W d   ƒ n1 s~0    Y  d S )Nr5   rL   rv   r   r   r   Ú	min_count)ÚmatchTr   )re   r{   )r   r!   r   ÚpytestZraisesÚAssertionErrorr   ry   r2   r2   r3   Ú&test_cython_group_mean_wrong_min_count  s    r   c                  C   s¸   t jddd} t jdgdd}t jt  d¡t  d¡gddd d …d f  d¡ d¡}t jt|ƒt jd}t| |||d	d
 t	 
| d d …df t jt  t  |d |d ¡d¡dd¡ d S )Nr5   rL   rv   r   r   r   rw   rp   Frx   r   r   )r   r!   r6   rr   rs   r    r[   r   r   r)   r*   ÚdivideÚaddry   r2   r2   r3   Ú:test_cython_group_mean_not_datetimelike_but_has_NaT_values  s$    þ
ýüûÿ2ÿr‚   c                  C   s¾   t jt jt jgt jt jggdd} t jddgdd}t jt jdgddgddgddgdd	gd
t jggdd}t jg d¢t jd}t| |||dd t jt jdgdt jggdd}t | |¡ d S )NrL   r   r   r   g      ð?g       @g      @g      @g      @r   )r   r   r   r   r   r   Frx   r   )r   r6   r   Úinfr   r   r)   r*   )rt   r/   rf   r1   r`   r2   r2   r3   Ú.test_cython_group_mean_Inf_at_begining_and_end   s    "*þþr„   zvalues, outc                 C   s€   t jt jgt jggdd}t jddgdd}t j| dd}t jg d¢t jd}t||||d dd t j|dd}t ||¡ d S )NrL   r   r   r   )r   r   r   Frx   )r   r6   r   r   r   r)   r*   )r0   r.   rt   r/   rf   r1   r`   r2   r2   r3   Ú-test_cython_group_sum_Inf_at_begining_and_end4  s    þr…   )$Únumpyr   r}   Zpandas._libsr   r]   Zpandas._libs.groupbyr   r   r   r   r   Zpandas.core.dtypes.commonr   Zpandasr	   Zpandas._testingZ_testingr)   r
   rF   rM   ÚmarkZparametrizera   rh   rl   rm   ru   rz   r   r‚   r„   rƒ   r   r…   r2   r2   r2   r3   Ú<module>   s:   U

&
$&&*üþ	