
    dA                     ~    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	c m
Z d dlmZmZ d dlmZ  G d d          ZdS )    )datetime	timedeltaN)InfinityNegInfinity)	DataFrameSeriesc                      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j	        ddd	d
ej        d
ddej        dg
           ej	        ddddej        dddej        dg
           ej	        ddddej        dddej        dg
           ej	        ddddej        dddej        dg
           ej	        ddddej        dddej        dg
          dZ
 ej        g d          d             Zej        d             Zd Zd Zd Zej        d             Zd Zej        d             Zej                            dg d          d             Zej                            dddg          ej                            ddeg          d                         Zej                            d d!g d"g d#g d$gfd%g d&g d'g d(gfd)g d"g d*g d+gfd,g d-g d.g d/gfd0g d&g d1g d+gfg          d2             Zej        j        d3             Zej                            d4ej         d5d6d7d8d9dd:d;d<dd=ej        gd>fej         d5d6d7d8d?dd:d;d<dd=ej        gd@f ej         ej!                  j"        dddA ej         ej!                  j#        gdBf ej         ej$                  j"        dCdddDdEdF ej         ej$                  j#        gdGf e%            dHdIdJdKdL e&            gdMf e'dNdd           e'dNdd           e'dNdd          gdOfg          dP             Z(dQ Z)dR Z*ej                            dSdTdUg dVfdTdWg dXfdYdUg dZfdYdWg d[fg          d\             Z+ej                            dSdYdUg d]fdYdWg d]fdTdUg d^fdTdWg d^fg          d_             Z,ej                            d`g dag dbdc eddg dei          fdfg dai e e-d          g g          fg          dh             Z.dS )iTestRank               AB      ?g      @      @      @g       @         averageminmaxfirstdense)paramsc                     |j         S )z5
        Fixture for trying all rank methods
        )param)selfrequests     `/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/frame/methods/test_rank.pymethodzTestRank.method"   s    
 }    c                    dd l }ddl m} 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        |j                  }|                    t          j	                  j        }t          j
        |d|          }t          j        ||<   t          j
        |d|          }	t          j        |	|<   t          j        |j        |           t          j        |j        |	           t          t          j                            dd	d                              d                    }
|
                                }|
                    t$                                                    }t          j        ||           |
                    d          }|
                    t$                                        d          }t          j        ||           d S )Nr   rankdatar   r   r   r   r   Cr   Dr   (   )size)
   r   )scipy.statsr)   npnanlocrankisnanvaluesfillnainfapply_along_axistmassert_almost_equalr   randomrandintreshapeastypefloatassert_frame_equal)r"   float_framescipyr)   ranks0ranks1maskfvalsexp0exp1dfresultexps                r$   	test_rankzTestRank.test_rank)   s   (((((($&F!S!$&F!S!$&F!S!$&F!S!!!##!!!$$x*++""26**1"8Q66VT
"8Q66VT

v}d333
v}d333 ry((AB(77??HHIIii##%%
fc***ii##A&&
fc*****r&   c                    t          g dg dg          }t          g dg dg          dz  }|                    dd          }t          j        ||           t          g dg dg          }|                    d          d	z  }|                    dd          }t          j        ||           t          g d
g dg          }t          g dg dg          }|                    dd          }t          j        ||           t          g dg dg          }|                    dd          }t          j        ||           t          dt          j        dgg dg          }t          d	t          j        dgg dg          }|                    dd          }t          j        ||           t          d	t          j        dgg dg          }|                    dd          }t          j        ||           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          }|                    ddd          }t          j        ||           t          dt          j        d	gg dg          }|                    ddd          }t          j        ||           t          dg di          }t          dg di          }t          j        |                                |           d S )N)r   r   r   )r   r   r         ?      @       @rP   r   Tpctr   rQ   )bca)rV   rU   rT   rQ   rP   rO   Fnumeric_only)rQ   r   rO   )r   r   r   rT   rV   rO   )rO   rO   rQ     r   r   i  r   )rY   	ascendingrQ   rO   rP   )#B;r]   r.   gDcLg_QPgKH9)r   rO   r   g      @g      @r   rQ   )r   r3   r9   r@   r0   r1   r   )r"   rI   expectedrJ   datarK   s         r$   
test_rank2zTestRank.test_rank2M   sS   			999-..oooyyy9::S@%%
fh///			999-..771::#%%
fh///9::oooyyy9:://
fh///ooo{{{;<<//
fh///bfc*OOO<==sBFC0///BCC//
fh///sBFC0///BCC//
fh/// dAq!!268D!Q+?+?@dAq!!8D!Q#7#7$19M9MN
 t__ sBFC0///BCC$??
fh///sBFC0///BCC%@@
fh///NNNOPPAAABCC
bggii-----r&   c                     t          t          j                            dd          d          }|                                }|                                 |}t          j        ||           d S )Nr.   r   float64dtype)r   r0   r;   randncopyr3   r9   r@   r"   rI   r_   rJ   s       r$   test_rank_does_not_mutatez"TestRank.test_rank_does_not_mutate~   s^     ryr1--Y???7799
			
fh/////r&   c                    t          j                    |d<   t          dd          |d<   |                    d           t	          j        t          d          5  |                    d	           d d d            d S # 1 swxY w Y   d S )
Nr   r   )dayssecondsr   FrX   z"not supported between instances ofmatchaxis)r   nowr   r3   pytestraises	TypeError)r"   float_string_frames     r$   test_rank_mixed_framezTestRank.test_rank_mixed_frame   s    )1:&*3A*F*F*F;'U333]9,PQQQ 	, 	,###+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   B  BBc                 	   dd l }ddl m} 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          }|                    dd          }|                    t          j                  j        }t          j	        |d|          }t          j	        |d|          }t          j        |j        |           t          j        |j        |           |                    d          }|                    dd          }|                    |                                dz
                                            j        }	|j        }
|
                    |
                                dz
                                            j        }
|
                    t          j                  j        }
t          j	        |d|	          }t          j	        |d|
          }t          j        |j        |           t          j        |j        |           |                    dd          }|                    ddd          }|                    t          j                  j        }t          j	        |d|           }t          j	        |d|           }t          j        |j        |           t          j        |j        |           |                    dd          }|                    ddd          }|                    |                                dz
                                            j        }	|j        }
|
                    |
                                dz
                                            j        }
|
                    t          j                  j        }
t          j	        |d|	           }t          j	        |d|
           }t          j        |j        |           t          j        |j        |           d}t!          j        t$          |          5  |                    dd           d d d            n# 1 swxY w Y   t!          j        t$          |          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr   r(   r   r   r   r   r   r*   r   r+   bottom)	na_optionr   topF)ry   r[   z3na_option must be one of 'keep', 'top', or 'bottom'rm   badT)r/   r)   r0   r1   r2   r3   r6   r7   r5   r8   r9   r:   r   to_dictTassert_numpy_array_equalrr   rs   
ValueError)r"   rA   rB   r)   rC   rD   rF   rG   rH   fval0fval1msgs               r$   test_rank_na_optionzTestRank.test_rank_na_option   s   (((((($&F!S!$&F!S!$&F!S!$&F!S! !!H!55!!!x!88""26**1"8Q66"8Q66
v}d333
v}d333 !!E!22!!!u!55""KOO$5$5$9#B#B#D#DEELeiikkAo668899;RV$$+"8Q66"8Q66
v}d333
v}d333
 !!EU!CC!!!u!FF""26**1"8Q77"8Q77
v}d333
v}d333
 !!H!FF!!!x5!II""KOO$5$5$9#B#B#D#DEELeiikkAo668899;RV$$+"8Q77"8Q77
#FM4888
#FM4888 D]:S111 	? 	?u>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? ]:S111 	> 	>tu===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s$   *RRR4SS Sc                 $   t          ddgddgg          }t          j        |                    d          |                    d                     t          j        |                    d          |                    d                     d S )	Nr   r   r   r   r   ro   indexcolumns)r   r9   r@   r3   )r"   rI   s     r$   test_rank_axiszTestRank.test_rank_axis   s|    AA'((
bgg1goorwwGw/D/DEEE
bgg1goorwwIw/F/FGGGGGr&   c           
      "   dd l }ddl m} t          j                            ddd          }|dz
  dz  }d t          |j        d                   D             }||dz   |d	z  fD ]}t          ||
          }dD ]}dD ]}|                    ||          }	t          j	        ||||dk    r|nd          }
|

                    t          j                  }
t          |
|
          
                    d          }t          j        |	|           d S )Nr   r(      )d      g      $@c                 L    g | ]!}t          t          d           |z
            "S )z)chrord).0is     r$   
<listcomp>z4TestRank.test_rank_methods_frame.<locals>.<listcomp>   s*    >>>aCHHqL!!>>>r&   r   g    .Agư>)r   )r   r   r   )rp   r%   r   ordinalrc   )r/   r)   r0   r;   r<   rangeshaper   r3   r8   r>   rc   r9   r@   )r"   rB   r)   xscolsvalsrI   axmrJ   sprankr_   s               r$   test_rank_methods_framez TestRank.test_rank_methods_frame   sQ   ((((((Yq"i004i4>>5!+=+=>>>c29- 	< 	<D4...B < <D < <AWW"QW77F0 "dgAA9 F $]]2:66F(>>>EEiPPH)&(;;;;<<	< 	<r&   re   )Of8i8c                 Z   d|v r-| j                                                             |          }n| j                             |          }|                    d          }|                                |z
                                  }t          j        ||           |                                |z
                      |          }|dk    r-|                    |dd          }t          j        ||           |                    |dd          }t          j        ||           d S )Nr   F)r[   )r%   r   T)r%   r[   rY   )rI   dropnar>   r3   r   r9   r@   )r"   r%   re   rI   resr_   res2res3s           r$   test_rank_descendingzTestRank.test_rank_descending   s   %<<!!((//BB&&Bggg&&FFHHrM''))
c8,,,FFHHrM''v'66C<<77&E7MMD!$111wwfEwJJ
dH-----r&   rp   r   Nc                     | j         }dd}||n|                    |          } ||| j        |         ||           d S )Nr   r   c                     t          ||d          }|dk    r| j        } |j        }|                     ||          }t          j        ||           d S )Nr   r   r%   rp   )r   r}   r3   r9   r@   )rI   r_   r%   rp   exp_dfrJ   s         r$   _check2dz3TestRank.test_rank_2d_tie_methods.<locals>._check2d  s\    XH==>>FqyyTWWFW66F!&&11111r&   r   )r   r   )rI   r>   results)r"   r%   rp   re   rI   r   frames          r$   test_rank_2d_tie_methodsz!TestRank.test_rank_2d_tie_methods  s`     W	2 	2 	2 	2 m5)9)9V,V$GGGGGGr&   z
method,expr   )rO   rO   rO   )rO         ?UUUUUU?)rO   r   UUUUUU?r   )r   rO   rO   )r   r   r   )r   r   r   r   )rO   r   r   )rO   r   r   r   )r   rO   rO   )r   r   r   )r   r   r   r   )r   r   r   c                     t          g dg dg dg          }|                    |d          }t          |          }t          j        ||           d S )N)  B   r   )r   A   r   )r   r   r   T)r%   rS   )r   r3   r9   r@   )r"   r%   rK   rI   rJ   r_   s         r$   test_rank_pct_truezTestRank.test_rank_pct_true  s^    B }}}mmmDEED11S>>
fh/////r&   c                     t          t          j        d          t          j        ddd          d          }|                    d                                          }|dk                                    sJ d S )Ni  r   r   TrR   r   )r   r0   aranger3   r   all)r"   rI   rJ   s      r$   test_pct_max_many_rowszTestRank.test_pct_max_many_rowsF  sy     )I&&RYy!R-H-HII
 
 T""&&((!  """""""r&   zcontents,dtypeir   g#Bǻg}gJzgWw'&l7r]   g|=r,   rc   gj7֖float32r   uint8ii'  i g    _Bint641r   BABar*   objectrZ   
datetime64c                    t           j        t           j        d t          j        d          d}t          j        ||          }t          j        t	          t          |                    d          dz   }||v rx||         }t           j                            t	          t          |                    d          }t          j        |||          }t          j        ||t           j                  }t           j        	                    t          |                    }	 |||	                   }
 |||	         d          }|

                                }t          j        ||           d S )Nnat)rc   r   r   r   rd   rc   rO   r   )r0   r1   r   arrayr   lenr;   choiceinsertpermutationr3   r9   assert_equal)r"   contentsre   frame_or_seriesdtype_na_mapr5   	exp_orderna_valuenan_indicesrandom_orderobjr_   rJ   s                r$   test_rank_inf_and_nanzTestRank.test_rank_inf_and_nanO  s9   | vv-..	
 
 (%000HU3v;;//yAAACG	L  #E*H)**5V+=+=qAAKYv{H==F	)["&AAI y,,S[[99of\233"?9\#:)LLL
)))))r&   c           
         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<   t          j        ||           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   re   r   r   )r0   r1   r7   r   r3   rg   r9   r@   )r"   r   r   r   rI   	df_resultseries_results          r$   "test_df_series_inf_nan_consistencyz+TestRank.test_df_series_inf_nan_consistency  s    ///---1bfaArvrvq26'B  
 
 
 GGII			 "6
 1 1f "6
 1 1f
i77777r&   c                     t          dt          j         dt          j        gi          }t          dg di          }|                                }t	          j        ||           d S )NrV   r   rO   rQ   rP   )r   r0   r7   r3   r9   r@   rh   s       r$   test_rank_both_infzTestRank.test_rank_both_inf  s]    rvgq"&1233c???344
fh/////r&   zna_option,ascending,expectedrz   T)rP   rO   rQ   Fr\   rx   rW   rN   c                      |t           j        t           j        t           j         g          }|                    |||          } ||          }t	          j        ||           d S )Nr%   ry   r[   )r0   r7   r1   r3   r9   r   )r"   r   r%   ry   r[   r_   r   rJ   s           r$   test_rank_inf_nans_na_optionz%TestRank.test_rank_inf_nans_na_option  s`     orvrvw7889	RR"?8,,
)))))r&   )rO   rQ         @rP   )rQ   rP   rO   r   c                      |g d          }|                     d||          } ||          }t          j        ||           d S )N)foor   Nr   r   r   )r3   r9   r   )r"   r   ry   r[   r_   r   rJ   s          r$   test_rank_object_firstzTestRank.test_rank_object_first  sX     o999::ISS"?8,,
)))))r&   zdata,expected)r   r   rV   )r   r   r   )rV   rT   rT   r   rV   )r   r   c                    t          |          }t          j        t          d          5  |                                 d d d            n# 1 swxY w Y   |                    d          }t          j        ||           d S )Nz&'<' not supported between instances ofrm   TrX   )r   rr   rs   rt   r3   r9   r@   )r"   r`   r_   rI   rJ   s        r$   test_rank_mixed_axis_zeroz"TestRank.test_rank_mixed_axis_zero  s     t__]9,TUUU 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	d++
fh/////s   AAA)/__name__
__module____qualname__r   r0   r1   sr   rI   r   r   rr   fixturer%   tdskip_if_no_scipyrL   ra   ri   rv   r   r   r   markparametrizer   r   r   r   
single_cpur   r7   iinfor   r   r   r   r   r   r   r   r   r   r   r   r   r    r&   r$   r
   r
      s       1aBFAq!RVQ788A	##	$	$B 28S#sCc3PSTUUrxAq!RVQ1bfa@AArxAq!RVQ1bfa@AA1aArvq!QBCC1aArvq!QBCC G V^FFFGGG  HG !+ !+ !+F/. /. /.b0 0 0, , , K> K> K>ZH H H < < <* [W&7&7&788. . 98.& [VaV,,[WtVn55H H 65 -,H  [(;(;(;=P=P=PQR'''//////  "9"9"9;R;R;RS
 $$$&=&=&=?V?V?VW
 '''//////%	
 <0 0= <0 [# # # [ VGF !( VGF !$ bhrx  $aC"(1C1C1GH'R BHRX&&*BHRX&&*	  kmmS#tT3

CXN$1%%xxa';';XXdAq=Q=QRi8	
; ;x* *y; ;x*48 8 8*0 0 0 [&D///*E???+t___-uooo.		
 * * * [&t1112u2223D.../E///0		
 * * * [;;YYY//C;Q1R1RS;;;q2!F!F!FG	
 0 0 0 0 0r&   r
   )r   r   numpyr0   rr   pandas._libs.algosr   r   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   pandas._testing_testingr9   r
   r   r&   r$   <module>r      s         
             * ) ) ) ) ) ) ) )             W0 W0 W0 W0 W0 W0 W0 W0 W0 W0r&   