
    Mh/                        S SK Jr  S SKrS SKrS SKrS SKJr  S SK	J
r
Jr  S SKrS SKJrJrJrJrJr  S SKJr   " S S5      r " S S	5      r " S
 S5      rS rS r\R6                  R9                  SS/S-  \" S/S-  5      /5      \R6                  R9                  S/ SQ\" / SQ5      /5      S 5       5       r\R6                  R9                  SS/\" S/5      /5      \R6                  R9                  SS/\" S/5      /5      S 5       5       r " S S5      r " S S5      r  " S S5      r!S r"\R6                  R9                  S\RF                  SS// S Q/S \RF                  S!4\RF                  SS// S Q/S"\RF                  S#4S$4/ S%QS&\RF                  S&//S"S\RF                  4S!4/5      S' 5       r$\R6                  R9                  S(\RF                  S"S)// S*Q/\%" S S)S5      \RF                  S"4\RF                  S"S)// S*Q/\%" S S+S5      \RF                  S,4/ S-QS.\RF                  S//\%" S"S+S5      S)\RF                  4S+4/ S-QS.\RF                  S//\%" S"S+S5      S)\RF                  4S/4/5      S0 5       r&S1 r'\R6                  R9                  S2\%" S5      SS./4S"S /4\%" S5      S.S/4S S"/4/ S3QS.S4/4S S)/4/ S3QS4S./4S S)/4S)S.S/4S S"/4S)SS./4S"S /4S)/S.S/4S S"/4S)/SS./4S"S /4/5      S5 5       r(S6 r)g)7    )	timedeltaN)index)InvalidIndexErrorPerformanceWarning)Categorical	DataFrameIndex
MultiIndex
date_rangec                      \ rS rSrS rS rS rS rS r\	R                  R                  S\R                  SS	// S
Q/S\R                  S4\R                  SS	// S
Q/S\R                  S	4\R                  SS	// S
Q/S\R                  S4/ SQS\R                  S//SS	\R                  4S4/ SQS\R                  S//SS	\R                  4S4/ SQS\R                  S//SS	\R                  4S4/5      S 5       rSrg)TestSliceLocs   c                    UR                  S5      u  p#UR                  SS5      nUS:X  d   eUR                  S S5      nUS:X  d   eUR                  SS 5      nUS[        U5      4:X  d   eUR                  SS5      nUS	:X  d   eg )
Nr   footwo)quxone)      )r   r   r   barbaz)      )	sortlevel
slice_locslen)selfidx
sorted_idx_results        Z/var/www/html/env/lib/python3.13/site-packages/pandas/tests/indexes/multi/test_indexing.pytest_slice_locs_partial%TestSliceLocs.test_slice_locs_partial   s    a(
&&~~F&&t^<&&~t<!S_----&&ue4    c           
         [        [        R                  R                  S5      R	                  S5      [        [        S5      [        S9[        SSSS9S	9nUR                  S
S9nUR                  n[        UR                  UR                  S   UR                  S   5      6 nX$   nUSS R                  S
S9n[        R                  " UR                  UR                  5        [        UR                  UR                  S   [!        SS9-   UR                  S   [!        SS9-
  5      6 nX$   nUSS R                  S
S9n[        R                  " UR                  UR                  5        g )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_locsTestSliceLocs.test_slice_locs(   s/   II!!!$44W=$v,f5\2C@

 (((-mmcnnRXXa["((2,?@a8>>t>4
v}}hoo>^^i33y44
 a8>>t>4
v}}hoo>r&   c                 ~   [        [        R                  R                  S5      R	                  S5      [        [        S5      [        S9[        SSSS9S	9nUR                  S
S9nUR                  n[        R                  " [        SS9   UR                  S5        S S S 5        [        R                  " [        SS9   UR                  UR                  S   [        SS9-   S5        S S S 5        [        [        R                   " S5      [        [#        S5       Vs/ s H  nSU 3PM
     snSS9[        [#        S5       Vs/ s H  nSU 3PM
     snSS9S9nUR                  S
S9nUR                  n[        R                  " [        SS9   UR                  [        SS95        S S S 5        [        R                  " [        SS9   UR                  UR                  S   S5        S S S 5        g ! , (       d  f       GNZ= f! , (       d  f       GN!= fs  snf s  snf ! , (       d  f       N~= f! , (       d  f       g = f)Nr   )
   r   r)   r*   r,   rN   r-   r.   r1   Tr3   z^Level type mismatchmatchr      r   r7   r8   r   r   )r   r   zi-a)name)r   r2   r   )r6   rT   )r   r;   r<   r=   r>   r	   r?   r@   r   rA   r   pytestraises	TypeErrorr   r   onesrange)r   rF   rG   r   is        r#   "test_slice_locs_with_type_mismatch0TestSliceLocs.test_slice_locs_with_type_mismatch@   s   II!!!$44W=$v,f5\2C@

 (((-mm]]9,BCNN6" D]]9,BCNN288A;2)>>G DGGFO5848a2aS843?U1X6XRs8X6SA

 (((-mm]]9,BCNN9R01 D ]]9,BCNN288A;	2 DC DCCC 56 DC DCs<   
G/=*HHHH H./
G>
H
H+.
H<c           	      .   [        [        [        R                  " S5      5      [        [        R                  " S5      5      [        [        R                  " S5      5      /[        R                  " / SQ5      [        R                  " / SQ5      [        R                  " / SQ5      /S9nSn[
        R                  " [        US9   UR                  SS	5        S S S 5        UR                  S
5      u  p4UR                  SS	5        g ! , (       d  f       N4= f)Nr   r   r   r   r   r   r   rR   rR   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 depthrO   )r   r   r   )r   r   r   r   )
r
   r	   r;   arangearrayrV   rW   KeyErrorr   r   )r   r   msgsorted_indexr!   s        r#   test_slice_locs_not_sorted(TestSliceLocs.test_slice_locs_not_sortedY   s    "))A,'ryy|)<eBIIaL>QR121212
 E]]83/Y	2 0  //!,	95 0/s   D
Dc                 ~   [        / SQ/ SQ// SQ/ SQ/S9nUR                  SS5      nUS:X  d   eUR                  S	S
5      nUS:X  d   eUR                  SS5      nUS:X  d   eUR                  SS
5      nUS:X  d   eUR                  SS5      nUS:X  d   eUR                  SS5      nUS[        U5      4:X  d   eg )N)r   r   r   r:   )r   r   r   )	r   r   r   r   r   r   rR   rR   rR   )	r   r   r   r   r   r   r   r   r   rb   r   r   rS   )rR   r:   r   r   r   r   r   )r:   rR   )rR      rN   r   )r
   r   r   )r   r   r"   s      r#   test_slice_locs_not_contained+TestSliceLocs.test_slice_locs_not_containedk   s      ),.0KL

 !!&&1!!!Q'!!&&1!!!Q'!!&&1!!"b)!SZ(((r&   $index_arr,expected,start_idx,end_idxrT   bcde)r   rR   N)rt   rx   rT   rt   rv   rw   rx   rQ   rv   )rv   rx   c                 \    [         R                  " U5      nUR                  X4S9nXb:X  d   eg N)startend)r
   from_arraysr   )r   	index_arrrJ   	start_idxend_idxr   r"   s          r#   "test_slice_locs_with_missing_value0TestSliceLocs.test_slice_locs_with_missing_value   s0     $$Y/i=!!!r&    )__name__
__module____qualname____firstlineno__r$   rK   r\   rj   rq   rV   markparametrizer;   nanr   __static_attributes__r   r&   r#   r   r      s    ?0326$)4 [[.vvsC /2FBFFDIvvsC /2FBFFCHvvsC /2FBFFJORVVS12FS"&&M4PRVVS12FS"&&M3ORVVS12FS"&&M:V	

"
"r&   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestPutmask   c                 b   Sn[         R                  " [        US9   UR                  [        R
                  " [        U5      S-   [        R                  5      S5        S S S 5        [         R                  " [        US9   UR                  [        R
                  " [        U5      S-
  [        R                  5      S5        S S S 5        [         R                  " [        US9   UR                  SS5        S S S 5        g ! , (       d  f       N= f! , (       d  f       NT= f! , (       d  f       g = f)Nz,putmask: mask and data must be the same sizerO   r   r   )rV   rW   
ValueErrorputmaskr;   rY   r   bool_r   r   rh   s      r#   test_putmask_with_wrong_mask(TestPutmask.test_putmask_with_wrong_mask   s     =]]:S1KKC1bhh7; 2 ]]:S1KKC1bhh7; 2 ]]:S1KKq! 21 21 21 21s%   AC>?AD"D >
D
D 
D.c                 h   [         R                  " [        R                  S4[        R                  S4S/5      n[         R                  " / SQ5      n[        R                  " / SQ5      nUR                  X25      n[         R                  " US   US   US   /5      n[        R                  " XE5        g )Nr:   )rT   r   )rT   r   r   )rw   r   )TTFr   r   r   )r
   from_tuplesr;   r   rf   r   rC   assert_index_equal)r   leftrightmaskr"   rJ   s         r#   test_putmask_multiindex_other)TestPutmask.test_putmask_multiindex_other   s     %%{RVVQK&JK&&'EFxx+,d*))58U1XtAw*GH
f/r&   c                 r   [         R                  " [        R                  " / SQUS9/ SQ/5      n[         R                  " [        R                  " / SQUS9/ SQ/5      nUR	                  / SQU5      n[         R                  " [        R                  " / SQUS9/ SQ/5      n[
        R                  " XE5        g )	Nr   r   rR   r*   rN         r   r:      )rp   TFFr   r   rR   rp   r   r   r
   r~   pdSeriesr   rC   r   r   any_numeric_ea_dtypemidxmidx2r"   rJ   s         r#   test_putmask_keep_dtype#TestPutmask.test_putmask_keep_dtype   s    %%YYy(<=|L
 &&YYy(<=|L
 2E:))YYy(<=|L
 	f/r&   c                 n   [         R                  " [        R                  " / SQUS9/ SQ/5      n[         R                  " [        R                  " S/US9S//5      nUR	                  / SQU5      n[         R                  " [        R                  " / SQUS9/ SQ/5      n[
        R                  " XE5        g )	Nr   r*   r   r   rp   r   r   r   r   r   s         r#   %test_putmask_keep_dtype_shorter_value1TestPutmask.test_putmask_keep_dtype_shorter_value   s    %%YYy(<=|L
 &&YYs"67">
 2E:))YYy(<=|L
 	f/r&   r   N)	r   r   r   r   r   r   r   r   r   r   r&   r#   r   r      s    "
000r&   r   c                      \ rS rSrS rS rS r\R                  R                  SS\
R                  S// SQ/S\
R                  S/\
R                  " / S	Q\
R                  S
94S\
R                  S// SQ/\
R                  S4/\
R                  " S/\
R                  S
94/ SQ\
R                  SS//S\
R                  4/\
R                  " S/\
R                  S
94/ SQ\
R                  SS//\
R                  SS/\
R                  " / S	Q\
R                  S
94/5      S 5       rS r\R                  R                  S/ SQ5      S 5       rS rS rS rS rSrg)TestGetIndexer   c                 r   [        [        R                  " S5      5      n[        [        R                  " S5      5      n[        R                  " / SQ[        R                  S9n[        R                  " / SQ[        R                  S9n[        X/X4/S9nUS S nU/ SQ   nUR                  U5      n[        R                  " U[        R                  " / S	Q[        R                  S95        UR                  US
S9n[        R                  " / SQ[        R                  S9n	[        R                  " X5        UR                  US S S2   S
S9n
[        R                  " XS S S2   5        UR                  USS9n[        R                  " X5        UR                  USS9n[        R                  " / SQ[        R                  S9n	[        R                  " X5        UR                  US S S2   SS9n
[        R                  " XS S S2   5        UR                  USS9n[        R                  " X5        UR                  UR                  5      nUR                  U5      n[        R                  " X5        UR                  / SQ5      nU/ SQ:H  R                  5       (       d   e[        [        [        S5      5      [        [        S5      5      -   5      n[        [        [        S5      5      5      nSn[        R                  " [        US9   UR                  U5        S S S 5        g ! , (       d  f       g = f)Nr   r   )r   r   r   r   r   rR   rR   r*   )r   r   r   r   r   r   r   rb   r   )r   rR   r   )r   rR   rp   padmethod)rp   r   r   r   r   rp   ffillbackfill)r   r   r   r   r   bfillr   rp   rp   rp   rN      z8Reindexing only valid with uniquely valued Index objectsrO   )r	   r;   re   rf   intpr
   get_indexerrC   rD   rE   allr?   rZ   rV   rW   r   )r   
major_axis
minor_axismajor_codesminor_codesr   idx1idx2r1e1r2rffill1rbfill1rexp1rh   s                  r#   test_get_indexerTestGetIndexer.test_get_indexer   s   299Q<(
299Q<(
hh4BGGDhh4BGGD+K3M
 RayYd#
r288Jbgg#FGd51XX&bgg6
r&d4R4j7
rdd8,""4"8
r+d:6XXoRWW5
r&d4R4j<
rdd8,""4"8
r+ dkk*  &
r)i(l"'')))) T%)_tE"I67T%)_%H]],C8T" 988s   L((
L6c                 N   [         R                  " SS/5      nSn[        R                  " [        US9   UR                  S/SS9  S S S 5        Sn[        R                  " [        US9   UR                  S/S	S
S9  S S S 5        g ! , (       d  f       NE= f! , (       d  f       g = f)Nr   rt   r   zJmethod='nearest' not implemented yet for MultiIndex; see GitHub issue 9365rO   rT   nearestr   z,tolerance not implemented yet for MultiIndexr   r   )r   	tolerance)r
   r   rV   rW   NotImplementedErrorr   )r   r   rh   s      r#   test_get_indexer_nearest'TestGetIndexer.test_get_indexer_nearest  s    %%x&:;$ 	 ]].c:cU95 ;<]].c:cU5A> ;: ;: ;:s   B)B
B
B$c                     [         R                  " [        / SQ5      [        [        SSSS95      /5      nUR	                  U5      n[
        R                  " U[        R                  " S[        R                  S95        g )Nry   
2012-01-01rR   hr.   	   r*   )
r
   from_productr   r   r   rC   assert_numpy_array_equalr;   re   r   )r   r   r"   s      r#   !test_get_indexer_categorical_time0TestGetIndexer.test_get_indexer_categorical_time  sa    &&O,J|QSIJ
 !!$'
##FBIIarww,GHr&   zindex_arr,labels,expectedr   r   rR   r   r   r   r*   r   r   r   r   c                 ~    [         R                  " U5      nUR                  U5      n[        R                  " XS5        g )N)r
   r~   r   rC   r   )r   r   labelsrJ   r   r"   s         r#   #test_get_indexer_with_missing_value2TestGetIndexer.test_get_indexer_with_missing_value  s0    & $$Y/(
##F5r&   c                 :   [         R                  " / SQ/ SQ/5      n[         R                  " S// SQ/5      nUR                  U5      n[        R                  " / SQUR
                  S9n[        R                  " XC5        UR                  USS9n[        R                  " / S	QUR
                  S9n[        R                  " XE5        UR                  US
S9n[        R                  " / S	QUR
                  S9n[        R                  " XE5        UR                  USS9n[        R                  " / SQUR
                  S9n[        R                  " XF5        UR                  USS9n[        R                  " / SQUR
                  S9n[        R                  " XF5        g )N)rp   r   r   )r   r   rR   r   r   )r   rR   r   )rp   r:   r   r*   r   r   r   r   r   )r   r:   r   r   )r
   r   r   r;   rf   r+   rC   rD   r   
mult_idx_1
mult_idx_2indexerrJ   backfill_indexerpad_indexers          r#   test_get_indexer_methods'TestGetIndexer.test_get_indexer_methods3  sN   6  ,,j,-GH
,,qc9-=>
((488Jgmm<
x1%11*Z1P88I-=-C-CD
x: &11*W1M88I-=-C-CD
x: ,,Z,F88I[->->?
x5 !,,Z,H88I[->->?
x5r&   r   )r   r   r   r   r   c                     [         R                  " / SQ/ SQ/5      nUS:X  a	  [        nSnO[        nSn[        R
                  " X4S9   UR                  S/US9  S S S 5        g ! , (       d  f       g = f)N)r   r   r   r   z"not implemented yet for MultiIndexz0index must be monotonic increasing or decreasingrO   r   r   r   )r
   r~   r   r   rV   rW   r   )r   r   mierrrh   s        r#   0test_get_indexer_methods_raise_for_non_monotonic?TestGetIndexer.test_get_indexer_methods_raise_for_non_monotonicg  s_     ##Y	$:;Y%C6CCDC]]3*NNF8FN3 +**s   A##
A1c                    [         R                  " SS// SQSS//5      n[         R                  " / SQ5      nUR                  (       d   eUR                  (       d   eUR                  (       d   eUR                  (       d   eUS   US   :  d   eUS   US   s=:  a
  US   :  d   e   eUS   US	   :X  d   eUS   US   s=:  a
  US
   :  d   e   eUS   US   s=:  a
  US
   :  d   e   eUS   US   s=:  a
  US
   :  d   e   eUS   US
   :  d   eUR                  U5      n[        R                  " / SQUR                  S9n[        R                  " XC5        UR                  USS9n[        R                  " / SQUR                  S9n[        R                  " XE5        UR                  USS9n[        R                  " / SQUR                  S9n[        R                  " XF5        US   US   s=:  a
  US   :  d   e   eUS   US   s=:  a
  US   :  d   e   eUS   US	   s=:  a
  US   :  d   e   eUS   US   s=:  a
  US   :  d   e   eUS   US   s=:  a
  US	   :  d   e   eUS	   US   :X  d   eUS   US
   s=:  a
  US
   :  d   e   eUS   US   s=:  a
  US
   :  d   e   eUS   US   s=:  a
  US
   :  d   e   eUS   US   s=:  a
  US
   :  d   e   eUS   US   s=:  a
  US
   :  d   e   eUS   US   s=:  a
  US
   :  d   e   eUR                  U5      n[        R                  " / SQUR                  S9n[        R                  " XG5        UR                  USS9n[        R                  " / SQUR                  S9n[        R                  " XH5        UR                  USS9n	[        R                  " / SQU	R                  S9n[        R                  " XI5        g )Nr   rR   )r   r   r:   r   r   ))r   r   ro   )r   r   r   )r   r:   r   )r   r   r:   )r   r   r   )r   r   ro   )rR   r:   ro   r   r   r   r:   rp   )rp   rp   r   rp   rp   rp   rp   r*   r   r   )r   r   r   r:   r:   r:   rp   r   )rp   rR   r   r   r   r   r   ro   r   rN   r   )rp   rp   rp   rp   rp   r   rp   rp   rp   rp   rp   rp   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   r;   rf   r+   rC   rD   )
r   r   r   indexer_no_fillrJ   indexer_backfilledindexer_paddedr   r   r   s
             r#   %test_get_indexer_three_or_more_levels4TestGetIndexer.test_get_indexer_three_or_more_levelst  sa   4  ,,q!fi!Q-HI
++


 1111####1111#### !}z!},,,!}z!}<z!}<<<<<!}
1---!}z!}<z!}<<<<<!}z!}<z!}<<<<<!}z!}<z!}<<<<<"~
1---$00<887?T?TU
x9 (33Jz3R882:L:R:RS
x< $//
5/I883>;O;OP
x8 !}z!}<z!}<<<<<!}z!}<z!}<<<<<!}z!}<z!}<<<<<!}z!}<z!}<<<<<!}z!}<z!}<<<<<!}
1---!}z!}<z!}<<<<<!}z!}<z!}<<<<<!}z!}<z!}<<<<<!}z!}<z!}<<<<<!}z"~=
1=====!}z"~=
1=====((488;7==
 	x1%11*W1M8808H8N8N
 	x: ,,Z,F8808I8I
 	x5r&   c                 j   [         R                  " SS//S-  5      n[         R                  " SS/5      nUS   US   s=:  a
  US   :  d   e   eUS	   US   :  d   eUR                  U5      n[        R
                  " S	S	/UR                  S
9n[        R                  " XC5        UR                  USS9n[        R
                  " SS	/UR                  S
9n[        R                  " XE5        UR                  USS9n[        R
                  " SS/UR                  S
9n[        R                  " XF5        g )Nr   r   r   )r   rR   r   r   )r   rR   r   r   r   r   ro   rp   r*   r   r   r   r5   )	r
   r   r   r   r;   rf   r+   rC   rD   r   s          r#    test_get_indexer_crossing_levels/TestGetIndexer.test_get_indexer_crossing_levels  s"   6  ,,q!fX\:
++\<,HI
 !}z!}<z!}<<<<<"~
1---((488RHGMM:
x1%11*W1M88QG+;+A+AB
x: ,,Z,H88QG;+<+<=
x5r&   c                 j   [         R                  " [        S5      SS//5      nSn[        R                  " [
        US9   UR                  US S SS9  S S S 5        S	n[        R                  " [
        US9   UR                  US S S
S9  S S S 5        g ! , (       d  f       NF= f! , (       d  f       g = f)NrR   Ar-   z;limit argument only valid if doing pad, backfill or nearestrO   rp   r   )limitz?tolerance argument only valid if doing pad, backfill or nearestpiano)r   )r
   r   rZ   rV   rW   r   r   )r   r   rh   s      r#   !test_get_indexer_kwarg_validation0TestGetIndexer.test_get_indexer_kwarg_validation  s    $$eAhc
%;<K]]:S1NN2cr7!N, 2 P]]:S1NN2cr7gN6 21	 21 21s   B6B$
B!$
B2c                 X   [         R                  " S/SS//SS/S9n[         R                  " S/[        R                  S//SS/S9n[        R                  " SS/5      nUR                  U5      n[        R                  " XCS	S
9  UR                  U5      n[        R                  " XCS	S
9  g )Nr        ?       @id1id2namesrp   r   F)check_dtype)r
   r   r;   r   rf   r   rC   r   )r   r   r   rJ   r"   s        r#   test_get_indexer_nan#TestGetIndexer.test_get_indexer_nan  s    &&Sz':5%.Q&&}'=eU^T88RG$!!$'
##F%H!!$'
##F%Hr&   r   N)r   r   r   r   r   r   r   rV   r   r   r;   r   rf   r   r   r   r   r   r  r  r  r   r   r&   r#   r   r      s[   2#h
?	I [[# RVVQ+BFFARWW5
 "&&!ni(BFFA;-1#RWW9UV"&&!Q(Arvv;-1#RWW9UVRVVQN+ARWW5	
"6#"626h [[X'WX
4 Y
4a6F,6\
7Ir&   r   c                    U S   S:X  d   eU SS nU / SQ   nUR                  U5      (       d   eU / SQ   nU [        R                  " / SQ5         nU / SQ   nUR                  U5      (       d   eUR                  U5      (       d   eg )Nr   )r   r   r   r   rR   r   )TFTFTT)r   r   r   r   )equalsr;   rf   )r   r"   rJ   result2s       r#   test_getitemr    s    q6^### 1XF9~H=="""" 78F"((ABCG< H=="""">>(####r&   c                     U R                  S5      u  pUR                  S5      [        SS5      :X  d   eUR                  S5      [        SS5      :X  d   eg )Nr   r   rR   r   r   r   )r   get_locrB   )r   r    r!   s      r#   test_getitem_group_selectr  -  sP    MM!$MJe$a333e$a333r&   ind1Tr   ind2)TFTFFc                     [         R                  " / SQ5      n[        R                  " X    U5        [         R                  " SS/5      n[        R                  " X!   U5        g )N)rN   r   )r   r   r7   rR   )(   r   )r(   r   r  r  )r
   r   rC   r   r  r  r   rJ   s       r#   test_getitem_bool_index_allr"  3  sN     
 
 !N
OC#)S)%%w&89H#)X.r&   Fc                 6   [         R                  " S/5      n[        R                  " X    U5        [        [        R
                  " / [        R                  S9[        R
                  " / [        R                  S9// / /S9n[        R                  " X!   U5        g )Nr  r*   rb   )r
   r   rC   r   r;   rf   int64r!  s       r#   test_getitem_bool_index_singler%  A  ss     
 
 '
+C#)S)288,bhhr.JK2hH #)X.r&   c                      \ rS rSrS rS rS r\R                  R                  S\
\\\/5      \R                  R                  S\
\\\/5      S 5       5       r\R                  R                  SS	S
/5      \R                  R                  S\
\/\\
//5      S 5       5       r\R                  R                  S\\/5      S 5       r\R                  R                  SS	S
/5      S 5       rS rS rS rS rS rS rSrg)
TestGetLociO  c           	         UR                  S5      S:X  d   eUR                  S5      S:X  d   e[        R                  " [        SS9   UR                  S5        S S S 5        [        R                  " [        SS9   UR                  S	5        S S S 5        [	        [        [        R                  " S
5      5      [        [        R                  " S
5      5      [        [        R                  " S
5      5      /[        R                  " / SQ5      [        R                  " / SQ5      [        R                  " / SQ5      /S9n[        R                  " [        SS9   UR                  S5        S S S 5        UR                  S5      [        SS5      :X  d   eg ! , (       d  f       GN@= f! , (       d  f       GN= f! , (       d  f       NT= f)Nr   r   )r   r   rR   z^\('bar', 'two'\)$rO   r   r   z^'quux'$quuxr   r_   r`   ra   rb   z
^\(1, 1\)$r   )r   r   r   )
r  rV   rW   rg   r
   r	   r;   re   rf   rB   )r   r   r   s      r#   test_get_locTestGetLoc.test_get_locP  s1   {{>*a///{{>*a///]]8+@AKK' B]]8;7KK 8 "))A,'ryy|)<eBIIaL>QR121212
 ]]8=9MM&! :}}V$a333! BA77 :9s$   F;F%F7
F"%
F47
Gc                 <   [        / SQ5      nUR                  S5      n[        SS5      nX#:X  d   e[        / SQ5      nUR                  S5      nSnXE:X  d   e[        R                  " [
        SS9   UR                  S5        S S S 5        g ! , (       d  f       g = f)	N)r   r   r   r   r   r   r   )rv   rT   rT   rt   rt   rv   2rO   )r	   r  rB   rV   rW   rg   )r   r   r"   rJ   rsxps         r#   test_get_loc_duplicates"TestGetLoc.test_get_loc_duplicatese  s~    l#q!A;!!!/0]]3xx]]83/MM! 0//s   2B
Bc           	      x   [        [        [        R                  " S5      5      [        [        R                  " S5      5      [        [        R                  " S5      5      /[        R                  " / SQ5      [        R                  " / SQ5      [        R                  " / SQ5      /S9nUR                  S5      u  p#[        SS5      nX   R                  S	5      R                  S	5      nX$:X  d   eUR                  U5      (       d   eUR                  S
5      u  p#SnX$:X  d   eUb   e[        R                  " [        SS9   UR                  S5        S S S 5        [        R                  " [        SS9   UR                  S5      R                  S5        S S S 5        [        R                  " [        SS9   UR                  SSS9R                  SSS9  S S S 5        [        S/[        [        S5      5      /[        R                  " / SQ5      [        R                  " / SQ5      /S9nUR                  S[        S S 5      45      u  pc[        S S 5      nXd:X  d   eUR                  UR                  S	5      5      (       d   eg ! , (       d  f       GN8= f! , (       d  f       GN= f! , (       d  f       N= f)Nr   r_   r`   ra   rb   r   r   r   r   r   )r   r   r   z
^\(2, 2\)$rO   rn   z^2$)leveli  )r   r   r   r   )r   r   r   rR   )r
   r	   r;   re   rf   get_loc_levelrB   	droplevelr  rV   rW   rg   dropr?   rZ   )r   r   loc	new_indexrJ   	exp_indexr"   s          r#   test_get_loc_levelTestGetLoc.test_get_loc_levels  s    "))A,'ryy|)<eBIIaL>QR121212
 ,,V4A;O--a0::1=		****,,Y7   ]]8=9' : ]]862JJqM''* 3 ]]862JJqJ"00!0< 3 FDqN+88L)288L+AB
 "//uT47H0IJt$!!! 23333! :9 32 32s$   J7!J9J+
J
J(+
J9dtype1dtype2c                     [         R                  " SS/5      R                  U5      [         R                  " SS/5      R                  U5      /n[        R                  " U5      nUR                  US   5      S:X  d   eg )Nr   r   r   )r;   rf   astyper
   r   r  )r   r>  r?  rc   r   s        r#   test_get_loc_multiple_dtypes'TestGetLoc.test_get_loc_multiple_dtypes  si     ((Aq6"))&1288QF3C3J3J63RS%%f-{{3q6"a'''r&   r5  r   r   dtypesc                     SS/SS//nSS/nUu  pV[         R                  " SS/US9X1'   U" S5      XA'   [        R                  " U5      nUR	                  [        U5      5      S:X  d   eg )	NrT   rt   rv   rw   r   r   r*   rR   )r;   rf   r
   r   r  tuple)r   r5  rD  rc   key	lev_dtype	key_dtyper   s           r#   test_get_loc_implicit_cast%TestGetLoc.test_get_loc_implicit_cast  ss     *sCj)Cj%	!Qy9q\
%%f-{{5:&!+++r&   r+   c                    [        SS/US9[        R                  " SSS9/n[        R                  " U5      nU[
        L au  [        R                  " [        SS9   UR                  S5      S	:X  d   e S S S 5        [        R                  " [        S
S9   UR                  S5      S:X  d   e S S S 5        O.UR                  S5      S	:X  d   eUR                  S5      S:X  d   e[        R                  " [        SS9   UR                  S5        S S S 5        [        R                  " [        SS9   UR                  S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nd= f! , (       d  f       g = f)NFTr*   r   r$  z
^\(0, 1\)$rO   r4  r   z
^\(1, 0\)$rm   z^\(False, True\)$)FTz^\(True, False\)$)TF)
r	   r;   re   r
   r   boolrV   rW   rg   r  )r   r+   rc   r   s       r#   test_get_loc_cast_bool!TestGetLoc.test_get_loc_cast_bool  s(    U3RYYq5PQ%%f-D=x}={{6*a/// >x}={{6*a/// >= ;;v&!+++;;v&!+++]]8+?@KK& A]]8+?@KK& A@ >=== A@@@s0   EE=E-0E>
E
E*-
E;>
Fc                     SS/SS//nSS/n[         R                  " SU/[        U5      S9X1'   X$U'   [        R                  " U5      nUR                  [        U5      5      S:X  d   eg )NrT   rt   rv   rw   r   r*   rR   )r;   rf   typer
   r   r  rF  )r   r5  nulls_fixturerc   rG  r   s         r#   test_get_loc_nanTestGetLoc.test_get_loc_nan  sm     *sCj)Cj!]!34;NO"E
%%f-{{5:&!+++r&   c                 Z   [         R                  " SS/SS//5      n[        UR                  S5      [        5      (       d   e[
        R                  " [        SS9   UR                  S5        S S S 5        [
        R                  " [        S	S9   UR                  [        R                  5        S S S 5        [
        R                  " [        S
S9   UR                  [        R                  /5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nb= f! , (       d  f       g = f)Nr
  r  g      @g      @r   z^3$rO   rR   z^nan$z\[nan\])r
   r~   
isinstancer  rB   rV   rW   rg   r;   r   r   r   r   s     r#   test_get_loc_missing_nan#TestGetLoc.test_get_loc_missing_nan  s    $$sCj3*%=>#++a.%0000]]862KKN 3]]884KK 5]],J?KK! @?	 3244??s$   C: D!D:
D
D
D*c                 ~   [         R                  " [        R                  S//S-  5      n[	        SSS 5      nUR                  [        R                  5      U:X  d   e[         R                  " [        R                  SS[        R                  //5      n[        R                  " / SQ5      n[        R                  " UR                  [        R                  5      U5        [         R                  " [        R                  S//S-  5      n[	        SSS 5      nUR                  [        R                  S45      U:X  d   eg )Nr   r   r   )TFFTrR   r   )
r
   r   r;   r   rB   r  r~   rf   rC   r   )r   r   rJ   s      r#   1test_get_loc_with_values_including_missing_values<TestGetLoc.test_get_loc_with_values_including_missing_values  s    %%{ma&78At${{266"h...$$rvvq!RVV&<%=>8867
##CKK$7B%%{ma&78At${{BFFA;'8333r&   c                 x    [        / SQ/ SQ// SQ/ SQ/SS/S9nUR                  S5      [        S	S
5      :X  d   eg )N)Dr-   C)r         %   9   C   K   R   )
r   r   r   r   r   r   r   r   r   r   )
r   rR   r   r:   r   r   r   rR   r   r   tagdayrc   rd   r  r^  r   rR   )r
   r  rB   )r   r   s     r#   test_get_loc_duplicates2#TestGetLoc.test_get_loc_duplicates2  sD    #%DE13QR%.
 }}S!U1a[000r&   c                     [        S/SS/S//SS/SS/SS/// SQSS9nSn[        R                  " [        5         UR	                  U5      nS S S 5        W[        SSS 5      :X  d   eg ! , (       d  f       N"= f)NrT   r   r   r   )xyz)rc   rd   r  	sortorder)rT   r   )r
   rC   assert_produces_warningr   r  rB   )r   r   rG  r"   s       r#   test_get_loc_past_lexsort_depth*TestGetLoc.test_get_loc_past_lexsort_depth  s    EAq6A3'q6Aq6Aq6*!	
 ''(:;[[%F < q!T****	 <;s   A))
A7c                     [         R                  " SS/5      nSn[        R                  " [        US9   UR                  / 5        S S S 5        g ! , (       d  f       g = f)Nr   r   z\[\]rO   )r
   r   rV   rW   r   r  r   s      r#   #test_multiindex_get_loc_list_raises.TestGetLoc.test_multiindex_get_loc_list_raises  sB    $$h%9:]],C8KKO 988   A
Ac                 F   [         R                  " [        S5      [        S5      [        S5      [        S5      /5      nSn[        R                  " [
        [        R                  " [        U5      5      S9   UR                  U5        S S S 5        g ! , (       d  f       g = f)NrR   r   r   r:   )r  r   rO   )
r
   r   rZ   rV   rW   rg   reescapestrr  )r   r   rG  s      r#   )test_get_loc_nested_tuple_raises_keyerror4TestGetLoc.test_get_loc_nested_tuple_raises_keyerror  sc    $$eAha%(E!H%MN ]]8299SX+>?JJsO @??s   7B
B r   N)r   r   r   r   r+  r1  r<  rV   r   r   intfloatrM  r{  rB  rJ  r@   rN  rS  rX  r[  rj  rr  ru  r|  r   r   r&   r#   r'  r'  O  s$   4*$4L [[XUD#'>?[[XUD#'>?( @ @( [[Wq!f-[[Xeucl'CD, E ., [[WtVn5' 6'* [[Wq!f-, .,
"41+ r&   r'  c                        \ rS rSrS rS rSrg)	TestWherei  c                     [         R                  " SS/5      nSn[        R                  " [        US9   UR                  S5        S S S 5        g ! , (       d  f       g = f)Nr  r   r  r   2\.where is not supported for MultiIndex operationsrO   Tr
   r   rV   rW   r   where)r   r[   rh   s      r#   
test_whereTestWhere.test_where  sB    ""Hh#78C]].c:GGDM ;::rw  c                     [         R                  " SS/5      nSS/nSn[        R                  " [        US9   UR                  U" U5      5        S S S 5        g ! , (       d  f       g = f)Nr  r  FTr  rO   r  )r   listlike_boxr   condrh   s        r#   test_where_array_likeTestWhere.test_where_array_like  sQ    ##Xx$89t}C]].c:HH\$'( ;::s   A
A'r   N)r   r   r   r   r  r  r   r   r&   r#   r  r    s    )r&   r  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestContainsi!  c                 p    [         R                  " SS/SS//5      nSU;   d   eSUR                  ;  d   eg )Nr  r-   r   r   )r
   r   _engine)r   r   s     r#   test_contains_top_level$TestContains.test_contains_top_level"  s=    &&c
QF';<d{{$,,&&&r&   c                     [        S/[        SSS9// SQ/ SQ/S S/S9nS[        R                  " S5      4U;   d   eUR                   H
  nX!;   a  M
   e   g )	Nr_  r   r   )r/   )r   r   r   r   r   r   )rp   r   r   r   rR   r   r-   ri  )r
   r   r   	TimestamprE   )r   r   vals      r#   test_contains_with_nat#TestContains.test_contains_with_nat'  sc    E:lA>?%':;+

 R\\,/0B66699C99 r&   c                 4    SU;   d   eSU;  d   eS U;  d   eg )Nr   r)  r   rW  s     r#   test_containsTestContains.test_contains2  s*    $$$S(((3r&   c                 0   [         R                  " S[        R                  S//5      n[        R                  U;   d   e[         R                  " SS/[        R                  S//5      n[        R                  U;  d   eS[        R                  4U;   d   eg )Nr   r   rR   )r
   r~   r;   r   rW  s     r#    test_contains_with_missing_value-TestContains.test_contains_with_missing_value7  sx    $$q"&&!n%56vv}}$$q!frvvqk%:;vvS   266{c!!!r&   c                 L   [         R                  " SS/SS//5      nSU;   d   eUR                  S5      nSUR                  S   ;   d   eSU;  d   e[         R                  " SS/SS	//5      nSU;   d   eUR                  S5      nSUR                  S   ;   d   eSU;  d   eg )
Nr   r   rR   r   r   rT   rt   rv   rw   )r
   r   r8  rc   rW  s     r#    test_multiindex_contains_dropped-TestContains.test_multiindex_contains_dropped@  s     %%1v1v&67Cxxhhqk CJJqM!!!|| %%SzC:&>?czzhhsmcjjm####~~r&   c                     [         R                  " SSSS9n[        R                  " U[        R
                  " [        U5      5      /5      nUS   U;   d   eSU;  d   eSU;   d   eg )Nz09:30:00z16:00:00z30 min)r0   r   element_not_exitz0 day 09:30:00)r   timedelta_ranger
   r~   r;   re   r   )r   txr   s      r#   test_contains_td64_level%TestContains.test_contains_td64_levelT  sd    
JXF$$b"))CG*<%=>!u||!,,,3&&&r&   c                     UR                  5          UR                  [        SS5        [        R                  " [        S5      [        S5      /5      nSU;  d   e S S S 5        g ! , (       d  f       g = f)N_SIZE_CUTOFFrN   )rN   r   )contextsetattrlibindexr
   r~   rZ   )r   monkeypatchr"   s      r#   test_large_mi_contains#TestContains.test_large_mi_contains\  sW      "."=++U2Yb	,BCF&((( #""s   A
A%%
A3r   N)r   r   r   r   r  r  r  r  r  r  r  r   r   r&   r#   r  r  !  s%    '
	
"(')r&   r  c            	         [         R                  " [        SSSSS9S/S//5      n [        S[        R
                  " [        U 5      5      0U 5      nUR                  [        R                  S	S 2SS S 24   S4   n[         R                  " [        S
SSSS9S/S//5      n[        R                  " [        R
                  " S[        U5      S-   5      USS9n[        R                  " X$5        g )Nz2019-01-01T00:15:33d   r   date)r/   r0   rU   rm  rR   r   z2019-1-2z2019-01-02T00:15:33z2019-01-05T03:15:33)r|   r}   r0   rU   r   )datar   rU   )r
   r   r   r   r;   re   r   r9  r   
IndexSlicer   rC   assert_series_equal)r   rF   r"   qidx	should_bes        r#   !test_timestamp_multiindex_indexerr  d  s    

!
!,c&QEC	
C 
E299SX./	5BVVBMM*+sA"56=>F""+)	 EC		
D 		ryySY^<DuUI6-r&   zindex_arr,expected,target,algorT   rt   ru   r   r   rv   r   ry   rw   c                 \    [         R                  " U 5      nUR                  X#S9nXQ:X  d   eg )N)side)r
   r~   get_slice_bound)r   rJ   targetalgor   r"   s         r#   'test_get_slice_bound_with_missing_valuer    s3     
 
 
+C   3Fr&   rs   r   r   rR   )r   r   r   r   )rR   r   c                 \    [         R                  " U 5      nUR                  X#S9nXQ:X  d   eg r{   )r
   r~   slice_indexer)r   rJ   r   r   r   r"   s         r#   %test_slice_indexer_with_missing_valuer    s3     
 
 
+CY<Fr&   c                     Sn S/S-  U -  S/S-  U -  S/S-  U -  [         R                  /U -  S/S-  U -  -   S/U -  S/S-  U -  -   [         R                  /U -  S/S-  U -  -   S/U -  -   4 Vs/ s H  n[        U5      PM     nn[        U5       H  u  p4[        R
                  " U5      nUR                  U5      U:X  d   e[         R                  " US-   [         R                  S9nUR                  U Vs/ s H  orU   PM	     sn5      n[        R                  " X5        M     [        [        U5      5      n	[         R                  " S	/[        U	5      -   [         R                  S9n[        SS/S-  U -  5      n
WR                  U
/U	 Vs/ s H  orU   PM	     sn-   5      n[        R                  " X5        g s  snf s  snf s  snf )
Nr   r   rN   r   r   r   ro   r*   rp   )r;   r   rF  	enumerater
   r   r  re   r   r   rC   r   rZ   r   rf   r?   )Narrkeysr   	key_valuer   rJ   r[   r"   idcesmissings              r#   test_pyint_enginer    s    	
A C"HqLC"HqLC"HqLVVHqLA37Q;&C!GqcAgk!VVHqLA37Q;&!q0


C 	c

 	 
" $D/&&t,}}Y'3...99S1WBGG4""X#>XGX#>?
##F5 * #d)ExxtE{*"'':HQFQJN#GyU+CUGU+CCDF1=
, $? ,Ds   /F=8G
G
zkeys,expected)TFTr:   c                     [         R                  " / SQ/ SQ/5      nUR                  U 5      n[        R                  " U[        R
                  S9n[        R                  " X15        g )N)r   r   r   )r   r   r:   r*   )r
   r~   get_locsr;   rf   r   rC   r   )r  rJ   r   r"   s       r#   test_get_locs_reorderingr    sQ     
 
 	
C \\$Fxx0H1r&   c                    [         R                  " S/SS//SS/S9n[         R                  " S/U S//SS/S9nUR                  U5      n[        R                  " SS/[        R
                  S	9n[        R                  " X45        UR                  U5      n[        R                  " SS/[        R
                  S	9n[        R                  " X45        g )
Nr  r
  r  r  r  r  rp   r   r*   )r
   r   r   r;   rf   r   rC   r   )rR  r   r   r"   rJ   s        r#   )test_get_indexer_for_multiindex_with_nansr    s    ""SEC:#6uenMD""SEM3+?#@PUWDd#FxxQrww/H1d#FxxQrww/H1r&   )*datetimer   ry  numpyr;   rV   pandas._libsr   r  pandas.errorsr   r   pandasr   r   r   r	   r
   r   pandas._testing_testingrC   r   r   r   r  r  r   r   r"  r%  r'  r  r  r  r   r  rB   r  r  r  r  r   r&   r#   <module>r     s    	   *
   ~" ~"B40 40nII IIX
$"4 4&1*eTFQJ.?!@A
&.O(PQ/	 B
/ 4&%-!895'5%>!:;	/ < :	/ D) ) @) @)F.6 $663
o	.2666B663
o	.BFFC='J
C-	.C=&I *661a.)	$eAq$&7C661a.)	$eAq$&7H
a^	$eAq$&7!RVVaH
a^	$eAq$&7!RVVfM	#2L 
+1v	A'
+1v	A'
1v	&A/
1v	&A/
aVq!f
aVq!f#1vA#1vA	
2
22r&   