
    Pi                     P   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j                            deeg          d             Zej                            deeg          d             Z  G d d          Z! G d d          Z" G d d          Z#d Z$e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d fg d!d"ej%        d"ggddej%        fdfg          d#             Z&ej                            d$ej%        dd%gg d&g e'd d%d          ej%        dfej%        dd%gg d&g e'd d'd          ej%        d(fg d)d*ej%        d+gg e'dd'd          d%ej%        fd'fg d)d*ej%        d+gg e'dd'd          d%ej%        fd,fg          d-             Z(ej                            d.g d/          d0             Z)e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,dS )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	        
                    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dS )TestSliceLocsc                 D   |                     d          \  }}|                    dd          }|dk    sJ |                    d d          }|dk    sJ |                    dd           }|dt          |          fk    sJ |                    dd          }|d	k    sJ d S )
Nr   footwo)quxone)      )r   r   r   barbaz)      )	sortlevel
slice_locslen)selfidx
sorted_idx_results        |/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/indexes/multi/test_indexing.pytest_slice_locs_partialz%TestSliceLocs.test_slice_locs_partial   s    a((
A&&~~FF&&t^<<&&~t<<!S__-----&&ue44    c           	      >   t          t          j                            d                              d          t          t          d          t                    t          ddd          	          }|	                                }|j
        }t          |                    |j
        d
         |j
        d                    }||         }|d
d         	                                }t          j        |j        |j                   t          |                    |j
        d
         t!          d          z   |j
        d         t!          d          z
             }||         }|dd         	                                }t          j        |j        |j                   d S )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\   I!!!$$44W==$v,,f555\2C@@@
 
 

 ((**mcnnRXa["(2,??@ad8>>##
v}ho>>>^^i3333y4444 
 ad8>>##
v}ho>>>>>r$   c           
         t          t          j                            d                              d          t          t          d          t                    t          ddd          	          }|	                                }|j
        }t          j        t          d
          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d
          5  |                    |j
        d         t          d          z   d           d d d            n# 1 swxY w Y   t          t          j        d          t          d t#          d          D             d          t          d t#          d          D             d                    }|	                                }|j
        }t          j        t          d
          5  |                    t          d                     d d d            n# 1 swxY w Y   t          j        t          d
          5  |                    |j
        d         d           d d d            d S # 1 swxY w Y   d S )Nr   )
   r   r'   r(   r*   rI   r+   r,   r/   z^Level type mismatchmatchr      r   r3   r4   r   r   )r   r   c                     g | ]}d | S zi- .0is     r"   
<listcomp>zDTestSliceLocs.test_slice_locs_with_type_mismatch.<locals>.<listcomp>L   s    444aa444r$   a)namec                     g | ]}d | S rP   rQ   rR   s     r"   rU   zDTestSliceLocs.test_slice_locs_with_type_mismatch.<locals>.<listcomp>M   s    666888666r$   )r   r0   r   )r2   rV   )r   r7   r8   r9   r:   r	   r;   r<   r   r=   r   pytestraises	TypeErrorr   r   onesrange)r   rB   rC   r   s       r"   "test_slice_locs_with_type_mismatchz0TestSliceLocs.test_slice_locs_with_type_mismatch>   s5   I!!!$$44W==$v,,f555\2C@@@
 
 

 ((**m]9,BCCC 	# 	#NN6"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#]9,BCCC 	H 	HNN28A;2)>)>)>>GGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	HGFOO445884443???66U1XX666SAAA
 
 

 ((**m]9,BCCC 	2 	2NN9R000111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 ]9,BCCC 	3 	3NN28A;	222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3sH   *CCC23D11D58D5"$HHH8"I''I+.I+c           	      X   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  |                    dd	           d d d            n# 1 swxY w Y   |	                    d
          \  }}|                    dd	           d S )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arrayrY   rZ   KeyErrorr   r   )r   r   msgsorted_indexr    s        r"   test_slice_locs_not_sortedz(TestSliceLocs.test_slice_locs_not_sortedW   sL   ")A,,''ry||)<)<eBIaLL>Q>QR111221112211122
 
 
 E]83/// 	3 	3Y	222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3  //!,,a	955555s   C11C58C5c                    t          g dg dgg dg dg          }|                    dd          }|dk    sJ |                    d	d
          }|dk    sJ |                    dd          }|dk    sJ |                    dd
          }|dk    sJ |                    dd          }|dk    sJ |                    dd          }|dt          |          fk    sJ d S )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   rc   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   s3     LL))),...0K0K0KL
 
 

 !!&&11!!!Q''!!&&11!!!Q''!!&&11!!"b))!SZZ((((((r$   $index_arr,expected,start_idx,end_idxrV   bcde)r   rM   N)rs   rw   rV   rs   ru   rv   rw   rL   ru   )ru   rw   c                 l    t          j        |          }|                    ||          }||k    sJ d S 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   s@     $Y//iW==!!!!!!r$   )__name__
__module____qualname__r#   rG   r^   rk   rq   rY   markparametrizer7   nanr   rQ   r$   r"   r   r      sc            ? ? ?03 3 326 6 6$) ) )4 [.vsC ///2FBFDIvsC ///2FBFCHvsC ///2FBFJOooRVS12FS"&M4PooRVS12FS"&M3OooRVS12FS"&M:V	

 
" "
 
" " "r$   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestPutmaskc                 v   d}t          j        t          |          5  |                    t	          j        t          |          dz   t          j                  d           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    t	          j        t          |          dz
  t          j                  d           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nz,putmask: mask and data must be the same sizerJ   r   r   )rY   rZ   
ValueErrorputmaskr7   r\   r   bool_r   r   ri   s      r"   test_putmask_with_wrong_maskz(TestPutmask.test_putmask_with_wrong_mask   s    =]:S111 	< 	<KKC1bh77;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ]:S111 	< 	<KKC1bh77;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ]:S111 	" 	"KKq!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s7   AA..A25A2AC$$C(+C(
D..D25D2c                 d   t          j        t          j        dft          j        dfdg          }t          j        g d          }t          j        g d          }|                    ||          }t          j        |d         |d         |d         g          }t          j        ||           d S )Nr6   )rV   r   )rV   r   r   )rv   r   )TTFr   r   r   )r
   from_tuplesr7   r   rg   r   r?   assert_index_equal)r   leftrightmaskr!   rF   s         r"   test_putmask_multiindex_otherz)TestPutmask.test_putmask_multiindex_other   s     %{RVQK&JKK&'E'E'EFFx+++,,dE**)58U1XtAw*GHH
fh/////r$   c                 t   t          j        t          j        g d|          g dg          }t          j        t          j        g d|          g dg          }|                    g d|          }t          j        t          j        g d|          g dg          }t          j        ||           d S )	Nr   r   rM   r(   rI         r   r6      )rp   TFFr   r   rM   rp   r   r   r
   r}   pdSeriesr   r?   r   r   any_numeric_ea_dtypemidxmidx2r!   rF   s         r"   test_putmask_keep_dtypez#TestPutmask.test_putmask_keep_dtype   s    %Yyyy(<===|||L
 
 &Yyyy(<===|||L
 
 222E::)Yyyy(<===|||L
 
 	fh/////r$   c                 p   t          j        t          j        g d|          g dg          }t          j        t          j        dg|          dgg          }|                    g d|          }t          j        t          j        g d|          g dg          }t          j        ||           d S )	Nr   r(   r   r   rp   r   r   r   r   r   s         r"   %test_putmask_keep_dtype_shorter_valuez1TestPutmask.test_putmask_keep_dtype_shorter_value   s    %Yyyy(<===|||L
 
 &Ys"6777">
 
 222E::)Yyyy(<===|||L
 
 	fh/////r$   N)r   r   r   r   r   r   r   rQ   r$   r"   r   r      sP        " " "
0 
0 
00 0 00 0 0 0 0r$   r   c                   F   e Zd Zd Zd Zd Ze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                            dg d          d             Zd Zd Zd Zd ZdS )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         }|                    |          }t          j        |t          j        g d	t          j                             |                    |d
          }t          j        g dt          j                  }	t          j        ||	           |                    |d d d         d
          }
t          j        |
|	d d d                    |                    |d          }t          j        ||           |                    |d          }t          j        g dt          j                  }	t          j        ||	           |                    |d d d         d          }
t          j        |
|	d d d                    |                    |d          }t          j        ||           |                    |j	                  }|                    |          }t          j        ||           |                    g d          }|g dk    
                                sJ t          t          t          d                    t          t          d                    z             }t          t          t          d                              }d}t          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   r   )r   r   r   r   r   rM   rM   r(   )r   r   r   r   r   r   r   rc   r   )r   rM   r   )r   rM   rp   padmethod)rp   r   r   r   r   rp   ffillbackfill)r   r   r   r   r   bfillr   rp   rp   rp   rI      z8Reindexing only valid with uniquely valued Index objectsrJ   )r	   r7   rf   rg   intpr
   get_indexerr?   r@   rA   allr;   r]   rY   rZ   r   )r   
major_axis
minor_axismajor_codesminor_codesr   idx1idx2r1e1r2rffill1rbfill1rexp1ri   s                  r"   test_get_indexerzTestGetIndexer.test_get_indexer   s   29Q<<((
29Q<<((
h444BGDDDh444BGDDD
+K3M
 
 
 RaRyYYYd##
r28JJJbg#F#F#FGGGd511X&&&bg666
r2&&&d44R4j77
r2ddd8,,,""4"88
r7+++d:66XoooRW555
r2&&&d44R4j<<
r2ddd8,,,""4"88
r7+++ dk**  &&
r5)))iii((lll"''))))) T%))__tE"II677T%))__%%H],C888 	# 	#T"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   -NNNc                 j   t          j        ddg          }d}t          j        t          |          5  |                    dgd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                    dgd	d
           d d d            d S # 1 swxY w Y   d S )Nr   rs   r   zJmethod='nearest' not implemented yet for MultiIndex; see GitHub issue 9365rJ   rV   nearestr   z,tolerance not implemented yet for MultiIndexr   r   )r   	tolerance)r
   r   rY   rZ   NotImplementedErrorr   )r   r   ri   s      r"   test_get_indexer_nearestz'TestGetIndexer.test_get_indexer_nearest  sC   %x&:;;X 	 ].c::: 	6 	6cU9555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6<].c::: 	? 	?cU5A>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s#   AA AB((B,/B,c           
         t          j        t          g d          t          t          ddd                    g          }|                    |          }t          j        |t          j        dt          j	                             d S )Nrx   
2012-01-01rM   hr,   	   r(   )
r
   from_productr   r   r   r?   assert_numpy_array_equalr7   rf   r   )r   r   r!   s      r"   !test_get_indexer_categorical_timez0TestGetIndexer.test_get_indexer_categorical_time  s    &OOO,,J|QSIIIJJ
 
 !!$''
#FBIarw,G,G,GHHHHHr$   zindex_arr,labels,expectedr   r   rM   r   r   r   r(   r   r   r   r   c                     t          j        |          }|                    |          }t          j        ||           d S )N)r
   r}   r   r?   r   )r   r~   labelsrF   r   r!   s         r"   #test_get_indexer_with_missing_valuez2TestGetIndexer.test_get_indexer_with_missing_value  s>    & $Y//((
#FH55555r$   c                 B   t          j        g dg dg          }t          j        dgg dg          }|                    |          }t          j        g d|j                  }t          j        ||           |                    |d          }t          j        g d	|j                  }t          j        ||           |                    |d
          }t          j        g d	|j                  }t          j        ||           |                    |d          }t          j        g d|j                  }t          j        ||           |                    |d          }t          j        g d|j                  }t          j        ||           d S )N)rp   r   r   )r   r   rM   r   r   )r   rM   r   )rp   r6   r   r(   r   r   r   r   r   )r   r6   r   r   )r
   r   r   r7   rg   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  s   6  ,jjj,,,-GHH
,qc999-=>>
((448JJJgm<<<
x111%11*Z1PP8III-=-CDDD
x)9::: &11*W1MM8III-=-CDDD
x)9::: ,,Z,FF8III[->???
x555 !,,Z,HH8III[->???
x5555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  |                    dg|           d d d            d S # 1 swxY w Y   d S )N)r   r   r   r   z"not implemented yet for MultiIndexz0index must be monotonic increasing or decreasingrJ   r   r   r   )r
   r}   r   r   rY   rZ   r   )r   r   mierrri   s        r"   0test_get_indexer_methods_raise_for_non_monotonicz?TestGetIndexer.test_get_indexer_methods_raise_for_non_monotonicd  s     #YYY			$:;;Y%C6CCCDC]3c*** 	4 	4NNF8FN333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   
A00A47A4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n J |d         |d	         k    sJ |d         |d         cxk     r|d
         k     sn J |d         |d         cxk     r|d
         k     sn J |d         |d         cxk     r|d
         k     sn J |d         |d
         k     sJ |                    |          }t          j        g d|j                  }t          j
        ||           |                    |d          }t          j        g d|j                  }t          j
        ||           |                    |d          }t          j        g d|j                  }t          j
        ||           |d         |d         cxk     r|d         k     sn J |d         |d         cxk     r|d         k     sn J |d         |d	         cxk     r|d         k     sn J |d         |d         cxk     r|d         k     sn J |d         |d         cxk     r|d	         k     sn J |d	         |d         k    sJ |d         |d
         cxk     r|d
         k     sn J |d         |d         cxk     r|d
         k     sn J |d         |d         cxk     r|d
         k     sn J |d         |d         cxk     r|d
         k     sn J |d         |d         cxk     r|d
         k     sn J |d         |d         cxk     r|d
         k     sn J |                    |          }t          j        g d|j                  }t          j
        ||           |                    |d          }t          j        g d|j                  }t          j
        ||           |                    |d          }	t          j        g d|	j                  }t          j
        ||	           d S )Nr   rM   )r   r   r6   r   r   ))r   r   ro   )r   r   r   )r   r6   r   )r   r   r6   )r   r   r   )r   r   ro   )rM   r6   ro   r   r   r   r6   rp   )rp   rp   r   rp   rp   rp   rp   r(   r   r   )r   r   r   r6   r6   r6   rp   r   )rp   rM   r   r   r   r   r   ro   r   rI   r   )rp   rp   rp   rp   rp   r   rp   rp   rp   rp   rp   rp   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   rg   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  s   4  ,q!fiii!Q-HII
+  

 


 1111####1111#### !}z!},,,,!}z!}<<<<z!}<<<<<<!}
1----!}z!}<<<<z!}<<<<<<!}z!}<<<<z!}<<<<<<!}z!}<<<<z!}<<<<<<"~
1----$00<<8777?TUUU
x999 (33Jz3RR8222:L:RSSS
x);<<< $//
5/II8333>;OPPP
x88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48;;;7=
 
 
 	x111%11*W1MM80008H8N
 
 
 	x)9::: ,,Z,FF80008I
 
 
 	x55555r$   c                    t          j        ddggdz            }t          j        ddg          }|d         |d         cxk     r|d         k     sn J |d	         |d         k     sJ |                    |          }t	          j        d	d	g|j        
          }t          j        ||           |                    |d          }t	          j        dd	g|j        
          }t          j        ||           |                    |d          }t	          j        ddg|j        
          }t          j        ||           d S )Nr   r   r   )r   rM   r   r   )r   rM   r   r   r   r   ro   rp   r(   r   r   r   r1   )	r
   r   r   r   r7   rg   r)   r?   r@   r   s          r"    test_get_indexer_crossing_levelsz/TestGetIndexer.test_get_indexer_crossing_levels  sT   6  ,q!fX\::
+\<,HII
 !}z!}<<<<z!}<<<<<<"~
1----((448RHGM:::
x111%11*W1MM8QG+;+ABBB
x)9::: ,,Z,HH8QG;+<===
x55555r$   c                    t          j        t          d          ddgg          }d}t          j        t
          |          5  |                    |d d         d           d d d            n# 1 swxY w Y   d	}t          j        t
          |          5  |                    |d d         d
           d d d            d S # 1 swxY w Y   d S )NrM   Ar+   z;limit argument only valid if doing pad, backfill or nearestrJ   rp   r   )limitz?tolerance argument only valid if doing pad, backfill or nearestpiano)r   )r
   r   r]   rY   rZ   r   r   )r   r   ri   s      r"   !test_get_indexer_kwarg_validationz0TestGetIndexer.test_get_indexer_kwarg_validation  sM   $eAhhc
%;<<K]:S111 	- 	-NN2crc7!N,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- P]:S111 	7 	7NN2crc7gN666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s$    A//A36A3 CCC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          }|                    |          }t          j        ||d	
           |                    |          }t          j        ||d	
           d S )Nr         ?       @id1id2namesrp   r   F)check_dtype)r
   r   r7   r   rg   r   r?   r   )r   r   r   rF   r!   s        r"   test_get_indexer_nanz#TestGetIndexer.test_get_indexer_nan  s    &Sz':5%.QQQ&}'=eU^TTT8RG$$!!$''
#FH%HHHH!!$''
#FH%HHHHHHr$   N)r   r   r   r   r   r   rY   r   r   r7   r   rg   r   r   r   r   r   r   r   r   rQ   r$   r"   r   r      s       2# 2# 2#h	? 	? 	?	I 	I 	I [# RVQ+BFARW555
 "&!niii(BFA;-1#RW9U9U9UVii"&!Q(Arv;-1#RW9U9U9UVRVQN+ARW555	
 "6 6# "626 26 26h [X'W'W'WXX
4 
4 YX
4a6 a6 a6F,6 ,6 ,6\
7 
7 
7I I I I Ir$   r   c                 4   | d         dk    sJ | dd         }| g d         }|                     |          sJ | g d         }| t          j        g d                   }| g d         }|                     |          sJ |                     |          sJ d S )Nr   )r   r   r   r   rM   r   )TFTFTT)r   r   r   r   )equalsr7   rg   )r   r!   rF   result2s       r"   test_getitemr    s    q6^#### 1XF999~H==""""" 7778F"(AAABBCG<<< H==""""">>(#######r$   c                     |                      d          \  }}|                    d          t          dd          k    sJ |                    d          t          dd          k    sJ d S )Nr   r   rM   r   r   r   )r   get_locr>   )r   r   r    s      r"   test_getitem_group_selectr  *  sk    MM!$$MJe$$a3333e$$a333333r$   boxc                     | dgdz            }t          j        g d          }t          j        ||         |            | g d          }t          j        ddg          }t          j        ||         |           d S )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  s     3vz??D

 !N!N!N
O
OC#d)S)))300011D%w&899H#d)X.....r$   c                 n    | 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        ||         |           d S )NTr  Fr(   rc   )r
   r   r?   r   r7   rg   int64r  s        r"   test_getitem_bool_index_singler  <  s     3v;;D

 '
+
+C#d)S)))3w<<D28,,,bhr.J.J.JK2h  H #d)X.....r$   c                      e Zd Zd Zd Zd Zej                            de	e
eeg          ej                            de	e
eeg          d                         Zej                            ddd	g          ej                            d
e	e
ge
e	gg          d                         Zej                            deeg          d             Zej                            ddd	g          d             Zd Zd Zd Zd Zd Zd ZdS )
TestGetLocc           	         |                     d          dk    sJ |                     d          dk    sJ t          j        t          d          5  |                     d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     d	           d d d            n# 1 swxY w Y   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  |                     d           d d d            n# 1 swxY w Y   |                     d          t          dd          k    sJ d S )Nr   r   )r   r   rM   z^\('bar', 'two'\)$rJ   r   r   z^'quux'$quuxr   r`   ra   rb   rc   z
^\(1, 1\)$r   )r   r   r   )
r  rY   rZ   rh   r
   r	   r7   rf   rg   r>   )r   r   r   s      r"   test_get_loczTestGetLoc.test_get_locL  so   {{>**a////{{>**a////]8+@AAA 	( 	(KK'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(]8;777 	  	 KK	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  ")A,,''ry||)<)<eBIaLL>Q>QR111221112211122
 
 
 ]8=999 	" 	"MM&!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"}}V$$a333333s6   A44A8;A8B<<C C F44F8;F8c                 t   t          g d          }|                    d          }t          dd          }||k    sJ t          g d          }|                    d          }d}||k    sJ t          j        t
          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )	N)r   r   r   r   r   r   r   )ru   rV   rV   rs   rs   ru   2rJ   )r	   r  r>   rY   rZ   rh   )r   r   r!   rF   rsxps         r"   test_get_loc_duplicatesz"TestGetLoc.test_get_loc_duplicatesa  s   lll##q!!A;;!!!!///00]]3Rxxxx]83/// 	 	MM!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   
B--B14B1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          dd          }||                             d	                              d	          }||k    sJ |                    |          sJ |                    d
          \  }}d}||k    sJ |J t          j
        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j
        t          d          5  |                    d                              d           d d d            n# 1 swxY w Y   t          j
        t          d          5  |                    dd                              dd           d d d            n# 1 swxY w Y   t          dgt          t          d                    gt          j        g d          t          j        g d          g          }|                    dt          d d           f          \  }}t          d d           }||k    sJ |                    |                    d	                    sJ d S )Nr   r`   ra   rb   rc   r   r   r   r   r   )r   r   r   z
^\(2, 2\)$rJ   rn   z^2$)leveli  )r   r   r   r   )r   r   r   rM   )r
   r	   r7   rf   rg   get_loc_levelr>   	droplevelr   rY   rZ   rh   dropr;   r]   )r   r   loc	new_indexrF   	exp_indexr!   s          r"   test_get_loc_levelzTestGetLoc.test_get_loc_levelo  s   ")A,,''ry||)<)<eBIaLL>Q>QR111221112211122
 
 
 ,,V44YA;;(O--a00::1==	h	*****,,Y77Yh   ]8=999 	( 	('''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( ]86222 	+ 	+JJqMM''***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ ]86222 	= 	=JJqJ""00!0<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= FDqNN+8LLL))28LLL+A+AB
 
 
 "//uT47H7H0IJJ	t$$!!!! 2 23333333s6   'F		FF/)G$$G(+G(
-II
Idtype1dtype2c                    t          j        ddg                              |          t          j        ddg                              |          g}t          j        |          }|                    |d                   dk    sJ d S )Nr   r   r   )r7   rg   astyper
   r   r  )r   r'  r(  rd   r   s        r"   test_get_loc_multiple_dtypesz'TestGetLoc.test_get_loc_multiple_dtypes  s}     (Aq6""))&1128QF3C3C3J3J63R3R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        |          }|                    t          |                    dk    sJ d S )	NrV   rs   ru   rv   r   r   r(   rM   )r7   rg   r
   r   r  tuple)r   r  r,  rd   key	lev_dtype	key_dtyper   s           r"   test_get_loc_implicit_castz%TestGetLoc.test_get_loc_implicit_cast  s     *sCj)Cj%	9!Qy999uYq\\E
%f--{{5::&&!++++++r$   r)   c                 ^   t          ddg|          t          j        dd          g}t          j        |          }|t
          u rt          j        t          d          5  |	                    d          d	k    sJ 	 d d d            n# 1 swxY w Y   t          j        t          d
          5  |	                    d          dk    sJ 	 d d d            n# 1 swxY w Y   n6|	                    d          d	k    sJ |	                    d          dk    sJ t          j        t          d          5  |	                    d           d d d            n# 1 swxY w Y   t          j        t          d          5  |	                    d           d d d            d S # 1 swxY w Y   d S )NFTr(   r   r  z
^\(0, 1\)$rJ   r  r   z
^\(1, 0\)$rm   z^\(False, True\)$)FTz^\(True, False\)$)TF)
r	   r7   rf   r
   r   boolrY   rZ   rh   r  )r   r)   rd   r   s       r"   test_get_loc_cast_boolz!TestGetLoc.test_get_loc_cast_bool  s    U333RYq5P5P5PQ%f--D==x}=== 0 0{{6**a/////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x}=== 0 0{{6**a/////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;;v&&!++++;;v&&!++++]8+?@@@ 	' 	'KK&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	']8+?@@@ 	' 	'KK&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'sH   "BBB1CC!C7EE E?F""F&)F&c                     ddgddgg}ddg}t          j        d|gt          |                    ||<   |||<   t          j        |          }|                    t          |                    dk    sJ d S )NrV   rs   ru   rv   r   r(   rM   )r7   rg   typer
   r   r  r.  )r   r  nulls_fixturerd   r/  r   s         r"   test_get_loc_nanzTestGetLoc.test_get_loc_nan  s     *sCj)Cj!]!34;N;NOOOu"E
%f--{{5::&&!++++++r$   c                 j   t          j        ddgddgg          }t          |                    d          t                    sJ t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d	          5  |                    t          j	                   d d d            n# 1 swxY w Y   t          j        t          d
          5  |                    t          j	        g           d d d            d S # 1 swxY w Y   d S )Nr   r   g      @g      @r   z^3$rJ   rM   z^nan$z\[nan\])r
   r}   
isinstancer  r>   rY   rZ   rh   r7   r   r   r   r   s     r"   test_get_loc_missing_nanz#TestGetLoc.test_get_loc_missing_nan  s   $sCj3*%=>>#++a..%00000]86222 	 	KKNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]88444 	  	 KK	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ],J??? 	" 	"KK!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s6    BB	B( CCC:!D((D,/D,c                 \   t          j        t          j        dggdz            }t	          ddd           }|                    t          j                  |k    sJ t          j        t          j        ddt          j        gg          }t          j        g d          }t          j	        |                    t          j                  |           t          j        t          j        dggdz            }t	          ddd           }|                    t          j        df          |k    sJ d S )Nr   r   r   )TFFTrM   r   )
r
   r   r7   r   r>   r  r}   rg   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8At$${{26""h....$rvq!RV&<%=>>866677
#CKK$7$7BBB%{ma&788At$${{BFA;''8333333r$   c                     t          g dg dgg dg dgddg          }|                    d          t          d	d
          k    sJ d S )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rd   re   r   rA  r   rM   )r
   r  r>   )r   r   s     r"   test_get_loc_duplicates2z#TestGetLoc.test_get_loc_duplicates2  sr    #OO%D%D%DE1113Q3Q3QR%.
 
 
 }}S!!U1a[[000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  |                    |          }d d d            n# 1 swxY w Y   |t	          ddd           k    sJ d S )NrV   r   r   r   )xyz)rd   re   r   	sortorder)rV   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"%A"c                     t          j        ddg          }d}t          j        t          |          5  |                    g            d d d            d S # 1 swxY w Y   d S )Nr   r   z\[\]rJ   )r
   r   rY   rZ   r   r  r   s      r"   #test_multiindex_get_loc_list_raisesz.TestGetLoc.test_multiindex_get_loc_list_raises  s    $h%9::],C888 	 	KKOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   AAAc                 r   t          j        t          d          t          d          t          d          t          d          g          }d}t          j        t
          t          j        t          |                              5  |	                    |           d d d            d S # 1 swxY w Y   d S )NrM   r   r   r6   )r   r   rJ   )
r
   r   r]   rY   rZ   rh   reescapestrr  )r   r   r/  s      r"   )test_get_loc_nested_tuple_raises_keyerrorz4TestGetLoc.test_get_loc_nested_tuple_raises_keyerror  s    $eAhha%((E!HH%MNN ]829SXX+>+>??? 	 	JJsOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   	B,,B03B0N)r   r   r   r  r  r&  rY   r   r   intfloatr4  r\  r+  r2  r<   r5  r9  r=  r?  rM  rU  rW  r]  rQ   r$   r"   r  r  K  s       4 4 4*  $4 $4 $4L [XUD#'>??[XUD#'>??( ( @? @?( [Wq!f--[Xeucl'CDD, , ED .-, [WtVn55' ' 65'* [Wq!f--, , .-,
" 
" 
"4 4 41 1 1+ + +       r$   r  c                       e Zd Zd Zd ZdS )	TestWherec                     t          j        ddg          }d}t          j        t          |          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   2\.where is not supported for MultiIndex operationsrJ   Tr
   r   rY   rZ   r   where)r   rT   ri   s      r"   
test_wherezTestWhere.test_where  s    "Hh#788C].c::: 	 	GGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rX  c                     t          j        ddg          }ddg}d}t          j        t          |          5  |                     ||                     d d d            d S # 1 swxY w Y   d S )Nrc  rd  FTre  rJ   rf  )r   listlike_boxr   condri   s        r"   test_where_array_likezTestWhere.test_where_array_like  s    #Xx$899t}C].c::: 	) 	)HH\\$''(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   A$$A(+A(N)r   r   r   rh  rl  rQ   r$   r"   ra  ra    s2          ) ) ) ) )r$   ra  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestContainsc                 \    t          j        ddgddgg          }d|v sJ d|j        vsJ d S )Nr   r+   r   r   )r
   r   _engine)r   r   s     r"   test_contains_top_levelz$TestContains.test_contains_top_level  sE    &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 sJ 	d S )	NrB  r   r   )r-   )r   r   r   r   r   r   )rp   r   r   r   rM   r   r+   rL  )r
   r   r   	TimestamprA   )r   r   vals      r"   test_contains_with_natz#TestContains.test_contains_with_nat#  s    E:lA>>>?%%%':':':;+
 
 

 R\,//0B66669 	 	C"99999	 	r$   c                 *    d|v sJ d|vsJ d |vsJ d S )Nr   r  rQ   r<  s     r"   test_containszTestContains.test_contains.  s5    $$$$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 d S )Nr   r   rM   )r
   r}   r7   r   r<  s     r"    test_contains_with_missing_valuez-TestContains.test_contains_with_missing_value3  s{    $q"&!n%566v}}}}$q!frvqk%:;;vS    26{c!!!!!!r$   c                 6   t          j        ddgddgg          }d|v s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 |                    d          }d|j        d         v sJ d|vsJ d S )
Nr   r   rM   r   r   rV   rs   ru   rv   )r
   r   r"  rd   r<  s     r"    test_multiindex_contains_droppedz-TestContains.test_multiindex_contains_dropped<  s     %1v1v&677Cxxxxhhqkk CJqM!!!!|||| %SzC:&>??czzzzhhsmmcj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 d S )Nz09:30:00z16:00:00z30 min)r.   r   element_not_exitz0 day 09:30:00)r   timedelta_ranger
   r}   r7   rf   r   )r   txr   s      r"   test_contains_td64_levelz%TestContains.test_contains_td64_levelP  sw    
JXFFF$b")CGG*<*<%=>>!u||||!,,,,3&&&&&&r$   c                    |                                 5  |                    t          dd           t          j        t          d          t          d          g          }d|vsJ 	 d d d            d S # 1 swxY w Y   d S )N_SIZE_CUTOFFrI   )rI   r   )contextsetattrlibindexr
   r}   r]   )r   monkeypatchr!   s      r"   test_large_mi_containsz#TestContains.test_large_mi_containsX  s      "" 	) 	)."===+U2YYb		,BCCF&(((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   AA66A:=A:N)
r   r   r   rq  ru  rw  ry  r{  r  r  rQ   r$   r"   rn  rn    s}        ' ' '
	 	 	  
" " "  (' ' ') ) ) ) )r$   rn  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        ||           d S )Nz2019-01-01T00:15:33d   r   date)r-   r.   rW   rO  rM   r   z2019-1-2z2019-01-02T00:15:33z2019-01-05T03:15:33)r{   r|   r.   rW      )datar   rW   )r
   r   r   r   r7   rf   r   r#  r   
IndexSlicer   r?   assert_series_equal)r   rB   r!   qidx	should_bes        r"   !test_timestamp_multiindex_indexerr  `  s   

!,c&QQQEC	
 C 
E29SXX../	5	5BVBM*++sAAA"56=>F"+)	   EC		
 D 	rySYY^<<DuUUUI69-----r$   zindex_arr,expected,target,algorV   rs   rt   r   r   ru   r   rx   rv   c                 l    t          j        |           }|                    ||          }||k    sJ d S )N)side)r
   r}   get_slice_bound)r~   rF   targetalgor   r!   s         r"   'test_get_slice_bound_with_missing_valuer  {  sC     
 
+
+C  d 33FXr$   rr   r   r   rM   )r   r   r   r   r   )rM   r   c                 l    t          j        |           }|                    ||          }||k    sJ d S rz   )r
   r}   slice_indexer)r~   rF   r   r   r   r!   s         r"   %test_slice_indexer_with_missing_valuer    sC     
 
+
+CYG<<FXr$   zN, expected_dtype))r   uint8)r   uint16)r   uint32)ro   uint64)rI   r<   c                 l  	 d 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             	t          j        	          }|j        j        j        |k    sJ t          	          D ]y\  }}|                    |          |k    sJ t          j	        |dz   t           j
                  }|                    	fd|D                       }t          j        ||           zt          t          	                    }t          j        d	gt#          |          t           j
                  }t%          g d
| z            }|                    |g	fd|D             z             }t          j        ||           d S )Nc                 ,    g | ]}t          |          S rQ   )r.  )rS   arrs     r"   rU   z%test_pyint_engine.<locals>.<listcomp>  s.     	 	 	 	c

	 	 	r$   r   r   r   rM   r   r(   c                      g | ]
}|         S rQ   rQ   rS   rT   keyss     r"   rU   z%test_pyint_engine.<locals>.<listcomp>  s    #>#>#>DG#>#>#>r$   rp   )r   r   r   r   c                      g | ]
}|         S rQ   rQ   r  s     r"   rU   z%test_pyint_engine.<locals>.<listcomp>  s    +C+C+CDG+C+C+Cr$   )r7   r   r
   r   rp  rA   r)   	enumerater  rf   r   r   r?   r   r]   r   rg   r;   r.  )
Nexpected_dtyper   r   	key_valuerF   r!   idcesmissingr  s
            @r"   test_pyint_enginer    s   	 	 C!GaKC!GaKVHqLA37Q;&C!GqcAgk!VHqLA37Q;&!q0
	 	 	D" "4((E=%7777#D// 6 6Y}}Y''3....9S1WBG444""#>#>#>#>X#>#>#>??
#FH5555 #d))Ex*d5kk*"':::HLLL1$%%Gy+C+C+C+CU+C+C+CCDDF11111r$   zkeys,expected)TFTr6   c                     t          j        g dg dg          }|                    |           }t          j        |t          j                  }t          j        ||           d S )N)r   r   r   )r   r   r6   r(   )r
   r}   get_locsr7   rg   r   r?   r   )r  rF   r   r!   s       r"   test_get_locs_reorderingr    sk     
 IIII	
 C \\$Fx000H11111r$   c                    t          j        dgddggddg          }t          j        dg| dggddg          }|                    |          }t          j        ddgt          j        	          }t          j        ||           |                    |          }t          j        ddgt          j        	          }t          j        ||           d S )
Nr   r   r   r   r   r   rp   r   r(   )r
   r   r   r7   rg   r   r?   r   )r8  r   r   r!   rF   s        r"   )test_get_indexer_for_multiindex_with_nansr    s    "SEC:#6uenMMMD"SEM3+?#@PUWWWDd##FxQrw///H111d##FxQrw///H11111r$   c                      t          dd          } t          j         | dd           | dd           | dd          g          }||                                fD ]}|                     | dd                    d	k    sJ |                     | dd                    d
k    sJ |                     | dd                    dk    sJ |                    d          d	k    sJ |                    d          d
k    sJ |                    d          dk    sJ t          j        g d          }||                                fD ]}|                     | dd                    d	k    sJ |                     | dd                    d
k    sJ |                     | dd                    dk    sJ |                    d          d	k    sJ |                    d          d
k    sJ |                    d          dk    sJ d S )N
NamedIndex)rV   rs   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*55J&	D$		D$!7!7D$9O9OP I 922445 . .{{::dD1122a7777{{::dD1122a7777{{::dD1122a7777{{<((A----{{<((A----{{<((A-----&'Q'Q'QRRI922445 . .{{::dD1122a7777{{::dD1122a7777{{::dD1122a7777{{<((A----{{<((A----{{<((A-----. .r$   )-collectionsr   datetimer   rZ  numpyr7   rY   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  ra  rn  r  r   r  r>   r  r  r  r  r  rQ   r$   r"   <module>r     sz   " " " " " "       				      * * * * * * + + + + + +                       ~" ~" ~" ~" ~" ~" ~" ~"B40 40 40 40 40 40 40 40nHI HI HI HI HI HI HI HIV
$ $ $"4 4 4 u../ / /./ u../ / /./       D) ) ) ) ) ) ) ) @) @) @) @) @) @) @) @)F. . .6 $63
ooo	.266B63
ooo	.BFC='J
//C-	.C=&I    *61a.)))	$eeAq$&7&7C61a.)))	$eeAq$&7&7H
))a^	$eeAq$&7&7!RVaH
))a^	$eeAq$&7&7!RVfM	      	 	$2 $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2 2 2. . . . .r$   