
    bMh	                     .   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                            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                            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                            d)g d*g d+g          d,             Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7dS )6    N)IndexingErrorPerformanceWarning)	DataFrameIndex
MultiIndexSeriesc                  4    t          g dgg dgdg          S )zsingle level MultiIndex)foobarbazqux)r            first)levelscodesnames)r        i/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/indexing/multiindex/test_loc.pysingle_level_multiindexr      s3     ,,,-lll^G9   r   c                      ddgg dg} g dg dg}t          | |          }t          t          j                            d                              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    !fiii F!3!3!34EfE222ERY**1--==fEEUSSSSr   c                   X   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Ze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                            deeeeej        eef          ej                            deeeeej        eef          d                         Zd Zej                            dddg          d             Zej                            d ed          d fd!ej         fg          d"             Z!d# Z"d$ Z#d% Z$dS )&TestMultiIndexLocc                     |}d|j         d<   |j         d         dk    sJ |                                }t          t          d                    |_        d|j         d<   |j         d         dk    sJ d S )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$   s{    0)*	%&y,-2222 ZZ\\%((^^
$% !v'(A------r   c                    |}ddddddddddddd	d
d	d	d	dd}t          |          }|                    ||d          }|                    ddg          }d}t          j        t
                    5  t          j        |j        |         |j        dd                     d d d            n# 1 swxY w Y   |	                    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        ||           d S )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/   s   $####>>ssss;;bRB266
 

 t__YYuU3344\\u~\.. '(:;; 	< 	<!"&+rwqrr{;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< }}T}22###fSk (C519E2228RD1HE222&':5%.QQQh8FFF
c8,,,,,s   5.B//B36B3c                 $   t          t          j                            d                              d          g dg dgg dg dg          }t          j        t          d	          5  |j        d          d d d            d S # 1 swxY w Y   d S 
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   s    I!!!$$44V<<YY


+99kkk*
 
 
 ]86222 	 	F1II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   *BB	B	c                     |d         }|                     |j        dd                   }|j        ddg         }t          j        ||           d S )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   sT     >cB;;syB/00-78
vx0000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        ||           d S )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_   su    'OOO(DEEU1XXRZ@@@Aq6NN###)Aq6???*CDD*
 
 

 q
vx0001v
vx000 QF1a&)))r
vx000Bbj111ELR
SSS*
 
 

 u
vx0000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	        ||           d S )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~   sa    'OOO(DEEU1XXRZ@@@HaV###)Aq6???*CDD*
 
 

 q
vx000 ELR
SSS
 
 

 u
vx000 !yyyrzRRRv
vx00000r   c                    t          t          j                            d                              d          g dg dgg dg dg          }|j        ddg                             d          }|j        d	         }t          j	        ||           |j        d d dgf                             dd
          }|j        d d df         }t          j	        ||           |j        dgdgf                             d                              dd
          }|j        d         j        d d df         }t          j	        ||           |j        ddg         }|j        d         }t          j	        ||           d S )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   s~   I!!!$$44V<<$__ooo6"??OOO4
 
 
 7Aq6?,,Q//
fh/// 7111qc6?,,QQ,773
fh/// 7A38$..q11;;AA;FFC(
fh/// 7Aq6?
#
fh/////r   c                 *   t          t          j                            d                              d          g dg dgg dg dg          }|j        dd	g                             d          }|j        d
         }t          j	        ||           d S )Nr   rY   rZ   r[   r^   r_   r`   r   r   r9   r   r   s       r   test_loc_multiindex_intsz*TestMultiIndexLoc.test_loc_multiindex_ints   s    I!!!$$44V<<YY


+99kkk*
 
 

 7Aq6?,,Q//
fh/////r   c                 $   t          t          j                            d                              d          g dg dgg dg dg          }t          j        t          d	          5  |j        d          d d d            d S # 1 swxY w Y   d S rX   rc   rg   s     r   (test_loc_multiindex_missing_label_raisesz:TestMultiIndexLoc.test_loc_multiindex_missing_label_raises   s    I!!!$$44V<<YY


+99kkk*
 
 
 ]86222 	 	F1II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	ri   zkey, posr   r9   r   r   r   c                 $   t          t          j                            d                              d          g dg dgg dg dg          }t          j        t          d	          5  |j        |          d d d            d S # 1 swxY w Y   d S )
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   s     I!!!$$44V<<YY


+99kkk*
 
 
 ]8>::: 	 	F3KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	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            n# 1 swxY w Y   t	          j        t          d
          5  |j        d          d d d            n# 1 swxY w Y   t	          j        t          d
          5  |j        d          d d d            d S # 1 swxY w Y   d S )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   !HH)C:SzC:*NOO
 
 

 ]8+<=== 	 	E(OO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]8+ABBB 	! 	!E-  	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!]=0CDDD 	& 	&E$%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s6   A//A36A3B//B36B3C00C47C4c                 p   d t          d          D             }d t          d          D             }t          j        ||g          }dt          j                            d                              d          z  dz   }t          ||	          }||         }t          j	        ||           t          t          j
        d
                              dd          t          j        g dg dg                    }|j        ddgfd d f         }|j        ddg         }t          j	        ||           d S )Nc                 2    g | ]}d t          |          z   S )	Attributestr.0r   s     r   
<listcomp>zFTestMultiIndexLoc.test_loc_multiindex_indexer_none.<locals>.<listcomp>   s#    ===qkCFF*===r   r   c                 2    g | ]}d t          |          z   S )Valuer   r   s     r   r   zFTestMultiIndexLoc.test_loc_multiindex_indexer_none.<locals>.<listcomp>   s#    ???Gc!ff,???r   r&   g?r   )r]   r&   g      ?r/   r;   r   r   r   r9   rw   r   )r.   r   r   r   r   r    r!   r   rG   rI   arangereshaper+   )r0   
attributesattribute_valuesr   r3   rt   rU   s          r    test_loc_multiindex_indexer_nonez2TestMultiIndexLoc.test_loc_multiindex_indexer_none   s8    >=E!HH===
??eAhh???'5E(FGG29((++;;KHHH3Nr5)))J
fb))) IbMM!!"a(()<<<*CDD
 
 

 6Aq6)QQQ,'A
fh/////r   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        ||           d S )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   se    Ib(((#U1XX$?@@
 
 5CG$qsCG|$
vx000rr3s7{#
vx000qrr3s7{#
vx000 Ib(((#U1XX$?@@
 
 6///0q1uc#g~&
vx00000r   c                     |}t          t          j                            d                              t          |                    |          }|j        D ]
}||          d S )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  sp    .I!!!$$44S5F5FGG
 
 
 $ 	 	AaDDD	 	r   c                    t          j        g dddgg          }t          t          j                            d                              d          ||          }|j        ddd d f         }|}t          j	        ||           t          j        g dddgg          }t          t          j                            d                              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	        ||           d S )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!  s~    'S#J(?@@ry,,Q//??GGPUVV!QQQ
fh///'Sz(BCCry,,Q//??GGPUVV2qqq!7122;
fh/// AAA71Q3<s
fh///2b6
fh/////r   indexer_type_1indexer_type_2c                 \   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 rDt          j
        t          d          5  |j        |	df          d d d            n# 1 swxY w Y   d S |j        |	df         }
t          g ddt          j        |                    }t          j        |
|           d S )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  sB    rz))x~~%u$$d|#<%%%r   r   rw   r   rB   Datar   r/   r]   r   r   r   c              3   6   K   | ]\  }} ||          V  d S r   r   )r   r   r   r   s      r   	<genexpr>zDTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.<genexpr>Y  sH       
 
a #"<33
 
 
 
 
 
r   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   	& 	& 	& LLII'A//Ic%jj000x
 
 
 R1a&!0  
 
 
 
#&ud#3#3
 
 
 
 
 S  Nc$9$9y0PQQQ ( (w''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( FVGVO,FLLvZ-DT-J-J
 
 
 	vx00000s   9CCCc                     t          j        ddg          } |ddg|          }d|j        d<    |ddg|          }t          j        ||           d S )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  sj    #Z$<==oq!fB///"?Aq644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        ||           d S )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  sr     #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        ||           d S )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5AA'rC:FF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        d	d
         }t          j
        ||           t          ||d          }|j        d	d
         }t          j
        ||           t          j        ||                    |j                  gd          }|j        d	d
         }t          j
        ||           d S )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  s8   &]:q1115#s3D3DE
 
 at$$$atBQBx(((Yd|!,,,7799\12
fh///4D))**\12
fh///Ydll4:667a@@@\12
fh/////r   c           	         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        ||           d S )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::tDzz499*MNNG
 
 
 fRU111c1119%&)4::tCyy*ABBUG
 
 
 	c8,,,,,r   c                     t          g dg dg dg dd          }t          j        t          d          5  |j        d          d d d            d S # 1 swxY w Y   d S )	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  s    ''''	 
 
 ]89555 	 	F9	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A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$   #   sr       	. 	. 	.- - -:	 	 	1 1 11 1 1>1 1 1<0 0 060 0 0   [ZAq6Aq6*:aS"IAPR|)TUU	 	 VU	& & &0 0 0.1 1 18  0 0 04 [4UBJN  [4UBJN '1 '1  '1R' ' ' [Y#88- - 98- [dS1FBF3CD 
, 
, 
,0 0 0(
- 
- 
-    r   r$   zindexer, posrk   r   DEr
   r   bahc                    t          j        g dg dgddg          }t          t          j        dd          |	                                          }|j        |         }|j        d
k    rV| g k    rPt          j	        t          t          |                     5  |j        |           d d d            d S # 1 swxY w Y   d S | t          d           ddgfk    rCt          j	        t          d          5  |j        |           d d d            d S # 1 swxY w Y   d S |j        |          }t          j        ||           d S )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
8
8
C
C
E
ECx}H}gmm]83w<<888 	 	GG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		U4[[5%.1	1	1]87333 	 	GG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !
vx00000s$   B77B;>B;6DDDcolumns_indexerc                    t          j        g dddgf          }t          t          j                            d                              d          t          d          |          }|                    dd	
          }t          t          d          |	                    g           d                   }|j
        d d | f         }t          j        ||           d S )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UUK	
	a  0088Ahh
 
 
B
 
QQ	'	'BuQxx1D1DR1H1H1KLLLHVAAA&'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 d S )	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*    sx     

'29	12&(:<P'QRR6"
 
 
B
 V23FwHXr   c                     t          t          j        d          t          j        d          t          j                            d                              d          t          j                            d                              d          d                              ddg          } | j        d         }| j        dd d f         }t          j	        ||           d S )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
  vd|HVFAAAIF68,,,,,r   c                     | }|j         d         }|dd          }|j                            d          |_        t          j        ||           d S )Nr   r   )r+   r   r   rG   rI   )r"   r3   rt   rU   s       r   test_loc_getitem_intr/    sO    	.BVAYF"##wH^--a00HN&(+++++r   c                     | }t          j        t          d          5  |j        d          d d d            d S # 1 swxY w Y   d S )Nz^3$ra   r   )rd   re   rf   r+   )r"   r3   s     r   %test_loc_getitem_int_raises_exceptionr1    s    	.B	xv	.	.	.  
q		                 s   9= =c                     | }t          j        t          d          5  |j        d          d d d            n# 1 swxY w Y   d|j        d<   d}|                                j        d         }||k    sJ d S )Nz^\('bar', 'three'\)$ra   ))r   threer)   r   )rd   re   rf   r+   rK   )r1   r3   rU   rt   s       r    test_loc_getitem_lowerdim_cornerr4    s    	)B 
x'>	?	?	? & &
$%%& & & & & & & & & & & & & & & %&BF !H]]__ !67FXs   8<<c                  r   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	                    } |                                 }t          j        d          | j        d d d
f<   t          j        d          |j        d d df<   t          j        | |           d S )NstringabcdMain)anotherr  r   r   labelsr9   ))rk   1)rk   2)r)   r;  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   	6ll'&3E(FGG
 
 
B
 BxL(BF111h;
2h< 8 8"*RX:N:NOOO 

Ahh&'K'K'KLL
 
 
B
 wwyyHYq\\BF111c6N)A,,HM!!!Q$"h'''''r   c           
      F   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	        ||           d S )NzGood Thingsry   Rz
Bad ThingsT)Okay ThingsNr)   )rC  rD  r  rC  r)   r  )r\   r9   )d1d2d3d4)u1u2u3rD   r`   r
  objectr   rK  )rC   r   r   )
r   r  r   onesr   r   r   r+   rG   rI   )using_infer_stringtupsr3   rt   rU   s        r   test_loc_nan_multiindexrP  9  s2    
RV$	RV$	sBF#	sBF#!!	RV$	RV$	D 

...//$T1C1C1CDDD
 
 
B
 VM"&s+F
VH"4?((%
 
 

 ...//  H &(+++++r   c                  p   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 d S )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   ))rR  rV  rY  r   rV  rY  )r   period_ranger   r   r   r+   r   isnan)r   r   r  r3   rt   alts         r   test_loc_period_string_indexingre  W  s    
(555AA

!1a&0A
B
B
BC	


 
 
B V+,F
&!A$u$
%C8C== 8F
&(
)C8C==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                            d          dk    fdf         }t          dgdt          j	        t          j
        d          t          j
        d          fgddg                    }t          j        ||           d S )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_slicingrq  w  s   ^\<899F#VV$4VV<LMMME	!fq!fq!fq!f-UT4L
 
 
B VVAY!:!:1!=!=!LNPTTUF	
$l<((",|*D*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        ||           d S )N2000r   r   r   rD   r   )r   r   )r   rn  r   r   r   r+   rG   rq   )daters   rt   s      r   &test_loc_datetime_series_tuple_slicingru    sy    <D
	$sDk]3*EEE  C
 WQQQYF63'''''r   c                  `   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        ||           d S )Nr   r   r   r   r   r   )r   )r   r   r   r   rw  r   rt  rD   authorpricerk  r   rw  )r   rw  rw  r   )r   r   r   r+   rG   rI   )r3   r  rt   rU   s       r   test_loc_with_mi_indexerrz    s   	Aha3(S!H5$,,,Wf4E
 
 
 7#
 
 
B 
 &&!1'69J
K
K
KCVCF^F
qC8c1X&$%=%=%=gvEVWWW7#  H
 &(+++++r   c                     t          j        ddd          } t          t          d          |           }|                                }| |d<   |                    dd	          }|j        j        d
k    sJ |j                            | d                    |j	        | d                  }|j
        dg                             d           }t          j        ||           |d         }|j        j        d
k    sJ |j	        | d                  }|j
        dg                             d           }t          j        ||           d S )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
A
A
AC
q
%
%
%C	BBqE
,,q,
&
&C9?i''''Ic!fWSV_Fx}&&t,,H&(+++q6D:y((((Xc!fFy!~''--H68,,,,,r   c            	         t          g dg dg dg dg dg dgd                    d          	          } |                     d
dg                                          }|j        dt          d          fd d f                             d          }|j        d         j        t          d          d d f         }t          j        ||           d S )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AA????????????	
 &++C00

 

 

B ,,&)
*
*
5
5
7
7C
'65!6778!!!;
<
F
Fq
I
ICwv"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 d S )N)z20181101 1100z20181101 1200z20181102 1300z20181102 1400datetimer  )r   rU  )rk   rk   ZW)r)   ry   rT  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    s    	LLL
 
 
B
  DD		T4 0	1	1B
q2:
6
6
6CWbeS#&'FS======r   c                        e Zd Zd Zd Zd ZdS )TestKeyErrorsWithMultiIndexc                 (   t          t          j        d                              dd          g d          }|                    ddg          }t          j        t          d	          5  |j        d
          d d d            d S # 1 swxY w Y   d S )Nr;   r9   r   rx   r   rk   r)   r;  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  s    ry}},,Q22OOOLLLllC:&&]83/// 	 	GFOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ,BBBc                     t          dt          j        ddggdz                      }t          j        t
          d          5  |j        d          d d d            d S # 1 swxY w Y   d S )	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  s    Rz6Ax!|DDEEE]8;777 	 	GDMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A  A$'A$c                 &   t          j        t          j        g d          t          j        g d          t          j        g d          gg d          }t	          t          j                            d                              d          |          }d	}t          j        t          |
          5  |j
        ddt          d           fd d f          d d d            n# 1 swxY w Y   t          j        t          |
          5  |j                            ddt          d           f           d d d            n# 1 swxY w Y   t          j        t          d
          5  |j
        dd d f          d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   )r;  r<  r<  3)r   r   r   r   )r  r(   r3  rD   r   r9   r   r   z'\('b', '1', slice\(None, None, None\)\)ra   r   r;  z\('b', '1'\))r   r;  )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  sD   #---..---..---..
 *))
 
 
 ry,,Q//66v>>bIII8]83/// 	/ 	/FCeDkk*AAA-..	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/]83/// 	7 	7HsCt5666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]8?;;; 	" 	"F:qqq=!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s6   6"C$$C(+C(
+EEE'FF
F
N)r  r  r  r  r  r  r   r   r   r  r    sA            " " " " "r   r  c                 z    | }|d         }|d         }|j         d         d         }t          j        ||           d S )Nrk   )rn   r&   )r+   rG   rq   )rr   r3   rs   rt   rU   s        r   test_getitem_loc_commutabilityr  	  sB    	8B
S'C\Fvgs#H68,,,,,r   c                     t          g dddt          j        gg dd                              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        ||           d S )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bf#5yyyII
 
i !!  VSE]F	J2H:ffEUVVV  H &(+++VC[F%!UA3V-D-D-DEEEH&(+++++r   c                      t          g dgg d                              g d          } t          j        t          d          5  | j        d          d d d            d S # 1 swxY w Y   d S )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  !  s    	LLL>+?+?+?	@	@	@	J	J
 
B 
x'>	?	?	?    
                                   s   A""A&)A&c                  6   t          j        dd          } t          j        | g          }|                    d          t          ddd           k    sJ |                     d          t          ddd           k    sJ |d d d                             d          }| d d d                             d          }||k    sJ |                    d                              d          }|                     d                              d          }||k    sJ |                    |                              d          }|                     |                               d          }t          j	        |
                                d         |           d S )Nz
2001-01-01d   r   z2001-01r      r   )r   r   r   rM   r  r   repeatr}  rG   r=  nonzero)r   r   r+   rU   s       r   test_get_loc_datetime_indexr  *  sh   M,444E			(	(B::i  E!R$6$66666==##uQD'9'99999
SSqS'//)
$
$CSSqSz!!),,H(????
))A,,

y
)
)C||A&&y11H(????
))B--

	
*
*C||E""**955Ha 0(;;;;;r   c                  0   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        ||           d S )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	6	6B	QFQFQFQF32	>	>	>BQFmGAr7RH"566BF7AAA:2r(QGaVaV<BGG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        ||           d S )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
 VU4[[1a&)111,-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                    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                            | d          d d f         }t          j        ||           d S )	Nr   r\   )rw  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LL
 
 
 
 
B VU4[['*AAA-.F	
a''')A)A)AB  H
 &(+++VBHMM'M33QQQ67F&"%%%%%r   c                     t          j        dgdgdggg d          } t          ddgi|           }|                    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	        ||           d S )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___	M	M	MB	C!:R	(	(	(B||QF##HVCCK F&(+++
!B


CWS!!!S[!Fqcu3!7!7!788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        ||           d S )
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    "OOOaV#<==D	28F##T	2	2	2BVAAASzM"F
&'O'O'OPP  H &(+++++r   c                  N   t          t          j        d                              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            d S # 1 swxY w Y   d S )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/H/HI  E
  (EK"G,EM	x'=	>	>	> ( (	3(J&''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   ;B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            d S # 1 swxY w Y   d S )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    uQxxz6Ac
7KLLMMMA	x'I	J	J	J    	ug                                   s   A//A36A3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        | |           d S )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
 FJsO !FJ} !FJ}      "&"&"&)		
 #""'!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 d S )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    	*"81#sCQT:"V"V"V
 
 
B VK FQ;;;;fbh'''''VVHcM"'*FQ;;;;fbh'''''''r   c                  ,   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	        ||           d S )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    s    

!C:Sz":1a&
I
I
IC	c	,	,	,BVC[Frvrv&eS#JQ.G.G.GHHHH68,,,,,r   c                      t          g dg dt          d          d          } |                     ddg          } t          j        t
          d          5  | j        d	          d d d            d S # 1 swxY w Y   d S )
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    s     
///)))q	
 	

 
B 
sCj	!	!B	xu	-	-	-  
x                 s   A22A69A6c                      t          j        ddg          } t          ddg|           }|j        d         }|dk    sJ d S )Nr   )r   )r9   r&   r   r   r   )r   r   r   r+   )r   rs   rt   s      r   *test_multindex_series_loc_with_tuple_labelr    sJ    		 5	6	6B
!Qr
"
"
"CW[!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/  r1  r4  r?  rP  re  rq  ru  rz  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     sB              
                         T T TR R R R R R R Rj 	R
a
sR
sR
	qqq5'z	"EE!T1$5$56	qqq5%.(	)55D!+<+<= 1 1 1* *b%%++->%",NOO, , PO, 
 
 
- - -, , ,    ( ( (., , ,<  @- - -&	( 	( 	(, , ,&- - -0) ) )(   !" !" !" !" !" !" !" !"H- - -, , ,      < < <,( ( (, , ,  %=%=%=?Q?Q?Q$RSS& & TS&*- - -	, 	, 	,
( 
( 
(     , , ,.
( 
( 
(- - -      r   