
    bMh/                        d dl mZ d dlZd dlZd dlZd dlmZ d dl	m
Z
mZ d dlZd dlmZmZmZmZmZ d dlmZ  G d d          Z G d d	          Z G d
 d          Zd Zd Zej                            ddgdz   edgdz            g          ej                            dg d eg d          g          d                         Zej                            ddg edg          g          ej                            ddg edg          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          d0             Z&d1 Z'ej                            d2 e%d          dd.gfd"d gf e%d          d.dgfd d"gfg d3d.d4gfd d)gfg d3d4d.gfd d)gfd)d.dgfd d"gfd)dd.gfd"d gfd)gd.dgfd d"gfd)gdd.gfd"d gfg          d5             Z(d6 Z)dS )7    )	timedeltaN)index)InvalidIndexErrorPerformanceWarning)Categorical	DataFrameIndex
MultiIndex
date_rangec                      e Zd Zd Zd Zd Zd Zd Zej	        
                    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        h/var/www/html/test/jupyter/venv/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           	      J   t          t          j                            d                              d          t          t          d          t                    t          ddd          	          }|	                    d
          }|j
        }t          |                    |j
        d         |j
        d                    }||         }|dd         	                    d
          }t          j        |j        |j                   t          |                    |j
        d         t!          d          z   |j
        d         t!          d          z
             }||         }|dd         	                    d
          }t          j        |j        |j                   d S )Nr   )2   r   ABCDdtype
2000-01-01r&   Bperiodsfreqcolumnsr   Tfuture_stackr            seconds   )r   nprandomdefault_rngstandard_normalr	   listobjectr   stackr   slicer   tmassert_almost_equalvaluesr   )r   dfstackedr   slobslicedexpecteds          r"   test_slice_locszTestSliceLocs.test_slice_locs(   sj   I!!!$$44W==$v,,f555\2C@@@
 
 

 (((--mcnnRXa["(2,??@ad8>>t>44
v}ho>>>^^i3333y4444 
 ad8>>t>44
v}ho>>>>>r$   c           
         t          t          j                            d                              d          t          t          d          t                    t          d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                    }|	                    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*   rK   r+   r,   r/   Tr1   z^Level type mismatchmatchr      r   r5   r6   r   r   )r   r   c                     g | ]}d | S zi- .0is     r"   
<listcomp>zDTestSliceLocs.test_slice_locs_with_type_mismatch.<locals>.<listcomp>N   s    444aa444r$   a)namec                     g | ]}d | S rR   rS   rT   s     r"   rW   zDTestSliceLocs.test_slice_locs_with_type_mismatch.<locals>.<listcomp>O   s    666888666r$   )r   r0   r   )r4   rX   )r   r9   r:   r;   r<   r	   r=   r>   r   r?   r   pytestraises	TypeErrorr   r   onesrange)r   rD   rE   r   s       r"   "test_slice_locs_with_type_mismatchz0TestSliceLocs.test_slice_locs_with_type_mismatch@   sA   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43D33D7:D7&$HHH<"I++I/2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   rO   rO   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   levelscodesz4[Kk]ey length.*greater than MultiIndex lexsort depthrL   )r   r   r   )r   r   r   r   )
r
   r	   r9   arangearrayr[   r\   KeyErrorr   r   )r   r   msgsorted_indexr    s        r"   test_slice_locs_not_sortedz(TestSliceLocs.test_slice_locs_not_sortedY   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   r8   )r   r   r   )	r   r   r   r   r   r   rO   rO   rO   )	r   r   r   r   r   r   r   r   r   re   r   r   rP   )rO   r8   r   r   r   r   r   )r8   rO   )rO      rK   r   )r
   r   r   )r   r   r!   s      r"   test_slice_locs_not_containedz+TestSliceLocs.test_slice_locs_not_containedk   s3     LL))),...0K0K0KL
 
 

 !!&&11!!!Q''!!&&11!!!Q''!!&&11!!"b))!SZZ((((((r$   $index_arr,expected,start_idx,end_idxrX   bcde)r   rO   N)ru   ry   rX   ru   rw   rx   ry   rN   rw   )rw   ry   c                 l    t          j        |          }|                    ||          }||k    sJ d S N)startend)r
   from_arraysr   )r   	index_arrrH   	start_idxend_idxr   r!   s          r"   "test_slice_locs_with_missing_valuez0TestSliceLocs.test_slice_locs_with_missing_value   s@     $Y//iW==!!!!!!r$   )__name__
__module____qualname__r#   rI   r`   rm   rs   r[   markparametrizer9   nanr   rS   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 sizerL   r   r   )r[   r\   
ValueErrorputmaskr9   r^   r   bool_r   r   rk   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 )Nr8   )rX   r   )rX   r   r   )rx   r   )TTFr   r   r   )r
   from_tuplesr9   r   ri   r   rA   assert_index_equal)r   leftrightmaskr!   rH   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   rO   r(   rK         r   r8      )rr   TFFr   r   rO   rr   r   r   r
   r   pdSeriesr   rA   r   r   any_numeric_ea_dtypemidxmidx2r!   rH   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   rr   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   rS   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   rO   rO   r(   )r   r   r   r   r   r   r   re   r   )r   rO   r   )r   rO   rr   padmethod)rr   r   r   r   r   rr   ffillbackfill)r   r   r   r   r   bfillr   rr   rr   rr   rK      z8Reindexing only valid with uniquely valued Index objectsrL   )r	   r9   rh   ri   intpr
   get_indexerrA   rB   rC   allr=   r_   r[   r\   r   )r   
major_axis
minor_axismajor_codesminor_codesr   idx1idx2r1e1r2rffill1rbfill1rexp1rk   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   ru   r   zJmethod='nearest' not implemented yet for MultiIndex; see GitHub issue 9365rL   rX   nearestr   z,tolerance not implemented yet for MultiIndexr   r   )r   	tolerance)r
   r   r[   r\   NotImplementedErrorr   )r   r   rk   s      r"   test_get_indexer_nearestz'TestGetIndexer.test_get_indexer_nearest  sE   %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 )Nrz   
2012-01-01rO   hr,   	   r(   )
r
   from_productr   r   r   rA   assert_numpy_array_equalr9   rh   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   rO   r   r   r   r(   r   r   r   r   c                     t          j        |          }|                    |          }t          j        ||           d S )N)r
   r   r   rA   r   )r   r   labelsrH   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)rr   r   r   )r   r   rO   r   r   )r   rO   r   )rr   r8   r   r(   r   r   r   r   r   )r   r8   r   r   )r
   r   r   r9   ri   r)   rA   rB   r   
mult_idx_1
mult_idx_2indexerrH   backfill_indexerpad_indexers          r"   test_get_indexer_methodsz'TestGetIndexer.test_get_indexer_methods3  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 decreasingrL   r   r   r   )r
   r   r   r   r[   r\   r   )r   r   mierrrk   s        r"   0test_get_indexer_methods_raise_for_non_monotonicz?TestGetIndexer.test_get_indexer_methods_raise_for_non_monotonicg  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   rO   )r   r   r8   r   r   ))r   r   rq   )r   r   r   )r   r8   r   )r   r   r8   )r   r   r   )r   r   rq   )rO   r8   rq   r   r   r   r8   rr   )rr   rr   r   rr   rr   rr   rr   r(   r   r   )r   r   r   r8   r8   r8   rr   r   )rr   rO   r   r   r   r   r   rq   r   rK   r   )rr   rr   rr   rr   rr   r   rr   rr   rr   rr   rr   rr   r   )r   r   r   r   r   r   r8   r8   r8   r8   r8   r8   )r   r   r   r   r   r   r   r   r   r   r   r   )r
   r   r   is_monotonic_increasing	is_uniquer   r9   ri   r)   rA   rB   )
r   r   r   indexer_no_fillrH   indexer_backfilledindexer_paddedr   r   r   s
             r"   %test_get_indexer_three_or_more_levelsz4TestGetIndexer.test_get_indexer_three_or_more_levelst  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   rO   r   r   )r   rO   r   r   r   r   rq   rr   r(   r   r   r   r3   )	r
   r   r   r   r9   ri   r)   rA   rB   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 )NrO   Ar+   z;limit argument only valid if doing pad, backfill or nearestrL   rr   r   )limitz?tolerance argument only valid if doing pad, backfill or nearestpiano)r   )r
   r   r_   r[   r\   r   r   )r   r   rk   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namesrr   r   F)check_dtype)r
   r   r9   r   ri   r   rA   r   )r   r   r   rH   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   r[   r   r   r9   r   ri   r   r   r   r   r   r   r   r   rS   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   rO   r   )TFTFTT)r   r   r   r   )equalsr9   ri   )r   r!   rH   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   rO   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$   ind1Tr   ind2)TFTFFc                     t          j        g d          }t          j        ||          |           t          j        ddg          }t          j        ||         |           d S )N)rK   r   )r   r   r5   rO   )(   r   )r&   r   r  r  )r
   r   rA   r   r  r	  r   rH   s       r"   test_getitem_bool_index_allr  3  sd     
 !N!N!N
O
OC#d)S)))%w&899H#d)X.....r$   Fc                 >   t          j        dg          }t          j        ||          |           t          t	          j        g t          j                  t	          j        g t          j                  gg g g          }t          j        ||         |           d S )Nr  r(   re   )r
   r   rA   r   r9   ri   int64r  s       r"   test_getitem_bool_index_singler  A  s     
 '
+
+C#d)S)))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   rO   z^\('bar', 'two'\)$rL   r   r   z^'quux'$quuxr   rb   rc   rd   re   z
^\(1, 1\)$r   )r   r   r   )
r  r[   r\   rj   r
   r	   r9   rh   ri   r@   )r   r   r   s      r"   test_get_loczTestGetLoc.test_get_locP  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   )rw   rX   rX   ru   ru   rw   2rL   )r	   r  r@   r[   r\   rj   )r   r   r!   rH   rsxps         r"   test_get_loc_duplicatesz"TestGetLoc.test_get_loc_duplicatese  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   rb   rc   rd   re   r   r   r   r   r   )r   r   r   z
^\(2, 2\)$rL   rp   z^2$)leveli  )r   r   r   r   )r   r   r   rO   )r
   r	   r9   rh   ri   get_loc_levelr@   	droplevelr  r[   r\   rj   dropr=   r_   )r   r   loc	new_indexrH   	exp_indexr!   s          r"   test_get_loc_levelzTestGetLoc.test_get_loc_levels  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   )r9   ri   astyper
   r   r  )r   r(  r)  rf   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 )	NrX   ru   rw   rx   r   r   r(   rO   )r9   ri   r
   r   r  tuple)r   r   r-  rf   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\)$rL   r  r   z
^\(1, 0\)$ro   z^\(False, True\)$)FTz^\(True, False\)$)TF)
r	   r9   rh   r
   r   boolr[   r\   rj   r  )r   r)   rf   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 )NrX   ru   rw   rx   r   r(   rO   )r9   ri   typer
   r   r  r/  )r   r   nulls_fixturerf   r0  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$rL   rO   z^nan$z\[nan\])r
   r   
isinstancer  r@   r[   r\   rj   r9   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   )TFFTrO   r   )
r
   r   r9   r   r@   r  r   ri   rA   r   )r   r   rH   s      r"   1test_get_loc_with_values_including_missing_valuesz<TestGetLoc.test_get_loc_with_values_including_missing_values  s    %{ma&78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   rO   r   r8   r   r   r   rO   r   r   tagdayrf   rg   r   rB  r   rO   )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        t                    5  |                    |          }d d d            n# 1 swxY w Y   |t          ddd           k    sJ d S )NrX   r   r   r   )xyz)rf   rg   r   	sortorder)rX   r   )r
   rA   assert_produces_warningr   r  r@   )r   r   r0  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\[\]rL   )r
   r   r[   r\   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 )NrO   r   r   r8   )r  r   rL   )
r
   r   r_   r[   r\   rj   reescapestrr  )r   r   r0  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'  r[   r   r   intfloatr5  r\  r,  r3  r>   r6  r:  r>  r@  rN  rU  rW  r]  rS   r$   r"   r  r  O  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 operationsrL   Tr
   r   r[   r\   r   where)r   rV   rk   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  rL   rf  )r   listlike_boxr   condrk   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  rS   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 )	NrC  r   r   )r-   )r   r   r   r   r   r   )rr   r   r   r   rO   r   r+   rM  )r
   r   r   	TimestamprC   )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  rS   r=  s     r"   test_containszTestContains.test_contains2  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   rO   )r
   r   r9   r   r=  s     r"    test_contains_with_missing_valuez-TestContains.test_contains_with_missing_value7  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   rO   r   r   rX   ru   rw   rx   )r
   r   r#  rf   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   r9   rh   r   )r   txr   s      r"   test_contains_td64_levelz%TestContains.test_contains_td64_levelT  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_CUTOFFrK   )rK   r   )contextsetattrlibindexr
   r   r_   )r   monkeypatchr!   s      r"   test_large_mi_containsz#TestContains.test_large_mi_contains\  s      "" 	) 	)."===+U2YYb		,BCCF&(((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   AA66A:=A:N)
r   r   r   rq  ru  rw  ry  r{  r  r  rS   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.   rY   rP  rO   r   z2019-1-2z2019-01-02T00:15:33z2019-01-05T03:15:33)r}   r~   r.   rY      )datar   rY   )r
   r   r   r   r9   rh   r   r$  r   
IndexSlicer   rA   assert_series_equal)r   rD   r!   qidx	should_bes        r"   !test_timestamp_multiindex_indexerr  d  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,algorX   ru   rv   r   r   rw   r   rz   rx   c                 l    t          j        |           }|                    ||          }||k    sJ d S )N)side)r
   r   get_slice_bound)r   rH   targetalgor   r!   s         r"   'test_get_slice_bound_with_missing_valuer    sC     
 
+
+C  d 33FXr$   rt   r   r   rO   )r   r   r   r   )rO   r   c                 l    t          j        |           }|                    ||          }||k    sJ d S r|   )r
   r   slice_indexer)r   rH   r   r   r   r!   s         r"   %test_slice_indexer_with_missing_valuer    sC     
 
+
+CYG<<FXr$   c            	      Z   d} d dgdz  | z  dgdz  | z  dgdz  | z  t           j        g| z  dgdz  | z  z   dg| z  dgdz  | z  z   t           j        g| z  dgdz  | z  z   dg| z  z   fD             t                    D ]\  }}t          j                  }|                    |          |k    sJ t          j        |dz   t           j        	          }|                    fd
|D                       }t          j
        ||           t          t                              }t          j        dgt          |          z   t           j        	          }t          ddgdz  | z            }|                    |gfd|D             z             }t          j
        ||           d S )Nr   c                 ,    g | ]}t          |          S rS   )r/  )rU   arrs     r"   rW   z%test_pyint_engine.<locals>.<listcomp>  s.     
 
 
 	c


 
 
r$   r   rK   r   r   r   rq   r(   c                      g | ]
}|         S rS   rS   rU   rV   keyss     r"   rW   z%test_pyint_engine.<locals>.<listcomp>  s    #>#>#>DG#>#>#>r$   rr   c                      g | ]
}|         S rS   rS   r  s     r"   rW   z%test_pyint_engine.<locals>.<listcomp>  s    +C+C+CDG+C+C+Cr$   )r9   r   	enumerater
   r   r  rh   r   r   rA   r   r_   r   ri   r=   r/  )	Nr   	key_valuer   rH   r!   idcesmissingr  s	           @r"   test_pyint_enginer    s    	
A
 
 C"HqLC"HqLC"HqLVHqLA37Q;&C!GqcAgk!VHqLA37Q;&!q0

 
 
D" $D// 6 6Y&t,,}}Y''3....9S1WBG444""#>#>#>#>X#>#>#>??
#FH5555 #d))ExtE{{*"':::HQFQJN##Gy+C+C+C+CU+C+C+CCDDF11111r$   zkeys,expected)TFTr8   c                     t          j        g dg dg          }|                    |           }t          j        |t          j                  }t          j        ||           d S )N)r   r   r   )r   r   r8   r(   )r
   r   get_locsr9   ri   r   rA   r   )r  rH   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   rr   r   r(   )r
   r   r   r9   ri   r   rA   r   )r9  r   r   r!   rH   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$   )*datetimer   rZ  numpyr9   r[   pandas._libsr   r  pandas.errorsr   r   pandasr   r   r   r	   r
   r   pandas._testing_testingrA   r   r   r   r  r  r   r   r  r  r  ra  rn  r  r   r  r@   r  r  r  r  rS   r$   r"   <module>r     s         				      * * * * * *       
                       ~" ~" ~" ~" ~" ~" ~" ~"B40 40 40 40 40 40 40 40nII II II II II II II IIX
$ $ $"4 4 4 4&1*eeTFQJ.?.?!@AA
&&&.O.O.O(P(PQ / /	  BA
/ 4&%%--!8995'55%>>!:;;	/ 	/ <; :9	/       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 #2L 
%++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 2 2r$   