
    bMhM                     \   d dl mZ d dl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mZmZmZ d dlmZ d dlmZ ej        d             Z ej        d ej        dd	d
dej        dddej        d	g
          gd ej        ddddej        dddej        dg
          gd ej        ddddej        dddej        dg
          gd ej        ddddej        dddej        dg
          gd ej        ddddej        dddej        dg
          ggd           d             Z ej        ddddd  ej        d! ej        d"          #           ej        d$ ej        d"          #           ej        d% ej        d"          #          d&d'g
(          d)             ZdNd+Z  G d, d-          Z!ej"        #                    d.dgd/gfddgd0d/gfddgd/d/gfg d1g d2fg d3g d4fg d5g d6fg d7g d8fg d9g d:fg d;g d<fg	          d=             Z$ej"        #                    d.dgd/gfddgd0d/gfddgd0d0gfg d1g d2fg d3g d>fg d5g d6fg d7g d?fg d9g d@fg d;g d<fg	          dA             Z%ej"        #                    d.dgd/gfddgd0d/gfddgd/d/gfg d1g d2fg d3g dBfg d5g d6fg d7g dCfg d9g d:fg d;g d<fg	          dD             Z&ej"        #                    d.dgd/gfddgd0d/gfddgdEdEgfg d1g d2fg d3g dFfg d5g d6fg d7g dGfg d9g dHfg d;g d<fg	          dI             Z'ej"        #                    d.dgd/gfddgd0d/gfddgd0d/gfg d1g d2fg d3g d2fg d5g d6fg d7g dJfg d9g dKfg d;g d<fg	          dL             Z(ej"        j)        dM             Z*dS )O    )chainN)InfinityNegInfinity)NANaTSeries	Timestamp
date_range)CategoricalDtypec                  \    t          ddddt          j        dddt          j        dg
          S )N               )r   npnan     e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/series/methods/test_rank.pyserr      s)    1aArvq!Q:;;;r   averageg      ?g      @      @g      @g       @minr   r      r      maxr      r   firstdensec                     | d         S )Nr   r   )xs    r   <lambda>r#   %   s
    !A$ r   )paramsidsc                     | j         S Nparamrequests    r   resultsr,      s     =r   objectfloat64int64Float64Int64float64[pyarrow]pyarrowmarksint64[pyarrow]string[pyarrow]zstring[python]str)r$   c                     | j         S r'   r(   r*   s    r   dtyper:   +   s     =r   Fc                 :    d}| dv rd}n| dv r|dk    s|rd}nd}|S )Nr.   )r7   r0   )r2   r6   r   zdouble[pyarrow]uint64[pyarrow]r   )r:   methodpct	exp_dtypes       r   expected_dtyper@   =   sH    I###			8	8	8Y#)II)Ir   c                      e Zd Zd Zd Zd Zd Zej        	                    dddg          ej        	                    dg d	          ej        	                    d
g d          ej        	                    ddd e
             e            fdej        ej        ej         fdeej        ej         f ej        deej        ej          ej        d                    g          d                                                 Zd Zej        	                    dg d	          ej        	                    dej        dgej        dgej        dgg          d                         Zej        	                    ddgdgfdgdgfdgdgfddgddgfg dg dfg dg d fg d!g d"fg d#g d$fg          d%             Zd& Zd' Zd( Zd) Zd* ZdS )+TestSeriesRankc                    t          j        d          }t          j        |d d d<   d|d dd<   |                                }|                    d                                          }t          j        ||           t          j        |          }|	                    t          j
                  }t          |                    |          |j        d          }t          j        ||<   t          j        ||           t          t          j        d	                              d                    }|                                }	|                    t                                                     }t          j        |	|           t          t          j        d	                    d
z   }|dz  }|                    d          }	t          j        |	|           t          t          j        dd                    }t          t          j        dd                    }|                    d          }	t          j        |	|           |                    d          }t          j        |d<   t          t          j        dd                    }t          j        |d<   |                    d          }	t          j        |	|           t          t          j        d	                    d
z   }t          j        |d<   |dz  }|                    d          }	t          j        |	|           t          t          j        t          j        d                    }|                                }|                    d          }	t          j        |	|           t          t          j        d	          d          dz   }t          j        |d<   |dz  }|                    d          }	t          j        |	|           t%          dd	          }
t          t          j        d	          |
d          dz   }t          j        |j        d<   |dz  }|                    d          }	t          j        |	|           t          g d          }t          g d          }|                                }	t          j        |	|           t          dddt(          gd          }t          dddt          j        g          }|                                }	t          j        |	|           t          j        g dd          }t          j                            d                              t3          |                    }t          ||                   }t          |d
z   d          }|                                }	t          j        |	|           d S )Nscipy.statsr         @
   r   Ots)indexnamer         ?      @Tr>   r   d   g)\(?floatg@_)?r   r:   z1/1/1990)periods)gJz5g0.++#B;g{Gz?gIf;g?)r   r   r   r   r         @z3 dayz	1 day 10mz-2 dayzm8[ns])ig#Bǻg}gJzr   gWw'&l7rR   g|=r   (   r.   )pytestimportorskipr   r   rankastypetmassert_series_equalisnanfillnainfr   rankdatarI   arangerepeatrO   copyr
   ilocr   arrayrandomdefault_rngpermutationlen)selfdatetime_seriessp_statsranksoranksmaskfilledexpiseriesiranksrngvaluesrandom_orders                r   	test_rankzTestSeriesRank.test_rankL   s   &}55!v!!$A$$&& '',,1133
uf---x(( ''// X&&v..flNNNFD	
uc***1,,Q//00nnU##((**
vs+++1&&,m$''
vs+++1c**++RYuc**++$''
vs+++ ..))V
RY{C0011A$''
vs+++1&&,V
m$''
vs+++263//00llnn$''
vs+++ 1W5559V
m$''
vs+++Q///1s':::Q>&Qm$''
vs+++JJJKK)))**
vs+++ ';#>hOOOaArv&''
vs+++LLL
 
 
 y,,Q//;;CKKHH-..\C'y999
vs+++++r   c           	      	   t          g d          }t          g d          }t          g d                              t          g dd                    }t          j        |                                |           t          j        |                    d          |           t          g d                              t          g dd                    }t          g d          }|                                }t          j        ||           t          g d	                              t          g d	d                    }t          g d          }|                                }	t          j        |	|           t          d
dddddt          j        g                              t          g dd                    }
t          g d          }t          g d          }t          ddddddt          j        g          }t          j        |
                    d          |           t          j        |
                    d          |           t          j        |
                    d          |           t          g d          }t          g d          }t          ddddddt          j        g          }t          j        |
                    dd          |           t          j        |
                    dd          |           t          j        |
                    dd          |           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            n# 1 swxY w Y   t          d
dddt          j        g                              t          g d#d                    }
t          g d$          }t          g d%          }t          d&d'd(dt          j        g          }t          j        |
                    dd)          |           t          j        |
                    dd)          |           t          j        |
                    dd)          |           d S )*N)rK          @      @rE   rL   rS   )rS   rL   rE   ry   rx   rK   )r   secondthirdfourthfifthsixthT)
categoriesorderedF	ascending)rx   rE   rS   ry   rK   rL   )r   r   r   r   r   r   r   rz   r{   r|   r}   r~   )r   rz   r{   r|   r}   r~   seventh)rx   ry   rE   rL   rS   r   rK   )rK   rx   ry   rE   rL   rS   r   rK   rx   ry   rE   rL   rS   top)	na_optionbottomkeep)r   rS   rL   rE   ry   rx   rK   )rS   rL   rE   ry   rx   rK   r   )r   r   z3na_option must be one of 'keep', 'top', or 'bottom'matchbad)r   rz   r{   r|   )皙?333333?皙?rK   皙?r   r   r   r   rK         ?      ?      ?)r   r>   )r   rY   r   rZ   r[   rX   r   r   rV   raises
ValueError)ri   rp   exp_descr   	unorderedexp_unorderedres
unordered1exp_unordered1res1na_serexp_topexp_botexp_keepmsgs                  r   test_rank_categoricalz$TestSeriesRank.test_rank_categorical   sV    3334488899DDD
 

&SSS  
 
 	 	w||~~s333
w||e|<<hGGG DDD
 

&SSS  
 
 	 ===>>nn
sM222...//66///77
 

   > > >??  
t^444 h7GRVL
 

&SSS 
 
 	 <<<==<<<==3S#sC@AA
v{{U{;;WEEE
v{{X{>>HHH
v{{V{<<hGGG <<<==<<<==3S#sC@AA
v{{Ue{LLgVVV
KK(eK<<g	
 	
 	
 	v{{Vu{MMxXXX D]:S111 	: 	:KK%5K999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: ]:S111 	9 	9KK$%K888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 (GXrvFGGNNCCCTJJ
 
 22233222334dC899
v{{U{EEwOOO
v{{X4{HH'RRR
v{{V{FFQQQQQs$   "NN
N
,OOOc                     t          ddg          }|                    d           d}t          j        t          |          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r=   z,No axis named average for object type Seriesr   )r   rX   rV   r   r   )ri   sr   s      r   test_rank_signaturez"TestSeriesRank.test_rank_signature   s    Aq6NN	i   <]:S111 	 	FF9	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A((A,/A,c           
      "   |\  }}|dk    s|dk    s|s|dk    rt          j        d           ||n|                    |          }|                    |          }t	          j        |t          |t          ||                               d S )Nr/   r1   r8   zint64/str does not support NaNr   rP   )rV   skiprY   rX   rZ   r[   r   r@   )ri   r   r,   r:   using_infer_stringr=   rp   results           r   test_rank_tie_methodsz$TestSeriesRank.test_rank_tie_methods  s    W&  +0E>>K8999]cc

5(9(9((
vvcv9V9V'W'W'WXXXXXr   r   TFr=   r   r   r   r   r    r   )r   r   r   z!dtype, na_value, pos_inf, neg_infr-   Nr.   r0   r2   r3   r4   c                    t          j        d           |dk    r|dk    rd}nd}nd}d}	|g|	z  |g|	z  z   |g|	z  z   }
t          |
|          }g dg d	g d
fg dg dg dfg dg dg dfg dg dg dfg dg dg dfd}||         }|dk    r|d         |d         |d         g}n=|dk    r|d         |d         |d         g}n|d         t          j        g|	z  |d         g}|r|n
|d d d         }t          t          j        |                    }|                    |||          }t          j
        |t          ||                     d S )Nscipyr2   r   r<   r.   r   rP   )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   )r   r   r   r   r   r   r   r   r   rT   )r=   r   r   )rV   rW   r   r   r   listr   from_iterablerX   rZ   r[   )ri   r=   r   r   r:   na_valuepos_infneg_infr?   chunkin_arrrq   	exp_ranksrl   orderexpectedr   s                    r   "test_rank_tie_methods_on_infs_nansz1TestSeriesRank.test_rank_tie_methods_on_infs_nans  s   * 	G$$$&&&"".		-		!IU"hZ%%777)e:KKu---!		999iii8IIyyy)))4IIyyy)))4iiIII6iiIII6
 
	 &!1XuQxq2EE(""1XuQxq2EE1Xx%/q:E%65552;+H5566VyIVV
vvhi'H'H'HIIIIIr   c                    t          dt          j        t          j        t          j         dg          }|                    d          }t          dt          j        dddgd	          }t          j        ||           d S )
Nr      Fr   r   r   r   r.   rP   )r   r   r   r^   rX   rZ   r[   )ri   rq   r   rp   s       r   test_rank_desc_mix_nans_infsz+TestSeriesRank.test_rank_desc_mix_nans_infsG  so     !RVRVbfWb9::..aAq);;;
vs+++++r   z	op, valuer   g    .Agư>c                    t          j        d          }t          j                            d                              d          t          j        fdt          ddd          D                       t          j                            d                                         d t          t                              D             } ||          }t          ||          }|                    |          }|                    ||d	k    r|nd
          }	t          |	|                              d          }
t          j        ||
           d S )NrD   r   r   c                 $    g | ]}|d          S r'   r   ).0ixss     r   
<listcomp>z;TestSeriesRank.test_rank_methods_series.<locals>.<listcomp>\  s!    <<<RV<<<r   r   c                 L    g | ]!}t          t          d           |z             "S )a)chrord)r   r   s     r   r   z;TestSeriesRank.test_rank_methods_series.<locals>.<listcomp>_  s*    ;;;qSXX\"";;;r   )rI   r   r   ordinalr.   )rV   rW   r   re   rf   standard_normalconcatenaterangeshufflerh   r   rX   r_   rY   rZ   r[   )ri   r=   opvaluerk   rI   valsrH   r   sprankr   r   s              @r   test_rank_methods_seriesz'TestSeriesRank.test_rank_methods_seriesO  s9    &}55Y""1%%55a88^<<<<U1a^^<<<==
	a  ((,,,;;E#b''NN;;;r"e}}D&&&''""46W3D3D)TT&...55i@@
vx00000r   ser, expr   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   rT   )r   r   r   r   r   c                 X   |d         dk     r |                     d          r|d d d         }t          |                              |          }|                    d          }t          |                              t	          |d                    }t          j        ||           d S )Nr   r8   rT   r    r   
startswithr   rY   rX   r@   rZ   r[   )ri   r:   r   rp   r   r   r   s          r   test_rank_dense_methodz%TestSeriesRank.test_rank_dense_methodg  s     q6A::%**511:ddd)C3KKu%%w''#;;%%nUG&D&DEE
vx00000r   c           	         |\  }}|dk    s|s|dk    r|                                 }n|                    |          }|                    d          }|                    d          rP|                    d                                          |                    d          z
                                  }	n)|                                |z
                                  }	t          j        ||	                    t          |d                               |                    d          rR|                    d                                          |                    d          z
                      |          }	n+|                                |z
                      |          }	|                    |d          }
t          j        |
|	                    t          ||                               d S )	Nr/   r8   Fr   r.   r   r   )r=   r   )dropnarY   rX   r   r   rZ   r[   r@   )ri   r   r,   r:   r   r=   _r   r   r   res2s              r   test_rank_descendingz#TestSeriesRank.test_rank_descending|  s   	G$65E>>

AA

5!!Affuf%%E"" 	,++//11AHHY4G4GGMMOOHH!))++H
sHOON5)4T4T$U$UVVVE"" 	9++//11AHHY4G4GGMM N  HH !)))88HvvVuv55
tX__^E65R5R%S%STTTTTr   c                    |\  }}|                                                     d          }|                    |          }t          |                                           }|j        |_        t          j        ||           d S )Ni8r   )r   rY   rX   r   rI   rZ   r[   )ri   r   r,   r=   rp   r   r   r   s           r   test_rank_intzTestSeriesRank.test_rank_int  sr    JJLL%%v&&#;;%%''
vx00000r   c                 *   t          t          j        gdz                                t                                        d           t          t          j        gdz                                t                                        d           d S )N    Tr   F)r   r   r   rY   r-   rX   )ri   s    r   test_rank_object_bugz#TestSeriesRank.test_rank_object_bug  st     	x"}$$V,,11D1AAAx"}$$V,,11E1BBBBBr   c                     t          t          d          t          g          }|                                }|                                 |}t          j        ||           d S )Nz2017-01-05 10:20:27.569000)r   r	   r   rb   rX   rZ   r[   )ri   r   r   r   s       r   test_rank_modify_inplacez'TestSeriesRank.test_rank_modify_inplace  sW     I:;;SABB6688	
vx00000r   c                     t          dddt          dgd          }|                    d          }t          d	d
dt          j        dg          }t          j        ||           d S )Ng*"Fg3!ǻg{Q :g1A;-:r0   rP   r   r   r   r   r   r   )r   r   rX   r   r   rZ   r[   )ri   r   r   r   s       r   test_rank_ea_small_valuesz(TestSeriesRank.test_rank_ea_small_values  so    =-]K
 
 
 ''1aBFA.//
vx00000r   )__name__
__module____qualname__rv   r   r   r   rV   markparametrizer   r   r   r   r^   r   r)   td
skip_if_nor   r   operatoraddmulr   r   r   r   r   r   r   r   r   r   rB   rB   K   s        Y, Y, Y,vVR VR VRp  Y Y Y [[4-88[X'R'R'RSS[[*C*C*CDD[+tXXZZ70BFRVG,FL"#bmI..  		
  J  J  ED TS 98$ JD, , , [X'R'R'RSS[\1\3\4 	
 1 1  TS1 [S1#JS1#JS1#JVaVYY			"YY			"__ooo.!!!???3		
 1 1 1U U U.1 1 1C C C1 1 11 1 1 1 1r   rB   r   rK   r   r   )UUUUUU?UUUUUU?rK   )r   r   r   )r   rK   rK   r   )rK   r   r   r   )r   r   rK   rK   r   )r   r   r   r   r   r   )r   r   r   r   rK   rK   r   r   c                 ^   |d         dk     r |                      d          r|d d d         }t          |                              |           }|                    dd          }t          |                              t	          | dd                    }t          j        ||           d S )Nr   r8   rT   r    Tr=   r>   rM   r   r:   r   rp   r   r   r   s         r   test_rank_dense_pctr          1vzze&&u--z$$B$is5!!AVV7V--Fc{{!!.T"J"J"JKKH68,,,,,r   )r   r   r   )r   r   r   r   r   )UUUUUU?r   r   r   竪?r   c                 ^   |d         dk     r |                      d          r|d d d         }t          |                              |           }|                    dd          }t          |                              t	          | dd                    }t          j        ||           d S )Nr   r8   rT   r   Tr   rM   r   r   s         r   test_rank_min_pctr         1vzze&&u--z$$B$is5!!AVV5dV++Fc{{!!.4"H"H"HIIH68,,,,,r   )r   rK   rK   )r   r   rK   rK   r   c                 ^   |d         dk     r |                      d          r|d d d         }t          |                              |           }|                    dd          }t          |                              t	          | dd                    }t          j        ||           d S )Nr   r8   rT   r   Tr   rM   r   r   s         r   test_rank_max_pctr    r  r   r   )r   r   r   )333333?r  ?r  r   )r   r   竪?r  UUUUUU?r  c                 ^   |d         dk     r |                      d          r|d d d         }t          |                              |           }|                    dd          }t          |                              t	          | dd                    }t          j        ||           d S )Nr   r8   rT   r   Tr   rM   r   r   s         r   test_rank_average_pctr
     s     1vzze&&u--z$$B$is5!!AVV9$V//Fc{{!!.	t"L"L"LMMH68,,,,,r   )r   r   r   rK   r   )r   r   r   r   r   rK   c                 ^   |d         dk     r |                      d          r|d d d         }t          |                              |           }|                    dd          }t          |                              t	          | dd                    }t          j        ||           d S )Nr   r8   rT   r   Tr   rM   r   r   s         r   test_rank_first_pctr    r   r   c                      t          t          j        d                    } |                     d                                          }|dk    sJ d S )Ni  TrM   r   )r   r   r`   rX   r   )r   r   s     r   test_pct_max_many_rowsr  .  sK     	ry##$$AVVV!!##FQ;;;;;;r   )F)+	itertoolsr   r   numpyr   rV   pandas._libs.algosr   r   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   r	   r
   pandas._testing_testingrZ   pandas.api.typesr   fixturer   rd   r   r,   r)   r   r:   r@   rB   r   r   r   r  r  r
  r  
single_cpur  r   r   r   <module>r     s                      * ) ) ) ) ) ) ) )                    - - - - - - < < < 	HBHc3S"&#sCQTUVVW	!Q1bfaArvqABBC	!Q1bfaArvqABBC	("(Aq!Q1aCDDE	("(Aq!Q1aCDDE 		 	 	 	 	 '}r}Y/G/GHHH%]R]9-E-EFFF&mbmI.F.FGGG       j1 j1 j1 j1 j1 j1 j1 j1` 
se
Q'7#$
Q#s	///0	///0	///0	GGGH			SSST			LLLM
 - - - 
se
Q'7#$
Q'7#$	///0	///0	///0	GGGH			SSST			LLLM
 - - - 
se
Q'7#$
Q#s	///0	///0	///0	GGGH			SSST			LLLM
 - - - 
se
Q'7#$
Q'7#$	///0	///0	///0	GGGH			SSST			LLLM
 - - - 
se
Q'7#$
Q'9%&	///0	///0	///0	GGGH			SSST			LLLM
 - - -     r   