o
    _~#g(                  	   @   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arangesqueezereshapestdnewaxisalgoallclosertoltmassert_numpy_array_equalselfprngoutcountsvalueslabelsexpected_outexpected_counts r6   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/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sNJ 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-   r6   r6   r7   %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sUJ 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-   r6   r6   r7   $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   r<   r   r   r   r   r=   r   r>   r   r   r   r   r?   gƠ>r*   )r   r   r   r   r   r    r   r!   r"   r#   vstackr%   r&   Tr(   r+   assert_almost_equalr,   r-   r6   r6   r7   "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s4J |d dks<J t|d d	 d S )
Nr   r   r   gUUUժ?)r   r   r   r   r   r   g        )	r   r:   r   r   r   r!   r(   r+   rD   )r.   r0   r1   r2   r3   r6   r6   r7   test_group_var_constantY   s   z)GroupVarTestMixin.test_group_var_constantN)__name__
__module____qualname__r8   r;   r@   rE   rG   r6   r6   r6   r7   r
      s    r
   c                   @   s*   e Zd ZdZeeZejZ	dZ
dd ZdS )TestGroupVarFloat64Tgh㈵>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))rL   r   r   rF   gUUUUUU?gMb@?rA   )r   r   r   r:   r   r   r    shaper!   r(   r+   rD   )r.   r/   r0   r1   r2   r3   r6   r6   r7   test_group_var_large_inputso   s   z/TestGroupVarFloat64.test_group_var_large_inputsN)rH   rI   rJ   __test__staticmethodr   r(   r   float64r   r*   rN   r6   r6   r6   r7   rK   h   s    rK   c                   @   s"   e Zd ZdZeeZejZ	dZ
dS )TestGroupVarFloat32Tg{Gz?N)rH   rI   rJ   rO   rP   r   r(   r   float32r   r*   r6   r6   r6   r7   rR   ~   s
    rR   r   rS   rQ   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   )      rT   )r      r   r   c                 S   s6   t |  rttjdS | d |  |  | d gS )NrW   r   )r	   allr   repeatr   maxmin)groupr6   r6   r7   _ohlc   s   ztest_group_ohlc.<locals>._ohlcrU   rV   )rU   rU      )r   r:   r   r   standard_normalr!   lenr   r   rZ   r#   diffr_
libgroupby
group_ohlcr+   rD   r,   r   )	r   objbinsr0   r1   r3   funcr^   expectedr6   r6   r7   test_group_ohlc   s   &4
rj   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   rW   r   )r   r   r   r   Nr   )check_dtype)r   r:   
zeros_liker   r+   r,   )pd_opnp_opr   is_datetimelikedataanswerr3   ngroupsr6   r6   r7   (_check_cython_group_transform_cumulative   s   
$rs   np_dtype)r   uint64rS   rQ   c                 C   s(   t | j}tt j}}t||| d S N)r   r   typer   cumsumrs   )rt   r   rm   rn   r6   r6   r7   "test_cython_group_transform_cumsum   s   ry   c                  C   s"   t j} tt j}}t|||  d S rv   )r   rQ   r   cumprodrs   )r   rm   rn   r6   r6   r7   #test_cython_group_transform_cumprod   s   r{   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   rW   rQ   rU      r   r   Tnsr   m8[ns]r   )r   r:   r   r   rl   fillr   r+   r,   r   timedelta64view)ro   r3   rr   rp   actualri   r6   r6   r7   !test_cython_group_transform_algos   s6   $

(




"	r   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 )Nr9   rQ   rM   r   r   r   r   r   r}   rW   NaTr~   Tro   r   )r   r!   r:   r   r   r    ra   r   r   r+   r,   r   r1   rp   r3   r6   r6   r7   #test_cython_group_mean_datetimelike   s   
(r   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    d S 1 s@w   Y  d S )Nr9   rQ   r   r   r   r   	min_count)matchTr   )ro   r   )r   r!   r   pytestraisesAssertionErrorr   r   r6   r6   r7   &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 )Nr9   rQ   r   r   r   r   r   r~   Fr   r   r   )r   r!   r:   r   r   r    ra   r   r   r+   r,   divideaddr   r6   r6   r7   :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 )NrQ   r   r   r   g      ?g       @g      @g      @g      @r   )r   r   r   r   r   r   Fr   r   )r   r:   r   infr   r   r+   r,   )r   r1   rp   r3   ri   r6   r6   r7   .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 )NrQ   r   r   r   )r   r   r   Fr   )r   r:   r   r   r   r+   r,   )r2   r0   r   r1   rp   r3   ri   r6   r6   r7   -test_cython_group_sum_Inf_at_begining_and_end4  s   r   )$numpyr   r   pandas._libsr   rd   pandas._libs.groupbyr   r   r   r   r   pandas.core.dtypes.commonr   pandasr	   pandas._testing_testingr+   r
   rK   rR   markparametrizerj   rs   ry   r{   r   r   r   r   r   r   r   r   r6   r6   r6   r7   <module>   s<    U

&
$&&*	