
    OhM                        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j0                  d        Z ej0                  d ej4                  dd	d
dej6                  dddej6                  d	g
      gd ej4                  ddddej6                  dddej6                  dg
      gd ej4                  ddddej6                  dddej6                  dg
      gd ej4                  ddddej6                  dddej6                  dg
      gd ej4                  ddddej6                  dddej6                  dg
      ggd       d        Z ej0                  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dMd*Z  G d+ d,      Z!ejD                  jG                  d-dgd.gfddgd/d.gfddgd.d.gfg d0g d1fg d2g d3fg d4g d5fg d6g d7fg d8g d9fg d:g d;fg	      d<        Z$ejD                  jG                  d-dgd.gfddgd/d.gfddgd/d/gfg d0g d1fg d2g d=fg d4g d5fg d6g d>fg d8g d?fg d:g d;fg	      d@        Z%ejD                  jG                  d-dgd.gfddgd/d.gfddgd.d.gfg d0g d1fg d2g dAfg d4g d5fg d6g dBfg d8g d9fg d:g d;fg	      dC        Z&ejD                  jG                  d-dgd.gfddgd/d.gfddgdDdDgfg d0g d1fg d2g dEfg d4g d5fg d6g dFfg d8g dGfg d:g d;fg	      dH        Z'ejD                  jG                  d-dgd.gfddgd/d.gfddgd/d.gfg d0g d1fg d2g d1fg d4g d5fg d6g dIfg d8g dJfg d:g d;fg	      dK        Z(ejD                  jR                  dL        Z*y)N    )chainN)InfinityNegInfinity)NANaTSeries	Timestamp
date_range)CategoricalDtypec                  d    t        ddddt        j                  dddt        j                  dg
      S )N               )r   npnan     m/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/pandas/tests/series/methods/test_rank.pyserr      s*    1aArvvq!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   c                 <    d}| dv rd}|S | dv r|dk(  s|rd}|S d}|S )Nr.   )r7   r0   )r2   r6   r   zdouble[pyarrow]uint64[pyarrow]r   )r:   methodpct	exp_dtypes       r   expected_dtyper@   =   sL    I##	  
8	8Y#)I  *Ir   c                      e Zd Zd Zd Zd Zd Zej                  j                  dddg      ej                  j                  dg d	      ej                  j                  d
g d      ej                  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                  j                  dg d	      ej                  j                  dej,                  dgej,                  dgej.                  dgg      d               Zej                  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y)+TestSeriesRankc                 
   t        j                  d      }t        j                  |d d d<   d|d dd<   |j	                         }|j                  d      j	                         }t        j                  ||       t        j                  |      }|j                  t        j                        }t        |j                  |      |j                  d      }t        j                  ||<   t        j                  ||       t        t        j                  d	      j                  d            }|j	                         }	|j                  t               j	                         }t        j                  |	|       t        t        j                  d	            d
z   }|dz  }|j	                  d      }	t        j                  |	|       t        t        j                  dd            }t        t        j                  dd            }|j	                  d      }	t        j                  |	|       |j                  d      }t        j                  |d<   t        t        j                  dd            }t        j                  |d<   |j	                  d      }	t        j                  |	|       t        t        j                  d	            d
z   }t        j                  |d<   |dz  }|j	                  d      }	t        j                  |	|       t        t        j                  t        j                  d            }|j#                         }|j	                  d      }	t        j                  |	|       t        t        j                  d	      d      dz   }t        j                  |d<   |dz  }|j	                  d      }	t        j                  |	|       t%        dd	      }
t        t        j                  d	      |
d      dz   }t        j                  |j&                  d<   |dz  }|j	                  d      }	t        j                  |	|       t        g d      }t        g d      }|j	                         }	t        j                  |	|       t        dddt(        gd      }t        dddt        j                  g      }|j	                         }	t        j                  |	|       t        j*                  g dd      }t        j,                  j/                  d      j1                  t3        |            }t        ||         }t        |d
z   d      }|j	                         }	t        j                  |	|       y )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   s2   &&}5!vv!!$A$$& '',113
uf-xx( ''/ X&&v.fllNFFD	
uc*1,,Q/0nnU#((*
vs+1&,m$'
vs+1c*+RYYuc*+$'
vs+ ..)VV
RYY{C01A$'
vs+1&,VV
m$'
vs+2663/0lln$'
vs+ 1W59VV
m$'
vs+Q/1s':Q>&&Qm$'
vs+JK)*
vs+ ';#>hOaArvv&'
vs+L
 yy,,Q/;;CKH-.\C'y9
vs+r   c           	         t        g d      }t        g d      }t        g d      j                  t        g dd            }t        j                  |j                         |       t        j                  |j                  d      |       t        g d      j                  t        g dd            }t        g d      }|j                         }t        j                  ||       t        g d	      j                  t        g d	d            }t        g d      }|j                         }	t        j                  |	|       t        d
dddddt        j                  g      j                  t        g dd            }
t        g d      }t        g d      }t        ddddddt        j                  g      }t        j                  |
j                  d      |       t        j                  |
j                  d      |       t        j                  |
j                  d      |       t        g d      }t        g d      }t        ddddddt        j                  g      }t        j                  |
j                  dd      |       t        j                  |
j                  dd      |       t        j                  |
j                  dd      |       d }t        j                  t        |!      5  |
j                  d"d       d d d        t        j                  t        |!      5  |
j                  dd       d d d        t        d
dddt        j                  g      j                  t        g d#d            }
t        g d$      }t        g d%      }t        d&d'd(dt        j                  g      }t        j                  |
j                  dd)      |       t        j                  |
j                  dd)      |       t        j                  |
j                  dd)      |       y # 1 sw Y   (xY w# 1 sw Y   xY w)*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   s    3489D

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

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

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

&S
 	 <=<=3S#sC@A
v{{U{;WE
v{{X{>H
v{{V{<hG <=<=3S#sC@A
v{{Ue{LgV
KK(eK<g	
 	v{{Vu{MxX D]]:S1 	:KK%5K9	: ]]:S1 	9KK$%K8	9 (GXrvvFGNNCTJ
 23234dC89
v{{U{EwO
v{{X4{H'R
v{{V{FQ#	: 	:	9 	9s   8P2/P?2P<?Qc                     t        ddg      }|j                  d       d}t        j                  t        |      5  |j                  d       d d d        y # 1 sw Y   y xY w)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   sQ    Aq6N	i <]]:S1 	FF9	 	 	s   AA!c           
          |\  }}|dk(  s|dk(  s|s|dk(  rt        j                  d       ||n|j                  |      }|j                  |      }t	        j
                  |t        |t        ||                   y )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  ss    W&5E>KK89]c

5(9(
vvcv9V'W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   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}n1|dk(  r|d   |d   |d   g}n|d   t        j                  g|	z  |d   g}|r|n|d d d   }t        t        j                  |            }|j                  |||      }t        j                  |t        ||             y )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-!9i8y)4y)4I6I6
	 &!1XuQxq2E("1XuQxq2E1Xx%/q:E%552;++H56VyIV
vvhi'HIr   c                 
   t        dt        j                  t        j                  t        j                   dg      }|j	                  d      }t        dt        j                  dddgd	      }t        j                  ||       y )
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  sb     !RVVRVVbffWb9:.aAq);
vs+r   z	op, valuer   g    .Agư>c                    t        j                  d      }t        j                  j	                  d      j                  d      }t        j                  t        ddd      D cg c]  }||d  	 c}      }t        j                  j	                  d      j                  |       t        t        |            D cg c]  }t        t        d      |z          }} |||      }t        ||      }	|	j                  |      }
|j                  ||dk7  r|nd	      }t        ||      j                  d
      }t!        j"                  |
|       y c c}w c c}w )NrD   r   r   r   a)rI   r   r   ordinalr.   )rV   rW   r   re   rf   standard_normalconcatenaterangeshufflerh   chrordr   rX   r_   rY   rZ   r[   )ri   r=   opvaluerk   xsirI   valsrH   r   sprankr   s                r   test_rank_methods_seriesz'TestSeriesRank.test_rank_methods_seriesO  s    &&}5YY""1%55a8^^U1a^<RV<=
		a ((,,1#b'N;qSX\";;"e}D&'""46W3D)T&.55i@
vx0 = <s   "E9E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                    |d   dk  r|j                  d      r|d d d   }t        |      j                  |      }|j                  d      }t        |      j                  t	        |d            }t        j                  ||       y )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  sx     q6A:%**51dd)C3Ku%w'#;%%nUG&DE
vx0r   c           	      @   |\  }}|dk(  s|s|dk(  r|j                         }n|j                  |      }|j                  d      }|j                  d      r@|j                  d      j	                         |j                  d      z
  j                         }	n!|j	                         |z
  j                         }	t        j                  ||	j                  t        |d                   |j                  d      rB|j                  d      j	                         |j                  d      z
  j                  |      }	n#|j	                         |z
  j                  |      }	|j                  |d      }
t        j                  |
|	j                  t        ||                   y )	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|  sQ   	G$65E>

A

5!Affuf%E"+//1AHHY4GGMMOH!))+H
sHOON5)4T$UVE"+//1AHHY4GGMM N H !)))8HvvVuv5
tX__^E65R%STr   c                     |\  }}|j                         j                  d      }|j                  |      }t        |      j                         }|j                  |_        t        j                  ||       y )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  s^    JJL%v&#;%%'
vx0r   c                    t        t        j                  gdz        j                  t              j                  d       t        t        j                  gdz        j                  t              j                  d       y )N    Tr   F)r   r   r   rY   r-   rX   )ri   s    r   test_rank_object_bugz#TestSeriesRank.test_rank_object_bug  sZ     	x"}$$V,11D1Ax"}$$V,11E1Br   c                     t        t        d      t        g      }|j                         }|j	                          |}t        j                  ||       y )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  sB     I:;SAB668	
vx0r   c                     t        dddt        dgd      }|j                  d      }t        d	d
dt        j                  dg      }t        j                  ||       y )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  sX    =-]K
 '1aBFFA./
vx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,vVRpY [[[4-8[[X'RS[[[*CD[[+tXZ70BFFRVVG,FLL"#bmmI.		
 J E T 9$ JD, [[X'RS[[\\1\\3\\4 	
1 T1 [[S1#JS1#JS1#JVaV	"	"o.!?3		
11U.1C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| j                  d      r|d d d   }t        |      j                  |       }|j                  dd      }t        |      j                  t	        | dd            }t        j                  ||       y )Nr   r8   rT   r    Tr=   r>   rM   r   r:   r   rp   r   r   r   s         r   test_rank_dense_pctr     |     1vze&&u-$B$is5!AVV7V-Fc{!!.T"JKH68,r   )r   r   r   )r   r   r   r   r   )UUUUUU?r   r   r   竪?r   c                    |d   dk  r| j                  d      r|d d d   }t        |      j                  |       }|j                  dd      }t        |      j                  t	        | dd            }t        j                  ||       y )Nr   r8   rT   r   Tr   rM   r   r   s         r   test_rank_min_pctr     |     1vze&&u-$B$is5!AVV5dV+Fc{!!.4"HIH68,r   )r   rK   rK   )r   r   rK   rK   r   c                    |d   dk  r| j                  d      r|d d d   }t        |      j                  |       }|j                  dd      }t        |      j                  t	        | dd            }t        j                  ||       y )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| j                  d      r|d d d   }t        |      j                  |       }|j                  dd      }t        |      j                  t	        | dd            }t        j                  ||       y )Nr   r8   rT   r   Tr   rM   r   r   s         r   test_rank_average_pctr     s|     1vze&&u-$B$is5!AVV9$V/Fc{!!.	t"LMH68,r   )r   r   r   rK   r   )r   r   r   r   r   rK   c                    |d   dk  r| j                  d      r|d d d   }t        |      j                  |       }|j                  dd      }t        |      j                  t	        | dd            }t        j                  ||       y )Nr   r8   rT   r   Tr   rM   r   r   s         r   test_rank_first_pctr    r   r   c                      t        t        j                  d            } | j                  d      j	                         }|dk(  sJ y )Ni  TrM   r   )r   r   r`   rX   r   )r   r   s     r   test_pct_max_many_rowsr
  .  s<     	ryy#$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       * )   - < < 	HBHHc3S"&&#sCQTUVW	!Q1bffaArvvqABC	!Q1bffaArvvqABC	("((Aq!Q1aCDE	("((Aq!Q1aCDE 			 '}r}}Y/GH%]R]]9-EF&mbmmI.FGj1 j1` 
se
Q'7#$
Q#s	/0	/0	/0	GH	ST	LM
-- 
se
Q'7#$
Q'7#$	/0	/0	/0	GH	ST	LM
-- 
se
Q'7#$
Q#s	/0	/0	/0	GH	ST	LM
-- 
se
Q'7#$
Q'7#$	/0	/0	/0	GH	ST	LM
-- 
se
Q'7#$
Q'9%&	/0	/0	/0	GH	ST	LM
--  r   