
    Owg/                        d dl mZ d dlZd dlZd dlZd dlmZ d dl	m
Z
mZ d dlZd dlmZmZmZmZmZ d dlmZ  G d d      Z G d d	      Z G d
 d      Zd Zd Zej6                  j9                  ddgdz   edgdz        g      ej6                  j9                  dg d eg d      g      d               Zej6                  j9                  ddg edg      g      ej6                  j9                  ddg edg      g      d               Z G d d      Z G d d      Z  G d d      Z!d Z"ej6                  j9                  dejF                  ddgg d gd ejF                  d!fejF                  ddgg d gd"ejF                  d#fd$fg d%d&ejF                  d&ggd"dejF                  fd!fg      d'        Z$ej6                  j9                  d(ejF                  d"d)gg d*g e%d d)d      ejF                  d"fejF                  d"d)gg d*g e%d d+d      ejF                  d,fg d-d.ejF                  dgg e%d"d+d      d)ejF                  fd+fg d-d.ejF                  dgg e%d"d+d      d)ejF                  fd/fg      d0        Z&d1 Z'ej6                  j9                  d2 e%d      dd.gfd"d gf e%d      d.dgfd d"gfg d3d.d4gfd d)gfg d3d4d.gfd d)gfd)d.dgfd d"gfd)dd.gfd"d gfd)gd.dgfd d"gfd)gdd.gfd"d gfg      d5        Z(d6 Z)y)7    )	timedeltaN)index)InvalidIndexErrorPerformanceWarning)Categorical	DataFrameIndex
MultiIndex
date_rangec                      e Zd Zd Zd Zd Zd Zd Zej                  j                  dej                  ddgg d	gd
ej                  dfej                  ddgg d	gd
ej                  dfej                  ddgg d	gd
ej                  dfg ddej                  dggddej                  fdfg ddej                  dggddej                  fdfg ddej                  dggddej                  fdfg      d        Zy)TestSliceLocsc                 
   |j                  d      \  }}|j                  dd      }|dk(  sJ |j                  d d      }|dk(  sJ |j                  dd       }|dt        |      fk(  sJ |j                  dd      }|d	k(  sJ y )
Nr   footwo)quxone)      )r   r   r   barbaz)      )	sortlevel
slice_locslen)selfidx
sorted_idx_results        _/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/indexes/multi/test_indexing.pytest_slice_locs_partialz%TestSliceLocs.test_slice_locs_partial   s    a(
A&&~~F&&t^<&&~t<!S_----&&ue4    c           	         t        t        j                  j                  d      j	                  d      t        t        d      t              t        ddd      	      }|j                  d
      }|j                  }t        |j                  |j                  d   |j                  d          }||   }|dd j                  d
      }t        j                  |j                  |j                         t        |j                  |j                  d   t!        d      z   |j                  d   t!        d      z
         }||   }|dd j                  d
      }t        j                  |j                  |j                         y )Nr   )2   r   ABCDdtype
2000-01-01r&   Bperiodsfreqcolumnsr   Tfuture_stackr            seconds   )r   nprandomdefault_rngstandard_normalr	   listobjectr   stackr   slicer   tmassert_almost_equalvaluesr   )r   dfstackedr   slobslicedexpecteds          r"   test_slice_locszTestSliceLocs.test_slice_locs(   s3   II!!!$44W=$v,f5\2C@

 (((-mmcnnRXXa["((2,?@a8>>t>4
v}}hoo>^^i33y44
 a8>>t>4
v}}hoo>r$   c                    t        t        j                  j                  d      j	                  d      t        t        d      t              t        ddd      	      }|j                  d
      }|j                  }t        j                  t        d      5  |j                  d       d d d        t        j                  t        d      5  |j                  |j                  d   t        d      z   d       d d d        t        t        j                   d      t        t#        d      D cg c]  }d| 	 c}d      t        t#        d      D cg c]  }d| 	 c}d            }|j                  d
      }|j                  }t        j                  t        d      5  |j                  t        d             d d d        t        j                  t        d      5  |j                  |j                  d   d       d d d        y # 1 sw Y   fxY w# 1 sw Y   #xY wc c}w c c}w # 1 sw Y   qxY w# 1 sw Y   y xY w)Nr   )
   r   r'   r(   r*   rK   r+   r,   r/   Tr1   z^Level type mismatchmatchr      r   r5   r6   r   r   )r   r   zi-a)name)r   r0   r   )r4   rQ   )r   r9   r:   r;   r<   r	   r=   r>   r   r?   r   pytestraises	TypeErrorr   r   onesrange)r   rD   rE   r   is        r"   "test_slice_locs_with_type_mismatchz0TestSliceLocs.test_slice_locs_with_type_mismatch@   s   II!!!$44W=$v,f5\2C@

 (((-mm]]9,BC 	#NN6"	#]]9,BC 	HNN288A;2)>>G	HGGFO584a2aS43?U1X6Rs86SA

 (((-mm]]9,BC 	2NN9R01	2 ]]9,BC 	3NN288A;	2	3 	3	# 	#	H 	H 56	2 	2	3 	3s<   H-H-H(H-&H2% H>HH%2H;>Ic           	      $   t        t        t        j                  d            t        t        j                  d            t        t        j                  d            gt        j                  g d      t        j                  g d      t        j                  g d      g      }d}t        j                  t        |      5  |j                  dd	       d d d        |j                  d
      \  }}|j                  dd	       y # 1 sw Y   0xY w)Nr   r   r   r   r   r   r   rO   rO   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   levelscodesz4[Kk]ey length.*greater than MultiIndex lexsort depthrL   )r   r   r   )r   r   r   r   )
r
   r	   r9   arangearrayrS   rT   KeyErrorr   r   )r   r   msgsorted_indexr    s        r"   test_slice_locs_not_sortedz(TestSliceLocs.test_slice_locs_not_sortedY   s    "))A,'ryy|)<eBIIaL>QR121212
 E]]83/ 	3Y	2	3  //!,a	95	3 	3s   DDc                 x   t        g dg dgg dg dg      }|j                  dd      }|dk(  sJ |j                  d	d
      }|dk(  sJ |j                  dd      }|dk(  sJ |j                  dd
      }|dk(  sJ |j                  dd      }|dk(  sJ |j                  dd      }|dt        |      fk(  sJ y )N)r   r   r   r8   )r   r   r   )	r   r   r   r   r   r   rO   rO   rO   )	r   r   r   r   r   r   r   r   r   r^   r   r   rP   )rO   r8   r   r   r   r   r   )r8   rO   )rO      rK   r   )r
   r   r   )r   r   r!   s      r"   test_slice_locs_not_containedz+TestSliceLocs.test_slice_locs_not_containedk   s      ),.0KL

 !!&&1!!!Q'!!&&1!!!Q'!!&&1!!"b)!SZ(((r$   $index_arr,expected,start_idx,end_idxrQ   bcde)r   rO   N)rn   rr   rQ   rn   rp   rq   rr   rN   rp   )rp   rr   c                 b    t        j                  |      }|j                  ||      }||k(  sJ y N)startend)r
   from_arraysr   )r   	index_arrrH   	start_idxend_idxr   r!   s          r"   "test_slice_locs_with_missing_valuez0TestSliceLocs.test_slice_locs_with_missing_value   s4     $$Y/iW=!!!r$   )__name__
__module____qualname__r#   rI   rY   rf   rl   rS   markparametrizer9   nanr|    r$   r"   r   r      s    ?0326$)4 [[.vvsC /2FBFFDIvvsC /2FBFFCHvvsC /2FBFFJORVVS12FS"&&M4PRVVS12FS"&&M3ORVVS12FS"&&M:V	

"
"r$   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestPutmaskc                 L   d}t        j                  t        |      5  |j                  t	        j
                  t        |      dz   t        j                        d       d d d        t        j                  t        |      5  |j                  t	        j
                  t        |      dz
  t        j                        d       d d d        t        j                  t        |      5  |j                  dd       d d d        y # 1 sw Y   xY w# 1 sw Y   LxY w# 1 sw Y   y xY w)Nz,putmask: mask and data must be the same sizerL   r   r   )rS   rT   
ValueErrorputmaskr9   rV   r   bool_r   r   rd   s      r"   test_putmask_with_wrong_maskz(TestPutmask.test_putmask_with_wrong_mask   s     =]]:S1 	<KKC1bhh7;	< ]]:S1 	<KKC1bhh7;	< ]]:S1 	"KKq!	" 	"	< 	<	< 	<	" 	"s%   ADAD&DDDD#c                 b   t        j                  t        j                  dft        j                  dfdg      }t        j                  g d      }t        j                  g d      }|j                  ||      }t        j                  |d   |d   |d   g      }t        j                  ||       y )Nr8   )rQ   r   )rQ   r   r   )rq   r   )TTFr   r   r   )r
   from_tuplesr9   r   rb   r   rA   assert_index_equal)r   leftrightmaskr!   rH   s         r"   test_putmask_multiindex_otherz)TestPutmask.test_putmask_multiindex_other   s     %%{RVVQK&JK&&'EFxx+,dE*))58U1XtAw*GH
fh/r$   c                 x   t        j                  t        j                  g d|      g dg      }t        j                  t        j                  g d|      g dg      }|j	                  g d|      }t        j                  t        j                  g d|      g dg      }t        j                  ||       y )	Nr   r   rO   r(   rK         r   r8      )rk   TFFr   r   rO   rk   r   r   r
   rx   pdSeriesr   rA   r   r   any_numeric_ea_dtypemidxmidx2r!   rH   s         r"   test_putmask_keep_dtypez#TestPutmask.test_putmask_keep_dtype   s    %%YYy(<=|L
 &&YYy(<=|L
 2E:))YYy(<=|L
 	fh/r$   c                 t   t        j                  t        j                  g d|      g dg      }t        j                  t        j                  dg|      dgg      }|j	                  g d|      }t        j                  t        j                  g d|      g dg      }t        j                  ||       y )	Nr   r(   r   r   rk   r   r   r   r   r   s         r"   %test_putmask_keep_dtype_shorter_valuez1TestPutmask.test_putmask_keep_dtype_shorter_value   s    %%YYy(<=|L
 &&YYs"67">
 2E:))YYy(<=|L
 	fh/r$   N)r}   r~   r   r   r   r   r   r   r$   r"   r   r      s    "
000r$   r   c                      e Zd Zd Zd Zd Zej                  j                  dde	j                  dgg dgde	j                  dg e	j                  g de	j                  	      fde	j                  dgg dge	j                  d
fg e	j                  dge	j                  	      fg de	j                  d
dggde	j                  fg e	j                  dge	j                  	      fg de	j                  d
dgge	j                  d
dg e	j                  g de	j                  	      fg      d        Zd Zej                  j                  dg d      d        Zd Zd Zd Zd Zy)TestGetIndexerc                    t        t        j                  d            }t        t        j                  d            }t        j                  g dt        j                        }t        j                  g dt        j                        }t        ||g||g      }|d d }|g d   }|j                  |      }t        j                  |t        j                  g d	t        j                               |j                  |d
      }t        j                  g dt        j                        }	t        j                  ||	       |j                  |d d d   d
      }
t        j                  |
|	d d d          |j                  |d      }t        j                  ||       |j                  |d      }t        j                  g dt        j                        }	t        j                  ||	       |j                  |d d d   d      }
t        j                  |
|	d d d          |j                  |d      }t        j                  ||       |j                  |j                        }|j                  |      }t        j                  ||       |j                  g d      }|g dk(  j                         sJ t        t        t        d            t        t        d            z         }t        t        t        d                  }d}t        j                  t        |      5  |j                  |       d d d        y # 1 sw Y   y xY w)Nr   r   )r   r   r   r   r   rO   rO   r(   )r   r   r   r   r   r   r   r^   r   )r   rO   r   )r   rO   rk   padmethod)rk   r   r   r   r   rk   ffillbackfill)r   r   r   r   r   bfillr   rk   rk   rk   rK      z8Reindexing only valid with uniquely valued Index objectsrL   )r	   r9   ra   rb   intpr
   get_indexerrA   rB   rC   allr=   rW   rS   rT   r   )r   
major_axis
minor_axismajor_codesminor_codesr   idx1idx2r1e1r2rffill1rbfill1rexp1rd   s                  r"   test_get_indexerzTestGetIndexer.test_get_indexer   s   299Q<(
299Q<(
hh4BGGDhh4BGGD
+K3M
 RayYd#
r288Jbgg#FGd51XX&bgg6
r2&d4R4j7
r2dd8,""4"8
r7+d:6XXoRWW5
r2&d4R4j<
r2dd8,""4"8
r7+ dkk*  &
r5)i(l"''))) T%)_tE"I67T%)_%H]],C8 	#T"	# 	# 	#s   (MMc                 L   t        j                  ddg      }d}t        j                  t        |      5  |j                  dgd       d d d        d}t        j                  t        |      5  |j                  dgd	d
       d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY w)Nr   rn   r   zJmethod='nearest' not implemented yet for MultiIndex; see GitHub issue 9365rL   rQ   nearestr   z,tolerance not implemented yet for MultiIndexr   r   )r   	tolerance)r
   r   rS   rT   NotImplementedErrorr   )r   r   rd   s      r"   test_get_indexer_nearestz'TestGetIndexer.test_get_indexer_nearest  s    %%x&:;$ 	 ]].c: 	6cU95	6<]].c: 	?cU5A>	? 	?	6 	6	? 	?s   B/BBB#c           
         t        j                  t        g d      t        t        ddd            g      }|j	                  |      }t        j                  |t        j                  dt        j                               y )Nrs   
2012-01-01rO   hr,   	   r(   )
r
   from_productr   r   r   rA   assert_numpy_array_equalr9   ra   r   )r   r   r!   s      r"   !test_get_indexer_categorical_timez0TestGetIndexer.test_get_indexer_categorical_time  sa    &&O,J|QSIJ
 !!$'
##FBIIarww,GHr$   zindex_arr,labels,expectedr   r   rO   r   r   r   r(   r   r   r   r   c                 |    t        j                  |      }|j                  |      }t        j                  ||       y )N)r
   rx   r   rA   r   )r   ry   labelsrH   r   r!   s         r"   #test_get_indexer_with_missing_valuez2TestGetIndexer.test_get_indexer_with_missing_value  s2    & $$Y/(
##FH5r$   c                 b   t        j                  g dg dg      }t        j                  dgg dg      }|j                  |      }t        j                  g d|j
                        }t        j                  ||       |j                  |d      }t        j                  g d	|j
                        }t        j                  ||       |j                  |d
      }t        j                  g d	|j
                        }t        j                  ||       |j                  |d      }t        j                  g d|j
                        }t        j                  ||       |j                  |d      }t        j                  g d|j
                        }t        j                  ||       y )N)rk   r   r   )r   r   rO   r   r   )r   rO   r   )rk   r8   r   r(   r   r   r   r   r   )r   r8   r   r   )r
   r   r   r9   rb   r)   rA   rB   r   
mult_idx_1
mult_idx_2indexerrH   backfill_indexerpad_indexers          r"   test_get_indexer_methodsz'TestGetIndexer.test_get_indexer_methods3  sZ   6  ,,j,-GH
,,qc9-=>
((488Jgmm<
x1%11*Z1P88I-=-C-CD
x)9: &11*W1M88I-=-C-CD
x)9: ,,Z,F88I[->->?
x5 !,,Z,H88I[->->?
x5r$   r   )r   r   r   r   r   c                     t        j                  g dg dg      }|dk(  r	t        }d}nt        }d}t	        j
                  ||      5  |j                  dg|       d d d        y # 1 sw Y   y xY w)N)r   r   r   r   z"not implemented yet for MultiIndexz0index must be monotonic increasing or decreasingrL   r   r   r   )r
   rx   r   r   rS   rT   r   )r   r   mierrrd   s        r"   0test_get_indexer_methods_raise_for_non_monotonicz?TestGetIndexer.test_get_indexer_methods_raise_for_non_monotonicg  sj     ##Y	$:;Y%C6CCDC]]3c* 	4NNF8FN3	4 	4 	4s   	A''A0c                    t        j                  ddgg dddgg      }t        j                  g d      }|j                  sJ |j                  sJ |j                  sJ |j                  sJ |d   |d   k  sJ |d   |d   cxk  r	|d   k  sJ  J |d   |d	   k(  sJ |d   |d   cxk  r	|d
   k  sJ  J |d   |d   cxk  r	|d
   k  sJ  J |d   |d   cxk  r	|d
   k  sJ  J |d   |d
   k  sJ |j                  |      }t        j                  g d|j                        }t        j                  ||       |j                  |d      }t        j                  g d|j                        }t        j                  ||       |j                  |d      }t        j                  g d|j                        }t        j                  ||       |d   |d   cxk  r	|d   k  sJ  J |d   |d   cxk  r	|d   k  sJ  J |d   |d	   cxk  r	|d   k  sJ  J |d   |d   cxk  r	|d   k  sJ  J |d   |d   cxk  r	|d	   k  sJ  J |d	   |d   k(  sJ |d   |d
   cxk  r	|d
   k  sJ  J |d   |d   cxk  r	|d
   k  sJ  J |d   |d   cxk  r	|d
   k  sJ  J |d   |d   cxk  r	|d
   k  sJ  J |d   |d   cxk  r	|d
   k  sJ  J |d   |d   cxk  r	|d
   k  sJ  J |j                  |      }t        j                  g d|j                        }t        j                  ||       |j                  |d      }t        j                  g d|j                        }t        j                  ||       |j                  |d      }	t        j                  g d|	j                        }t        j                  ||	       y )Nr   rO   )r   r   r8   r   r   ))r   r   rj   )r   r   r   )r   r8   r   )r   r   r8   )r   r   r   )r   r   rj   )rO   r8   rj   r   r   r   r8   rk   )rk   rk   r   rk   rk   rk   rk   r(   r   r   )r   r   r   r8   r8   r8   rk   r   )rk   rO   r   r   r   r   r   rj   r   rK   r   )rk   rk   rk   rk   rk   r   rk   rk   rk   rk   rk   rk   r   )r   r   r   r   r   r   r8   r8   r8   r8   r8   r8   )r   r   r   r   r   r   r   r   r   r   r   r   )r
   r   r   is_monotonic_increasing	is_uniquer   r9   rb   r)   rA   rB   )
r   r   r   indexer_no_fillrH   indexer_backfilledindexer_paddedr   r   r   s
             r"   %test_get_indexer_three_or_more_levelsz4TestGetIndexer.test_get_indexer_three_or_more_levelst  so   4  ,,q!fi!Q-HI
++


 1111####1111#### !}z!},,,!}z!}<z!}<<<<<!}
1---!}z!}<z!}<<<<<!}z!}<z!}<<<<<!}z!}<z!}<<<<<"~
1---$00<887?T?TU
x9 (33Jz3R882:L:R:RS
x);< $//
5/I883>;O;OP
x8 !}z!}<z!}<<<<<!}z!}<z!}<<<<<!}z!}<z!}<<<<<!}z!}<z!}<<<<<!}z!}<z!}<<<<<!}
1---!}z!}<z!}<<<<<!}z!}<z!}<<<<<!}z!}<z!}<<<<<!}z!}<z!}<<<<<!}z"~=
1=====!}z"~=
1=====((488;7==
 	x1%11*W1M8808H8N8N
 	x)9: ,,Z,F8808I8I
 	x5r$   c                 x   t        j                  ddggdz        }t        j                  ddg      }|d   |d   cxk  r	|d   k  sJ  J |d	   |d   k  sJ |j                  |      }t	        j
                  d	d	g|j                  
      }t        j                  ||       |j                  |d      }t	        j
                  dd	g|j                  
      }t        j                  ||       |j                  |d      }t	        j
                  ddg|j                  
      }t        j                  ||       y )Nr   r   r   )r   rO   r   r   )r   rO   r   r   r   r   rj   rk   r(   r   r   r   r3   )	r
   r   r   r   r9   rb   r)   rA   rB   r   s          r"    test_get_indexer_crossing_levelsz/TestGetIndexer.test_get_indexer_crossing_levels  s)   6  ,,q!fX\:
++\<,HI
 !}z!}<z!}<<<<<"~
1---((488RHGMM:
x1%11*W1M88QG+;+A+AB
x)9: ,,Z,H88QG;+<+<=
x5r$   c                 h   t        j                  t        d      ddgg      }d}t        j                  t
        |      5  |j                  |d d d       d d d        d	}t        j                  t
        |      5  |j                  |d d d
       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)NrO   Ar+   z;limit argument only valid if doing pad, backfill or nearestrL   rk   r   )limitz?tolerance argument only valid if doing pad, backfill or nearestpiano)r   )r
   r   rW   rS   rT   r   r   )r   r   rd   s      r"   !test_get_indexer_kwarg_validationz0TestGetIndexer.test_get_indexer_kwarg_validation  s    $$eAhc
%;<K]]:S1 	-NN2cr7!N,	- P]]:S1 	7NN2cr7gN6	7 	7		- 	-	7 	7s    B<B(B%(B1c                 j   t        j                  dgddggddg      }t        j                  dgt        j                  dggddg      }t        j                  ddg      }|j                  |      }t        j                  ||d	
       |j                  |      }t        j                  ||d	
       y )Nr         ?       @id1id2namesrk   r   F)check_dtype)r
   r   r9   r   rb   r   rA   r   )r   r   r   rH   r!   s        r"   test_get_indexer_nanz#TestGetIndexer.test_get_indexer_nan  s    &&Sz':5%.Q&&}'=eU^T88RG$!!$'
##FH%H!!$'
##FH%Hr$   N)r}   r~   r   r   r   r   rS   r   r   r9   r   rb   r   r   r   r   r   r   r   r   r   r$   r"   r   r      sc   2#h
?	I [[# RVVQ+BFFARWW5
 "&&!ni(BFFA;-1#RWW9UV"&&!Q(Arvv;-1#RWW9UVRVVQN+ARWW5	
"6#"626h [[X'WX
4 Y
4a6F,6\
7Ir$   r   c                     | d   dk(  sJ | dd }| g d   }|j                  |      sJ | g d   }| t        j                  g d         }| g d   }|j                  |      sJ |j                  |      sJ y )Nr   )r   r   r   r   rO   r   )TFTFTT)r   r   r   r   )equalsr9   rb   )r   r!   rH   result2s       r"   test_getitemr     s    q6^### 1XF9~H==""" 78F"((ABCG< H==""">>(###r$   c                     | j                  d      \  }}|j                  d      t        dd      k(  sJ |j                  d      t        dd      k(  sJ y )Nr   r   rO   r   r   r   )r   get_locr@   )r   r   r    s      r"   test_getitem_group_selectr  -  sR    MM!$MJe$a333e$a333r$   ind1Tr   ind2)TFTFFc                     t        j                  g d      }t        j                  ||    |       t        j                  ddg      }t        j                  ||   |       y )N)rK   r   )r   r   r5   rO   )(   r   )r&   r   r  r  )r
   r   rA   r   r  r  r   rH   s       r"   test_getitem_bool_index_allr	  3  sR     
 
 !N
OC#d)S)%%w&89H#d)X.r$   Fc                 B   t        j                  dg      }t        j                  ||    |       t        t	        j
                  g t        j                        t	        j
                  g t        j                        gg g g      }t        j                  ||   |       y )Nr  r(   r^   )r
   r   rA   r   r9   rb   int64r  s       r"   test_getitem_bool_index_singler  A  sw     
 
 '
+C#d)S)288,bhhr.JK2hH #d)X.r$   c                      e Zd Zd Zd Zd Zej                  j                  de	e
eeg      ej                  j                  de	e
eeg      d               Zej                  j                  ddd	g      ej                  j                  d
e	e
ge
e	gg      d               Zej                  j                  deeg      d        Zej                  j                  ddd	g      d        Zd Zd Zd Zd Zd Zd Zy)
TestGetLocc           	      r   |j                  d      dk(  sJ |j                  d      dk(  sJ t        j                  t        d      5  |j                  d       d d d        t        j                  t        d      5  |j                  d	       d d d        t	        t        t        j                  d
            t        t        j                  d
            t        t        j                  d
            gt        j                  g d      t        j                  g d      t        j                  g d      g      }t        j                  t        d      5  |j                  d       d d d        |j                  d      t        dd      k(  sJ y # 1 sw Y   ;xY w# 1 sw Y   xY w# 1 sw Y   DxY w)Nr   r   )r   r   rO   z^\('bar', 'two'\)$rL   r   r   z^'quux'$quuxr   r[   r\   r]   r^   z
^\(1, 1\)$r   )r   r   r   )
r   rS   rT   rc   r
   r	   r9   ra   rb   r@   )r   r   r   s      r"   test_get_loczTestGetLoc.test_get_locP  sF   {{>*a///{{>*a///]]8+@A 	(KK'	(]]8;7 	 KK	  "))A,'ryy|)<eBIIaL>QR121212
 ]]8=9 	"MM&!	"}}V$a333!	( 	(	  	 	" 	"s$   F=F F-F F*-F6c                 6   t        g d      }|j                  d      }t        dd      }||k(  sJ t        g d      }|j                  d      }d}||k(  sJ t        j                  t
        d      5  |j                  d       d d d        y # 1 sw Y   y xY w)	N)r   r   r   r   r   r   r   )rp   rQ   rQ   rn   rn   rp   2rL   )r	   r   r@   rS   rT   rc   )r   r   r!   rH   rsxps         r"   test_get_loc_duplicatesz"TestGetLoc.test_get_loc_duplicatese  s    l#q!A;!!!/0]]3Rxx]]83/ 	MM!	 	 	s   4BBc           	      `   t        t        t        j                  d            t        t        j                  d            t        t        j                  d            gt        j                  g d      t        j                  g d      t        j                  g d      g      }|j                  d      \  }}t        dd      }||   j                  d	      j                  d	      }||k(  sJ |j                  |      sJ |j                  d
      \  }}d}||k(  sJ |J t        j                  t        d      5  |j                  d       d d d        t        j                  t        d      5  |j                  d      j                  d       d d d        t        j                  t        d      5  |j                  dd      j                  dd       d d d        t        dgt        t        d            gt        j                  g d      t        j                  g d      g      }|j                  dt        d d       f      \  }}t        d d       }||k(  sJ |j                  |j                  d	            sJ y # 1 sw Y   :xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr   r[   r\   r]   r^   r   r   r   r   r   )r   r   r   z
^\(2, 2\)$rL   ri   z^2$)leveli  )r   r   r   r   )r   r   r   rO   )r
   r	   r9   ra   rb   get_loc_levelr@   	droplevelr   rS   rT   rc   dropr=   rW   )r   r   loc	new_indexrH   	exp_indexr!   s          r"   test_get_loc_levelzTestGetLoc.test_get_loc_levels  s=   "))A,'ryy|)<eBIIaL>QR121212
 ,,V4YA;(O--a0::1=	h	***,,Y7Yh   ]]8=9 	('	( ]]862 	+JJqM''*	+ ]]862 	=JJqJ"00!0<	= FDqN+88L)288L+AB
 "//uT47H0IJ	t$!!! 2333!	( 	(	+ 	+	= 	=s$    J
5!J9%J$
JJ!$J-dtype1dtype2c                     t        j                  ddg      j                  |      t        j                  ddg      j                  |      g}t        j                  |      }|j                  |d         dk(  sJ y )Nr   r   r   )r9   rb   astyper
   r   r   )r   r"  r#  r_   r   s        r"   test_get_loc_multiple_dtypesz'TestGetLoc.test_get_loc_multiple_dtypes  si     ((Aq6"))&1288QF3C3J3J63RS%%f-{{3q6"a'''r$   r  r   r   dtypesc                     ddgddgg}ddg}|\  }}t        j                  ddg|      ||<    |d      ||<   t        j                  |      }|j	                  t        |            dk(  sJ y )	NrQ   rn   rp   rq   r   r   r(   rO   )r9   rb   r
   r   r   tuple)r   r  r'  r_   key	lev_dtype	key_dtyper   s           r"   test_get_loc_implicit_castz%TestGetLoc.test_get_loc_implicit_cast  sy     *sCj)Cj%	9!Qy9uq\E
%%f-{{5:&!+++r$   r)   c                    t        ddg|      t        j                  dd      g}t        j                  |      }|t
        u rwt        j                  t        d      5  |j                  d      d	k(  sJ 	 d d d        t        j                  t        d
      5  |j                  d      dk(  sJ 	 d d d        n,|j                  d      d	k(  sJ |j                  d      dk(  sJ 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   xY w# 1 sw Y   xY w# 1 sw Y   WxY w# 1 sw Y   y xY w)NFTr(   r   r  z
^\(0, 1\)$rL   r  r   z
^\(1, 0\)$rh   z^\(False, True\)$)FTz^\(True, False\)$)TF)
r	   r9   ra   r
   r   boolrS   rT   rc   r   )r   r)   r_   r   s       r"   test_get_loc_cast_boolz!TestGetLoc.test_get_loc_cast_bool  sI    U3RYYq5PQ%%f-D=x}= 0{{6*a///0x}= 0{{6*a///0 0 ;;v&!+++;;v&!+++]]8+?@ 	'KK&	']]8+?@ 	'KK&	' 	'0 00 0	' 	'	' 	's0   EEE*7E6EE'*E36E?c                     ddgddgg}ddg}t        j                  d|gt        |            ||<   |||<   t        j                  |      }|j                  t        |            dk(  sJ y )NrQ   rn   rp   rq   r   r(   rO   )r9   rb   typer
   r   r   r)  )r   r  nulls_fixturer_   r*  r   s         r"   test_get_loc_nanzTestGetLoc.test_get_loc_nan  sq     *sCj)Cj!]!34;NOu"E
%%f-{{5:&!+++r$   c                 <   t        j                  ddgddgg      }t        |j                  d      t              sJ t        j                  t        d      5  |j                  d       d d d        t        j                  t        d	      5  |j                  t        j                         d d d        t        j                  t        d
      5  |j                  t        j                  g       d d d        y # 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   y xY w)Nr   r   g      @g      @r   z^3$rL   rO   z^nan$z\[nan\])r
   rx   
isinstancer   r@   rS   rT   rc   r9   r   r   r   r   s     r"   test_get_loc_missing_nanz#TestGetLoc.test_get_loc_missing_nan  s    $$sCj3*%=>#++a.%000]]862 	KKN	]]884 	 KK	 ]],J? 	"KK!	" 	"		 		  	 	" 	"s$   C: D!D:DDDc                 p   t        j                  t        j                  dggdz        }t	        ddd       }|j                  t        j                        |k(  sJ t        j                  t        j                  ddt        j                  gg      }t        j                  g d      }t        j                  |j                  t        j                        |       t        j                  t        j                  dggdz        }t	        ddd       }|j                  t        j                  df      |k(  sJ y )Nr   r   r   )TFFTrO   r   )
r
   r   r9   r   r@   r   rx   rb   rA   r   )r   r   rH   s      r"   1test_get_loc_with_values_including_missing_valuesz<TestGetLoc.test_get_loc_with_values_including_missing_values  s    %%{ma&78At${{266"h...$$rvvq!RVV&<%=>8867
##CKK$7B%%{ma&78At${{BFFA;'8333r$   c                 |    t        g dg dgg dg dgddg      }|j                  d      t        d	d
      k(  sJ y )N)Dr+   C)r         %   9   C   K   R   )
r   r   r   r   r   r   r   r   r   r   )
r   rO   r   r8   r   r   r   rO   r   r   tagdayr_   r`   r   r<  r   rO   )r
   r   r@   )r   r   s     r"   test_get_loc_duplicates2z#TestGetLoc.test_get_loc_duplicates2  sD    #%DE13QR%.
 }}S!U1a[000r$   c                     t        dgddgdggddgddgddggg dd      }d}t        j                  t              5  |j	                  |      }d d d        t        ddd       k(  sJ y # 1 sw Y   xY w)NrQ   r   r   r   )xyz)r_   r`   r   	sortorder)rQ   r   )r
   rA   assert_produces_warningr   r   r@   )r   r   r*  r!   s       r"   test_get_loc_past_lexsort_depthz*TestGetLoc.test_get_loc_past_lexsort_depth  s    EAq6A3'q6Aq6Aq6*!	
 ''(:; 	&[[%F	& q!T****		& 	&s   A**A3c                     t        j                  ddg      }d}t        j                  t        |      5  |j                  g        d d d        y # 1 sw Y   y xY w)Nr   r   z\[\]rL   )r
   r   rS   rT   r   r   r   s      r"   #test_multiindex_get_loc_list_raisesz.TestGetLoc.test_multiindex_get_loc_list_raises  sK    $$h%9:]],C8 	KKO	 	 	   AAc                 <   t        j                  t        d      t        d      t        d      t        d      g      }d}t        j                  t
        t        j                  t        |                  5  |j                  |       d d d        y # 1 sw Y   y xY w)NrO   r   r   r8   )r   r   rL   )
r
   r   rW   rS   rT   rc   reescapestrr   )r   r   r*  s      r"   )test_get_loc_nested_tuple_raises_keyerrorz4TestGetLoc.test_get_loc_nested_tuple_raises_keyerror  sk    $$eAha%(E!H%MN ]]8299SX+>? 	JJsO	 	 	s   7BBN)r}   r~   r   r  r  r!  rS   r   r   intfloatr/  rV  r&  r-  r>   r0  r4  r8  r:  rH  rO  rQ  rW  r   r$   r"   r  r  O  s$   4*$4L [[XUD#'>?[[XUD#'>?( @ @( [[Wq!f-[[Xeucl'CD, E ., [[WtVn5' 6'* [[Wq!f-, .,
"41+ r$   r  c                       e Zd Zd Zd Zy)	TestWherec                     t        j                  ddg      }d}t        j                  t        |      5  |j                  d       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   2\.where is not supported for MultiIndex operationsrL   Tr
   r   rS   rT   r   where)r   rX   rd   s      r"   
test_wherezTestWhere.test_where  sK    ""Hh#78C]].c: 	GGDM	 	 	rR  c                     t        j                  ddg      }ddg}d}t        j                  t        |      5  |j                   ||             d d d        y # 1 sw Y   y xY w)Nr]  r^  FTr_  rL   r`  )r   listlike_boxr   condrd   s        r"   test_where_array_likezTestWhere.test_where_array_like  sZ    ##Xx$89t}C]].c: 	)HH\$'(	) 	) 	)s   AA#N)r}   r~   r   rb  rf  r   r$   r"   r[  r[    s    )r$   r[  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestContainsc                 f    t        j                  ddgddgg      }d|v sJ d|j                  vsJ y )Nr   r+   r   r   )r
   r   _engine)r   r   s     r"   test_contains_top_levelz$TestContains.test_contains_top_level"  s=    &&c
QF';<d{{$,,&&&r$   c                     t        dgt        dd      gg dg dgd dg      }dt        j                  d      f|v sJ |j                  D ]  }||v rJ  y )	Nr=  r   r   )r-   )r   r   r   r   r   r   )rk   r   r   r   rO   r   r+   rG  )r
   r   r   	TimestamprC   )r   r   vals      r"   test_contains_with_natz#TestContains.test_contains_with_nat'  sj    E:lA>?%':;+

 R\\,/0B66699 	C"99	r$   c                 (    d|v sJ d|vsJ d |vsJ y )Nr   r  r   r7  s     r"   test_containszTestContains.test_contains2  s*    $$$S(((3r$   c                     t        j                  dt        j                  dgg      }t        j                  |v sJ t        j                  ddgt        j                  dgg      }t        j                  |vsJ dt        j                  f|v sJ y )Nr   r   rO   )r
   rx   r9   r   r7  s     r"    test_contains_with_missing_valuez-TestContains.test_contains_with_missing_value7  sx    $$q"&&!n%56vv}}$$q!frvvqk%:;vvS   266{c!!!r$   c                 0   t        j                  ddgddgg      }d|v sJ |j                  d      }d|j                  d   v sJ d|vsJ t        j                  ddgdd	gg      }d|v sJ |j                  d      }d|j                  d   v sJ d|vsJ y )
Nr   r   rO   r   r   rQ   rn   rp   rq   )r
   r   r  r_   r7  s     r"    test_multiindex_contains_droppedz-TestContains.test_multiindex_contains_dropped@  s     %%1v1v&67Cxxhhqk CJJqM!!!|| %%SzC:&>?czzhhsmcjjm####~~r$   c                     t        j                  ddd      }t        j                  |t	        j
                  t        |            g      }|d   |v sJ d|vsJ d|v sJ y )Nz09:30:00z16:00:00z30 min)r.   r   element_not_exitz0 day 09:30:00)r   timedelta_ranger
   rx   r9   ra   r   )r   txr   s      r"   test_contains_td64_levelz%TestContains.test_contains_td64_levelT  sd    
JXF$$b"))CG*<%=>!u||!,,,3&&&r$   c                     |j                         5  |j                  t        dd       t        j                  t        d      t        d      g      }d|vsJ 	 d d d        y # 1 sw Y   y xY w)N_SIZE_CUTOFFrK   )rK   r   )contextsetattrlibindexr
   rx   rW   )r   monkeypatchr!   s      r"   test_large_mi_containsz#TestContains.test_large_mi_contains\  s`      " 	)."=++U2Yb	,BCF&(((	) 	) 	)s   AA""A+N)
r}   r~   r   rk  ro  rq  rs  ru  rz  r  r   r$   r"   rh  rh  !  s%    '
	
"(')r$   rh  c                     t        j                  t        dddd      dgdgg      } t        dt	        j
                  t        |             i|       }|j                  t        j                  d	d dd d f   df   }t        j                  t        d
ddd      dgdgg      }t        j                  t	        j
                  dt        |      dz         |d      }t        j                  ||       y )Nz2019-01-01T00:15:33d   r   date)r-   r.   rR   rJ  rO   r   z2019-1-2z2019-01-02T00:15:33z2019-01-05T03:15:33)rv   rw   r.   rR      )datar   rR   )r
   r   r   r   r9   ra   r   r  r   
IndexSlicer   rA   assert_series_equal)r   rD   r!   qidx	should_bes        r"   !test_timestamp_multiindex_indexerr  d  s    

!
!,c&QEC	
C 
E299SX./	5BVVBMM*+sA"56=>F""+)	 EC		
D 		ryySY^<DuUI69-r$   zindex_arr,expected,target,algorQ   rn   ro   r   r   rp   r   rs   rq   c                 b    t        j                  |       }|j                  ||      }||k(  sJ y )N)side)r
   rx   get_slice_bound)ry   rH   targetalgor   r!   s         r"   'test_get_slice_bound_with_missing_valuer    s7     
 
 
+C  d 3FXr$   rm   r   r   rO   )r   r   r   r   )rO   r   c                 b    t        j                  |       }|j                  ||      }||k(  sJ y ru   )r
   rx   slice_indexer)ry   rH   rz   r{   r   r!   s         r"   %test_slice_indexer_with_missing_valuer    s7     
 
 
+CYG<FXr$   c                     d} dgdz  | z  dgdz  | z  dgdz  | z  t         j                  g| z  dgdz  | z  z   dg| z  dgdz  | z  z   t         j                  g| z  dgdz  | z  z   dg| z  z   fD cg c]  }t        |       }}t        |      D ]  \  }}t	        j
                  |      }|j                  |      |k(  sJ t        j                  |dz   t         j                        }|j                  |D cg c]  }||   	 c}      }t        j                  ||        t        t        |            }	t        j                  d	gt        |	      z   t         j                        }t        ddgdz  | z        }
j                  |
g|	D cg c]  }||   	 c}z         }t        j                  ||       y c c}w c c}w c c}w )
Nr   r   rK   r   r   r   rj   r(   rk   )r9   r   r)  	enumerater
   r   r   ra   r   r   rA   r   rW   r   rb   r=   )Narrkeysr   	key_valuer   rH   rX   r!   idcesmissings              r"   test_pyint_enginer    s    	
A C"HqLC"HqLC"HqLVVHqLA37Q;&C!GqcAgk!VVHqLA37Q;&!q0

 	c

D 
" $D/ 6Y&&t,}}Y'3...99S1WBGG4""X#>DG#>?
##FH56 #d)ExxtE{*"'':HQFQJN#GyU+CDG+CCDF1=
, $? ,Ds   /F76F<
G
zkeys,expected)TFTr8   c                     t        j                  g dg dg      }|j                  |       }t        j                  |t        j
                        }t        j                  ||       y )N)r   r   r   )r   r   r8   r(   )r
   rx   get_locsr9   rb   r   rA   r   )r  rH   r   r!   s       r"   test_get_locs_reorderingr    sS     
 
 	
C \\$Fxx0H1r$   c                    t        j                  dgddggddg      }t        j                  dg| dggddg      }|j                  |      }t        j                  ddgt        j
                  	      }t        j                  ||       |j                  |      }t        j                  ddgt        j
                  	      }t        j                  ||       y )
Nr   r   r   r   r   r   rk   r   r(   )r
   r   r   r9   rb   r   rA   r   )r3  r   r   r!   rH   s        r"   )test_get_indexer_for_multiindex_with_nansr    s    ""SEC:#6uenMD""SEM3+?#@PUWDd#FxxQrww/H1d#FxxQrww/H1r$   )*datetimer   rT  numpyr9   rS   pandas._libsr   r  pandas.errorsr   r   pandasr   r   r   r	   r
   r   pandas._testing_testingrA   r   r   r   r   r  r   r   r	  r  r  r[  rh  r  r   r  r@   r  r  r  r  r   r$   r"   <module>r     s    	   *
   ~" ~"B40 40nII IIX
$"4 4&1*eTFQJ.?!@A
&.O(PQ/	 B
/ 4&%-!895'5%>!:;	/ < :	/ D) ) @) @)F.6 $663
o	.2666B663
o	.BFFC='J
C-	.C=&I *661a.)	$eAq$&7C661a.)	$eAq$&7H
a^	$eAq$&7!RVVaH
a^	$eAq$&7!RVVfM	#2L 
+1v	A'
+1v	A'
1v	&A/
1v	&A/
aVq!f
aVq!f#1vA#1vA	
2
22r$   