
    o[we`                        d dl mZ d dlZd dlZd dlZd dlmZmZ d dl	Z
d dl	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          d/             Z"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%dS )6    )	timedeltaN)InvalidIndexErrorPerformanceWarning)Categorical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        Hlib/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          j                    }|                    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 )	NTfuture_stackr            seconds   )	tmmakeTimeDataFramestackindexslicer   assert_almost_equalvaluesr   )r   dfstackedr   slobslicedexpecteds          r    test_slice_locszTestSliceLocs.test_slice_locs&   s   !##(((--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                 z   t          j                    }|                    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          j	        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 )NTr$   z^Level type mismatchmatchr      r   r(   r)   r   r   r   )r'   a)
r,   r-   r.   r/   pytestraises	TypeErrorr   r   makeCustomDataframe)r   r3   r4   r   s       r    "test_slice_locs_with_type_mismatchz0TestSliceLocs.test_slice_locs_with_type_mismatch:   s   !##(((--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#Aq))(((--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   A..A25A23CCC+$EE"E"F00F47F4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   r=   r=   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 depthr:   )r   r   r   )r   r   r   r   )
r   r   nparangearrayr@   rA   KeyErrorr   r   )r   r/   msgsorted_indexr   s        r    test_slice_locs_not_sortedz(TestSliceLocs.test_slice_locs_not_sortedK   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   r+   )r   r   r   )	r   r   r   r   r   r   r=   r=   r=   )	r   r   r   r   r   r   r   r   r   rI   r   r   r>   )r=   r+   r   r   r   r   r   )r+   r=   )r=      
   r   )r   r   r   )r   r/   r   s      r    test_slice_locs_not_containedz+TestSliceLocs.test_slice_locs_not_contained]   s3     LL))),...0K0K0KL
 
 

 !!&&11!!!Q''!!&&11!!!Q''!!&&11!!"b))!SZZ((((((r"   $index_arr,expected,start_idx,end_idxr?   bcde)r   r=   N)r[   r_   r?   r[   r]   r^   r_   r<   r]   )r]   r_   c                 l    t          j        |          }|                    ||          }||k    sJ d S N)startend)r   from_arraysr   )r   	index_arrr7   	start_idxend_idxr   r   s          r    "test_slice_locs_with_missing_valuez0TestSliceLocs.test_slice_locs_with_missing_valuew   s@     $Y//iW==!!!!!!r"   )__name__
__module____qualname__r!   r8   rD   rR   rY   r@   markparametrizerL   nanri    r"   r    r   r      sc            ? ? ?(3 3 3"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 sizer:   r   r   )r@   rA   
ValueErrorputmaskrL   onesr   bool_r   r   rP   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 )Nr+   )r?   r   )r?   r   r{   )r^   r   )TTFr   r   r   )r   from_tuplesrL   ro   rN   ru   r,   assert_index_equal)r   leftrightmaskr   r7   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   r=   dtyperX         r   r+      )rW   TFFr   r   r=   rW   r   r   r   re   pdSeriesru   r,   r}   r   any_numeric_ea_dtypemidxmidx2r   r7   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   rW   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)rj   rk   rl   ry   r   r   r   rp   r"   r    rr   rr      sP        " " "
0 
0 
00 0 00 0 0 0 0r"   rr   c                      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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   r=   r=   r   )r   r   r   r   r   r   r   rI   r   )r   r=   r   )r   r=   rW   padmethod)rW   r   r   r   r   rW   ffillbackfill)r   r   r   r   r   bfillr   rW   rW   rW   rX      z8Reindexing only valid with uniquely valued Index objectsr:   )r   rL   rM   rN   intpr   get_indexerr,   r1   r2   alllistranger@   rA   r   )r   
major_axis
minor_axismajor_codesminor_codesr/   idx1idx2r1e1r2rffill1rbfill1rexp1rP   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{   r[   r   zJmethod='nearest' not implemented yet for MultiIndex; see GitHub issue 9365r:   r?   nearestr   z,tolerance not implemented yet for MultiIndexr   r   )r   	tolerance)r   r|   r@   rA   NotImplementedErrorr   )r   r   rP   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 )Nr`   
2012-01-01r=   H)periodsfreq	   r   )
r   from_productr   r	   r   r,   assert_numpy_array_equalrL   rM   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   r=   r   r   r   r   r   r   r   r   c                     t          j        |          }|                    |          }t          j        ||           d S )N)r   re   r   r,   r   )r   rf   labelsr7   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)rW   r   r   )r   r   r=   r   r   )r   r=   r   )rW   r+   r   r   r   r   r   r   r   )r   r+   r   r   )r   r   r   rL   rN   r   r,   r1   r   
mult_idx_1
mult_idx_2indexerr7   backfill_indexerpad_indexers          r    test_get_indexer_methodsz'TestGetIndexer.test_get_indexer_methods%  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"   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   r=   )r   r   r+   r   r   ))r   r   rV   )r   r   r   )r   r+   r   )r   r   r+   )r   r   r   )r   r   rV   )r=   r+   rV   r   r   r   r+   rW   )rW   rW   r   rW   rW   rW   rW   r   r   r   )r   r   r   r+   r+   r+   rW   r   )rW   r=   r   r   r   r   r   rV   r   rX   r   )rW   rW   rW   rW   rW   r   rW   rW   rW   rW   rW   rW   r   )r   r   r   r   r   r   r+   r+   r+   r+   r+   r+   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r|   is_monotonic_increasing	is_uniquer   rL   rN   r   r,   r1   )
r   r   r   indexer_no_fillr7   indexer_backfilledindexer_paddedr   r   r   s
             r    %test_get_indexer_three_or_more_levelsz4TestGetIndexer.test_get_indexer_three_or_more_levelsY  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   r=   r   r   )r   r=   r   r   r   r   rV   rW   r   r   r   r   r&   )	r   r   r|   r   rL   rN   r   r,   r1   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 )Nr=   ABz;limit argument only valid if doing pad, backfill or nearestr:   rW   r   )limitz?tolerance argument only valid if doing pad, backfill or nearestpiano)r   )r   r   r   r@   rA   rt   r   )r   mirP   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namesrW   r   F)check_dtype)r   r   rL   ro   rN   r   r,   r   )r   r   r   r7   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)rj   rk   rl   r   r   r   r@   rm   rn   rL   ro   rN   r   r   r   r   r   r   r   rp   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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   r=   r   )TFTFTT)r   r   r   r   )equalsrL   rN   )r   r   r7   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   r=   r   r   r   )r   get_locr0   )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)rX   r   )r   r   r(   r=   )(   r   )2   r   r   r   )r   r|   r,   r}   r   r   r   r7   s       r    test_getitem_bool_index_allr     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   rI   )r   r|   r,   r}   rL   rN   int64r   s       r    test_getitem_bool_index_singler   &  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   r=   z^\('bar', 'two'\)$r:   r   r   z^'quux'$quuxr   rF   rG   rH   rI   z
^\(1, 1\)$)r   r   )r   r   r   )
r   r@   rA   rO   r   r   rL   rM   rN   r0   )r   r   r/   s      r    test_get_loczTestGetLoc.test_get_loc5  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   )r]   r?   r?   r[   r[   r]   2r:   )r   r   r0   r@   rA   rO   )r   r/   r   r7   rsxps         r    test_get_loc_duplicatesz"TestGetLoc.test_get_loc_duplicatesJ  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   rF   rG   rH   rI   r   r   r   r   r   )r   r   r   z
^\(2, 2\)$r:   rU   z^2$)leveli  )r   r   r   r   )r   r   r   r=   )r   r   rL   rM   rN   get_loc_levelr0   	droplevelr   r@   rA   rO   dropr   r   )r   r/   loc	new_indexr7   	exp_indexr   s          r    test_get_loc_levelzTestGetLoc.test_get_loc_levelX  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   )rL   rN   astyper   r   r   )r   r  r  rJ   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 )	Nr?   r[   r]   r^   r   r   r   r=   )rL   rN   r   r   r   tuple)r   r  r  rJ   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\)$r:   r  r   z
^\(1, 0\)$rT   z^\(False, True\)$)FTz^\(True, False\)$)TF)
r   rL   rM   r   r   boolr@   rA   rO   r   )r   r   rJ   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 )Nr?   r[   r]   r^   r   r   r=   )rL   rN   typer   r   r   r  )r   r  nulls_fixturerJ   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$r:   r=   z^nan$z\[nan\])r   re   
isinstancer   r0   r@   rA   rO   rL   ro   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   )TFFTr=   r   )
r   r   rL   ro   r0   r   re   rN   r,   r   )r   r   r7   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   r=   r   r+   r   r   r   r=   r   r   tagdayrJ   rK   r   r.  r   r=   )r   r   r0   )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 )Nr?   r   r   r   )xyz)rJ   rK   r   	sortorder)r?   r   )r   r,   assert_produces_warningr   r   r0   )r   r   r  r   s       r    test_get_loc_past_lexsort_depthz*TestGetLoc.test_get_loc_past_lexsort_depth  s    EAq6A3'q6Aq6Aq6*!//	
 
 
 '(:;; 	& 	&[[%%F	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& q!T********s   A##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\[\]r:   )r   r|   r@   rA   r   r   rx   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 )Nr=   r   r   r+   )r   r   r:   )
r   r   r   r@   rA   rO   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)rj   rk   rl   r  r	  r  r@   rm   rn   intfloatr!  rH  r  r  objectr"  r&  r*  r,  r:  rA  rC  rI  rp   r"   r    r   r   4  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 operationsr:   Tr   r|   r@   rA   r   where)r   irP   s      r    
test_wherezTestWhere.test_where  s    "Hh#788C].c::: 	 	GGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rD  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 )NrP  rQ  FTrR  r:   rS  )r   listlike_boxr   condrP   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)rj   rk   rl   rV  rZ  rp   r"   r    rN  rN    s2          ) ) ) ) )r"   rN  c                   \    e Zd Zd Zd Zd Zd Zd Zd Ze	j
        j        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 )	Nr/  r   r   )r   )r   r   r   r   r   r   )rW   r   r   r   r=   r   r   r9  )r   r	   r   	Timestampr2   )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  rp   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   r=   )r   re   rL   ro   r)  s     r     test_contains_with_missing_valuez-TestContains.test_contains_with_missing_value  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   r=   r   r   r?   r[   r]   r^   )r   r   r  rJ   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   re   rL   rM   r   )r   txr   s      r    test_contains_td64_levelz%TestContains.test_contains_td64_level9  sw    
JXFFF$b")CGG*<*<%=>>!u||||!,,,,3&&&&&&r"   c                 r    t          j        t          d          t          d          g          }d|vsJ d S )N@B )rp  r   )r   re   r   )r   r   s     r    test_large_mi_containsz#TestContains.test_large_mi_containsA  s<     'uuU||(DEE''''''r"   N)rj   rk   rl   r_  rc  re  rg  ri  rn  r@   rm   slowrq  rp   r"   r    r\  r\    s        ' ' '
	 	 	  
" " "  (' ' ' [( ( ( ( (r"   r\  c                     t          j        t          dddd          dgdgg          } t          j        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   namer<  r=   r   z2019-1-2z2019-01-02T00:15:33z2019-01-05T03:15:33)rc   rd   r   rv     )datar/   rv  )r   r   r	   r   	DataFramerL   rM   r   r  
IndexSlicer   r,   assert_series_equal)r   r3   r   qidx	should_bes        r    !test_timestamp_multiindex_indexerr~  H  s   

!,c&QQQEC	
 C 
ubiC112C	8	8BVBM*++sAAA"56=>F"+)	   EC		
 D 	rySYY^<<DuUUUI69-----r"   zindex_arr,expected,target,algor?   r[   r\   r~   r   r]   r   r`   r^   c                 l    t          j        |           }|                    ||          }||k    sJ d S )N)side)r   re   get_slice_bound)rf   r7   targetalgor   r   s         r    'test_get_slice_bound_with_missing_valuer  c  sC     
 
+
+C  d 33FXr"   rZ   r   r   r=   )r   r   r   r   )r=   r   c                 l    t          j        |           }|                    ||          }||k    sJ d S rb   )r   re   slice_indexer)rf   r7   rg   rh   r   r   s         r    %test_slice_indexer_with_missing_valuer  r  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 rp   )r  ).0arrs     r    
<listcomp>z%test_pyint_engine.<locals>.<listcomp>  s.     
 
 
 	c


 
 
r"   r   rX   r   r   r   rV   r   c                      g | ]
}|         S rp   rp   r  rU  keyss     r    r  z%test_pyint_engine.<locals>.<listcomp>  s    #>#>#>DG#>#>#>r"   rW   c                      g | ]
}|         S rp   rp   r  s     r    r  z%test_pyint_engine.<locals>.<listcomp>  s    +C+C+CDG+C+C+Cr"   )rL   ro   	enumerater   r|   r   rM   r   r   r,   r   r   r   rN   r   r  )	Nr   	key_valuer/   r7   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)TFTr+   c                     t          j        g dg dg          }|                    |           }t          j        |t          j                  }t          j        ||           d S )N)r   r   r   )r   r   r+   r   )r   re   get_locsrL   rN   r   r,   r   )r  r7   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   rW   r   r   )r   r   r   rL   rN   r   r,   r   )r%  r   r   r   r7   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   rF  numpyrL   r@   pandas.errorsr   r   pandasr   r   r   r   r	   pandas._testing_testingr,   r   rr   r   r   r   rm   rn   r   r   r   rN  r\  r~  ro   r  r0   r  r  r  r  rp   r"   r    <module>r     s         				            
                     r" r" r" r" r" r" r" r"j40 40 40 40 40 40 40 40n|I |I |I |I |I |I |I |I~	$ $ $"4 4 4 4&1*eeTFQJ.?.?!@AA
&&&.O.O.O(P(PQ / /	  BA
/ 4&%%--!8995'55%>>!:;;	/ 	/ <; :9	/       D) ) ) ) ) ) ) ) ?( ?( ?( ?( ?( ?( ?( ?(D. . .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"   