
    A>i                     z   S SK Jr  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  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\R8                  R;                  S\\/5      S 5       r\R8                  R;                  S\\/5      S 5       r  " S S5      r! " S S5      r" " S S5      r#S r$\R8                  R;                  S\RJ                  SS// SQ/S \RJ                  S4\RJ                  SS// SQ/S\RJ                  S4S 4/ S!QS"\RJ                  S"//SS\RJ                  4S4/5      S# 5       r&\R8                  R;                  S$\RJ                  SS%// S&Q/\'" S S%S5      \RJ                  S4\RJ                  SS%// S&Q/\'" S S'S5      \RJ                  S(4/ S)QS*\RJ                  S+//\'" SS'S5      S%\RJ                  4S'4/ S)QS*\RJ                  S+//\'" SS'S5      S%\RJ                  4S,4/5      S- 5       r(\R8                  R;                  S./ S/Q5      S0 5       r)\R8                  R;                  S1\'" S5      S+S*/4SS /4\'" S5      S*S+/4S S/4/ S2QS*S3/4S S%/4/ S2QS3S*/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      S4 5       r*S5 r+S6 r,g)7    )
namedtuple)	timedeltaN)index)InvalidIndexError)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        g/var/www/html/land-tabula/venv/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                  5       nUR                  n[        UR                  UR                  S
   UR                  S   5      6 nX$   nUS
S R                  5       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                  5       n[        R                  " UR                  UR                  5        g )Nr   )2   r   ABCDdtype
2000-01-01r(   Bperiodsfreqcolumnsr   r            seconds   )r   nprandomdefault_rngstandard_normalr	   listobjectr   stackr   slicer   tmassert_almost_equalvaluesr   )r   dfstackedr   slobslicedexpecteds          r#   test_slice_locsTestSliceLocs.test_slice_locs&   s"   II!!!$44W=$v,f5\2C@

 ((*mmcnnRXXa["((2,?@a8>>#
v}}hoo>^^i33y44
 a8>>#
v}}hoo>r&   c                    [        [        R                  R                  S5      R	                  S5      [        [        S5      [        S9[        SSSS9S	9nUR                  5       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                  5       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N[= 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,   rL   r-   r.   r1   z^Level type mismatchmatchr      r   r5   r6   r   r   )r   r   zi-a)name)r   r2   r   )r4   rR   )r   r9   r:   r;   r<   r	   r=   r>   r   r?   r   pytestraises	TypeErrorr   r   onesrange)r   rD   rE   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<   G1>*HHHH H01
H 
H
H-0
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   rP   rP   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 depthrM   )r   r   r   )r   r   r   r   )
r
   r	   r9   arangearrayrT   rU   KeyErrorr   r   )r   r   msgsorted_indexr!   s        r#   test_slice_locs_not_sorted(TestSliceLocs.test_slice_locs_not_sortedW   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   r8   )r   r   r   )	r   r   r   r   r   r   rP   rP   rP   )	r   r   r   r   r   r   r   r   r   r`   r   r   rQ   )rP   r8   r   r   r   r   r   )r8   rP   )rP      rL   r   )r
   r   r   )r   r   r"   s      r#   test_slice_locs_not_contained+TestSliceLocs.test_slice_locs_not_containedi   s      ),.0KL

 !!&&1!!!Q'!!&&1!!!Q'!!&&1!!"b)!SZ(((r&   $index_arr,expected,start_idx,end_idxrR   bcde)r   rP   N)rr   rv   rR   rr   rt   ru   rv   rO   rt   )rt   rv   c                 \    [         R                  " U5      nUR                  X4S9nXb:X  d   eg N)startend)r
   from_arraysr   )r   	index_arrrH   	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$   rI   rZ   rh   ro   rT   markparametrizer9   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 sizerM   r   r   )rT   rU   
ValueErrorputmaskr9   rW   r   bool_r   r   rf   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 )Nr8   )rR   r   )rR   r   r   )ru   r   )TTFr   r   r   )r
   from_tuplesr9   r   rd   r   rA   assert_index_equal)r   leftrightmaskr"   rH   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   rP   r*   rL         r   r8      )rn   TFFr   r   rP   rn   r   r   r
   r|   pdSeriesr   rA   r   r   any_numeric_ea_dtypemidxmidx2r"   rH   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   rn   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   rP   rP   r*   )r   r   r   r   r   r   r   r`   r   )r   rP   r   )r   rP   rn   padmethod)rn   r   r   r   r   rn   ffillbackfill)r   r   r   r   r   bfillr   rn   rn   rn   rL      z8Reindexing only valid with uniquely valued Index objectsrM   )r	   r9   rc   rd   intpr
   get_indexerrA   rB   rC   allr=   rX   rT   rU   r   )r   
major_axis
minor_axismajor_codesminor_codesr   idx1idx2r1e1r2rffill1rbfill1rexp1rf   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   rr   r   zJmethod='nearest' not implemented yet for MultiIndex; see GitHub issue 9365rM   rR   nearestr   z,tolerance not implemented yet for MultiIndexr   r   )r   	tolerance)r
   r   rT   rU   NotImplementedErrorr   )r   r   rf   s      r#   test_get_indexer_nearest'TestGetIndexer.test_get_indexer_nearest  s    %%x&:;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 )Nrw   
2012-01-01rP   hr.   	   r*   )
r
   from_productr   r   r   rA   assert_numpy_array_equalr9   rc   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   rP   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   rA   r   )r   r}   labelsrH   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)rn   r   r   )r   r   rP   r   r   )r   rP   r   )rn   r8   r   r*   r   r   r   r   r   )r   r8   r   r   )r
   r   r   r9   rd   r+   rA   rB   r   
mult_idx_1
mult_idx_2indexerrH   backfill_indexerpad_indexers          r#   test_get_indexer_methods'TestGetIndexer.test_get_indexer_methods0  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 decreasingrM   r   r   r   )r
   r|   r   r   rT   rU   r   )r   r   mierrrf   s        r#   0test_get_indexer_methods_raise_for_non_monotonic?TestGetIndexer.test_get_indexer_methods_raise_for_non_monotonicd  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   rP   )r   r   r8   r   r   ))r   r   rm   )r   r   r   )r   r8   r   )r   r   r8   )r   r   r   )r   r   rm   )rP   r8   rm   r   r   r   r8   rn   )rn   rn   r   rn   rn   rn   rn   r*   r   r   )r   r   r   r8   r8   r8   rn   r   )rn   rP   r   r   r   r   r   rm   r   rL   r   )rn   rn   rn   rn   rn   r   rn   rn   rn   rn   rn   rn   r   )r   r   r   r   r   r   r8   r8   r8   r8   r8   r8   )r   r   r   r   r   r   r   r   r   r   r   r   )r
   r   r   is_monotonic_increasing	is_uniquer   r9   rd   r+   rA   rB   )
r   r   r   indexer_no_fillrH   indexer_backfilledindexer_paddedr   r   r   s
             r#   %test_get_indexer_three_or_more_levels4TestGetIndexer.test_get_indexer_three_or_more_levelsq  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   rP   r   r   )r   rP   r   r   r   r   rm   rn   r*   r   r   r   r3   )	r
   r   r   r   r9   rd   r+   rA   rB   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)NrP   Ar-   z;limit argument only valid if doing pad, backfill or nearestrM   rn   r   )limitz?tolerance argument only valid if doing pad, backfill or nearestpiano)r   )r
   r   rX   rT   rU   r   r   )r   r   rf   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namesrn   r   F)check_dtype)r
   r   r9   r   rd   r   rA   r   )r   r   r   rH   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   rT   r   r   r9   r   rd   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   rP   r   )TFTFTT)r   r   r   r   )equalsr9   rd   )r   r"   rH   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   rP   r   r   r   )r   get_locr@   )r   r    r!   s      r#   test_getitem_group_selectr  *  sP    MM!$MJe$a333e$a333r&   boxc                     U " S/S-  5      n[         R                  " / SQ5      n[        R                  " X!   U5        U " / SQ5      n[         R                  " SS/5      n[        R                  " X#   U5        g )NTr   )rL   r   )r   r   r5   rP   )(   r   )r(   r   )TFTFFr  r  )r
   r   rA   r   r  ind1r   ind2rH   s        r#   test_getitem_bool_index_allr!  0  sh     vz?D

 
 !N
OC#)S)01D%%w&89H#)X.r&   c                 Z   U " S/5      n[         R                  " S/5      n[        R                  " X!   U5        U " S/5      n[        [        R
                  " / [        R                  S9[        R
                  " / [        R                  S9// / /S9n[        R                  " X#   U5        g )NTr  Fr*   r`   )r
   r   rA   r   r9   rd   int64r  s        r#   test_getitem_bool_index_singler$  <  s     v;D

 
 '
+C#)S)w<D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)
TestGetLociK  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   rP   z^\('bar', 'two'\)$rM   r   r   z^'quux'$quuxr   r]   r^   r_   r`   z
^\(1, 1\)$r   )r   r   r   )
r  rT   rU   re   r
   r	   r9   rc   rd   r@   )r   r   r   s      r#   test_get_locTestGetLoc.test_get_locL  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   )rt   rR   rR   rr   rr   rt   2rM   )r	   r  r@   rT   rU   re   )r   r   r"   rH   rsxps         r#   test_get_loc_duplicates"TestGetLoc.test_get_loc_duplicatesa  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^   r_   r`   r   r   r   r   r   )r   r   r   z
^\(2, 2\)$rM   rl   z^2$)leveli  )r   r   r   r   )r   r   r   rP   )r
   r	   r9   rc   rd   get_loc_levelr@   	droplevelr  rT   rU   re   dropr=   rX   )r   r   loc	new_indexrH   	exp_indexr"   s          r#   test_get_loc_levelTestGetLoc.test_get_loc_levelo  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   )r9   rd   astyper
   r   r  )r   r=  r>  ra   r   s        r#   test_get_loc_multiple_dtypes'TestGetLoc.test_get_loc_multiple_dtypes  si     ((Aq6"))&1288QF3C3J3J63RS%%f-{{3q6"a'''r&   r4  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 )	NrR   rr   rt   ru   r   r   r*   rP   )r9   rd   r
   r   r  tuple)r   r4  rC  ra   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\)$rM   r3  r   z
^\(1, 0\)$rk   z^\(False, True\)$)FTz^\(True, False\)$)TF)
r	   r9   rc   r
   r   boolrT   rU   re   r  )r   r+   ra   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 )NrR   rr   rt   ru   r   r*   rP   )r9   rd   typer
   r   r  rE  )r   r4  nulls_fixturera   rF  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$rM   rP   z^nan$z\[nan\])r
   r|   
isinstancer  r@   rT   rU   re   r9   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   )TFFTrP   r   )
r
   r   r9   r   r@   r  r|   rd   rA   r   )r   r   rH   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   rP   r   r8   r   r   r   rP   r   r   tagdayra   rb   r  r]  r   rP   )r
   r  r@   )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                  " U5         UR                  U5      nS S S 5        W[	        SSS 5      :X  d   eg ! , (       d  f       N"= f)NrR   r   r   r   )xyz)ra   rb   r  	sortorder)rR   r   )r
   rA   assert_produces_warningr  r@   )r   performance_warningr   rF  r"   s        r#   test_get_loc_past_lexsort_depth*TestGetLoc.test_get_loc_past_lexsort_depth  s    EAq6A3'q6Aq6Aq6*!	
 ''(;<[[%F = q!T****	 =<s   A%%
A3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\[\]rM   )r
   r   rT   rU   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)NrP   r   r   r8   )r  r   rM   )
r
   r   rX   rT   rU   re   reescapestrr  )r   r   rF  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*  r0  r;  rT   r   r   intfloatrL  r{  rA  rI  r>   rM  rR  rW  rZ  ri  rr  ru  r|  r   r   r&   r#   r&  r&  K  s$   4*$4L [[XUD#'>?[[XUD#'>?( @ @( [[Wq!f-[[Xeucl'CD, E ., [[WtVn5' 6'* [[Wq!f-, .,
"41+ r&   r&  c                        \ 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 operationsrM   Tr
   r   rT   rU   r   where)r   rY   rf   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  rM   r  )r   listlike_boxr   condrf   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   )rn   r   r   r   rP   r   r-   rh  )r
   r   r   	TimestamprC   )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   rV  s     r#   test_containsTestContains.test_contains.  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   rP   )r
   r|   r9   r   rV  s     r#    test_contains_with_missing_value-TestContains.test_contains_with_missing_value3  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   rP   r   r   rR   rr   rt   ru   )r
   r   r7  ra   rV  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|   r9   rc   r   )r   txr   s      r#   test_contains_td64_level%TestContains.test_contains_td64_levelP  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_CUTOFFrL   )rL   r   )contextsetattrlibindexr
   r|   rX   )r   monkeypatchr"   s      r#   test_large_mi_contains#TestContains.test_large_mi_containsX  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   rS   rl  rP   r   z2019-1-2z2019-01-02T00:15:33z2019-01-05T03:15:33)rz   r{   r0   rS      )datar   rS   )r
   r   r   r   r9   rc   r   r8  r   
IndexSlicer   rA   assert_series_equal)r   rD   r"   qidx	should_bes        r#   !test_timestamp_multiindex_indexerr  `  s    

!
!,c&QEC	
C 
E299SX./	5BVVBMM*+sA"56=>F""+)	 EC		
D 		ryySY^<DuUI6-r&   zindex_arr,expected,target,algorR   rr   rs   r   r   rt   r   rw   ru   c                 \    [         R                  " U 5      nUR                  X#S9nXQ:X  d   eg )N)side)r
   r|   get_slice_bound)r}   rH   targetalgor   r"   s         r#   'test_get_slice_bound_with_missing_valuer  {  s3     
 
 
+C   3Fr&   rq   r   r   rP   )r   r   r   r   r   )rP   r   c                 \    [         R                  " U 5      nUR                  X#S9nXQ:X  d   eg ry   )r
   r|   slice_indexer)r}   rH   r~   r   r   r"   s         r#   %test_slice_indexer_with_missing_valuer    s3     
 
 
+CY<Fr&   zN, expected_dtype))r   uint8)r   uint16)r   uint32)rm   uint64)rL   r>   c                    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[        R                  " U5      nUR
                  R                  R                  U:X  d   e[        U5       H|  u  pVUR                  U5      U:X  d   e[         R                  " US-   [         R                  S9nUR                  U Vs/ s H  oU   PM	     sn5      n	[        R                  " X5        M~     [        [!        U5      5      n
[         R"                  " S/[%        U
5      Q[         R                  S9n[        / SQU -  5      nUR                  U/U
 Vs/ s H  oU   PM	     sn-   5      n	[        R                  " X5        g s  snf s  snf s  snf )	Nr   r   r   rP   r   r*   rn   )r   r   r   r   )r9   r   rE  r
   r   r  rC   r+   	enumerater  rc   r   r   rA   r   rX   r   rd   r=   )Nexpected_dtypearrkeysr   r   	key_valuerH   rY   r"   idcesmissings               r#   test_pyint_enginer    s   " C!GaKC!GaKVVHqLA37Q;&C!GqcAgk!VVHqLA37Q;&!q0
	
C 	c

 	 	" ""4(E==%%777#D/}}Y'3...99S1WBGG4""X#>XGX#>?
##F5 * #d)Exx*d5k*"'':HL1$%GyU+CUGU+CCDF1A	0 $? ,Ds   %GG
'G
zkeys,expected)TFTr8   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   r8   r*   )r
   r|   get_locsr9   rd   r   rA   r   )r  rH   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  rn   r   r*   )r
   r   r   r9   rd   r   rA   r   )rQ  r   r   r"   rH   s        r#   )test_get_indexer_for_multiindex_with_nansr    s    ""SEC:#6uenMD""SEM3+?#@PUWDd#FxxQrww/H1d#FxxQrww/H1r&   c                     [        SS5      n [        R                  " U " SS5      U " SS5      U " SS5      /5      nXR                  5       4 H  nUR	                  U " SS5      5      S	:X  d   eUR	                  U " SS5      5      S
:X  d   eUR	                  U " SS5      5      S:X  d   eUR	                  S5      S	:X  d   eUR	                  S5      S
:X  d   eUR	                  S5      S:X  a  M   e   [        R                  " / SQ5      nXR                  5       4 H  nUR	                  U " SS5      5      S	:X  d   eUR	                  U " SS5      5      S
:X  d   eUR	                  U " SS5      5      S:X  d   eUR	                  S5      S	:X  d   eUR	                  S5      S
:X  d   eUR	                  S5      S:X  a  M   e   g )N
NamedIndex)rR   rr   i1i2i3i4i5i6r   r   r   r  r  r  r  r  r  )r  r  r  )r   r
   r   to_flat_indexr  )r  	multi_idxr   s      r#   *test_get_loc_namedtuple_behaves_like_tupler    s   L*5J&&	D$	D$!7D$9OPI 2245{{:dD12a777{{:dD12a777{{:dD12a777{{<(A---{{<(A---{{<(A--- 6 &&'QRI2245{{:dD12a777{{:dD12a777{{:dD12a777{{<(A---{{<(A---{{<(A--- 6r&   )-collectionsr   datetimer   ry  numpyr9   rT   pandas._libsr   r  pandas.errorsr   pandasr   r   r   r	   r
   r   pandas._testing_testingrA   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#   <module>r     sO   "  	   * +   ~" ~"B40 40nHI HIV
$"4 u./ // u./ // D) ) @) @)F.6 $663
o	.2666B663
o	.BFFC='J
C-	.C=&I *661a.)	$eAq$&7C661a.)	$eAq$&7H
a^	$eAq$&7!RVVaH
a^	$eAq$&7!RVVfM	 	$2	$2N 
+1v	A'
+1v	A'
1v	&A/
1v	&A/
aVq!f
aVq!f#1vA#1vA	
2
22.r&   