
    Owg                        d dl Zd dlZd dlmZmZ d dlZd dlmZm	Z	m
Z
mZ d dlmZ ej                  d        Zej                  d        Z G d d      Zej&                  j)                  dg g fd	g ed
      fd	dgg fddgg fdgg fej,                  dddgf    eddd
      fej,                  ddddgf    eddd
      fg      d        Zej&                  j)                  dg  ed      fdgg fg      d        Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d  Z& G d! d"      Z'd# Z(d$ Z)d% Z*d& Z+d' Z,d( Z-ej&                  j)                  d)g d*g d+g      d,        Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7y)6    N)IndexingErrorPerformanceWarning)	DataFrameIndex
MultiIndexSeriesc                  ,    t        g dgg dgdg      S )zsingle level MultiIndex)foobarbazqux)r            first)levelscodesnames)r        `/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/indexing/multiindex/test_loc.pysingle_level_multiindexr      s     ,-l^G9 r   c                      ddgg dg} g dg dg}t        | |      }t        t        j                  j	                  d      j                  d      |	      S )
Nr   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   )   r   index)r   r   nprandomdefault_rngstandard_normal)r   r   r   s      r   %frame_random_data_integer_multi_indexr"      sN    !fi F!34EfE2ERYY**1-==fEUSSr   c                   Z   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                  j                  d
ddgddgfdgg fddgg fg      d        Zd Zd Zd Zd Zd Zej                  j                  deeeeej4                  eef      ej                  j                  deeeeej4                  eef      d               Zd Zej                  j                  dddg      d        Zej                  j                  d ed      d fd!ej@                  fg      d"        Z!d# Z"d$ Z#d% Z$y)&TestMultiIndexLocc                     |}d|j                   d<   |j                   d   dk(  sJ |j                         }t        t        d            |_        d|j                   d<   |j                   d   dk(  sJ y )N   )r   twoBr      )r'   r   )loccopylistrangecolumns)self multiindex_dataframe_random_dataframedfs       r   &test_loc_setitem_frame_with_multiindexz8TestMultiIndexLoc.test_loc_setitem_frame_with_multiindex$   sq    0)*		%&yy,-222 ZZ\%(^
$% !vv'(A---r   c                    |}ddddddddddddd	d
d	d	d	dd}t        |      }|j                  ||d      }|j                  ddg      }d}t        j                  t
              5  t        j                  |j                  |   |j                  dd         d d d        |j                  d      }|J |j                  |   }t        j                  dgdz  |      }t        j                  d	gdz  |      }	t        j                  ||	gddg      }
t        dg di|
      }t        j                  ||       y # 1 sw Y   xY w)Ni  iX     M    )r   r   r   r      g      @      @      )amountcolnum)r>   r?   r>   r?   )keys)r:   r;   r   T)inplacer   dtyper   r=   )r6   r7   r8   r   )r   astype	set_indextmassert_produces_warningr   assert_frame_equalr+   iloc
sort_indexr   arrayr   from_arrays)r0   any_real_numpy_dtyperC   datar3   keyreturn_valuerescol_arryear_arrr   expecteds               r   test_loc_getitem_generalz*TestMultiIndexLoc.test_loc_getitem_general/   sL   $####>ssss;bRB26

 t_YYuU34\\u~\. ''(:; 	<!!"&&+rwwqr{;	< }}T}2###ffSk ((C519E288RD1HE2&&':5%.Qh8F
c8,	< 	<s   )1E  E	c                    t        t        j                  j                  d      j	                  d      g dg dgg dg dg      }t        j                  t        d	      5  |j                  d    d d d        y # 1 sw Y   y xY w
Nr   r   r   r   r   r9   r      
   r9   r9   r\   r\   r]   r;   r/   r   z^2$match	r   r   r   r    r!   pytestraisesKeyErrorr+   r0   r3   s     r   0test_loc_getitem_multiindex_missing_label_raiseszBTestMultiIndexLoc.test_loc_getitem_multiindex_missing_label_raisesL   si    II!!!$44V<
+k*
 ]]862 	FF1I	 	 	   "A;;Bc                     |d   }|j                  |j                  dd       }|j                  ddg   }t        j                  ||       y )NA1   3   )  r   r]   )rn   r      )reindexr   r+   rG   assert_series_equal)r0   /multiindex_year_month_day_dataframe_random_dataserrU   results        r   /test_loc_getitem_list_of_tuples_with_multiindexzATestMultiIndexLoc.test_loc_getitem_list_of_tuples_with_multiindexW   sJ     >cB;;syyB/0-78
vx0r   c                    t        j                  g dg dg      }t        |t        d      t        j
                        }t        ddg      }t        g dt        j                  ddgg dg      t        j
                        }|j                  |   }t        j                  ||       |j                  ddg   }t        j                  ||       t        ddgdd	g
      }|j                  |   }t        j                  ||       t        g t        j
                        }t        g t        |j                  g g gt        j
                        t        j
                        }|j                  |   }t        j                  ||       y )Nr   r   r   rk   r)   C	   r   rO   rC   r   r   r   r   r   r   r*   r\   rO   r   rC   r   r   )rO   rC   r   r   rC   r   rC   )
r   from_productr   r.   r   float64r+   rG   rq   r   )r0   r   xyrU   rt   y1emptys           r   test_loc_getitem_seriesz)TestMultiIndexLoc.test_loc_getitem_series_   s5    ''O(DEU1XRZZ@Aq6N#))Aq6?*CD**

 q
vx01v
vx0 QF1a&)r
vx0Bbjj1ELLR

S**

 u
vx0r   c                    t        j                  g dg dg      }t        |t        d      t        j
                        }t	        j                  ddg      }t        g dt        j                  ddgg dg      t        j
                        }|j                  |   }t        j                  ||       t	        j                  g       }t        g t        |j                  g g gt        j
                  	      d
      }|j                  |   }t        j                  ||       t	        j                  d      }t        g dg dt        j
                        }|j                  |   }t        j                  ||       y )Nrw   rx   rz   r{   r   r   r|   r}   r~   r   r   r   )r   r   r   r.   r   r   rL   r+   rG   rq   r   int64)r0   r   r   r   rU   rt   r   scalars           r   test_loc_getitem_arrayz(TestMultiIndexLoc.test_loc_getitem_array~   s    ''O(DEU1XRZZ@HHaV#))Aq6?*CD**

 q
vx0 ELLR

S

 u
vx0 !yrzzRv
vx0r   c                    t        t        j                  j                  d      j	                  d      g dg dgg dg dg      }|j
                  ddg   j                  d      }|j                  d	   }t        j                  ||       |j
                  d d dgf   j                  dd
      }|j                  d d df   }t        j                  ||       |j
                  dgdgf   j                  d      j                  dd
      }|j                  d   j                  d d df   }t        j                  ||       |j
                  ddg   }|j                  d   }t        j                  ||       y )Nr   rY   )ir   j)rk   rk   r)   )Xr   Yr`   r   r   r   axisr   )r   r   
r   r   r   r    r!   rJ   	droplevelr+   rG   rI   r0   r3   rU   rt   s       r   test_loc_multiindex_labelsz,TestMultiIndexLoc.test_loc_multiindex_labels   sH   II!!!$44V<$o6"O4
 77Aq6?,,Q/
fh/ 771qc6?,,QQ,73
fh/ 77A38$..q1;;AA;FC(
fh/ 77Aq6?
#
fh/r   c                    t        t        j                  j                  d      j	                  d      g dg dgg dg dg      }|j
                  dd	g   j                  d      }|j                  d
   }t        j                  ||       y )Nr   rY   rZ   r[   r^   r_   r`   r   r   r9   r   r   s       r   test_loc_multiindex_intsz*TestMultiIndexLoc.test_loc_multiindex_ints   st    II!!!$44V<
+k*

 77Aq6?,,Q/
fh/r   c                    t        t        j                  j                  d      j	                  d      g dg dgg dg dg      }t        j                  t        d	      5  |j                  d    d d d        y # 1 sw Y   y xY wrX   rc   rg   s     r   (test_loc_multiindex_missing_label_raisesz:TestMultiIndexLoc.test_loc_multiindex_missing_label_raises   si    II!!!$44V<
+k*
 ]]862 	FF1I	 	 	ri   zkey, posr   r9   r   r   r   c                    t        t        j                  j                  d      j	                  d      g dg dgg dg dg      }t        j                  t        d	      5  |j                  |    d d d        y # 1 sw Y   y xY w)
Nr   rY   rZ   r[   r^   r_   r`   znot in indexra   rc   )r0   rP   posr3   s       r   &test_loc_multiindex_list_missing_labelz8TestMultiIndexLoc.test_loc_multiindex_list_missing_label   sk     II!!!$44V<
+k*
 ]]8>: 	FF3K	 	 	ri   c           	         t        t        d      t        j                  ddgddgddgg            }t	        j
                  t        d	
      5  |j                  d    d d d        t	        j
                  t        d
      5  |j                  d    d d d        t	        j
                  t        d
      5  |j                  d    d d d        y # 1 sw Y   pxY w# 1 sw Y   IxY w# 1 sw Y   y xY w)Nr\   abcdefr   z^\('a', 'b'\)$ra   r   r   z^\('a', 'd', 'g'\)$)r   r   gzToo many indexers)r   r   r   r   )	r   r.   r   r   rd   re   rf   r+   r   )r0   ss     r   (test_loc_multiindex_too_many_dims_raisesz:TestMultiIndexLoc.test_loc_multiindex_too_many_dims_raises   s    !H))C:SzC:*NO

 ]]8+<= 	EE(O	]]8+AB 	!EE- 	!]]=0CD 	&EE$%	& 	&		 		! 	!	& 	&s$   CC4C%CC"%C.c                    t        d      D cg c]  }dt        |      z    }}t        d      D cg c]  }dt        |      z    }}t        j                  ||g      }dt        j
                  j                  d      j                  d      z  dz   }t        ||	      }||   }t        j                  ||       t        t	        j                  d
      j                  dd      t        j                  g dg dg            }|j                  ddgfd d f   }|j                  ddg   }t        j                  ||       y c c}w c c}w )Nr   	Attributer&   Valueg?r   )r]   r&   g      ?r/   r;   r   r   r   r9   rw   r   )r.   strr   r   r   r   r    r!   r   rG   rI   arangereshaper+   )r0   r   
attributesattribute_valuesr   r3   rt   rU   s           r    test_loc_multiindex_indexer_nonez2TestMultiIndexLoc.test_loc_multiindex_indexer_none   s#    5:!H=qkCF*=
=6;Ah?Gc!f,??''5E(FG299((+;;KHH3Nr5)J
fb) IIbM!!"a())<*CD

 66Aq6)Q,'A
fh/% >?s
   EEc                    t        t        j                  dd      t        j                  t        d      g dg            }|j                  d d ddf   }|j                  dd	ddf   }t        j                  ||       |j                  d d	ddf   }t        j                  ||       |j                  dd ddf   }t        j                  ||       t        t        j                  dd      t        j                  t        d      g dg            }|j                  g d
   }|j                  dd	dddf   }t        j                  ||       y )N   r   rB   r&   r   r   r   r   r   r   r9   )r   r*   r\   r;   ro      r   )
r   r   r   r   r   r.   r+   rG   rq   rJ   )r0   r   rU   rt   s       r   test_loc_multiindex_incompletez0TestMultiIndexLoc.test_loc_multiindex_incomplete   s5    IIb(##U1X$?@
 55CG$qsCG|$
vx0rr3s7{#
vx0qr3s7{#
vx0 IIb(##U1X$?@
 66/0q1uc#g~&
vx0r   c                     |}t        t        j                  j                  d      j	                  t        |            |      }|j                  D ]  }||    	 y )Nr   r   )r   r   r   r    r!   lenvalues)r0   r   single_levelr   ks        r   test_get_loc_single_levelz+TestMultiIndexLoc.test_get_loc_single_level  sT    .II!!!$44S5FG
 $$ 	AaD	r   c                     t        j                  g dddgg      }t        t        j                  j                  d      j                  d      ||      }|j                  ddd d f   }|}t        j                  ||       t        j                  g dddgg      }t        t        j                  j                  d      j                  d      ||      }|j                  d	d
d d f   }|j                  dd  }t        j                  ||       |j                  dd d f   }|j                  dd }ddg|_        t        j                  ||       |j                  d d df   }|d   }t        j                  ||       y )N)r   r*   r\   r   r   r   )r   r   r   r\   r]         r   r   r]   r   )r   r   r   r   r   r    r!   r+   rG   rI   rJ   r   )r0   r   r3   rt   rU   s        r   test_loc_getitem_int_slicez,TestMultiIndexLoc.test_loc_getitem_int_slice!  sN    ''S#J(?@ryy,,Q/??GPUV!Q
fh/''Sz(BCryy,,Q/??GPUV2q!7712;
fh/ A771Q<s
fh/2b6
fh/r   indexer_type_1indexer_type_2c                 0   d g d}g d}t        j                  ||g      }t        t        j                  t        |      d      |dg      }dd	gd
dgf}||f}t        fdt        ||      D              }	|t        u s|t        u r6t        j                  t        d      5  |j                  |	df    d d d        y |j                  |	df   }
t        g ddt        j                  |            }t        j                  |
|       y # 1 sw Y   y xY w)Nc                     | t         j                  k(  rt        j                  |      S | t        k(  rt        | S  | |      S N)r   ndarrayrL   slice)indexer_typer@   s     r   convert_nested_indexerzQTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.convert_nested_indexerF  s9    rzz)xx~%u$d|#%%r   r   rw   r   rB   Datar   r/   r]   r   r   r   c              3   6   K   | ]  \  }} ||        y wr   r   ).0r   r   r   s      r   	<genexpr>zDTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.<genexpr>Y  s$      
a #<3
s   zas an indexer is not supportedra   )r   r   r9   r&   namer   )r   r   r   r   r   r   tuplezipsetrd   re   	TypeErrorr+   r   rG   rq   )r0   r   r   r   r   r   r3   r@   typesindexerrt   rU   r   s               @r   test_loc_getitem_nested_indexerz1TestMultiIndexLoc.test_loc_getitem_nested_indexer;  s   	& ''A/IIc%j0x
 R1a&!0  
#&ud#3
 
 S Nc$9y0PQ (w'( VVGVO,FvZ-D-DT-J
 	vx0( s   &DDc                     t        j                  ddg      } |ddg|      }d|j                  d<    |ddg|      }t        j                  ||       y )Nr   rk   r   rk   r   r   r   r   r   )r   from_tuplesr+   rG   assert_equal)r0   frame_or_seriesmiobjrU   s        r   )test_multiindex_loc_one_dimensional_tuplez;TestMultiIndexLoc.test_multiindex_loc_one_dimensional_tuplej  sR    ##Z$<=q!fB/"Aq64
X&r   r   r   r   c                     t        j                  ddg      }t        ddg|      }d|j                  |d d f<   t        ddg|      }t	        j
                  ||       y )Nr   r   r   r   r   r   r   r   r   r+   rG   rI   )r0   r   r   r   rU   s        r   -test_multiindex_one_dimensional_tuple_columnsz?TestMultiIndexLoc.test_multiindex_one_dimensional_tuple_columnsr  s[     ##Z$<=Ab)
aV2.
c8,r   zindexer, exp_valueN      ?r   r   c                     t        j                  ddg      }t        ddgddgg|ddg	      }d
|j                  |ddgf<   t        g ddd||gg|g d	      }t	        j
                  ||       y )Nr   r   r9   r   r   r   r9   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   )r0   r   	exp_valuer   r3   rU   s         r   )test_multiindex_setitem_columns_enlargingz;TestMultiIndexLoc.test_multiindex_setitem_columns_enlarging{  s    
 ##VV$45AA'rC:F&)wc
"#1i;<(

 	b(+r   c                 \   t        j                  t        j                  dd      t	        ddg      g      }t        d|      }t        d|d d       }t        j                  ||gd      }|j                         }|j                  d	d
 }t        j                  ||       t        ||d      }|j                  d	d
 }t        j                  ||       t        j                  ||j                  |j                        gd      }|j                  d	d
 }t        j                  ||       y )N20110101r   periodsr   r   r   r   r   z
2011-01-01z
2011-01-02r   r   )r   r   pd
date_ranger   r   concatr,   r+   rG   rI   r   rp   r   )r0   midxser1ser2r3   rU   rt   s          r   "test_sorted_multiindex_after_unionz4TestMultiIndexLoc.test_sorted_multiindex_after_union  s    &&]]:q15#s3DE
 at$atBQx(YYd|!,779\2
fh/4D)*\2
fh/YYdll4::67a@\2
fh/r   c           	      f   t        t        j                  t        d      t        d      t        d      g      dg      }|j                  t
        j                  d d dd d f      }t        t        j                  t        d      t        d      g      dg      }t        j                  ||       y )Nabcdr   Valr   r   )	r   r   r   r-   r+   r   s_rG   rI   )r0   r3   rR   rU   s       r   test_loc_no_second_level_indexz0TestMultiIndexLoc.test_loc_no_second_level_index  s    ))4:tDz49*MNG
 ffRUU1c19%&))4:tCy*ABUG
 	c8,r   c                     t        g dg dg dg dd      }t        j                  t        d      5  |j                  d    d d d        y # 1 sw Y   y xY w)	Nr   )r   r   r   )r   hr   )r   r   l)r   )r   r   r   r   )r   r9   z(1, 4)ra   )r   r   r9   )r   rd   re   rf   r+   rg   s     r   test_loc_multi_index_key_errorz0TestMultiIndexLoc.test_loc_multi_index_key_error  sN    ''''	
 ]]895 	FF9	 	 	s   AA)%__name__
__module____qualname__r4   rV   rh   ru   r   r   r   r   r   rd   markparametrizer   r   r   r   r   r   r-   r   r   r   r   r   r   r   r   r   r   nanr   r   r   r  r   r   r   r$   r$   #   sz   	.-:	11>1<060 [[ZAq6Aq6*:aS"IAPR|)TU	 V	&0.1804 [[4UBJJN [[4UBJJN'1'1R' [[Y#8- 9- [[dS1FBFF3CD
,
,0(
-r   r$   zindexer, posrk   r   DEr
   r   bahc                 h   t        j                  g dg dgddg      }t        t        j                  dd      |	      j                         }|j                  |   }|j                  d
k(  rB| g k7  r=t        j                  t        t        |             5  |j                  |     d d d        y | t        d       ddgfk(  r4t        j                  t        d      5  |j                  |     d d d        y |j                  |    }t        j                  ||       y # 1 sw Y   y xY w# 1 sw Y   y xY w)Nrx   r
   r   r   oner(   rD   rz   r   rB   r   r   ra   r
   r  z'bah')r   r   r   r   r   rK   rJ   sizerd   re   rf   r   r+   r   rG   rq   )r   r   idxrs   rU   rt   s         r   7test_loc_getitem_duplicates_multiindex_missing_indexersr    s    
!
!	/0C 1G,C
8
C
C
ECxx}H}}gm]]83w<8 	GGG	 		U4[5%.1	1]]873 	GGG	 	 !
vx0	 		 	s   DD(D%(D1columns_indexerc                    t        j                  g dddgf      }t        t        j                  j                  d      j                  d      t        d      |      }|j                  dd	
      }t        t        d      |j                  g       d         }|j                  d d | f   }t        j                  ||       y )Nr  alphabetar   r&   r   r&   r   r   r   )levelr   )r   r   r   r   r   r    r!   r.   rK   rp   r+   rG   rI   )r  multi_indexr3   rU   rt   s        r   4test_loc_getitem_duplicates_multiindex_empty_indexerr    s     ))+@7FBS*TUK	
		a 008Ah
B
 
QQ	'BuQx1D1DR1H1KLHVVA&'F&(+r   c                      t        t        j                  t        j                  gddggt	        j
                  ddg      ddg      } | j                  d   }t        j                  }||k(  sJ y )	Nmeanmedianfunctsr  )r"  r   functionr   r`   )r#  r!  )r   r   r  r   r   r   r+   r3   rt   rU   s      r   =test_loc_getitem_duplicates_multiindex_non_scalar_type_objectr%    sm     

''299	12&&(:<P'QR6"
B
 VV23FwwHXr   c                     t        t        j                  d      t        j                  d      t        j                  j	                  d      j                  d      t        j                  j	                  d      j                  d      d      j                  ddg      } | j                  d   }| j                  dd d f   }t        j                  ||       y )Nr]   r   r   r   r   )r   r   )
r   r   r   r   r    r!   rF   r+   rG   rq   )r3   rU   rt   s      r   !test_loc_getitem_tuple_plus_slicer'    s    	22&&q)99"=&&q)99"=		

 ic
  vvd|HVVFAIF68,r   c                     | }|j                   d   }|dd  }|j                  j                  d      |_        t        j                  ||       y )Nr   r   )r+   r   r   rG   rI   )r"   r3   rt   rU   s       r   test_loc_getitem_intr*    sE    	.BVVAYF"#wH^^--a0HN&(+r   c                     | }t        j                  t        d      5  |j                  d    d d d        y # 1 sw Y   y xY w)Nz^3$ra   r   )rd   re   rf   r+   )r"   r3   s     r   %test_loc_getitem_int_raises_exceptionr,    s5    	.B	xv	. 
q	  s	   7A c                     | }t        j                  t        d      5  |j                  d    d d d        d|j                  d<   d}|j	                         j                  d   }||k(  sJ y # 1 sw Y   ?xY w)Nz^\('bar', 'three'\)$ra   ))r   threer)   r   )rd   re   rf   r+   rK   )r1   r3   rU   rt   s       r    test_loc_getitem_lowerdim_cornerr/    su    	)B 
x'>	? &
$%& %&BFF !H]]_  !67FX& &s   A,,A5c                     t        dt        d      t        j                  dgdg            } d| d<   | j                  | j
                  d d df<   t        j                  t        j                  | d         t        j                  | j                               t        t        j                  t        d      t        j                  g d	            } | j                         }t        j                  d      | j
                  d d d
f<   t        j                  d      |j                  d d df<   t        j                   | |       y )NstringabcdMain)anotherr  r   r   labelsr9   ))rk   1)rk   2)r)   r6  r)   r   )r   r-   r   r   r   r+   rG   assert_numpy_array_equalr   asarrayr  r.   r   r,   r   rJ   rI   )r3   rU   s     r   $test_loc_setitem_single_column_slicer:  "  s    	6l''&3E(FG
B
 BxL((BFF1h;

2h< 8"**RXX:NO 

Ah&&'KL
B
 wwyHYYq\BFF1c6N))A,HMM!Q$"h'r   c           
      d   ddt         j                  fddt         j                  fddt         j                  fddt         j                  fdddd	t         j                  fdd
t         j                  fg}t        t        j                  d      t	        g d      t        j                  |g d            }|j                  d   j                  d   }t        t        j                  d      t	        t         j                  g| sdndd      t	        g d            }t        j                  ||       y )NzGood Thingsry   Rz
Bad ThingsT)Okay ThingsNr)   )r>  r?  r  r>  r)   r  )r\   r9   )d1d2d3d4)u1u2u3rD   r`   r  objectzstring[pyarrow_numpy]rF  )rC   r   r   )
r   r  r   onesr   r   r   r+   rG   rI   )using_infer_stringtupsr3   rt   rU   s        r   test_loc_nan_multiindexrK  9  s     
RVV$	RVV$	sBFF#	sBFF#!!	RVV$	RVV$	D 

./$$T1CD
B
 VVM"&&s+F
VVH"4(:Q

 ./H &(+r   c                  v   t        j                  ddd      } d}t        j                  | |fd      }t	        |d	      }|j
                  d
   }|j
                  | d   dfdf   }t        j                  |      sJ t        j                  |      sJ |j
                  d
   }t        j                  |      sJ y )N2013Q12013Q4Q)freq)W  i  i  )PeriodCVRrD   )	OMSOMKRES	DRIFT_IND
OEVRIG_INDFIN_INDVARE_UDLOEN_UDFIN_UDr   ))rM  rQ  rT  r   rQ  rT  )r   period_ranger   r   r   r+   r   isnan)r   r   r  r3   rt   alts         r   test_loc_period_string_indexingr`  W  s    
(5AA

!
!1a&0A
BC	


B VV+,F
&&!A$u$
%C88C== 88F
&&(
)C88C==r   c            
         t        j                  ddg      } t        j                  | | gddg      }t	        ddgdd	gd
dgddgg|ddg      }|j
                  | d   |j                  j                  d      dkD  fdf   }t        dgdt        j                  t        j                  d      t        j                  d      fgddg            }t        j                  ||       y )Nz
2017-05-04z
2017-05-05Idx1Idx2rD   r   r   r   r9   r&   r   r*   C1C2rO   r   r/   r   r   )r   to_datetimer   r   r   r+   r   get_level_valuesr   r   	TimestamprG   rq   )dt_idxm_idxr3   rt   rU   s        r   test_loc_datetime_mask_slicingrl  w  s    ^^\<89F##VV$4VV<LME	!fq!fq!fq!f-UT4L
B VVVAY!:!:1!=!LNPTTUF	
$$ll<(",,|*DEF6"
H 68,r   c                      t        j                  d      } t        dt        j                  d| fgddg      d      }|j
                  d d | gf   }t        j                  ||       y )N2000r   r   r   rD   r   )r   r   )r   ri  r   r   r   r+   rG   rq   )daters   rt   s      r   &test_loc_datetime_series_tuple_slicingrp    s`    <<D
	$$sDk]3*EC
 WWQYF63'r   c                  Z   t        ddgddgddgddggt        j                  g ddd	g
      ddg      } t        j                  ddgdd	g
      }| j                  |d d f   }t        ddgddgddggt        j                  g ddd	g
      ddg      }t	        j
                  ||       y )Nr   r   r   r   r   r   )r   )r   r   r   r   rr  r   ro  rD   authorpricerf  r   rr  )r   rr  rr  r   )r   r   r   r+   rG   rI   )r3   r  rt   rU   s       r   test_loc_with_mi_indexerru    s    	Aha3(S!H5$$,Wf4E
 7#
B 
 
 &&!1'69J
KCVVCF^F
qC8c1X&$$%=gvEVW7#H
 &(+r   c                  ~   t        j                  ddd      } t        t        d      |       }|j	                         }| |d<   |j                  dd	      }|j                  j                  d
k(  sJ |j                  j                  | d          |j                  | d      }|j                  dg   j                  d       }t        j                  ||       |d   }|j                  j                  d
k(  sJ |j                  | d      }|j                  dg   j                  d       }t        j                  ||       y )Nz
2016-01-01r   z
US/Pacific)r   tzr   r   r   T)append)Nr   )r   r   r   r.   to_framerF   r   r   get_locr+   rJ   r   rG   rI   rq   )dtirs   r3   df2rt   rU   r   s          r   test_loc_mi_with_level1_named_0r}    s   
--aL
AC
q
%C	BBqE
,,q,
&C99??i'''IIc!fWWSV_Fxx}&&t,H&(+q6D::y(((XXc!fFyy!~''-H68,r   c            	      z   t        g dg dg dg dg dg dgdj                  d      	      } | j                  d
dg      j                         }|j                  dt        d      fd d f   j                  d      }|j                  d   j                  t        d      d d f   }t        j                  ||       y )N)z20160525 13:30:00.023MSFT51.95r  )z20160525 13:30:00.048GOOGz720.50z720.93)z20160525 13:30:00.076AAPLz98.55z98.56)z20160525 13:30:00.131r  98.6198.62)20160525 13:30:00.135r  z51.92r  )r  r  r  r  ztime,ticker,bid,ask,r   tickertimer  z2016-05-25 13:30:00r   )	r   splitrF   rK   r+   r   r   rG   rI   )r3   r|  rR   rU   s       r   test_getitem_str_slicer    s    	?A????	
 &++C0

B ,,&)
*
5
5
7C
''65!678!;
<
F
Fq
ICwwv""5)>#?#BCH#x(r   c                      t        j                  g ddd      } g d}g d}t        j                  | ||g      }t	        t        d      |t        j                        }|j                  | d	   d
df   }|dk(  sJ y )N)z20181101 1100z20181101 1200z20181102 1300z20181102 1400datetimer  )r   rP  )rk   rk   ZW)r)   ry   rO  Fr9   r   r   rk   r)   g        )	r   PeriodIndexr   rM   r   r.   r   r   r+   )pilev2lev3r   rs   rt   s         r   !test_3levels_leading_period_indexr    sw    	L
B
  DD			T4 0	1B
q2::
6CWWbeS#&'FS==r   c                       e Zd Zd Zd Zd Zy)TestKeyErrorsWithMultiIndexc                    t        t        j                  d      j                  dd      g d      }|j	                  ddg      }t        j                  t        d	      5  |j                  d
    d d d        y # 1 sw Y   y xY w)Nr;   r9   r   rx   r   rk   r)   r6  ra   r   r   )	r   r   r   r   rF   rd   re   rf   r+   )r0   r3   r|  s      r   !test_missing_keys_raises_keyerrorz=TestKeyErrorsWithMultiIndex.test_missing_keys_raises_keyerror  sc    ryy},,Q2OLllC:&]]83/ 	GGFO	 	 	s   !A::Bc                     t        dt        j                  ddggdz              }t        j                  t
        d      5  |j                  d    d d d        y # 1 sw Y   y xY w)	Nr   r   r   r   r   z\(0, 3\)ra   )r   r   )r   r   r   rd   re   rf   r+   )r0   rs   s     r   !test_missing_key_raises_keyerror2z=TestKeyErrorsWithMultiIndex.test_missing_key_raises_keyerror2  sQ    Rz66Ax!|DE]]8;7 	GGDM	 	 	s   AA$c                    t        j                  t        j                  g d      t        j                  g d      t        j                  g d      gg d      }t	        t        j
                  j                  d      j                  d      |      }d	}t        j                  t        |
      5  |j                  ddt        d       fd d f    d d d        t        j                  t        |
      5  |j                  j                  ddt        d       f       d d d        t        j                  t        d
      5  |j                  dd d f    d d d        y # 1 sw Y   xY w# 1 sw Y   MxY w# 1 sw Y   y xY w)Nr   r   r   r   )r6  r7  r7  3)r   r   r   r   )r  r(   r.  rD   r   r9   r   r   z'\('b', '1', slice\(None, None, None\)\)ra   r   r6  z\('b', '1'\))r   r6  )r   rM   r   rL   r   r   r    rd   re   rf   r+   r   r   get_locs)r0   r   r3   msgs       r   test_missing_key_combinationz8TestKeyErrorsWithMultiIndex.test_missing_key_combination  s'   ##-.-.-.
 *
 ryy,,Q/66v>bI8]]83/ 	/FFCeDk*A-.	/]]83/ 	7HHsCt56	7]]8?; 	"FF:q=!	" 	"		/ 	/	7 	7	" 	"s$   2 E5(E) E5E&)E25E>N)r  r  r	  r  r  r  r   r   r   r  r    s    "r   r  c                 l    | }|d   }|d   }|j                   d   d   }t        j                  ||       y )Nrk   )rn   r&   )r+   rG   rq   )rr   r3   rs   rt   rU   s        r   test_getitem_loc_commutabilityr  	  s;    	8B
S'C\Fvvgs#H68,r   c                     t        g dddt        j                  gg dd      j                  ddg      } | j                  dg   }t        dd	git        j                  d
gddg            }t        j                  ||       | j                  d   }t        dd	git        d	gd            }t        j                  ||       y )N)r   r   r&   r   r   )r   r9   r&   )r>   ind1ind2r  r  r>   r   )r   r   rD   r   r   )
r   r   r  rF   r+   r   r   rG   rI   r   r$  s      r   test_loc_with_nanr    s    	Cbff#5yI
i !  VVSE]F	J22H:ffEUVH &(+VVC[F%!UA3V-DEH&(+r   c                      t        g dgg d      j                  g d      } t        j                  t        d      5  | j
                  d    d d d        y # 1 sw Y   y xY w)Nr   r   r   r   z\(2\.0, 2\.0, 3\.0\)ra   )       @r        @)r   rF   rd   re   rf   r+   r3   s    r   test_getitem_non_found_tupler  !  sQ    	L>+?	@	J	J
B 
x'>	?  
     s   AA!c                     t        j                  dd      } t        j                  | g      }|j	                  d      t        ddd       k(  sJ | j	                  d      t        ddd       k(  sJ |d d d   j	                  d      }| d d d   j	                  d      }||k(  sJ |j                  d      j	                  d      }| j                  d      j	                  d      }||k(  sJ |j                  |      j	                  d      }| j                  |       j	                  d      }t        j                  |j                         d   |       y )Nz
2001-01-01d   r   z2001-01r      r   )r   r   r   rM   rz  r   repeatrx  rG   r8  nonzero)r   r   r+   rU   s       r   test_get_loc_datetime_indexr  *  s&   MM,4E				(B::i E!R$6666==#uQD'9999
SqS'//)
$CSqSz!!),H(??
))A,

y
)C||A&&y1H(??
))B-

	
*C||E"**95Ha 0(;r   c                  .   t        j                  ddgddgg      } t        ddgddgdd	gd
dgg|       }dddgf}t        j                  ddgddgg      |j
                  |d d f<   t        ddgddgdd	gd
dgg|       }t        j                  ||       y )Nr   r   r   r   r   r   r9   r&   r   r*   r\   r   rz   r]   r<   r;   )r   r   r   r   rL   r+   rG   rI   )r   r3   r   rU   s       r   ,test_loc_setitem_indexer_differently_orderedr  @  s    		 	 3*q!f!5	6B	QFQFQFQF32	>BQFmGAr7RH"56BFF7A:2r(QGaVaV<BGH"h'r   c                      t        ddgddgddgddggg d	g d
gddg      } | j                  t        d       ddgfd d f   }t        ddgddgddgddggg dg dgddg      }t        j                  ||       y )Nr   r   r   r9   r&   r   r*   r\   r  r   r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r+   r   rG   rI   r$  s      r   5test_loc_getitem_index_differently_ordered_slice_noner  K  s    	
Q!Q!Q!Q(#\2c

B
 VVU4[1a&)1,-F
Q!Q!Q!Q(#\2c
H
 &(+r   r   )r   r   r*   r   r   r   r\   r*   )r   r   r*   r   r   r\   c                 v   t        dgdz  t        j                  g d      dg      }|j                  t	        d       | fd d f   }t        dgdz  g dg dgdg      }t        j                  ||       |j                  |j                  j                  | d      d d f   }t        j                  ||       y )	Nr   r\   )rr  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   rG   rI   r   isin)r   r3   rt   rU   s       r   @test_loc_getitem_index_differently_ordered_slice_none_duplicatesr  [  s     
	
a$$L
 
B VVU4['*A-.F	
a')ABH
 &(+VVBHHMM'M3Q67F&"%r   c                     t        j                  dgdgdggg d      } t        ddgi|       }|j                  dd	g      }|j                  dd d df   }t        j                  ||       t        dg|       }|j                  dd d df   }t        dgt        dgd
            }t        j                  ||       y )Nr   r   zr   rD   r   r   r   r   r   r  )
r   rM   r   r   r+   rG   rI   r   r   rq   )r   r3   rU   rt   rs   s        r   3test_loc_getitem_drops_levels_for_one_row_dataframer  q  s    			#u 5_	MB	C!:R	(B||QF#HVVCCK F&(+
!B
CWWS!S[!Fqcu3!78H68,r   c                  :   t        j                  g dddgg      } t        t        j                  d      |       }|j
                  d d ddgf   }t        t        j                  d      t        j                  g d	            }t        j                  ||       y )
Nrx   r   r   r  r   r)   rk   )r&   r9   ))r)   r   )r)   r   )rk   r   )rk   r   )	r   r   r   r   zerosr+   r   rG   rI   )colsr3   rt   rU   s       r   $test_mi_columns_loc_list_label_orderr    s}    ""OaV#<=D	288F#T	2BVVASzM"F
&&'OPH &(+r   c                  N   t        t        j                  d      j                  d      g dg dgg dg dg      } dd	g| j                  _        d
dg| j                  _        t        j                  t        d      5  | j                  ddgdf    d d d        y # 1 sw Y   y xY w)Nr;   r  r  r  )Ohior  Colorado)GreenRedr  r   key1key2statecolorz\[2\] not in indexra   r   r   r  )r   r   r   r   r   r   r/   rd   re   rf   r+   )r2   s    r   $test_mi_partial_indexing_list_raisesr    s    
		"f%#\2-/HIE
  (EKK"G,EMM	x'=	> (		3(J&'( ( (s   >BB$c                      t        t        d      t        j                  ddgddgg            } t	        j
                  t        d      5  | j                  d	d
g    d d d        y # 1 sw Y   y xY w)Nr9   r   r   r   r   r   z\['not' 'found'\] not in indexra   notfound)r   r.   r   r   rd   re   rf   r+   )r   s    r   (test_mi_indexing_list_nonexistent_raisesr    s_    uQxz66Ac
7KLMA	x'I	J  	ug     s   A&&A/c            	         t        g dg dgddgt        j                  ddgddgg            } d	| j                  d
<   d| j                  d<   d| j                  d<   t        g dg dg ddt        j
                  t        j
                  t        j
                  ggg dt        j                  ddgddgg            }t        j                  | |       y )N)r   r   r&   r   )r   r9   r*   r\   r   r   r   rk   r)   r   r   r   r   )r   r   rk   )r   r  )r   r  g      @g      @)r  r:   g      @g       @)r  g      r   r   r  )r   r   r   r   )r   r   r   r+   r   r  rG   rI   )rt   rU   s     r   'test_mi_add_cell_missing_row_non_uniquer    s    	|$Cj''!Q#s(<=F
 FJJsO !FJJ} !FJJ}  "&&"&&"&&)		
 #''!Q#s(<=	H &(+r   c                  B   t        dddt        j                  dgdggddg      	      } | j                  d
   }|dk(  sJ t	        |t
        j                        sJ | j                  dgdf   j                  d   }|dk(  sJ t	        |t
        j                        sJ y )Nr   r   r   r   r9   r   r   rD   r   )r   r   r   r   r   )r   r   rM   r+   
isinstancer   r   rJ   )r3   rt   s     r   $test_loc_get_scalar_casting_to_floatr    s    	*"8"81#sCQT:"V
B VVK FQ;;fbhh'''VVVHcM"''*FQ;;fbhh'''r   c                  2   t        j                  ddgddggddg      } t        | t        j                        }|j
                  d   }t        t        j                  t        j                  gt        ddgd	      
      }t        j                  ||       y )Nr   r   rk   r)   r   r   rD   r   r  r   )
r   r   r   r   r   r+   r  r   rG   rq   )r  s2rt   rU   s       r   )test_loc_empty_single_selector_with_namesr    sv    

!
!C:Sz":1a&
IC	c	,BVVC[Frvvrvv&eS#JQ.GHH68,r   c                      t        g dg dt        d      d      } | j                  ddg      } t        j                  t
        d      5  | j                  d	    d d d        y # 1 sw Y   y xY w)
N)r  r     r  ,  r  )r]   r]   r      r  !   r   rx   rk   r)   z^1$ra   )r  r   )r   r.   rF   rd   re   rf   r+   r  s    r   'test_loc_keyerror_rightmost_key_missingr    sc     
/)q	

B 
sCj	!B	xu	- 
x  s   A$$A-c                  |    t        j                  ddg      } t        ddg|       }|j                  d   }|dk(  sJ y )Nr   )r   )r9   r&   r   r   r   )r   r   r   r+   )r   rs   rt   s      r   *test_multindex_series_loc_with_tuple_labelr    sA    			 5	6B
!Qr
"CWW[!FQ;;r   )8numpyr   rd   pandas.errorsr   r   pandasr   r   r   r   r   pandas._testing_testingrG   fixturer   r"   r$   r
  r  r   
IndexSlicer  r  r%  r'  r*  r,  r/  r:  rK  r`  rl  rp  ru  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s    
      T TR Rj 	R
a
sR
sR
	q5'z	"E!T1$56	q5%.(	)5D!+<=11* *b%+->%",NO, P, 
-,(.,<@-&	(,&-0)( !" !"H-,  <,(,  %=?Q$RS& T&*-	,
( ,.
(-r   