
    :i                        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        o/var/www/html/talentspherev1.5.2/venv/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                      e Zd Zej                  j                  d      ej                  j                  dddg      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j6                  eef      ej                  j                  deeeeej6                  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jB                  fg      d&        Z"d' Z#d( Z$d) Z%y#)*TestMultiIndexLocz.ignore:Setting a value on a view:FutureWarninghas_refTFc                    |}|r|d d  }d|j                   d<   |j                   d   dk(  sJ |j                         }t        t        d            |_        |r|d 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_datar%   frameviewdfs         r   &test_loc_setitem_frame_with_multiindexz8TestMultiIndexLoc.test_loc_setitem_frame_with_multiindex$   s    
 18D)*		%&yy,-222 ZZ\%(^
a5D$% !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@   rA   r@   rA   )keys)r<   r=   r   T)inplacer   dtyper   r?   )r8   r9   r:   r   )r   astype	set_indextmassert_produces_warningr   assert_frame_equalr,   iloc
sort_indexr   arrayr   from_arrays)r1   any_real_numpy_dtyperE   datar5   keyreturn_valuerescol_arryear_arrr   expecteds               r   test_loc_getitem_generalz*TestMultiIndexLoc.test_loc_getitem_general7   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   r;   r      
   r;   r;   r^   r^   r_   r=   r0   r   z^2$match	r   r   r   r    r!   pytestraisesKeyErrorr,   r1   r5   s     r   0test_loc_getitem_multiindex_missing_label_raiseszBTestMultiIndexLoc.test_loc_getitem_multiindex_missing_label_raisesT   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_   )rp   r      )reindexr   r,   rI   assert_series_equal)r1   /multiindex_year_month_day_dataframe_random_dataserrW   results        r   /test_loc_getitem_list_of_tuples_with_multiindexzATestMultiIndexLoc.test_loc_getitem_list_of_tuples_with_multiindex_   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   rm   r*   C	   r   rQ   rE   r   r   r   r   r   r   r+   r^   rQ   r   rE   r   r   )rQ   rE   r   r   rE   r   rE   )
r   from_productr   r/   r   float64r,   rI   rs   r   )r1   r   xyrW   rv   y1emptys           r   test_loc_getitem_seriesz)TestMultiIndexLoc.test_loc_getitem_seriesg   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 )Nry   rz   r|   r}   r   r   r~   r   r   r   r   r   )r   r   r   r/   r   r   rN   r,   rI   rs   r   int64)r1   r   r   r   rW   rv   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   r[   )ir   j)rm   rm   r*   )Xr   Yrb   r   r   r   axisr   )r   r   
r   r   r   r    r!   rL   	droplevelr,   rI   rK   r1   r5   rW   rv   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   r[   r\   r]   r`   ra   rb   r   r   r;   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rZ   re   ri   s     r   (test_loc_multiindex_missing_label_raisesz:TestMultiIndexLoc.test_loc_multiindex_missing_label_raises   si    II!!!$44V<
+k*
 ]]862 	FF1I	 	 	rk   zkey, posr   r;   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   r[   r\   r]   r`   ra   rb   znot in indexrc   re   )r1   rR   posr5   s       r   &test_loc_multiindex_list_missing_labelz8TestMultiIndexLoc.test_loc_multiindex_list_missing_label   sk     II!!!$44V<
+k*
 ]]8>: 	FF3K	 	 	rk   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'\)$rc   r   r   z^\('a', 'd', 'g'\)$)r   r   gzToo many indexers)r   r   r   r   )	r   r/   r   r   rf   rg   rh   r,   r   )r1   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      ?r0   r=   r   r   r   r;   ry   r   )r/   strr   r   r   r   r    r!   r   rI   rK   arangereshaper,   )r1   r   
attributesattribute_valuesr   r5   rv   rW   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   rD   r'   r   r   r   r   r   r   r;   )r   r+   r^   r=   rq      r   )
r   r   r   r   r   r/   r,   rI   rs   rL   )r1   r   rW   rv   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)r1   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,   rI   rK   rL   r   )r1   r   r5   rv   rW   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   ndarrayrN   slice)indexer_typerB   s     r   convert_nested_indexerzQTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.convert_nested_indexerN  s9    rzz)xx~%u$d|#%%r   r   ry   r   rD   Datar   r0   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>a  s$      
a #<3
s   zas an indexer is not supportedrc   )r   r   r;   r'   namer   )r   r   r   r   r   r   tuplezipsetrf   rg   	TypeErrorr,   r   rI   rs   )r1   r   r   r   r   r   r5   rB   typesindexerrv   rW   r   s               @r   test_loc_getitem_nested_indexerz1TestMultiIndexLoc.test_loc_getitem_nested_indexerC  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   rm   r   rm   r   r   r   r   r   )r   from_tuplesr,   rI   assert_equal)r1   frame_or_seriesmiobjrW   s        r   )test_multiindex_loc_one_dimensional_tuplez;TestMultiIndexLoc.test_multiindex_loc_one_dimensional_tupler  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,   rI   rK   )r1   r   r   r   rW   s        r   -test_multiindex_one_dimensional_tuple_columnsz?TestMultiIndexLoc.test_multiindex_one_dimensional_tuple_columnsz  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   r;   r   r   r   r;   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   )r1   r   	exp_valuer   r5   rW   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,   rI   rK   r   rr   r   )r1   midxser1ser2r5   rW   rv   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_rI   rK   )r1   r5   rT   rW   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   r;   z(1, 4)rc   )r   r   r;   )r   rf   rg   rh   r,   ri   s     r   test_loc_multi_index_key_errorz0TestMultiIndexLoc.test_loc_multi_index_key_error  sN    ''''	
 ]]895 	FF9	 	 	s   AA)&__name__
__module____qualname__rf   markfilterwarningsparametrizer6   rX   rj   rw   r   r   r   r   r   r   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$   #   s   [[ PQ[[Yu6. 7 R."-:	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, posrm   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)Nrz   r
   r   r   oner)   rF   r|   r   rD   r   r   rc   r
   r  z'bah')r   r   r   r   r   rM   rL   sizerf   rg   rh   r   r,   r   rI   rs   )r   r   idxru   rW   rv   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/   rM   rr   r,   rI   rK   )r  multi_indexr5   rW   rv   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   rb   )r&  r$  )r   r   r"  r#  r   r   r,   r5   rv   rW   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!   rH   r,   rI   rs   )r5   rW   rv   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   rI   rK   )r"   r5   rv   rW   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$rc   r   )rf   rg   rh   r,   )r"   r5   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'\)$rc   ))r   threer*   r   )rf   rg   rh   r,   rM   )r2   r5   rW   rv   s       r    test_loc_getitem_lowerdim_cornerr2    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   labelsr;   ))rm   1)rm   2)r*   r9  r*   r   )r   r.   r   r   r   r,   rI   assert_numpy_array_equalr   asarrayr  r/   r   r-   r   rL   rK   )r5   rW   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 Thingsr{   Rz
Bad ThingsT)Okay ThingsNr*   )rA  rB  r  rA  r*   r  )r^   r;   )d1d2d3d4)u1u2u3rF   rb   r  objectr   rI  )rE   r   r   )
r   r  r   onesr   r   r   r,   rI   rK   )using_infer_stringtupsr5   rv   rW   s        r   test_loc_nan_multiindexrN  A  s     
RVV$	RVV$	sBFF#	sBFF#!!	RVV$	RVV$	D 

./$$T1CD
B
 VVM"&&s+F
VVH"4(%

 ./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CVRrF   )	OMSOMKRES	DRIFT_IND
OEVRIG_INDFIN_INDVARE_UDLOEN_UDFIN_UDr   ))rP  rT  rW  r   rT  rW  )r   period_ranger   r   r   r,   r   isnan)r   r   r  r5   rv   alts         r   test_loc_period_string_indexingrc  _  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Idx2rF   r   r   r   r;   r'   r   r+   C1C2rQ   r   r0   r   r   )r   to_datetimer   r   r   r,   r   get_level_valuesr   r   	TimestamprI   rs   )dt_idxm_idxr5   rv   rW   s        r   test_loc_datetime_mask_slicingro    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   rF   r   )r   r   )r   rl  r   r   r   r,   rI   rs   )dateru   rv   s      r   &test_loc_datetime_series_tuple_slicingrs    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   ru  r   rr  rF   authorpriceri  r   ru  )r   ru  ru  r   )r   r   r   r,   rI   rK   )r5   r  rv   rW   s       r   test_loc_with_mi_indexerrx    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_framerH   r   r   get_locr,   rL   r   rI   rK   rs   )dtiru   r5   df2rv   rW   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   splitrH   rM   r,   r   r   rI   rK   )r5   r  rT   rW   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   rS  )rm   rm   ZW)r*   r{   rR  Fr;   r   r   rm   r*   g        )	r   PeriodIndexr   rO   r   r/   r   r   r,   )pilev2lev3r   ru   rv   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=   r;   r   rz   r   rm   r*   r9  rc   r   r   )	r   r   r   r   rH   rf   rg   rh   r,   )r1   r5   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\)rc   )r   r   )r   r   r   rf   rg   rh   r,   )r1   ru   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   )r9  r:  r:  3)r   r   r   r   )r  r)   r1  rF   r   r;   r   r   z'\('b', '1', slice\(None, None, None\)\)rc   r   r9  z\('b', '1'\))r   r9  )r   rO   r   rN   r   r   r    rf   rg   rh   r,   r   r   get_locs)r1   r   r5   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 )Nrm   )rp   r'   )r,   rI   rs   )rt   r5   ru   rv   rW   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   r;   r'   )r@   ind1ind2r  r  r@   r   )r   r   rF   r   r   )
r   r   r  rH   r,   r   r   rI   rK   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\)rc   )       @r        @)r   rH   rf   rg   rh   r,   r5   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   rO   r}  r   repeatr{  rI   r;  nonzero)r   r   r,   rW   s       r   test_get_loc_datetime_indexr  2  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   r;   r'   r   r+   r^   r   r|   r_   r>   r=   )r   r   r   r   rN   r,   rI   rK   )r   r5   r   rW   s       r   ,test_loc_setitem_indexer_differently_orderedr  H  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   r;   r'   r   r+   r^   r  r   r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r,   r   rI   rK   r'  s      r   5test_loc_getitem_index_differently_ordered_slice_noner  S  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^   )ru  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   rI   rK   r   isin)r   r5   rv   rW   s       r   @test_loc_getitem_index_differently_ordered_slice_none_duplicatesr  c  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   rF   r   r   r   r   r   r  )
r   rO   r   r   r,   rI   rK   r   r   rs   )r   r5   rW   rv   ru   s        r   3test_loc_getitem_drops_levels_for_one_row_dataframer  y  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 )
Nrz   r   r   r  r   r*   rm   )r'   r;   ))r*   r   )r*   r   )rm   r   )rm   r   )	r   r   r   r   zerosr,   r   rI   rK   )colsr5   rv   rW   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 indexrc   r   r   r  )r   r   r   r   r   r   r0   rf   rg   rh   r,   )r3   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)Nr;   r   r   r   r   r   z\['not' 'found'\] not in indexrc   notfound)r   r/   r   r   rf   rg   rh   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   r;   r+   r^   r   r   r   rm   r*   r   r   r   r   )r   r   rm   )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  rI   rK   )rv   rW   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   r;   r   r   rF   r   )r   r   r   r   r   )r   r   rO   r,   
isinstancer   r   rL   )r5   rv   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   rm   r*   r   r   rF   r   r  r   )
r   r   r   r   r   r,   r  r   rI   rs   )r  s2rv   rW   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   rz   rm   r*   z^1$rc   )r  r   )r   r/   rH   rf   rg   rh   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   )r;   r'   r   r   r   )r   r   r   r,   )r   ru   rv   s      r   *test_multindex_series_loc_with_tuple_labelr    sA    			 5	6B
!Qr
"CWW[!FQ;;r   )8numpyr   rf   pandas.errorsr   r   pandasr   r   r   r   r   pandas._testing_testingrI   fixturer   r"   r$   r  r  r   
IndexSlicer  r   r(  r*  r-  r/  r2  r=  rN  rc  ro  rs  rx  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Z Zz 	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   