o
    _~#gD                     @   sb   d dl m Z mZ d dlZd dlZd dlmZmZ d dlm	Z	m
Z
mZ d dlmZ G dd dZdS )    )datetime	timedeltaN)InfinityNegInfinity)	DataFrameIndexSeriesc                   @   s8  e Zd Zeddddejdddejdg
ZeeedZe	ddd	d
ejd
ddejdg
e	ddddejdddejdg
e	ddddejdddejdg
e	ddddejdddejdg
e	ddddejdddejdg
dZ
ejg d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d dgejd!g dd"d# Zejd$g d%d&d' Zejd(d dgejd$d)egd*d+ Zejd,d-g d.g d/g d0gfd1g d2g d3g d4gfd5g d.g d6g d7gfd8g d9g d:g d;gfd<g d2g d=g d7gfgd>d? Zejjd@dA ZejdBej dCdDdEdFdGd dHdIdJddKejgdLfej dCdDdEdFdMd dHdIdJddKejgdNfeejj dddOeejj!gdPfeej"j dQd ddRdSdTeej"j!gdUfe# dVdWdXdYdZe$ gd[fe%d\dde%d\dde%d\ddgd]fgd^d_ Z&d`da Z'dbdc Z(ejdddedfg dgfdedhg difdjdfg dkfdjdhg dlfgdmdn Z)ejdddjdfg dofdjdhg dofdedfg dpfdedhg dpfgdqdr Z*ejdsg dtg dudvedwg dxie+dwgedydzfd{g dtiee,dg d|fgd}d~ Z-ejdddgdd Z.d)S )TestRank               AB      ?g      @      @      @g       @         )averageminmaxfirstdense)paramsc                 C   s   |j S )z5
        Fixture for trying all rank methods
        )param)selfrequest r!   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/frame/methods/test_rank.pymethod"   s   zTestRank.methodc                 C   sL  t d}tj|jd d ddf< tj|jd d ddf< tj|jd d ddf< tj|jd d dd	f< | }|d
}t|j}|tj	j}t
|jd|}tj||< t
|jd
|}tj||< t|j| t|j| ttjdjddddd}	|	 }
|	t }t|
| |	d
}
|	td
}t|
| d S )Nscipy.statsr   r   r   r   r   Cr   Dr
   r   (   )size)
   r   )pytestimportorskipnpnanlocrankisnanvaluesfillnainfapply_along_axisrankdatatmassert_almost_equalr   randomdefault_rngintegersreshapeastypefloatassert_frame_equal)r   float_framesp_statsranks0ranks1maskfvalsexp0exp1dfresultexpr!   r!   r"   	test_rank)   s0   




zTestRank.test_rankc                 C   sP  t g dg dg}t g dg dgd }|jddd}t|| t g dg dg}|dd	 }|jddd}t|| t g d
g dg}t g dg dg}|jddd}t|| t g dg dg}|jddd}t|| t dtjdgg dg}t d	tjdgg dg}|jddd}t|| t d	tjdgg dg}|jddd}t|| tdddtjtdddgtdddtdddtdddgg}t |}t d	tjdgg dg}|jdddd}t|| t dtjd	gg dg}|jdddd}t|| t dg di}t dg di}t| | d S )N)r
   r   r   )r
   r   r         ?      @       @rM   r
   Tpctr   rN   )bca)rS   rR   rQ   rN   rM   rL   Fnumeric_only)rN   r   rL   )r
   r   r   rQ   rS   rL   )rL   rL   rN     r   r   i  r   )rV   	ascendingrN   rL   rM   )#B;rZ   r)   gDcLg_QPgKH9)r   rL   r   g      @g      @r   rN   )r   r/   r6   r>   r,   r-   r   )r   rG   expectedrH   datarI   r!   r!   r"   
test_rank2M   sF    zTestRank.test_rank2c                 C   s>   t tjdddd}| }|  |}t|| d S )Nr   )r)   r   float64dtype)	r   r,   r8   r9   standard_normalcopyr/   r6   r>   r   rG   r\   rH   r!   r!   r"   test_rank_does_not_mutate~   s   z"TestRank.test_rank_does_not_mutatec                 C   sh   t  |d< tddd|d< |jdd tjtdd |jdd	 W d    d S 1 s-w   Y  d S )
Nr   r
   )dayssecondsr   FrU   z"not supported between instances ofmatchaxis)r   nowr   r/   r*   raises	TypeError)r   float_string_framer!   r!   r"   test_rank_mixed_frame   s   "zTestRank.test_rank_mixed_framec                 C   s  t d}tj|jd d ddf< tj|jd d ddf< tj|jd d ddf< tj|jd d dd	f< |jd
d}|jdd
d}|tjj}t	|j
d|}t	|j
d|}t|j| t|j| |jdd}|jddd}|| d  j}|j}	|	|	 d  j}	|	tjj}	t	|j
d|}t	|j
d|	}t|j| t|j| |jddd}|jdddd}|tjj}t	|j
d| }t	|j
d| }t|j| t|j| |jd
dd}|jdd
dd}|| d  j}|j}	|	|	 d  j}	|	tjj}	t	|j
d| }t	|j
d|	 }t|j| t|j| d}
t jt|
d |jddd W d    n	1 sSw   Y  t jt|
d |jddd W d    d S 1 ssw   Y  d S )Nr$   r   r   r   r   r   r%   r   r&   bottom)	na_optionr
   r   topF)rr   rX   z3na_option must be one of 'keep', 'top', or 'bottom'rh   badT)r*   r+   r,   r-   r.   r/   r2   r3   r1   r4   r5   r6   r7   r   to_dictTassert_numpy_array_equalrm   
ValueError)r   r?   r@   rA   rB   rD   rE   rF   fval0fval1msgr!   r!   r"   test_rank_na_option   s\   
$zTestRank.test_rank_na_optionc                 C   sP   t ddgddgg}t|jdd|jdd t|jdd|jdd d S )	Nr   r
   r   r   r   rj   indexcolumns)r   r6   r>   r/   )r   rG   r!   r!   r"   test_rank_axis   s    zTestRank.test_rank_axisaxr   mc                 C   s   t d}tjdddd}|d d }dd t|jd	 D }||d
 |d fD ]3}t||d}|j	||d}t
|j|||dkrF|nd}	|	tj}	t|	|dd}
t||
 q+d S )Nr$   r   r      )d      g      $@c                 S   s   g | ]
}t td | qS )z)chrord).0ir!   r!   r"   
<listcomp>   s    z4TestRank.test_rank_methods_frame.<locals>.<listcomp>r
   g    .Agư>r~   )rk   r#   r   ordinalr_   )r*   r+   r,   r8   r9   r:   rangeshaper   r/   r4   r5   r<   r_   r6   r>   )r   r   r   r@   xscolsvalsrG   rH   sprankr\   r!   r!   r"   test_rank_methods_frame   s   
z TestRank.test_rank_methods_framera   )Of8i8c                 C   s   d|v r| j  |}n| j |}|jdd}| |  }t|| | | j|d}|dkrC|j|ddd}t|| |j|ddd}t|| d S )Nr   F)rX   r#   r   T)r#   rX   rV   )rG   dropnar<   r/   r   r6   r>   )r   r#   ra   rG   resr\   res2res3r!   r!   r"   test_rank_descending   s   zTestRank.test_rank_descendingrk   Nc                 C   s@   | j }ddd}|d u r|n||}||| j| ||d d S )Nr   r   c                 S   s@   t ||d}|dkr| j} |j}| j||d}t|| d S )Nr   r
   r#   rk   )r   rv   r/   r6   r>   )rG   r\   r#   rk   exp_dfrH   r!   r!   r"   _check2d  s   z3TestRank.test_rank_2d_tie_methods.<locals>._check2dr   )r   r   )rG   r<   results)r   r#   rk   ra   rG   r   framer!   r!   r"   test_rank_2d_tie_methods  s   

z!TestRank.test_rank_2d_tie_methodsz
method,expr   )rL   rL   rL   )rL         ?UUUUUU?)rL   r   UUUUUU?r   )r   rL   rL   )r   r   r   )r   r   r   r   )rL   r   r   )rL   r   r   r   )r   rL   rL   )r   r   r   )r   r   r   r   )r   r   r   c                 C   s@   t g dg dg dg}|j|dd}t |}t|| d S )N)  B   r   )r   A   r   )r   r   r
   T)r#   rP   )r   r/   r6   r>   )r   r#   rI   rG   rH   r\   r!   r!   r"   test_rank_pct_true  s   !zTestRank.test_rank_pct_truec                 C   sB   t tdtdddd}|jdd }|dk sJ d S )Ni  r   r   TrO   r
   )r   r,   aranger/   r   all)r   rG   rH   r!   r!   r"   test_pct_max_many_rowsD  s
   zTestRank.test_pct_max_many_rowszcontents,dtypeir   g#Bǻg}gJzgWw'&l7rZ   g|=r'   r_   gj7֖float32r   uint8ii'  i g    _Bint641r   BABar%   objectrW   
datetime64c                 C   s   t jt jd t dd}t j||d}t jtt|ddd }||v rE|| }t jdtt|d}t 	|||}t 	||t j}t jd
t|}	|||	 }
|||	 dd}|
 }t|| d S )Nnat)r_   r   r   r   r`   r_   rL   r   r   )r,   r-   r   arrayr   lenr8   r9   choiceinsertpermutationr/   r6   assert_equal)r   contentsra   frame_or_seriesdtype_na_mapr1   	exp_orderna_valuenan_indicesrandom_orderobjr\   rH   r!   r!   r"   test_rank_inf_and_nanM  s"   >
zTestRank.test_rank_inf_and_nanc              
   C   s   g d}g d}ddt jdddt jt jdt j g
}t||d|dd	}| }| }|d
  |d
< |d  |d< t|| d S )N)
r   r   r   r   r
   r   r   r   	   r)   )
r   r   r   r   r   r   r   r
   r   r   r   r   r   r   )col1col2r   )r]   r}   ra   r   r   )r,   r-   r3   r   r/   rc   r6   r>   )r   r}   r   r   rG   	df_resultseries_resultr!   r!   r"   "test_df_series_inf_nan_consistency  s   "z+TestRank.test_df_series_inf_nan_consistencyc                 C   s@   t dtj dtjgi}t dg di}| }t|| d S )NrS   r   rL   rN   rM   )r   r,   r3   r/   r6   r>   rd   r!   r!   r"   test_rank_both_inf  s   zTestRank.test_rank_both_infzna_option,ascending,expectedrs   T)rM   rL   rN   FrY   rq   rT   rK   c                 C   s>   |t jt jt j g}|j|||d}||}t|| d S )Nr#   rr   rX   )r,   r3   r-   r/   r6   r   )r   r   r#   rr   rX   r\   r   rH   r!   r!   r"   test_rank_inf_nans_na_option  s   z%TestRank.test_rank_inf_nans_na_option)rL   rN         @rM   )rN   rM   rL   r   c                 C   sL   |g d}|j d||d}||}|rt|tr|d}t|| d S )Nfoor   Nr   r   r   uint64)r/   
isinstancer   r<   r6   r   )r   r   rr   rX   r\   using_infer_stringr   rH   r!   r!   r"   test_rank_object_first  s   
zTestRank.test_rank_object_firstzdata,expected)r
   r   rS   )r   r   r   )rS   rQ   rQ   r   r`   r   rS   )r}   r~   c                 C   sn   t |tt| tdd}tjtdd |  W d    n1 s$w   Y  |jdd}t	
|| d S )Nr`   r   z&'<' not supported between instances ofrh   TrU   )r   r   listkeysr   r*   rm   rn   r/   r6   r>   )r   r]   r\   rG   rH   r!   r!   r"   test_rank_mixed_axis_zero  s   
z"TestRank.test_rank_mixed_axis_zerozdtype, exp_dtype)zstring[pyarrow]Int64)zstring[pyarrow_numpy]r_   c                 C   sF   t d tg d|d}|jdd}tg d|d}t|| d S )Npyarrowr   r`   r   r   )r
   r   Nr   )r*   r+   r   r/   r6   assert_series_equal)r   ra   	exp_dtyper   rH   r\   r!   r!   r"   test_rank_string_dtype  s
   
zTestRank.test_rank_string_dtype)/__name__
__module____qualname__r   r,   r-   sr   rG   r   r   r*   fixturer#   rJ   r^   re   rp   r|   r   markparametrizer   r   r   r   r   
single_cpur   r3   iinfor   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   r	      s         
$1L
	
	
$
 
<
	
	


r	   )r   r   numpyr,   r*   pandas._libs.algosr   r   pandasr   r   r   pandas._testing_testingr6   r	   r!   r!   r!   r"   <module>   s    