
    .i                     z   d dl mZ 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 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j8                  j;                  deeg      d        Zej8                  j;                  deeg      d        Z  G d d      Z! G d d      Z" G d d      Z#d Z$ej8                  j;                  dejJ                  ddgg dgd ejJ                  dfejJ                  ddgg dgdejJ                  dfd fg d!d"ejJ                  d"ggddejJ                  fdfg      d#        Z&ej8                  j;                  d$ejJ                  dd%gg d&g e'd d%d      ejJ                  dfejJ                  dd%gg d&g e'd d'd      ejJ                  d(fg d)d*ejJ                  d+gg e'dd'd      d%ejJ                  fd'fg d)d*ejJ                  d+gg e'dd'd      d%ejJ                  fd,fg      d-        Z(ej8                  j;                  d.g d/      d0        Z)ej8                  j;                  d1 e'd      d+d*gfdd gf e'd      d*d+gfd dgfg d2d*d3gfd d%gfg d2d3d*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      d4        Z*d5 Z+d6 Z,y)7    )
namedtuple)	timedeltaN)index)InvalidIndexError)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        f/var/www/app/trading-bot/venv/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                         }|j                  }t        |j                  |j                  d
   |j                  d          }||   }|d
d j                         }t        j                  |j                  |j                         t        |j                  |j                  d
   t!        d      z   |j                  d   t!        d      z
         }||   }|dd j                         }t        j                  |j                  |j                         y )Nr   )2   r   ABCDdtype
2000-01-01r&   Bperiodsfreqcolumnsr   r            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&   s&   II!!!$44W=$v,f5\2C@

 ((*mmcnnRXXa["((2,?@a8>>#
v}}hoo>^^i33y44
 a8>>#
v}}hoo>r$   c                    t        t        j                  j                  d      j	                  d      t        t        d      t              t        ddd      	      }|j                         }|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                         }|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   dx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*   rI   r+   r,   r/   z^Level type mismatchmatchr      r   r3   r4   r   r   )r   r   zi-a)name)r   r0   r   )r2   rO   )r   r7   r8   r9   r:   r	   r;   r<   r   r=   r   pytestraises	TypeErrorr   r   onesrange)r   rB   rC   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)"H.! H:
HH!.H7: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   rM   rM   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 depthrJ   )r   r   r   )r   r   r   r   )
r
   r	   r7   arangearrayrQ   rR   KeyErrorr   r   )r   r   msgsorted_indexr    s        r"   test_slice_locs_not_sortedz(TestSliceLocs.test_slice_locs_not_sortedW   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   r6   )r   r   r   )	r   r   r   r   r   r   rM   rM   rM   )	r   r   r   r   r   r   r   r   r   r\   r   r   rN   )rM   r6   r   r   r   r   r   )r6   rM   )rM      rI   r   )r
   r   r   )r   r   r!   s      r"   test_slice_locs_not_containedz+TestSliceLocs.test_slice_locs_not_containedi   s      ),.0KL

 !!&&1!!!Q'!!&&1!!!Q'!!&&1!!"b)!SZ(((r$   $index_arr,expected,start_idx,end_idxrO   bcde)r   rM   N)rl   rp   rO   rl   rn   ro   rp   rL   rn   )rn   rp   c                 b    t        j                  |      }|j                  ||      }||k(  sJ y N)startend)r
   from_arraysr   )r   	index_arrrF   	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#   rG   rW   rd   rj   rQ   markparametrizer7   nanrz    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 sizerJ   r   r   )rQ   rR   
ValueErrorputmaskr7   rT   r   bool_r   r   rb   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 )Nr6   )rO   r   )rO   r   r   )ro   r   )TTFr   r   r   )r
   from_tuplesr7   r   r`   r   r?   assert_index_equal)r   leftrightmaskr!   rF   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   rM   r(   rI         r   r6      )ri   TFFr   r   rM   ri   r   r   r
   rv   pdSeriesr   r?   r   r   any_numeric_ea_dtypemidxmidx2r!   rF   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   ri   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   rM   rM   r(   )r   r   r   r   r   r   r   r\   r   )r   rM   r   )r   rM   ri   padmethod)ri   r   r   r   r   ri   ffillbackfill)r   r   r   r   r   bfillr   ri   ri   ri   rI      z8Reindexing only valid with uniquely valued Index objectsrJ   )r	   r7   r_   r`   intpr
   get_indexerr?   r@   rA   allr;   rU   rQ   rR   r   )r   
major_axis
minor_axismajor_codesminor_codesr   idx1idx2r1e1r2rffill1rbfill1rexp1rb   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   rl   r   zJmethod='nearest' not implemented yet for MultiIndex; see GitHub issue 9365rJ   rO   nearestr   z,tolerance not implemented yet for MultiIndexr   r   )r   	tolerance)r
   r   rQ   rR   NotImplementedErrorr   )r   r   rb   s      r"   test_get_indexer_nearestz'TestGetIndexer.test_get_indexer_nearest  s    %%x&:;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 )Nrq   
2012-01-01rM   hr,   	   r(   )
r
   from_productr   r   r   r?   assert_numpy_array_equalr7   r_   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   rM   r   r   r   r(   r   r   r   r   c                 |    t        j                  |      }|j                  |      }t        j                  ||       y )N)r
   rv   r   r?   r   )r   rw   labelsrF   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)ri   r   r   )r   r   rM   r   r   )r   rM   r   )ri   r6   r   r(   r   r   r   r   r   )r   r6   r   r   )r
   r   r   r7   r`   r)   r?   r@   r   
mult_idx_1
mult_idx_2indexerrF   backfill_indexerpad_indexers          r"   test_get_indexer_methodsz'TestGetIndexer.test_get_indexer_methods0  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 decreasingrJ   r   r   r   )r
   rv   r   r   rQ   rR   r   )r   r   mierrrb   s        r"   0test_get_indexer_methods_raise_for_non_monotonicz?TestGetIndexer.test_get_indexer_methods_raise_for_non_monotonicd  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   rM   )r   r   r6   r   r   ))r   r   rh   )r   r   r   )r   r6   r   )r   r   r6   )r   r   r   )r   r   rh   )rM   r6   rh   r   r   r   r6   ri   )ri   ri   r   ri   ri   ri   ri   r(   r   r   )r   r   r   r6   r6   r6   ri   r   )ri   rM   r   r   r   r   r   rh   r   rI   r   )ri   ri   ri   ri   ri   r   ri   ri   ri   ri   ri   ri   r   )r   r   r   r   r   r   r6   r6   r6   r6   r6   r6   )r   r   r   r   r   r   r   r   r   r   r   r   )r
   r   r   is_monotonic_increasing	is_uniquer   r7   r`   r)   r?   r@   )
r   r   r   indexer_no_fillrF   indexer_backfilledindexer_paddedr   r   r   s
             r"   %test_get_indexer_three_or_more_levelsz4TestGetIndexer.test_get_indexer_three_or_more_levelsq  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   rM   r   r   )r   rM   r   r   r   r   rh   ri   r(   r   r   r   r1   )	r
   r   r   r   r7   r`   r)   r?   r@   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)NrM   Ar+   z;limit argument only valid if doing pad, backfill or nearestrJ   ri   r   )limitz?tolerance argument only valid if doing pad, backfill or nearestpiano)r   )r
   r   rU   rQ   rR   r   r   )r   r   rb   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namesri   r   F)check_dtype)r
   r   r7   r   r`   r   r?   r   )r   r   r   rF   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   rQ   r~   r   r7   r   r`   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   rM   r   )TFTFTT)r   r   r   r   )equalsr7   r`   )r   r!   rF   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   rM   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$   boxc                      | dgdz        }t        j                  g d      }t        j                  ||   |        | g d      }t        j                  ddg      }t        j                  ||   |       y )NTr   )rI   r   )r   r   r3   rM   )(   r   )r&   r   )TFTFFr  r  )r
   r   r?   r   r   ind1r   ind2rF   s        r"   test_getitem_bool_index_allr  0  sl     vz?D

 
 !N
OC#d)S)01D%%w&89H#d)X.r$   c                 f    | dg      }t        j                  dg      }t        j                  ||   |        | dg      }t        t	        j
                  g t        j                        t	        j
                  g t        j                        gg g g      }t        j                  ||   |       y )NTr  Fr(   r\   )r
   r   r?   r   r7   r`   int64r  s        r"   test_getitem_bool_index_singler  <  s     v;D

 
 '
+C#d)S)w<D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   rM   z^\('bar', 'two'\)$rJ   r   r   z^'quux'$quuxr   rY   rZ   r[   r\   z
^\(1, 1\)$r   )r   r   r   )
r   rQ   rR   ra   r
   r	   r7   r_   r`   r>   )r   r   r   s      r"   test_get_loczTestGetLoc.test_get_locL  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   )rn   rO   rO   rl   rl   rn   2rJ   )r	   r   r>   rQ   rR   ra   )r   r   r!   rF   rsxps         r"   test_get_loc_duplicatesz"TestGetLoc.test_get_loc_duplicatesa  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   rY   rZ   r[   r\   r   r   r   r   r   )r   r   r   z
^\(2, 2\)$rJ   rg   z^2$)leveli  )r   r   r   r   )r   r   r   rM   )r
   r	   r7   r_   r`   get_loc_levelr>   	droplevelr   rQ   rR   ra   dropr;   rU   )r   r   loc	new_indexrF   	exp_indexr!   s          r"   test_get_loc_levelzTestGetLoc.test_get_loc_levelo  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   )r7   r`   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 )	NrO   rl   rn   ro   r   r   r(   rM   )r7   r`   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\)$rJ   r  r   z
^\(1, 0\)$rf   z^\(False, True\)$)FTz^\(True, False\)$)TF)
r	   r7   r_   r
   r   boolrQ   rR   ra   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 )NrO   rl   rn   ro   r   r(   rM   )r7   r`   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$rJ   rM   z^nan$z\[nan\])r
   rv   
isinstancer   r>   rQ   rR   ra   r7   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   )TFFTrM   r   )
r
   r   r7   r   r>   r   rv   r`   r?   r   )r   r   rF   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   rM   r   r6   r   r   r   rM   r   r   tagdayr]   r^   r   r;  r   rM   )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                  |      5  |j                  |      }d d d        t	        ddd       k(  sJ y # 1 sw Y   xY w)NrO   r   r   r   )xyz)r]   r^   r   	sortorder)rO   r   )r
   r?   assert_produces_warningr   r>   )r   performance_warningr   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&&A/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\[\]rJ   )r
   r   rQ   rR   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)NrM   r   r   r6   )r   r   rJ   )
r
   r   rU   rQ   rR   ra   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   rQ   r~   r   intfloatr.  rV  r%  r,  r<   r/  r3  r7  r9  rG  rO  rQ  rW  r   r$   r"   r  r  K  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 operationsrJ   Tr
   r   rQ   rR   r   where)r   rV   rb   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_  rJ   r`  )r   listlike_boxr   condrb   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   )ri   r   r   r   rM   r   r+   rF  )r
   r   r   	TimestamprA   )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   r6  s     r"   test_containszTestContains.test_contains.  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   rM   )r
   rv   r7   r   r6  s     r"    test_contains_with_missing_valuez-TestContains.test_contains_with_missing_value3  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   rM   r   r   rO   rl   rn   ro   )r
   r   r  r]   r6  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
   rv   r7   r_   r   )r   txr   s      r"   test_contains_td64_levelz%TestContains.test_contains_td64_levelP  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_CUTOFFrI   )rI   r   )contextsetattrlibindexr
   rv   rU   )r   monkeypatchr!   s      r"   test_large_mi_containsz#TestContains.test_large_mi_containsX  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.   rP   rI  rM   r   z2019-1-2z2019-01-02T00:15:33z2019-01-05T03:15:33)rt   ru   r.   rP      )datar   rP   )r
   r   r   r   r7   r_   r   r  r   
IndexSlicer   r?   assert_series_equal)r   rB   r!   qidx	should_bes        r"   !test_timestamp_multiindex_indexerr  `  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,algorO   rl   rm   r   r   rn   r   rq   ro   c                 b    t        j                  |       }|j                  ||      }||k(  sJ y )N)side)r
   rv   get_slice_bound)rw   rF   targetalgor   r!   s         r"   'test_get_slice_bound_with_missing_valuer  {  s7     
 
 
+C  d 3FXr$   rk   r   r   rM   )r   r   r   r   r   )rM   r   c                 b    t        j                  |       }|j                  ||      }||k(  sJ y rs   )r
   rv   slice_indexer)rw   rF   rx   ry   r   r!   s         r"   %test_slice_indexer_with_missing_valuer    s7     
 
 
+CYG<FXr$   zN, expected_dtype))r   uint8)r   uint16)r   uint32)rh   uint64)rI   r<   c                    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        j                  |      }|j
                  j                  j                  |k(  sJ t        |      D ]{  \  }}|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%        |
      t         j                        }t        g d| z        }|j                  |g|
D cg c]  }||   	 c}z         }	t        j                  |	|       y c c}w c c}w c c}w )	Nr   r   r   rM   r   r(   ri   )r   r   r   r   )r7   r   r(  r
   r   rj  rA   r)   	enumerater   r_   r   r   r?   r   rU   r   r`   r;   )Nexpected_dtypearrkeysr   r   	key_valuerF   rV   r!   idcesmissings               r"   test_pyint_enginer    s   " C!GaKC!GaKVVHqLA37Q;&C!GqcAgk!VVHqLA37Q;&!q0
	 	c
	D 	" ""4(E==%%777#D/ 6Y}}Y'3...99S1WBGG4""X#>DG#>?
##FH56 #d)Exx*d5k*"'':HL1$%GyU+CDG+CCDF1A	0 $? ,Ds   %GG
"G
zkeys,expected)TFTr6   c                     t        j                  g dg dg      }|j                  |       }t        j                  |t        j
                        }t        j                  ||       y )N)r   r   r   )r   r   r6   r(   )r
   rv   get_locsr7   r`   r   r?   r   )r  rF   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   ri   r   r(   )r
   r   r   r7   r`   r   r?   r   )r2  r   r   r!   rF   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$   c                  d   t        dd      } t        j                   | dd       | dd       | dd      g      }||j                         fD ]  }|j	                   | dd            d	k(  sJ |j	                   | dd            d
k(  sJ |j	                   | dd            dk(  sJ |j	                  d      d	k(  sJ |j	                  d      d
k(  sJ |j	                  d      dk(  rJ  t        j                  g d      }||j                         fD ]  }|j	                   | dd            d	k(  sJ |j	                   | dd            d
k(  sJ |j	                   | dd            dk(  sJ |j	                  d      d	k(  sJ |j	                  d      d
k(  sJ |j	                  d      dk(  rJ  y )N
NamedIndex)rO   rl   i1i2i3i4i5i6r   r   r   r  r  r  r  r  r  )r  r  r  )r   r
   r   to_flat_indexr   )r  	multi_idxr   s      r"   *test_get_loc_namedtuple_behaves_like_tupler    s   L*5J&&	D$	D$!7D$9OPI 92245 .{{:dD12a777{{:dD12a777{{:dD12a777{{<(A---{{<(A---{{<(A---. &&'QRI92245 .{{:dD12a777{{:dD12a777{{:dD12a777{{<(A---{{<(A---{{<(A---.r$   )-collectionsr   datetimer   rT  numpyr7   rQ   pandas._libsr   r  pandas.errorsr   pandasr   r   r   r	   r
   r   pandas._testing_testingr?   r   r   r   r   r   r~   r   r;   r  r  r  r[  rh  r  r   r  r>   r  r  r  r  r  r   r$   r"   <module>r     sO   "  	   * +   ~" ~"B40 40nHI HIV
$"4 u./ // u./ // 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	 	$2	$2N 
+1v	A'
+1v	A'
1v	&A/
1v	&A/
aVq!f
aVq!f#1vA#1vA	
2
22.r$   