
    o[weO                     Z    d dl Zd dlZd dlmZmZmZmZ d dlm	Z
 d Z G d d          ZdS )    N)	DataFrameIndex
RangeIndexSeriesc                 6   | t           u r1t          t          j        t          |                    |          }n^t	          t          j                            d                              t          |          t          |          f          ||          }|S )Nindex   )r	   columns)r   nparangelenr   randomdefault_rngstandard_normal)klassr	   objs      Alib/python3.11/site-packages/pandas/tests/indexing/test_floats.pygen_objr      s    RYs5zz**%888I!!!$$44c%jj#e**5MNN
 
 

 J    c            
       T   e Zd Zd Zej                            dej        ej	        ej
        ej        ej        g          d             Zej                            dej        ej	        ej
        ej        ej        g          d             Zd Zej                            dej        ej        g          d             Zej                            dej        ej        g          d             Zd Zej                            dej        ej
        ej        ej        g          ej                            d	 ed
d           edd           ed
d          g          d                         Zd Zej                            d	 edd           edd           edd          g          d             Zej                            dej        ej        g          d             Zej                            d	 ed
d           edd           ed
d          g          ej                            dej        ej        g          d                         Zej                            d	 ed
d           edd           ed
d          g          d             Zd Zd Zd ZdS )TestFloatIndexersc                     t          |t                    r|j        |         }n!|r|j        dd|f         }n|j        |         }t          j        ||           dS )zw
        comparator for results
        we need to take care if we are indexing on a
        Series or a frame
        N)
isinstancer   iloctmassert_almost_equal)selfresultoriginalindexergetitemexpecteds         r   checkzTestFloatIndexers.check   sg     h'' 	.}W-HH 	.}QQQZ0HH}W-H
vx00000r   
index_funcc                     |d          }t          ||          }t          j        t          d          5   ||          d          d d d            n# 1 swxY w Y   d|vsJ |                                }d ||          d<   |t
          j        u rd|j        d         v sJ d S |t
          j        u rd|j        d         v sJ d S d|j        d         vsJ d|j        d         vsJ d S )N   ^3.0$match      @
   r   )	r   pytestraisesKeyErrorcopyr   setitemaxesloc)r   r%   frame_or_series
indexer_sliss2s          r   test_scalar_non_numericz)TestFloatIndexers.test_scalar_non_numeric)   sU    JqMMOQ'' ]87333 	 	JqMM#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !||||VVXX 

2s##"'"+%%%%%%26!!"'!*$$$$$$bgaj((((bgbk))))))s   AAAc                 n    |d          }t          t          j        t          |                    |          }d}t	          j        t          |          5  |d          d d d            n# 1 swxY w Y   t          j        t          d          5  |d          d d d            d S # 1 swxY w Y   d S )Nr'   r   ;Series.__getitem__ treating keys as positions is deprecatedr)      r(   r+   )
r   r   r   r   r   assert_produces_warningFutureWarningr.   r/   r0   )r   r%   r7   r8   msgs        r   'test_scalar_non_numeric_series_fallbackz9TestFloatIndexers.test_scalar_non_numeric_series_fallbackM   s.    JqMM29SVV$$A...K'SAAA 	 	aDD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]87333 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   	A..A25A2	B**B.1B.c                    t          g dg d          }t          g dg d          }t          j        t          d          5   ||          d          d d d            n# 1 swxY w Y   t          j        t          d          5   ||          d          d d d            n# 1 swxY w Y    ||          d	         }d
}||k    sJ t          j        t          d          5   ||          d          d d d            n# 1 swxY w Y   |t          j        urGd}t	          j        t          |          5  |d         }d d d            n# 1 swxY w Y   d
}||k    sJ t          j        t          d          5   ||          d          d d d            n# 1 swxY w Y    ||          d         }d}||k    sJ d S )N)   r
   r=   )abcr   )rD   rE         ?z^1.0$r)         ?z^1\.0$rE   r
   r<   rC   rG   r=   )r   r.   r/   r0   r   r4   r>   r?   )r   r6   r9   s3r   r#   r@   s          r   test_scalar_with_mixedz(TestFloatIndexers.test_scalar_with_mixedb   s(   III___555III___555 ]87333 	  	 JrNN3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  ]89555 	  	 JrNN3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  B$!!!! ]87333 	  	 JrNN3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  RV##OC+MEEE  A              HX%%%%]89555 	  	 JrNN3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  B$!!!!!!sZ   A$$A(+A(
B((B,/B,)DDD=	EEEF  F$'F$c                 f   |t           j        u} |d          }t          ||          } ||          d         }|                     ||d|           t	          |t
                    rd }d}	ngt           j        }|r-t          dt          t          |                    d          }	n,t          dt          t          |                    d          }	|	                                }
d ||
          d<    ||
          d         } |||	            ||
          d         } |||	           d S )Nr'   r+   r=   c                     | |k    sJ d S )N )xys     r   comparez6TestFloatIndexers.test_scalar_integer.<locals>.compare   s    Avvvvvvr   d   )r	   nameg      Y@)
r   r4   r   r$   r   r   assert_series_equalranger   r1   )r   r%   r5   r6   r"   r7   r   r   rP   r#   r9   s              r   test_scalar_integerz%TestFloatIndexers.test_scalar_integer   sC   BF*
 JqMMoq)) C%

637+++c6"" 	H   HH,G H!#U3s88__1EEE!%uSXXQGGGXXZZ!

2sB$!!!B"!!!!!r   c                 H     |d          }t          ||          }d|v sJ d S )Nr'   r+   )r   )r   r%   r5   r	   r   s        r   "test_scalar_integer_contains_floatz4TestFloatIndexers.test_scalar_integer_contains_float   s3     
1ou-- czzzzzzr   c                    t          t          j        d                    }t          ||          }|d         }t          j        t          j        fD ]}|t          j        u} ||          |         }|                     ||d|           |                                } ||          |         }|                     ||d|           t          j
        t          d          5   ||          d          d d d            n# 1 swxY w Y   d|v sJ |j        d         }	|                                }|	|j        d<   |j        d         }|                     ||dd           d S )N      @r=   z^3\.5$r)         @r+   F)r   r   r   r   r   r4   r2   r$   r1   r.   r/   r0   r   )
r   r5   r	   r8   r!   idxrr"   r   r9   r#   s
             r   test_scalar_floatz#TestFloatIndexers.test_scalar_float   s   binn%%OU++ (VRZ( 	 	D"&(G T!WWW%FJJvq!W--- BT"XXg&FJJvq!W--- xy999  Q               axxxx 6!9VVXX


61a'''''s   #DD	D	idxr+      r=         @c                     |d          }t          ||          }|t          j        u rdt          |          j         d}ndt          |          j         d}t          j        t          |          5   ||          |          d d d            n# 1 swxY w Y   |t          j        u rd}t          j        t          |          5  d ||          |<   d d d            d S # 1 swxY w Y   d S )	Nr'   z!cannot do positional indexing on / with these indexers \[(3|4)\.0\] of type floatcannot do slice indexing on z8 with these indexers \[(3|4)(\.0)?\] of type (float|int)r)   zBslice indices must be integers or None or have an __index__ methodr   )r   r   r   type__name__r.   r/   	TypeError)r   r%   r]   r5   indexer_slir	   r8   r@   s           r   test_slice_non_numericz(TestFloatIndexers.test_slice_non_numeric   s    
1OU++ "'!!E{{+   C'E{{+' ' '  ]9C000 	  	 KNN3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  "'!!VC]9C000 	$ 	$"#KKNN3	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s$   6BBB
C&&C*-C*c                    t          t          j        dt          j                            dft	          d          dft          t          j        dt          j                  dz             dffD ]\\  }}t          t          d          |          }t          dd          t          d	d
          t          dd
          fD ]J}|j        |         }|rt          dd          }nt          d	d          }| 	                    |||d           Kt          dd          t          dd          fD ]J}|j        |         }|rt          dd          }nt          dd          }| 	                    |||d           Kdt          |          j         d}t          j        t          |          5  |t          dd                    d d d            n# 1 swxY w Y   t          dd          t          d	d          ft          dd          t          dd          ft          dd          t          d	d          ffD ]\  }}|j        |         }|rt          dd          }	n|}	| 	                    |||	d           dt          |          j         d}t          j        t          |          5  ||          d d d            n# 1 swxY w Y   ^d S )Nr'   dtypeFr,   Tr   r+   r^   r=   r_   r   i   g      g      @rb   z, with these indexers \[-6\.0\] of type floatr)         @r
   rZ   z/ with these indexers \[(2|3)\.5\] of type float)r   r   r   int64r   r   rT   slicer4   r$   rc   rd   r.   r/   re   )
r   r	   oobr8   r]   r   r!   r@   res1ress
             r   test_slice_integerz$TestFloatIndexers.test_slice_integer  sm    29Qbh///00%8]]E"29Qbh///"455t<
 @	 @	JE3 uQxxu---A c1uQ}}eCooF 
6 
6s
  *#AqkkGG#AqkkG

61gu5555 b!eD#&6&67 
6 
6s
  +#AqkkGG#BllG

61gu5555E{{+   
 y444 $ $%c""##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
 sAa,q#a,sC%1++.  	T
 s 1++CCC

61c5111!;;/! ! ! 
 ]9C888  cFF              'Y@	 @	s$   .GG	G	-	KK	Kr
          @c                    t          t          dd          t          dd                    }|dd         }|j        dd         }t          j        ||           t
          }d|j         d}t          j        t          |          5  ||          ddd           n# 1 swxY w Y   t          j        t          |          5  |j        |          ddd           dS # 1 swxY w Y   dS )	z]make sure that we are raising on positional indexing
        w.r.t. an integer index
        r
   rk   r   r^   z)cannot do (slice|positional) indexing on z/ with these indexers \[(2|4)\.0\] of type floatr)   N)
r   rT   r   r   rS   r   rd   r.   r/   re   )r   r]   r8   r   r#   r   r@   s          r    test_integer_positional_indexingz2TestFloatIndexers.test_integer_positional_indexingI  sq   
 5A;;eAqkk2221Q36!A#;
vx000>   	
 ]9C000 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9C000 	 	F3KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   		BB"%B"CC#&C#c           	      :    |d          }t          t          j                            d                              d          |          }t          dd          t          dd          t          dd          fD ]}|j        |         }t          dd          }|                     |||d	           d
t          |          j	         d}t          j        t          |          5  ||          d d d            n# 1 swxY w Y   t          dd          t          dd          fD ]5}|j        |         }|                     ||t          dd          d           6d
t          |          j	         d}t          j        t          |          5  |t          dd                    d d d            n# 1 swxY w Y   t          dd          t          dd          ft          dd          t          dd          ft          dd          t          dd          ffD ]}\  }}|j        |         }|                     |||d	           d
t          |          j	         d}t          j        t          |          5  ||          d d d            n# 1 swxY w Y   ~d S )Nr'   r
   r'   r
   r           rC   r   rH   Frb   z/ with these indexers \[(0|1)\.0\] of type floatr)   ir,   g      $      $@Tz- with these indexers \[-10\.0\] of type floatg      ?rG   z+ with these indexers \[0\.5\] of type float)r   r   r   r   r   rn   r4   r$   rc   rd   r.   r/   re   )	r   r%   r	   r8   r]   r   r!   r@   rq   s	            r    test_slice_integer_frame_getitemz2TestFloatIndexers.test_slice_integer_frame_getitem_  sa    
1bi++A..>>vFFeTTT #qMM5C==%S//B 	 	CU3ZFAqkkGJJvq'5111E{{+   
 y444  #               #rNNE%$6$67 	8 	8CU3ZFJJvq%R..$7777;;'   	
 ]9C000 	" 	"eE4  !!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"
 3]]E!QKK(1c]]E!QKK(3__eAqkk*
 	 	HC
 U3ZFJJvq#u---E{{+   
 y444  #              	 	s6   &	C;;C?	C?	F33F7:F7:	JJ	J	c                 n    |d          }t          t          j                            d                              d          |          }|                                }d|j        |<   |j        |         j                                        }|dk    	                                sJ dt          |          j         d}t          j        t          |          5  d||<   d d d            n# 1 swxY w Y   t          j        t          |          5  ||          d d d            d S # 1 swxY w Y   d S )	Nr'   r
   rw   r   r   rb   ra   r)   )r   r   r   r   r   r1   r4   valuesravelallrc   rd   r.   r/   re   )r   r]   r%   r	   r8   scr   r@   s           r   2test_float_slice_getitem_with_integer_index_raiseszDTestFloatIndexers.test_float_slice_getitem_with_integer_index_raises  s    
1bi++A..>>vFFeTTT VVXXs#))++!  """"";;'   	
 ]9C000 	 	AcF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]9C000 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   C..C25C2	D**D.1D.c                    t          t          j        d                    dz   }t          ||          }|j        dd         } ||          |         }t          |t          |                    sJ t          j        ||           |	                                }d ||          |<    ||          |         j
                                        }|dk                                    sJ d S )NrY   g?r=   r^   r   )r   r   r   r   r   r   rc   r   assert_equalr1   r|   r}   r~   )	r   r]   r5   r6   r	   r8   r#   r   r9   s	            r   test_slice_floatz"TestFloatIndexers.test_slice_float  s     binn%%+OU++6!A#; As#&$q''*****
))) VVXX

2sB$+1133!  """""""r   c                     t          g d          }t          t          d          |          }|d         dk    sJ |j        d         dk    sJ |j        d         dk    sJ d S )N)rG   r
   r=   g      @r'   r'   r   r=   r
   )r   r   rT   r4   r   )r   r	   r8   s      r   test_floating_index_doc_examplez1TestFloatIndexers.test_floating_index_doc_example  si    )))**5885)))tqyyyyuQx1}}}}vayA~~~~~~r   c                 z   t          t          j        d          t          j        d          dz  t          j                  } ||          dd         }t          ddg          }t	          j        ||            ||          d         }|d	k    sJ  ||          d         }|d	k    sJ t          j        t          d
          5   ||          d          d d d            n# 1 swxY w Y   t          d	dgt          ddgt          j
                            }ddgt          j        ddg          fD ]&}t	          j         ||          |         |           't          d	dgt          ddgd                    }ddgt          j        ddg          fD ]&}t	          j         ||          |         |           '|t          j        u rt          nd }d}t	          j        ||          5   ||          d	d         }d d d            n# 1 swxY w Y    ||          dd         }	 ||          dd         }
 ||          dd         }t	          j        ||	           t	          j        ||
           t	          j        ||           t          dd	gddg          }t	          j        ||          5   ||          d	d         }d d d            n# 1 swxY w Y   t	          j        ||            ||          g d         }|j        g d         }	t	          j        ||	           t          j        t          d          5   ||          g d          d d d            n# 1 swxY w Y   t          j        t          d          5   ||          g d          d d d            n# 1 swxY w Y    ||          ddg         }t	          j        |t          dd	gddg                      ||          dg         }t	          j        |t          dgdg                     d S )Nr'   rl   )r	   rj   rH   r+   rC   r   rY   r
   z^4$r)   r^   r   rx   ri   float64z3The behavior of obj\[i:j\] with a float-dtype indexrs   g @)rx   r'   r,   )r   r
   r^   znot in index)g?r'   r,   )r   rC   r
   )r   r   r   rm   r   rS   r.   r/   r0   r   r   arrayr2   r?   r>   r   )r   r6   r8   r   r#   	fancy_idxwarnr@   result1result2result3result4s               r   test_floating_miscz$TestFloatIndexers.test_floating_misc  s    29Q<<ry||c'9JJJ As3w'!C5)))
vx000 As#{{{{Aq!{{{{
 ]86222 	 	JqMM!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 1a&sCj
(K(K(KLLL*bhSz&:&:; 	G 	GI"::a==#;XFFFF1a&q!fI(F(F(FGGGa&"(Aq6"2"23 	G 	GI"::a==#;XFFFF *bj 8 8}}dD 'C888 	) 	) jmmAaC(G	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)*Q--C(*Q--A&*Q--A&
w000
w000
w0001a&c
333'C888 	( 	(Z]]1Q3'F	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	vx000 *Q---&#
w000]8>::: 	( 	(JqMM,,,''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( ]8>::: 	% 	%JqMM)))$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% AQx(
vvq!fS#J'G'G'GHHHAu%
vvqc#'?'?'?@@@@@sZ   C))C-0C-7HHHK%%K),K)M77M;>M;N==OOc                    |}i ddddddddd	d
ddddddddddddddddddddddddi ddddddd dd!dd"d#d$dd%d&d'dd(d)d*dd+d,d-dd.dd/dd0d1d2di d3d4d5dd6d7d8dd9d:d;dd<dd=dd>d?d@ddAdBdCddDdEdFddGdHdIddJdKi dLddMdNdOdPdQdRdSddTdUdVddWdXdYddZdd[dd\d]d^d_d`dadbddcdddedi dfdgdhdPdidjdkddlddmddndodpddqdrdsddtdudvddwdxdydPdzdd{dd|d}i d~dddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddddddddddddddddddddddƜ}t          ||Ǧ          }|                                }|j        j        |k    sJ t	          |           d S )N   g     "@rC   g     S@r
   g     8@r=   rx   r^   g     w@r'   rk   g     p@      	   r,   g     @      g      8@      g     @      g     @Y@      g    @            g     "@      g     {@      g    @      g     Ȇ@             g     \@!   "   g     @#   $   g     v@%   &   g     .@'   (   )   *   g     @+   ,   g     @-   .   g     @/   0   g     @1   2   g     @3   4   g     @5   g     Q@6   g     0@7   8   g     @t@9   :   g     @;   <   =   >   g     *@?   ry   @   g      E@A   B   g     @@C   D   g      V@E   F   g     @G   H   I   J   g    @K   L   g     u@M   N   g    @O   P   g     w@Q   R   S   T   g     r@U   V   g     x@W   g      @X   g     v@Y   Z   g    t@[   g      "@\   ]   ^   g     @_   `   g     ȏ@a   b   g     @c   rQ   g     &@e   f   g     @g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~   g     @   g      6@   g     p@   i  g     h@i  i	  i  i  i
  g     @g     @g     8@g     `d@g     +@g     0@g     @)i  i  i  i  i  i  i                    ri   )r   value_countsr	   rj   str)r   float_numpy_dtyperj   serr8   r   s         r   test_floatindex_slicing_bugz-TestFloatIndexers.test_floatindex_slicing_bug  s   !V
V
tV
 vV
 s	V

 uV
 sV
 uV
 sV
 sV
 sV
 V
 V
 V
 V
 V
  !V
" #V
 V
$ %V
& 'V
( )V
* +V
, -V
. /V
0 1V
2 3V
4 5V
6 7V
8 9V
: ;V
< =V
> ?V
@ AV
B CV
D EV
 V
 V
F GV
H IV
J KV
L MV
N OV
P QV
R SV
T UV
V WV
X YV
Z [V
\ ]V
^ _V
` aV
b cV
d eV
f gV
 V
 V
h iV
j kV
l mV
n oV
p qV
r sV
t uV
v wV
x yV
z {V
| }V
~ V
@ AV
B CV
D EV
F GV
H IV
 V
 V
J KV
L MV
N OV
P QV
R SV
T UV
V WV
X YV
Z [V
\ ]V
^ _V
` aV
b cV
d eV
f gV
h iV
j kV
 V
 V
l mV
n oV
p qV
r sV
t uV
v wV
x yV
z {V
| }V
~ V
@ AV
B CV
D EV
F GV
H IV
J KV
L MV
 V
 V
N OV
P QV
R SV
T UV
V WV
X YV
Z [V
\ ]V
^ _V
` aV
b cV
d eV
f gV
h iV
j kV
l mV
n oV
 V
 V
p qV
r sV
t uV
v wV
x yV
z {V
| }V
~ V
@ AV
B CV
D EV
F GV
H IV
J KV
L MV
N OV
P QV
 V
R kV
 V
 V
r 3e$$$!!|!U****Fr   N)rd   
__module____qualname__r$   r.   markparametrizer   makeStringIndexmakeCategoricalIndexmakeDateIndexmakeTimedeltaIndexmakePeriodIndexr:   rA   rJ   makeIntIndexmakeRangeIndexrU   rW   r\   rn   rg   rr   ru   rz   r   r   r   r   r  rM   r   r   r   r      s       1 1 1 [#!	
	 	* *	 	*4 [#!	
	 		 		 		"" "" ""H [\BOR=N+OPP"" "" QP""H [\BOR=N+OPP  QP!( !( !(F [!		
  [UUU3]]EE!SMM55c??$STT$ $ UT $@E E EN [UUU1c]]EE#qMM55c??$STT  UT* [\BOR=N+OPP3 3 QP3j [UUU3]]EE!SMM55c??$STT[\BOR=N+OPP  QP UT0 [UUU3]]EE!SMM55c??$STT# # UT#$  DA DA DAL_ _ _ _ _r   r   )numpyr   r.   pandasr   r   r   r   pandas._testing_testingr   r   r   rM   r   r   <module>r%     s                         	 	 	U
 U
 U
 U
 U
 U
 U
 U
 U
 U
r   