
    .i                        d dl Zd dlZd dl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 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- Z.d. Z/d/ Z0d0 Z1d1 Z2d2 Z3d3 Z4d4 Z5y)5    N)IndexingError)	DataFrameIndex
MultiIndexSeriesc                      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   levelscodesr   )   r   index)r   r   nprandomdefault_rngstandard_normal)r   r   r   s      g/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/indexing/multiindex/test_loc.py%frame_random_data_integer_multi_indexr      sN    !fi F!34EfE2ERYY**1-==fEUSS    c                      e Zd Z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j4                  eef      ej                  j                  deeeeej4                  eef      d               Zd Zej                  j                  dddg      d         Zej                  j                  d! ed"      d#fd$ej@                  fg      d%        Z!d& Z"d' Z#d( Z$d) Z%y")*TestMultiIndexLoc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   )bartwoB      )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                  |      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)r8   r9   r8   r9   )keys)r4   r5   r   T)inplacer"   dtypenamesr7   )r0   r1   r2   r   )r   astype	set_indextmassert_produces_warningassert_frame_equalr$   iloc
sort_indexr   arrayr   from_arrays)r)   performance_warningany_real_numpy_dtyper=   datar-   keyreturn_valuerescol_arryear_arrr   expecteds                r   test_loc_getitem_generalz*TestMultiIndexLoc.test_loc_getitem_general+   sJ   $####>ssss;bRB26

 t_YYuU34\\u~\.''(;< 	<!!"&&+rwwqr{;	< }}T}2###ffSk ((C519E288RD1HE2&&':5%.Qh8F
c8,	< 	<s   %1D<<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   r3   r      
   r3   r3   rX   rX   rY   r5   r(   r   z^2$match	r   r   r   r   r   pytestraisesKeyErrorr$   r)   r-   s     r   0test_loc_getitem_multiindex_missing_label_raiseszBTestMultiIndexLoc.test_loc_getitem_multiindex_missing_label_raisesG   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"   rY   )rj   r"      )reindexr   r$   rB   assert_series_equal)r)   /multiindex_year_month_day_dataframe_random_dataserrQ   results        r   /test_loc_getitem_list_of_tuples_with_multiindexzATestMultiIndexLoc.test_loc_getitem_list_of_tuples_with_multiindexR   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
                        }|j                  |   }t        j                  ||       y )Nr	   r   r"   rg   r!   C	   r   rK   r=   r	   r"   r   r	   r   r   r#   rX   rK   r   r=   r   r   )rK   r=   r   r   r=   )
r   from_productr   r'   r   float64r$   rB   rm   r   )r)   r   xyrQ   rp   y1emptys           r   test_loc_getitem_seriesz)TestMultiIndexLoc.test_loc_getitem_seriesZ   s/    ''O(DEU1XRZZ@Aq6N#))Aq6?*CD**

 q
vx01v
vx0 QF1a&)r
vx0Bbjj1ELLRA**

 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	      d
      }|j                  |   }t        j                  ||       t	        j                  d      }t        g dg dt        j
                        }|j                  |   }t        j                  ||       y )Nrs   rt   rv   rw   r	   r"   rx   ry   r   r|   rz   r
   )r   r{   r   r'   r   r|   rG   r$   rB   rm   r   int64)r)   r   r}   r~   rQ   rp   r   scalars           r   test_loc_getitem_arrayz(TestMultiIndexLoc.test_loc_getitem_arrayy   s    ''O(DEU1XRZZ@HHaV#))Aq6?*CD**

 q
vx0 ELLRA

 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   rU   )ir   j)rg   rg   r!   )Xr   Yr\   r   r	   r   axisr   )r   r   
r   r   r   r   r   rE   	droplevelr$   rB   rD   r)   r-   rQ   rp   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   rU   rV   rW   rZ   r[   r\   r   r	   r3   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rT   r_   rc   s     r   (test_loc_multiindex_missing_label_raisesz:TestMultiIndexLoc.test_loc_multiindex_missing_label_raises   si    II!!!$44V<
+k*
 ]]862 	FF1I	 	 	re   zkey, posr   r3   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   rU   rV   rW   rZ   r[   r\   znot in indexr]   r_   )r)   rL   posr-   s       r   &test_loc_multiindex_list_missing_labelz8TestMultiIndexLoc.test_loc_multiindex_list_missing_label   sk     II!!!$44V<
+k*
 ]]8>: 	FF3K	 	 	re   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)NrX   abcdefr   z^\('a', 'b'\)$r]   r   r   z^\('a', 'd', 'g'\)$)r   r   gzToo many indexers)r   r   r   r   )	r   r'   r   r{   r`   ra   rb   r$   r   )r)   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   )rY   r   g      ?r(   r5   r	   r   r"   r3   rs   r   )r'   strr   r{   r   r   r   r   r   rB   rD   arangereshaper$   )r)   r   
attributesattribute_valuesr   r-   rp   rQ   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   r<   r   r   r   r   r   r   r   r3   )r   r#   rX   r5   rk      r   )
r   r   r   r   r{   r'   r$   rB   rm   rE   )r)   r   rQ   rp   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        g dgg dgdg      }t        t        j                  j	                  d      j                  t        |            |      }|j                  D ]  }||    	 y )N)foor   bazqux)r   r	   r   r"   first)r   r   r?   r   r   )r   r   r   r   r   r   lenvalues)r)   single_levelr   ks       r   test_get_loc_single_levelz+TestMultiIndexLoc.test_get_loc_single_level  sj    !01,PWy
 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#   rX   r   r   r   )r   r   r   rX   rY         r   r   rY   r   )r   r{   r   r   r   r   r   r$   rB   rD   rE   r   )r)   r   r-   rp   rQ   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   ndarrayrG   slice)indexer_typer:   s     r   convert_nested_indexerzQTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.convert_nested_indexerC  s9    rzz)xx~%u$d|#%%r   r   rs   r   r<   Datar   r(   rY   r   r   r"   c              3   6   K   | ]  \  }} ||        y wr    ).0r   r   r   s      r   	<genexpr>zDTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.<genexpr>V  s$      
a #<3
s   zas an indexer is not supportedr]   )r	   r   r3   r   namer   )r   r{   r   r   r   r   tuplezipsetr`   ra   	TypeErrorr$   r   rB   rm   )r)   r   r   r   r   r   r-   r:   typesindexerrp   rQ   r   s               @r   test_loc_getitem_nested_indexerz1TestMultiIndexLoc.test_loc_getitem_nested_indexer8  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   rg   r   rg   r	   r   r   r   r   )r   from_tuplesr$   rB   assert_equal)r)   frame_or_seriesmiobjrQ   s        r   )test_multiindex_loc_one_dimensional_tuplez;TestMultiIndexLoc.test_multiindex_loc_one_dimensional_tupleg  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$   rB   rD   )r)   r   r   r   rQ   s        r   -test_multiindex_one_dimensional_tuple_columnsz?TestMultiIndexLoc.test_multiindex_one_dimensional_tuple_columnso  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"   r3   r	   r   r"   r3   r   r   r   r   r   r   )r	   r   r   r   r   r   r   r   r   )r)   r   	exp_valuer   r-   rQ   s         r   )test_multiindex_setitem_columns_enlargingz;TestMultiIndexLoc.test_multiindex_setitem_columns_enlargingx  s    
 ##VV$45AA'rC:F&)wc
"#1i;<(

 	b(+r   c           	      4   t        j                  ddd      }g d}t        j                  ||gddg      }t	        d	|d
dg      }d |j                  d      dddgf<   t	        d d gd	d	gd d gd	d	gd	d	gd	d	gg|d
dg      }t        j                  ||       y )N
2001-01-01Dr   )freqperiods)i1i2i3date
identifierr>           rg   r!   r   r   r   r   r   )pd
date_ranger   r{   r   r$   rB   rD   )r)   datesidsr   r-   rQ   s         r    test_multiindex_setitem_axis_setz2TestMultiIndexLoc.test_multiindex_setitem_axis_set  s    la@ ''V\<RSs%#s<59A|dD\12tc
tc
c
c
 #J
 	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   r   r   r   r	   r   r   z
2011-01-01z
2011-01-02r   r	   )r   r{   r   r   r   r   concatr%   r$   rB   rD   r   rl   r   )r)   midxser1ser2r-   rQ   rp   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_rB   rD   )r)   r-   rN   rQ   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   r3   z(1, 4)r]   )r   r	   r3   )r   r`   ra   rb   r$   rc   s     r   test_loc_multi_index_key_errorz0TestMultiIndexLoc.test_loc_multi_index_key_error  sN    ''''	
 ]]895 	FF9	 	 	s   AA)&__name__
__module____qualname__r`   markparametrizer.   rR   rd   rq   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   r      s   [[Yu6. 7."-8	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, posrg   r"   r   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)Nrt   r   r   r   oner    r>   rv   r   r<   r   r   r]   r   r  z'bah')r   r{   r   r   r   rF   rE   sizer`   ra   rb   r   r$   r   rB   rm   )r   r   idxro   rQ   rp   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'   rF   rl   r$   rB   rD   )r"  multi_indexr-   rQ   rp   s        r   4test_loc_getitem_duplicates_multiindex_empty_indexerr)    s     ))+@7FBS*TUK	
		a 008Ah
B
 
QQ	'BuQx1D1DR1H1KLHVVA&'F&(+r   c                      t        t        j                  t        j                  gddggt	        j
                  ddg      ddg      } | j                  d   }t        j                  }||k(  sJ y )	Nmeanmedianfunctsr+  )r.  r,  functionr   r\   )r/  r-  )r   r   r+  r,  r   r   r$   r-   rp   rQ   s      r   =test_loc_getitem_duplicates_multiindex_non_scalar_type_objectr1    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 )NrY   r   r   r   r   )r   r   )
r   r   r   r   r   r   rA   r$   rB   rm   )r-   rQ   rp   s      r   !test_loc_getitem_tuple_plus_slicer3    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   rB   rD   )r   r-   rp   rQ   s       r   test_loc_getitem_intr6    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$r]   r"   )r`   ra   rb   r$   )r   r-   s     r   %test_loc_getitem_int_raises_exceptionr8  "  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'\)$r]   ))r   threer!   r   )r`   ra   rb   r$   rF   )r*   r-   rQ   rp   s       r    test_loc_getitem_lowerdim_cornerr;  (  su    	)B 
x'>	? &
$%& %&BFF !H]]_  !67FX& &s   A,,A5c                     t        dt        d      t        j                  dgdg            } d| d<   | j                  | j
                  d d df<   t        j                  t        j                  | d         t        j                  | j                               t        t        j                  t        d      t        j                  g d	            } | j                         }t        j                  d      | j
                  d d d
f<   t        j                  d      |j                  d d df<   t        j                   | |       y )NstringabcdMain)anotherr  r   r   labelsr3   ))rg   1)rg   2)r!   rB  r!   r   )r   r&   r   r{   r   r$   rB   assert_numpy_array_equalr   asarrayr  r'   r   r%   r   rE   rD   )r-   rQ   s     r   $test_loc_setitem_single_column_slicerF  6  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 Thingsru   Rz
Bad ThingsT)Okay ThingsNr!   )rJ  rK  r   rJ  r!   r   )rX   r3   )d1d2d3d4)u1u2u3r>   r\   r  objectr   rR  )r=   r   r   )
r   r  r   onesr   r   r   r$   rB   rD   )using_infer_stringtupsr-   rp   rQ   s        r   test_loc_nan_multiindexrW  M  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)r   )W  i  i  )PeriodCVRr>   )	OMSOMKRES	DRIFT_IND
OEVRIG_INDFIN_INDVARE_UDLOEN_UDFIN_UDr   ))rY  r\  r_  r   r\  r_  )r   period_ranger   r{   r   r$   r   isnan)r   r   r   r-   rp   alts         r   test_loc_period_string_indexingrk  k  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Idx2r>   r	   r   r"   r3   r   r   r#   C1C2rK   r   r(   r   r   )r   to_datetimer   r{   r   r$   r   get_level_valuesr   r   	TimestamprB   rm   )dt_idxm_idxr-   rp   rQ   s        r   test_loc_datetime_mask_slicingrw    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   r>   r   )r   r   )r   rt  r   r   r   r$   rB   rm   )r   ro   rp   s      r   &test_loc_datetime_series_tuple_slicingrz    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	   r|  r   r   r>   authorpricerq  r  r|  )r  r|  r|  r   )r   r   r   r$   rB   rD   )r-   r   rp   rQ   s       r   test_loc_with_mi_indexerr    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_framerA   r   r?   get_locr$   rE   r   rB   rD   rm   )dtiro   r-   df2rp   rQ   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   splitrA   rF   r$   r   r   rB   rD   )r-   r  rN   rQ   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   r   )rg   rg   ZW)r!   ru   r[  Fr3   rz   r   rg   r!   r   )	r   PeriodIndexr   rH   r   r'   r   r|   r$   )pilev2lev3r   ro   rp   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)Nr5   r3   r"   rt   r   rg   r!   6r]   r	   r   )	r   r   r   r   rA   r`   ra   rb   r$   )r)   r-   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\)r]   )r   r"   )r   r   r{   r`   ra   rb   r$   )r)   ro   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   )rB  rC  rC  3)r   r   r   r   )r  r    r:  r>   r   r3   r"   r   z'\('b', '1', slice\(None, None, None\)\)r]   r   rB  z\('b', '1'\))r   rB  )r   rH   r   rG   r   r   r   r`   ra   rb   r$   r   r   get_locs)r)   r   r-   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 )Nrg   )rj   r   )r$   rB   rm   )rn   r-   ro   rp   rQ   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	   r3   r   )r8   ind1ind2r  r  r8   r	   )r   r	   r>   r   r   )
r   r   r  rA   r$   r   r   rB   rD   r   r0  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\)r]   )       @r        @)r   rA   r`   ra   rb   r$   r-   s    r   test_getitem_non_found_tupler  5  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 )Nr   d   r  z2001-01r      r   )r   r   r   rH   r  r   repeatr  rB   rD  nonzero)r   r   r$   rQ   s       r   test_get_loc_datetime_indexr  >  s&   MM,4E				(B::i E!R$6666==#uQD'9999
SqS'//)
$CSqSz!!),H(??
))A,

y
)C||A&&y1H(??
))B-

	
*C||E"**95Ha 0(;r   c                  .   t        j                  ddgddgg      } t        ddgddgdd	gd
dgg|       }dddgf}t        j                  ddgddgg      |j
                  |d d f<   t        ddgddgdd	gd
dgg|       }t        j                  ||       y )Nr   r   r   r	   r   r"   r3   r   r   r#   rX   r   rv   rY   r6   r5   )r   r{   r   r   rG   r$   rB   rD   )r   r-   r   rQ   s       r   ,test_loc_setitem_indexer_differently_orderedr  T  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"   r3   r   r   r#   rX   r  r	   r   r	   r   r   r   r   )r   r   r   r   )r   r   r	   r	   )r   r$   r   rB   rD   r0  s      r   5test_loc_getitem_index_differently_ordered_slice_noner  _  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"   rX   r#   )r	   r   r#   r   r"   rX   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	   rX   )r|  r   )r	   r#   r  r  )r   r"   )r   rX   )r   r#   r   r   )r	   r	   r   r	   r   r	   r   r   )r	   r   r   r#   r#   r   r"   rX   )r'  )	r   r   r   r$   r   rB   rD   r   isin)r   r-   rp   rQ   s       r   @test_loc_getitem_index_differently_ordered_slice_none_duplicatesr  o  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   r>   r   r   r   r   r   r  )
r   rH   r   r   r$   rB   rD   r   r   rm   )r   r-   rQ   rp   ro   s        r   3test_loc_getitem_drops_levels_for_one_row_dataframer    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 )
Nrt   r	   r   r&  r   r!   rg   )r   r3   ))r!   r	   )r!   r   )rg   r	   )rg   r   )	r   r{   r   r   zerosr$   r   rB   rD   )colsr-   rp   rQ   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)Nr5   r  r  r  )Ohior  Colorado)GreenRedr  r   key1key2statecolorz\[2\] not in indexr]   r   r   r  )r   r   r   r   r   r?   r(   r`   ra   rb   r$   )r+   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)Nr3   r	   r   r   r   r   z\['not' 'found'\] not in indexr]   notfound)r   r'   r   r{   r`   ra   rb   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"   r3   r#   rX   r   r	   r   rg   r!   r   r   r   r"   )r   r	   rg   )r   r  )r   r  g      @g      @)r  r4   g      @g       @)r  g      r   r   r  )r   r   r   r   )r   r   r{   r$   r   r  rB   rD   )rp   rQ   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"   r3   r   r   r>   r   )r   r   r   r   r   )r   r   rH   r$   
isinstancer   r   rE   )r-   rp   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   rg   r!   r	   r   r>   rz   r  r   )
r   r{   r   r   r|   r$   r  r   rB   rm   )r   s2rp   rQ   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  )rY   rY   r      r  !   r   rt   rg   r!   z^1$r]   )r  r	   )r   r'   rA   r`   ra   rb   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"   )r3   r   r	   r   r   )r   r   r   r$   )r   ro   rp   s      r   *test_multindex_series_loc_with_tuple_labelr    sA    			 5	6B
!Qr
"CWW[!FQ;;r   )6numpyr   r`   pandas.errorsr   pandasr   r   r   r   r   pandas._testing_testingrB   fixturer   r   r  r  r   
IndexSlicer!  r)  r1  r3  r6  r8  r;  rF  rW  rk  rw  rz  r  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q qh 	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   