
    Mh                    T   S SK r S SKrS SKrS SKrS SKJs  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KJr  \R*                  " / SQS9S 5       r " S S5      r\R0                  R3                  S	S
\R4                  " S\R6                  " S5      S9/5      \R0                  R3                  SSS0SSS./5      \R0                  R3                  SSS/SS//5      S 5       5       5       rS r\R0                  R3                  SSSS.SSS.SSS./5      S 5       rS rS r S  r!S! r"S" r#\R0                  R3                  S#S$\R4                  " S%\R6                  " S5      S9\R4                  " S&\R6                  " S5      S9/5      S' 5       r$\R6                  " S5      S( 5       r%S) r&S* r'g)+    N)Index	Timedelta
merge_asofoption_contextto_datetime)
MergeError)smsusns)paramsc                     U R                   $ )z%
Resolution for datetimelike dtypes.
)param)requests    \/var/www/html/env/lib/python3.13/site-packages/pandas/tests/reshape/merge/test_merge_asof.pyunitr      s    
 ==    c                      \ rS rSrSZS jr\R                  S 5       r\R                  S 5       r\R                  S 5       r	\R                  S 5       r
\R                  S 5       r\R                  S 5       rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\R:                  R=                  SSS/5      S 5       rS r S r!S r"S  r#S! r$S" r%S# r&S$ r'S% r(S& r)\R:                  R=                  S'\*" S(5      \+RX                  " S)S*9/S+S,/S-9S. 5       r-S/ r.S0 r/S1 r0S2 r1S3 r2S4 r3S5 r4S6 r5S7 r6S8 r7S9 r8S: r9S; r:S< r;S= r<S> r=S? r>S@ r?SA r@SB rASC rBSD rCSE rD\R:                  R=                  SFSG SH /SISJ/S-9\R:                  R=                  SKSLSM/5      SN 5       5       rESO rFSP rGSQ rH\R:                  R=                  S/ SRQ5      SS 5       rIST rJSU rKSV rLSW rMSXrNgY)[TestAsOfMerge   c                     U(       a  UR                  SS/SS9R                  SS9n[        UR                  5      Ul        U$ )Ntimetickerlast)keepTdrop)drop_duplicatesreset_indexr   r   )selfdfdedupes      r   	prep_dataTestAsOfMerge.prep_data   sJ    ##VX$6V#DPP Q B bgg&	r   c                 j   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/SR                  S5      S9nUS   R                  S5      US'   US   R                  S5      US'   U R	                  U5      $ ) N20160525 13:30:00.023MSFT51.950075NASDAQ20160525 13:30:00.038r(   r)   155r+   20160525 13:30:00.048GOOGz720.7700100r+   r0   r1   z720.9200r2   r+   r0   r1   720.9300200r+   r0   r1   r5   300r+   r0   r1   r5   600r+   r0   r1   r5   44r+   20160525 13:30:00.074AAPL98.6700478343r+   20160525 13:30:00.075r?   r@   rA   r+   rC   r?   z98.66006r+   rC   r?   98.650030r+   rC   r?   rG   r*   r+   rC   r?   rG   20r+   rC   r?   rG   35r+   rC   r?   rG   10r+   rC   r?   98.5500rE   ARCA20160525 13:30:00.076r?   98.56001000rR   rT   r?   rU   r6   rR   rT   r?   rU   r8   rR   rT   r?   rU   400rR   rT   r?   rU   r:   rR   20160525 13:30:00.078r(   r)   783r+   r]   r(   r)   r2   r+   'time,ticker,price,quantity,marketCenter,columnspricefloat64quantityint64pd	DataFramesplitastyper#   r    r!   s     r   tradesTestAsOfMerge.trades&   s    \\LMNNNNNMPPKLLLLLIILKKKKKMMM7: >CCCH=
@ k((37J..w7:~~b!!r   c                 &   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/S
R                  S5      S9nUS   R                  S5      US'   US   R                  S5      US'   U R	                  USS9$ )Nr'   r1   720.50720.93r'   r(   51.95ru   20160525 13:30:00.041r(   ru   ru   r0   r1   rr   rs   20160525 13:30:00.072r1   rr   z720.88rC   r?   98.5598.56rT   r?   r|   r}   r]   r(   ru   ru   r]   r(   51.92ru   time,ticker,bid,askra   rb   bidre   askTr"   rh   rm   s     r   quotesTestAsOfMerge.quotesL   s    \\ECCEEEEECCCCCCCC!$ *//4'
* uI$$Y/5	uI$$Y/5	~~b~..r   c                    [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQS	S
SSS[        R                  [        R                  // SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/SR	                  S5      S9nUS    R                  S!5      US '   US"   R                  S#5      US"'   US$   R                  S!5      US$'   US%   R                  S!5      US%'   U R                  U5      $ &Nr'   r(   ru   r*   r+   ru   ru   r-   r(   ru   r.   r+   ru   ru   r0   r1   z720.77r2   r+   720.5rs   r0   r1   z720.92r2   r+   r   rs   r0   r1   rs   r6   r+   r   rs   r0   r1   rs   r8   r+   r   rs   r0   r1   rs   r:   r+   r   rs   r0   r1   rs   r<   r+   r   rs   r>   r?   98.67rA   r+   rC   r?   r   rA   r+   r|   r}   rC   r?   98.66rE   r+   r|   r}   rC   r?   98.65rH   r+   r|   r}   rC   r?   r   r*   r+   r|   r}   rC   r?   r   rK   r+   r|   r}   rC   r?   r   rM   r+   r|   r}   rC   r?   r   rO   r+   r|   r}   rC   r?   r|   rE   rR   r|   r}   rT   r?   r}   rV   rR   r|   r}   rT   r?   r}   r6   rR   r|   r}   rT   r?   r}   r8   rR   r|   r}   rT   r?   r}   rZ   rR   r|   r}   rT   r?   r}   r:   rR   r|   r}   r]   r(   ru   r^   r+   r   ru   r]   r(   ru   r2   r+   r   ru   /time,ticker,price,quantity,marketCenter,bid,askra   rb   rd   re   rf   rg   r   r   ri   rj   npnanrk   rl   r#   rm   s     r   asofTestAsOfMerge.asofg   C   \\ ,FFFFWtj FKKCPmw
p k((37J..w7:uI$$Y/5	uI$$Y/5	~~b!!r   c                    [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQS	S
SSS[        R                  [        R                  // SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/SR	                  S5      S9nUS    R                  S!5      US '   US"   R                  S#5      US"'   US$   R                  S!5      US$'   US%   R                  S!5      US%'   U R                  U5      $ r   r   rm   s     r   	toleranceTestAsOfMerge.toleranceg  r   r   c                    [         R                  " SSSSS[        R                  [        R                  // SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQSSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  // SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S Q/ S!Q/ S!Q/S"R	                  S#5      S$9nUS%   R                  S&5      US%'   US'   R                  S(5      US''   US)   R                  S&5      US)'   US*   R                  S&5      US*'   U R                  U5      $ +Nr'   r(   ru   r*   r+   r   r   r   r   r   r   r   r>   r?   r   rA   rC   r   rE   r   rH   rK   rM   rO   r|   rR   r   r   r   r   r   )r]   r(   ru   r^   r+   ru   ru   )r]   r(   ru   r2   r+   ru   ru   r   ra   rb   rd   re   rf   rg   r   r   r   )r    datapathr!   s      r   allow_exact_matches!TestAsOfMerge.allow_exact_matchesg  m   \\ ,FFFF ,FFFF ,FFFF ,FFFF ,FFFF ,FFFF ,FFFF ,FFFF ,FFFF )&'3PRPVPVW(&'3PRPVPVWwdJ FKKCPMg
P k((37J..w7:uI$$Y/5	uI$$Y/5	~~b!!r   c                    [         R                  " SSSSS[        R                  [        R                  // SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQSSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  /SSSSS[        R                  [        R                  // SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S Q/ S!Q/ S!Q/S"R	                  S#5      S$9nUS%   R                  S&5      US%'   US'   R                  S(5      US''   US)   R                  S&5      US)'   US*   R                  S&5      US*'   U R                  U5      $ r   r   rm   s     r   !allow_exact_matches_and_tolerance/TestAsOfMerge.allow_exact_matches_and_toleranceW  r   r   c                     [         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQ/ SQS.5      n[        XSS	9n[        R                  " XC5        g
)doc-string examples      
   abcr   left_valr               r   	right_valr   r   r   r   r   r   r   onNri   rj   r   tmassert_frame_equalr    leftrightexpectedresults        r   test_examples1TestAsOfMerge.test_examples1G  s\    ||*/JK?QR<</	R
 DC0
f/r   c                 N   US:X  a  [         R                  " S5        [        R                  " [	        / SQ5      R                  SU S35      / SQ/ SQ/ SQS	./ S	QS
9n[        R                  " [	        / SQ5      R                  SU S35      / SQ/ SQ/ SQS./ SQS
9n[        X#SSS9  [        X#SS[        S5      S9  [        R                  " [	        / SQ5      R                  SU S35      / SQ/ SQ/ SQ[        R                  S[        R                  [        R                  [        R                  /[        R                  S[        R                  [        R                  [        R                  /S./ SQS
9n[        UUSS[        S5      SS9n[        R                  " XT5        g)r   r	   zNThis test is invalid for unit='s' because that would round the trades['time']])r'   r-   r0   r0   r0   M8[]r(   r(   r1   r1   r?   皙I@r   g\(@(\@g     X@K      d   r   r   )r   r   rd   rf   rb   )r'   r'   20160525 13:30:00.030rw   r0   20160525 13:30:00.049rz   rC   )r1   r(   r(   r(   r1   r?   r1   r(   )     @r   \(I@QI@r   (\X@r   gzGJ@)=
ףp@{GI@=
ףpI@      J@r   q=
ףX@gףp=
@gp=
J@)r   r   r   r   r   r   r   by2msr   r   r   r   r   )r   r   rd   rf   r   r   10msFr   r   r   r   N)pytestskipri   rj   r   rl   r   r   r   r   r   r   )r    r   rn   r   r   r   s         r   test_examples2TestAsOfMerge.test_examples2S  sz   3;KK, # &3tfA'B>4 <
$ #	 &3tfA'	 SR14 57
< 	6f:6fYuEUV<<# &3tfA'B>4rvvrvvrvv>rvvrvvrvv>  J#
( ' %
 	f/r   c                    [         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQSS[        R                  /S.5      n[	        XS	S
S9n[
        R                  " XC5        g)r   r   r   r   r   r   r   r   r   r   forwardr   	directionNri   rj   r   r   r   r   r   r   s        r   test_examples3TestAsOfMerge.test_examples3  sj     ||*/JK?QR<</ArvvW
 DC9E
f/r   c                     [         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQ/ SQS.5      n[        XSS	S
9n[        R                  " XC5        g)r   r   r   r   r   r   )r   r   r   r   r   nearestr   Nr   r   s        r   test_examples4TestAsOfMerge.test_examples4  s`     ||*/JK?QR<</	R
 DC9E
f/r   c                 J    Un[        XSSS9n[        R                  " XT5        g )Nr   r   r   r   r   r   r    rn   r   r   r   r   s         r   
test_basicTestAsOfMerge.test_basic  s#    Fv(C
f/r   c                 
   UnUR                   R                  S5      Ul         UR                   R                  S5      Ul         UR                   R                  S5      Ul         [        XSSS9n[        R                  " XT5        g )Ncategoryr   r   r   )r   rl   r   r   r   r  s         r   test_basic_categorical$TestAsOfMerge.test_basic_categorical  se    ,,Z8,,Z8"//00<Fv(C
f/r   c                     UnUR                  S5      n[        XSSSS9nUR                  Ul        XER                     n[        R
                  " XT5        g )Nr   Tr   )
left_indexright_onr   )	set_indexr   indexrc   r   r   r  s         r   test_basic_left_index#TestAsOfMerge.test_basic_left_index  sQ    !!&)tf
  NN+
f/r   c                 n    UnUR                  S5      n[        XSSSS9n[        R                  " XT5        g )Nr   Tr   )left_onright_indexr   r  r   r   r   r  s         r   test_basic_right_index$TestAsOfMerge.test_basic_right_index  s:    !!&)F
 	f/r   c                     UR                  S5      nUR                  S5      nUR                  S5      n[        XSSSS9n[        R                  " XT5        g )Nr   Tr   r  r  r   r  r  s         r   !test_basic_left_index_right_index/TestAsOfMerge.test_basic_left_index_right_index  sS    >>&)!!&)!!&)t(
 	f/r   c                     UR                  SS/5      nUR                  S5      n[        R                  " [        SS9   [	        XSSS9  S S S 5        g ! , (       d  f       g = f)Nr   rd   zleft can only have one indexmatchTr  r  r  r   raisesr   r   r    rn   r   s      r   test_multi_index_left#TestAsOfMerge.test_multi_index_left  sO    !!67"34!!&)]]:-KLv$DI MLL   A
A!c                     UR                  S5      nUR                  SS/5      n[        R                  " [        SS9   [	        XSSS9  S S S 5        g ! , (       d  f       g = f)Nr   r   zright can only have one indexr  Tr!  r"  r$  s      r   test_multi_index_right$TestAsOfMerge.test_multi_index_right  sN    !!&)!!65/2]]:-LMv$DI NMMr'  c           	          UR                  S5      nUR                  S5      nSn[        R                  " [        US9   [	        XSSSS9  S S S 5        g ! , (       d  f       g = f)Nr   z:Can only pass argument "left_on" OR "left_index" not both.r  rd   T)r  r  r  r"  r    rn   r   msgs       r   test_on_and_index_left_on'TestAsOfMerge.test_on_and_index_left_on  sR    !!&)!!&)J]]:S1Dd 211   A
A"c           	          UR                  S5      nUR                  S5      nSn[        R                  " [        US9   [	        XSSSS9  S S S 5        g ! , (       d  f       g = f)Nr   z<Can only pass argument "right_on" OR "right_index" not both.r  r   T)r  r  r  r"  r,  s       r   test_on_and_index_right_on(TestAsOfMerge.test_on_and_index_right_on  sR    !!&)!!&)L]]:S14T 211r0  c                 L    Un[        XSSSS9n[        R                  " XT5        g )Nr   r   )r   left_byright_byr  r  s         r   test_basic_left_by_right_by)TestAsOfMerge.test_basic_left_by_right_by  s*    vx(
 	f/r   c                     UnX3R                   S:g     n[        XSSS9n[        R                  UR                  UR                   S:H  SS/4'   [
        R                  " Xd5        g )Nr(   r   r   r   r   r   )r   r   r   r   locr   r   )r    rn   r   r   r   qr   s          r   test_missing_right_by#TestAsOfMerge.test_missing_right_by"  sX    ==F*+F&X>BD&&X__.>?
f/r   c                    [         R                  " [        / SQ5      / SQ/ SQ/ SQ/ SQS./ SQS9n[         R                  " [        / SQ5      / S	Q/ S
Q/ SQ/ SQS./ SQS9n[         R                  " [        / SQ5      / SQ/ SQ/ SQ/ SQ[        R                  SSS[        R                  /[        R                  SSS[        R                  /S./ SQS9n[        XSSS/S9n[        R                  " XC5        g )Nr'   r'   z20160525 13:30:00.046r0   20160525 13:30:00.050r   rR   NSDQrB  BATSrB  r   r   r   r   exchrd   rf   rb   r'   r'   r   rw   z20160525 13:30:00.045r   )r1   r(   r(   r(   r1   r?   rC  rB  rR   rR   rB  rR   Gz@r   r   r   r   r   r   r   r   r   r   r   r   r   rE  r   r   r   r   rI  r   r   r   r   r   rE  rd   rf   r   r   r   r   rE  r   )ri   rj   r   r   r   r   r   r   )r    rn   r   r   r   s        r   test_multibyTestAsOfMerge.test_multiby*  s    # C@>4 D!
& #	 KHCC  =#
( <<# C@>4vvrvv>vvrvv>" R%
* Fv8V:LM
f/r   dtypeobjectstringc                 d   [         R                  " [        / SQ5      / SQ/ SQ/ SQ/ SQS./ SQS9nUR                  XS.5      n[         R                  " [        / S	Q5      / S
Q/ SQ/ SQ/ SQS./ SQS9nUR                  XS.5      n[         R                  " [        / SQ5      / SQ/ SQ/ SQ/ SQ[        R
                  SSS[        R
                  /[        R
                  SSS[        R
                  /S./ SQS9nUR                  XS.5      n[        X#SSS/S9n[        R                  " XT5        g )Nr?  )r   r   r   r   r   rA  r   r   rD  rb   )r   rE  rF  )r   r   r   r   r   r   rG  rH  rJ  rK  r   r   rI  r   r   r   rL  r   r   rE  r   )	ri   rj   r   rl   r   r   r   r   r   )r    rO  rn   r   r   r   s         r    test_multiby_heterogeneous_types.TestAsOfMerge.test_multiby_heterogeneous_typesk  s%    # *@>4 D!
$ %?@#	 -HCC  =#
& %?@<<# *@>4vvrvv>vvrvv>" R%
( ??e#CDFv8V:LM
f/r   c           	      J   [         R                  " [        S5      SS/[        S5      SS/[        S5      SS/[        S5      SS/// SQS9R                  S	5      nUR                  [         R
                  " S
5      -
  Ul        [         R                  " [        S5      SSS/[        S5      SSS/[        S5      SSS/[        S5      SSS/// SQS9R                  S	5      nSn[        R                  " [        US9   [        XSSSS/S9  S S S 5        g ! , (       d  f       g = f)N20160602r   r   r   20160603r   r   k1k2rb   r   r   20160502      ?       @20160503      @      @r   rY  rZ  valueincompatible merge keysr  TrY  rZ  r  )
ri   rj   r   r  r  	Timestampr   r#  r   r   )r    r   r   r-  s       r   test_mismatched_index_dtype)TestAsOfMerge.test_mismatched_index_dtype  s   ||Z(!S1Z(!S1Z(!S1Z(!S1	 )
 )F
 	 ZZ",,q/1
Z(!S#6Z(!S#6Z(!S#6Z(!S#6	 2
 )F
 	 (]]:S1tt4QU,W 211s   <D
D"c           
          [         R                  " [        S5      SS/[        S5      SS/[        S5      SS/[        S5      SS/// SQS9R                  S	5      n[         R                  " [        S
5      SSS/[        S
5      SSS/[        S5      SSS/[        S5      SSS/// SQS9R                  S	5      n[         R                  " [        S5      SSS/[        S5      SSS/[        S5      SSS/[        S5      SSS/// SQS9R                  S	5      n[	        XSSSS/S9n[
        R                  " X45        [        R                  " [        SS9   [	        UUSSSS/S/S9  S S S 5        g ! , (       d  f       g = f)NrV  r   r   r   rW  r   rX  rb   r   r[  r\  r]  r^  r_  r`  ra  TrY  rZ  r  z,left_by and right_by must be the same lengthr  )r  r  r5  r6  )
ri   rj   r   r  r   r   r   r   r#  r   r   s        r   test_multiby_indexed"TestAsOfMerge.test_multiby_indexed  s   ||Z(!S1Z(!S1Z(!S1Z(!S1	 )
 )F
 	 Z(!S#6Z(!S#6Z(!S#6Z(!S#6	 2
 )F
 	 <<Z(!S#6Z(!S#6Z(!S#6Z(!S#6	 2
 )F
 	 Ddd|
 	h/]]L
  t
 
 
s   E//
E=c           
      	   [         R                  " / / SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQPS	S
SSS[        R                  [        R                  /P/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ S QP/ S!QP/ S"QP/ S"QP/ S#QP/ S#QP/ S$QP/ S%QP/ S&QP/ S'QP/ S(QP/ S)QP/ S*QP/ S+QP/ S,QP/ S-QP/ S.QP/ S/QP/ S0QP/ S1QP/ S2QP/ S2QP/ S3QP/ S4QP/ S5QP/ S6QP/ S7QP/ S8QP/ S9QP/ S:QP/ S;QP/ S;QP/ S<QP/ S=QP/ S>QP/ S?QP/ S@QP/ SAQP/ SBQP/ SCQP/ SDQP/ SEQP/ SFQP/ SGQP/ SHQP/ SIQP/ SIQPSJR	                  SK5      SL9nUSM   R                  SN5      USM'   USO   R                  SP5      USO'   USQ   R                  SN5      USQ'   USR   R                  SN5      USR'   U R                  U5      n[         R                  " / / SSQP/ STQP/ SUQP/ SVQP/ SWQP/ SXQP/ SYQP/ SZQP/ S[QP/ S\QP/ S]QP/ S^QP/ S_QP/ S`QP/ SaQP/ SbQP/ ScQP/ ScQP/ SdQP/ SeQP/ SfQP/ SgQP/ ShQP/ SeQP/ SiQP/ SjQP/ SjQP/ SkQP/ SlQP/ SmQP/ SnQP/ SoQP/ SpQP/ SpQP/ SqQP/ SqQP/ SrQP/ SsQP/ StQP/ SuQP/ SvQP/ SwQP/ SxQP/ SyQP/ SzQP/ S{QP/ S|QP/ S}QP/ S~QP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQPSR	                  SK5      SL9nUSM   R                  SN5      USM'   USO   R                  SP5      USO'   U R                  U5      n[         R                  " / / SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQPSR	                  SK5      SL9nUSQ   R                  SN5      USQ'   USR   R                  SN5      USR'   U R                  USS9n[        X4SSS9n[        R                  " XR5        g )Nr   r   r   r   r   r   r   r   r>   r?   r   rA   r+   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )20160525 13:30:00.084r?   z98.6440r+   r|   r}   )rk  r?   r|   149EDGXr|   r}   )20160525 13:30:00.086r?   r}   500rR   r|   98.63)20160525 13:30:00.104r?   rq  647rn  98.62rq  )rr  r?   rq  r8   rn  rt  rq  )rr  r?   rq  50r+   rt  rq  )rr  r?   rq  70r+   rt  rq  )rr  r?   rq  1r+   rt  rq  )rr  r?   rq  62r+   rt  rq  )rr  r?   rq  rO   r+   rt  rq  )rr  r?   rq  r2   rR   rt  rq  )20160525 13:30:00.105r?   rq  r2   rR   rt  rq  )ry  r?   rq  700rR   rt  rq  )20160525 13:30:00.106r?   rq  61rn  rt  rq  )20160525 13:30:00.107r?   rq  r2   rR   rt  rq  )r}  r?   rq  53rR   rt  rq  )20160525 13:30:00.108r?   rq  r2   rR   rt  rq  )r  r?   rq  839rR   rt  rq  )20160525 13:30:00.115r?   rq  5rn  rt  rq  )20160525 13:30:00.118r?   rq  295rn  rt  rq  )r  r?   rq  r  rn  rt  rq  )20160525 13:30:00.128r?   rq  r2   r+   rt  rq  )r  r(   r   r2   rR   r   ru   )20160525 13:30:00.129r?   rt  r2   r+   98.61rq  )r  r?   rt  rO   r+   r  rq  )r  r?   rt  59r+   r  rq  )r  r?   rt  31r+   r  rq  )r  r?   rt  69r+   r  rq  )r  r?   rt  12r+   r  rq  )r  r?   rt  r  rn  r  rq  )r  r?   rt  r2   rR   r  rq  )20160525 13:30:00.130r(   ru   317rR   51.93ru   )r  r(   ru   283rR   r  ru   )20160525 13:30:00.135r(   r  r2   rn  r   ru   )r  r?   rt  r2   rR   r  rt  )20160525 13:30:00.144r?   rt  r  r+   r  rt  )r  r?   rt  88r+   r  rt  )r  r?   rt  162r+   r  rt  )r  r?   r  r2   rC  r  rt  )r  r?   rt  r|  rR   r  rt  )r  r?   rt  25rR   r  rt  )r  r?   rt  14rR   r  rt  )20160525 13:30:00.145r?   rt  r  rR   98.6rq  )r  r?   rt  r2   rR   r  rq  )r  r?   rq  r2   r+   r  rq  r   ra   rb   rd   re   rf   rg   r   r   r&   r,   r/   r3   r4   r7   r9   r;   r=   rB   rD   rF   rI   rJ   rL   rN   rP   rS   rW   rX   rY   r[   r\   r_   )rk  r?   z98.6400rl  r+   )rk  r?   rQ   rm  rn  )ro  r?   rU   rp  rR   )rr  r?   98.6300rs  rn  )rr  r?   r  r8   rn  )rr  r?   r  ru  r+   )rr  r?   r  rv  r+   )rr  r?   r  rw  r+   )rr  r?   r  rx  r+   )rr  r?   r  rO   r+   )rr  r?   r  r2   rR   )ry  r?   r  r2   rR   )ry  r?   r  rz  rR   )r{  r?   r  r|  rn  )r}  r?   r  r2   rR   )r}  r?   r  r~  rR   )r  r?   r  r2   rR   )r  r?   r  r  rR   )r  r?   r  r  rn  )r  r?   r  r  rn  )r  r?   r  r  rn  )r  r?   r  r2   r+   )r  r(   z51.9200r2   rR   )r  r?   98.6200r2   r+   )r  r?   r  rO   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  rn  )r  r?   r  r2   rR   )r  r(   r)   r  rR   )r  r(   r)   r  rR   )r  r(   z51.9300r2   rn  )r  r?   r  r2   rR   )r  r?   r  r  r+   )r  r?   r  r  r+   )r  r?   r  r  r+   )r  r?   z98.6100r2   rC  )r  r?   r  r|  rR   )r  r?   r  r  rR   )r  r?   r  r  rR   )r  r?   r  r  rR   )r  r?   r  r2   rR   )r  r?   r  r2   r+   r`   rq   rt   rv   rx   ry   r{   r~   r   r   )z20160525 13:30:00.079r(   r   ru   )z20160525 13:30:00.080r?   r|   r}   )rk  r?   r|   r}   )ro  r?   r|   rq  )z20160525 13:30:00.088r?   r   rq  )z20160525 13:30:00.089r?   rq  rq  )rr  r?   rq  rq  )rr  r?   rt  rq  )ry  r?   rt  rq  )r}  r?   rt  rq  )r  r?   rt  rq  )r  r?   rt  rq  )r  r?   rt  rq  )r  r?   rt  rq  )r  r?   r  rq  )r  r(   r  ru   )r  r?   r  rq  )z20160525 13:30:00.131r?   r  rt  )r  r(   r   ru   )r  r?   r  rt  )z20160525 13:30:00.136r?   r  rt  )r  r?   r  rt  )r  r?   r  rt  )r  r?   r  rq  )r  r?   z98.60rq  r   Tr   r   r   r   )
ri   rj   r   r   rk   rl   r#   r   r   r   )r    r   r   rn   r   r   s         r   test_basic2TestAsOfMerge.test_basic2  s   <<v
v
v
&'v
89v
JKv
\]v
nov
@Av
T ,FFFFSv
dev
vwv
HIv
Z[v
lmv
~v
PQv
bcv
tuv
FGv
XYv
jkv
|}v
NOv
`av
rsv
DEv
VWv
hiv
z{v
LMv
^_v
pqv
B	C	v
T	U	v
f	g	v
x	y	v
J
K
v
\
]
v
n
o
v
@Av
RSv
dev
vwv
HIv
Z[v
lmv
~v
PQv
bcv
tuv
FGv
XYv
jkv
|}v
NOv
`av
rsv
DEv
VWv
hiv
z{v
LMv
^_v
pqv
BCv
TUv
fgv
xyv
JKv
\]v
nov
@Av
RSv
dev
vwv
HIv
Z[v
n FKKCPqy

t %W-44Y?'
3::7C"5/00;"5/00;>>(+NLNMN ON O	N
 ON ON ON NN QN QN LN MN MN MN MN  M!N" J#N$ J%N& M'N( L)N* L+N, L-N. L/N0 L1N2 N3N4 N5N6 N7N8 M9N: L;N< L=N> L?N@ LANB MCND MENF MGNH MINJ LKNL MMNN MONP LQNR LSNT LUNV KWNX LYNZ K[N\ L]N^ L_N` JaNb LcNd JeNf NgNh NiNj LkNl NmNn MoNp MqNr MsNt MuNv MwNx KyNz L{N| L}N~ LN@ LANB LCND LENF MGNH MINJ NKNL LMNN KONP KQNR KSNT KUNV LWNX NYNZ N[N^ >CCCHaQ
d !/00;w#J/66w?z'9E9C9 D9 F	9
 F9 F9 F9 F9 D9 D9 D9 D9 D9 D9 D9  D!9" D#9$ D%9& D'9( D)9* D+9, D-9. D/90 D192 D394 D596 D798 D99: D;9< D=9> D?9@ DA9B DC9D DE9F DG9H DI9J DK9L DM9N DO9P DQ9R DS9T DU9V DW9X DY9Z D[9\ D]9^ D_9` Da9b Dc9d De9f Dg9h Di9j Dk9l Dm9n Do9p Dq9t *//4w<
z u,,Y7uu,,Y7ut4Fv(C
f/r   c                 z    S nU" U5      nU" U5      nU" U5      n[        XSS9n[        R                  " Xe5        g )Nc                 Z    X R                   S:H     R                  SSS9R                  SS9$ )Nr(   r   r   )axisTr   )r   r   r   xs    r   <lambda>0TestAsOfMerge.test_basic_no_by.<locals>.<lambda>[	  s/    aF*+T(T#[d[#$r   r   r   r  )r    rn   r   r   fr   r   s          r   test_basic_no_byTestAsOfMerge.test_basic_no_byY	  sC    $ 	
 T766Fv6
f/r   c           	         Sn[         R                  " [        US9   [        XSSSS9  S S S 5        [         R                  " [        SS9   [        XSS/SS9  S S S 5        [         R                  " [        SS9   [        XSS	9  S S S 5        g ! , (       d  f       Nj= f! , (       d  f       NL= f! , (       d  f       g = f)
Nz6incompatible merge keys \[1\] .* must be the same typer  r   r   r   )r  r  r   zcan only asof on a key for leftr   )r   r   r#  r   r   r,  s       r   test_valid_join_keys"TestAsOfMerge.test_valid_join_keysh	  s    G]]:S1vv(S 2 ]]:-NOv68*<J P ]]:-NOv(3 PO 21 PO POs#   B
B9B/
B
B,/
B=c                     [         R                  " X3/5      R                  SS/5      R                  SS9n[	        X%SSS9nU R                  U5      n[        R                  " Xg5        g )Nr   r   Tr   r   )ri   concatsort_valuesr   r   r#   r   r   )r    r   rn   r   r   r;  r   r   s           r   test_with_duplicates"TestAsOfMerge.test_with_duplicatest	  s]    IIv&'[&(+,[d[# 	

 F&X>>>$'
f/r   c                     [         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      n[        XSS9n[         R                  " / SQ/ SQ/ SQS.5      n[        R                  " X45        g )	N)r   r   r   r   r   r   )keyr   )r   r   r   )r  r   r  r   )r  r   r   r   r    df1df2r   r   s        r   test_with_duplicates_no_on(TestAsOfMerge.test_with_duplicates_no_on~	  s\    ll9)DEll99EFC/<<99M
 	f/r   c           	          Sn[         R                  " [        US9   [        XSSSS9  S S S 5        g ! , (       d  f       g = f)Nz/allow_exact_matches must be boolean, passed foor  r   r   foor   r   r   r  r,  s       r   test_valid_allow_exact_matches,TestAsOfMerge.test_valid_allow_exact_matches	  s2    ?]]:S16hE 211s	   2
A c           
         [        XSS[        S5      S9  [        UR                  5       UR                  5       SSSS9  Sn[        R                  " [
        US9   [        XSSSS9  S S S 5        [        R                  " [
        US9   [        UR                  5       UR                  5       SSS	S9  S S S 5        S
n[        R                  " [
        US9   [        XSS[        S5      * S9  S S S 5        [        R                  " [
        US9   [        UR                  5       UR                  5       SSSS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N|= f! , (       d  f       g = f)Nr   r   1sr   r  r   z6incompatible tolerance .*, must be compat with type .*r  r\  ztolerance must be positive)r   r   r   r   r#  r   r,  s       r   test_valid_tolerance"TestAsOfMerge.test_valid_tolerance	  sA   6fYt_U 	  	
 H ]]:S1v&XK 2 ]]:S1""$""$ 2 + ]]:S16h9T?BR 2
 ]]:S1""$""$ 21+ 21 21 21
 21s0   E *EE"*E3 
E
E"
E03
Fc                    UR                  SSS9nUR                  SSS9nUR                  R                  (       a   eUR                  R                  (       a   e[        R                  " [
        SS9   [        XSSS9  S S S 5        UR                  S5      nUR                  R                  (       d   eUR                  R                  (       a   e[        R                  " [
        SS9   [        XSSS9  S S S 5        UR                  S5      nUR                  R                  (       d   eUR                  R                  (       d   e[        XSSS9  g ! , (       d  f       N= f! , (       d  f       Nv= f)	Nr   F)	ascendingzleft keys must be sortedr  r   r   zright keys must be sorted)r  r   is_monotonic_increasingr   r#  
ValueErrorr   r$  s      r   test_non_sortedTestAsOfMerge.test_non_sorted	  s(   ##Fe#<##Fe#< ;;6666;;6666]]:-GHv&X> I ##F+{{2222;;6666]]:-HIv&X> J ##F+{{2222{{2222 	6f: IH JIs   4E,E(
E%(
E6tolerance_ts1dayr   )daysr   zdatetime.timedelta)idsc                 L    [        X#SSUS9nUn[        R                  " XV5        g )Nr   r   r   r  )r    r  rn   r   r   r   r   s          r   test_toleranceTestAsOfMerge.test_tolerance	  s,     v(l
 
f/r   c                    [         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS[        R                  S/S.5      n[	        XS	S
SS9n[
        R                  " XC5        g )Nr   r   r   r   r   r   r      r   r   r  r   r   r   r   r   r   r   r   s        r   test_tolerance_forward$TestAsOfMerge.test_tolerance_forward	  p     ||*/JK#3BRST<</BFFTVX
 DC9PQR
f/r   c                    [         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS[        R                  S/S.5      n[	        XS	S
SS9n[
        R                  " XC5        g )Nr   r   r   r  r   r   r  r   r   r  r  r   r   s        r   test_tolerance_nearest$TestAsOfMerge.test_tolerance_nearest	  r  r   c           
         [         R                  " [         R                  " [        S5      SS[        R
                  " S5      US9[        R                  " S5      S.5      n[         R                  " [         R                  " [        S5      SS[        R
                  " S5      US9[        S5      S	.5      n[        X#S
[        S5      S9n[         R                  " [         R                  " [        S5      SS[        R
                  " S5      US9[        R                  " S5      [        S5      S.5      n[        R                  " XE5        g )Nz
2016-01-02Dr   UTC)startfreqperiodstzr   )datevalue1z
2016-01-01ABCDE)r  value2r  z1 dayr   r   BCDEE)r  r  r  )ri   rj   
date_ranger   pytztimezoner   arangelistr   r   r   r   )r    r   r   r   r   r   s         r   test_tolerance_tzTestAsOfMerge.test_tolerance_tz	  s   ||%l3}}U+ ))A,	
 %l3}}U+ w-	
 DFi>PQ<<%l3}}U+ ))A,w-

 	f/r   c                    [         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQSS[        R                  /S.5      n[	        XS	S
SS9n[
        R                  " XC5        g )N)皙?g      @g%@r   r   )r\        @ffffff
@g      @g      '@r   r   r  r   r   r        ?r  r   r   s        r   test_tolerance_float"TestAsOfMerge.test_tolerance_float%
  sw    ||"2PQ,;UV
 <<%+bff-
 DC9PST
f/r   c           
          UR                  S5      nUR                  S5      nUR                  S5      n[        UUSSS[        S5      S9n[        R                  " XT5        g )Nr   Tr   r  )r  r  r   r   )r  r   r   r   r   )r    rn   r   r   r   r   s         r   test_index_tolerance"TestAsOfMerge.test_index_tolerance7
  sc    &&v.!!&)!!&)'
 	f/r   c                 L    [        XSSSS9nUn[        R                  " XE5        g )Nr   r   Fr  r  )r    rn   r   r   r   r   s         r   test_allow_exact_matches&TestAsOfMerge.test_allow_exact_matchesG
  s*    v(
 '
f/r   c                     [         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQ/ SQS.5      n[        XSS	S
S9n[        R                  " XC5        g )Nr   r   r   r  r   )r   r   r  r   r   r   Fr   r   r   r   r   s        r    test_allow_exact_matches_forward.TestAsOfMerge.test_allow_exact_matches_forwardN
  i     ||*/JK#3BRST<</
S
 C9%
 	f/r   c                     [         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQ/ SQS.5      n[        XSS	S
S9n[        R                  " XC5        g )Nr   r   r   r  r   )r   r   r  r   r   r  Fr  r   r   s        r    test_allow_exact_matches_nearest.TestAsOfMerge.test_allow_exact_matches_nearest]
  r  r   c           	      b    [        UUSS[        S5      SS9nUn[        R                  " XE5        g )Nr   r   100msFr   )r   r   r   r   )r    rn   r   r   r   r   s         r   &test_allow_exact_matches_and_tolerance4TestAsOfMerge.test_allow_exact_matches_and_tolerancel
  s:     ( %
 5
f/r   c           	      r   [         R                  " [        S/5      S/S.5      n[         R                  " [        SS/5      SS/S.5      n[        XSS	9n[         R                  " [        S/5      S/S/S
.5      n[        R
                  " X45        [        XSSS9n[         R                  " [        S/5      S/S/S
.5      n[        R
                  " X45        [        UUSS[        S5      S9n[         R                  " [        S/5      S/[        R                  /S
.5      n[        R
                  " X45        g )N2016-07-15 13:30:00.030bobr   username2016-07-15 13:30:00.000r   r   r   versionr   r   r   r	  r  F)r   r   r   r   r   r   )	ri   rj   r   r   r   r   r   r   r   r  s        r   'test_allow_exact_matches_and_tolerance25TestAsOfMerge.test_allow_exact_matches_and_tolerance2z
  s=   ll ";!<=E7S
 ll#.0IJ q6	
 C0<<#%>$?@"G3
 	f/CUK<<#%>$?@"G3
 	f/ %'
 <<#%>$?@"GFF8
 	f/r   c           	      ~   [         R                  " [        SS/5      SS/S.5      n[         R                  " [        SS/5      SS/S.5      n[        UUS	S
[	        S5      S9n[         R                  " [        SS/5      SS/[
        R                  [
        R                  /S.5      n[        R                  " X45        g )Nr  r  charlier  r
  r   r   r  r   Fr   r  r  )	ri   rj   r   r   r   r   r   r   r   r  s        r   'test_allow_exact_matches_and_tolerance35TestAsOfMerge.test_allow_exact_matches_and_tolerance3
  s    ll#.0IJ #I.	
 ll#.0IJ q6	
  %'
 <<#.0IJ #I.FFBFF+
 	f/r   c           	         [         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQ[        R                  SS/S.5      n[	        UUS	S
SSS9n[
        R                  " XC5        g )Nr   r   r   r   r      r   r  r   r   r  r   r   r   Fr   r   r   r   r   r   r   s        r   .test_allow_exact_matches_and_tolerance_forward<TestAsOfMerge.test_allow_exact_matches_and_tolerance_forward
  ~     ||*/JK#3BRST<</QRTVX
  %
 	f/r   c           	         [         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQ[        R                  SS/S	.5      n[	        UUS
SSSS9n[
        R                  " XC5        g )Nr   r   r   r  )r   r   r  r   r  r   r  r  r   r   r  Fr   r  r   r   s        r   .test_allow_exact_matches_and_tolerance_nearest<TestAsOfMerge.test_allow_exact_matches_and_tolerance_nearest
  r  r   c           
      0   [         R                  " / SQ/ SQ/ SQS.5      n[         R                  " / SQ/ SQ/ SQS.5      n[         R                  " / SQ/ SQ/ SQS[        R                  S	S
S/S.5      n[	        XSSSS9n[
        R                  " XC5        g )Nr   r   r         )Xr#  YZr$  r   r   r   de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   r   r   r   s        r   test_forward_byTestAsOfMerge.test_forward_by
  s     ||'.5
 './
 <<'.5R4	
 DCC9M
f/r   c                    [         R                  " / SQ/ SQ/ SQS.5      n[         R                  " / SQ/ SQ/ SQS.5      n[         R                  " / SQ/ SQ/ SQ/ SQS	.5      n[        XS
SSS9n[        R                  " XC5        g )Nr   )r#  r#  r%  r%  r$  r&  r)  r*  )r#  r%  r%  r%  r$  r,  )r   r   r  r  r+  r-  r   r   r  r.  r   r   s        r   test_nearest_byTestAsOfMerge.test_nearest_by  s     ||'.5
 './
 <<'.5/	
 DCC9M
f/r   c                 H   [         R                  " [        / SQ5      / SQ/ SQS./ SQS9n[         R                  " [        / SQ5      / SQ/ SQS	./ S	QS9n[        XS
SS9n[         R                  " [        / SQ5      / SQ/ SQ/ SQS./ SQS9n[        R
                  " X45        g )N)20160525 13:30:00.020r   20160525 13:30:00.040r@  20160525 13:30:00.060)r   r   r   r   r   )r  g333333?g?gffffff?g      ?)r   r  r  rb   )z20160525 13:30:00.015r5  z20160525 13:30:00.025z20160525 13:30:00.035r6  z20160525 13:30:00.055r7  z20160525 13:30:00.065)r   r   r   r   r   r   r   r   ) @皙@ffffff@333333@r  g@皙@gffffff@)r   r  r  r   r  r   )r9  r8  r:  r;  r<  )r   r  r  r  )ri   rj   r   r   r   r   r  s        r   test_by_intTestAsOfMerge.test_by_int5  s    ll# '3 .
" ll#	 0B  .#
( CE:<<# '33 8
$ 	f/r   c                 V   [         R                  " / SQ[        S5      S.SS/S9n[         R                  " / SQ/ SQS	.SS
/S9nUR                  S5      R	                  SS9n[        XSS9n[         R                  " [        S5      / SQ/ SQS./ SQS9n[        R                  " X45        g )N)
ףp=
@HPsb?zG!9@@u@Hz>@皙C@q?ABCDEFG)rd   symbolrH  rd   rb   )        r\        Y@)-C6?{Gz?皙?)rd   mpvrN  Tr   r   BGACEDF)rA  rF  r@  rB  rD  rC  rE  )rK  rK  rL  rL  rL  rM  rM  )rH  rd   rN  ri   rj   r  r  r   r   r   r   r  s        r   test_on_floatTestAsOfMerge.test_on_floatr  s    llNy/ w'
 ll'0DEe$

 oog&222=C1<<y/NE
 /
 	f/r   c                 <   [         R                  " U5      R                  n[        R                  " / SQ[        S5      S.SS/S9nU" UR                  5      Ul        [        R                  " / SQ[        S5      S	.SS
/S9nU" UR                  5      Ul        UR                  S5      R                  SS9n[        X4SS9n[        R                  " [        S5      / SQ[        S5      S./ SQS9nU" UR                  5      Ul        [        R                  " XV5        g )Nr   r      r   N   x   O   rG  )rb  rH  rH  rb  rb   r   P   rW  }   xyzw)rb  r   r   Tr   r   BACEGDFr   r   rU  rV  rX  r   rW  xxxxxyz)rH  rb  r   )r   rO  typeri   rj   r  rb  r  r   r   r   r   r    any_real_numpy_dtyperO  r  r  r   r   s          r   test_on_specialized_type&TestAsOfMerge.test_on_specialized_type  s    -.33ll2d9oNw'
 #))$	ll'4<@h'
 #))$	oog&222=C1<<y/5y/
 2
 x~~.
f/r   c                    [         R                  " U5      R                  n[        R                  " / SQ/ SQ[        S5      S./ SQS9nU" UR                  5      Ul        [        R                  " / SQ/ SQ[        S	5      S
./ S
QS9nU" UR                  5      Ul        UR                  S5      R                  SS9n[        X4SSS9n[        R                  " [        S5      / SQ/ SQ[         R                  S[         R                  [         R                  [         R                  SS/S./ SQS9nU" UR                  5      Ul        [        R                  " XV5        g )NrT  )r   r   r   r   r   r   r   rG  )rb  r  rH  )rH  r  rb  rb   rY  )r   r   r   r   r\  )rb  r  r   rb  Tr   r  r   r]  )r   r   r   r   r   r   r   r^  r  y)rH  r  rb  r   )r   rO  r`  ri   rj   r  rb  r  r   r   r   r   r   ra  s          r   test_on_specialized_type_by_int-TestAsOfMerge.test_on_specialized_type_by_int  s   -.33ll5,y/
 /
 #))$	ll'VU.
 #))$	oog&222=CU;<<y/,5663SI	 9
 x~~.
f/r   c                    [         R                  " [        S5      / SQ/ SQS./ SQS9n[         R                  " / SQ/ SQ/ SQS	./ S	QS9nUR                  S
5      R	                  SS9nUR                  S
5      R	                  SS9n[        XS
SS9n[         R                  " [        S5      / SQ/ SQ/ SQS./ SQS9n[        R                  " X45        g )N	AAABBBCCC)	r   r   r   r   r   r   r   r   r   )	Gz
@ׁsF
@
@)\()@Gz.)@      )@fffffw@33333w@     w@)rH  rE  rd   rb   )	r   r   r   r   r   r   r   r   r   )	rI  r\  rJ  rI        @rJ  rI  rt  g     @@)	rK  rL  rM  rK  rL  皙?rK        ?r\  )rE  rd   rN  rd   Tr   rE  r   )	r   r   r   r   r   r   r   r   r   )	rm  rl  rk  rp  rn  ro  rq  rr  rs  )	rK  rK  rL  rv  rL  rL  rM  ru  rv  )rH  rE  rd   rN  rP  r  s        r   test_on_float_by_int"TestAsOfMerge.test_on_float_by_int  s    ll{+3
 0!
& ll3MQ
 -
 oog&222=oog&222=CV<<<{+3
 Q  7#
( 	f/r   c                 
   U(       a  SnOSn[         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      n[        R                  " [        US9   [        X4S	S
9  S S S 5        g ! , (       d  f       g = f)Nrc  @Incompatible merge dtype, .*, both sides must have numeric dtyper   r   r   r   r   r   r   r  r   r   ri   rj   r   r#  r   r   )r    using_infer_stringr-  r   r   s        r    test_merge_datatype_error_raises.TestAsOfMerge.test_merge_datatype_error_raises  sY    +CUC||/JK?QR]]:S1ts+ 211s    A44
Bc                 F   Sn[         R                  " / SQ[         R                  " / SQ5      S.5      n[         R                  " / SQ[         R                  " / SQ5      S.5      n[        R                  " [
        US9   [        X#S	S
9  S S S 5        g ! , (       d  f       g = f)NzHincompatible merge keys \[0\] .* both sides category, but not equal onesr   r   r{  r   )r   r#  r   r#  r   r|  r  r   r   )ri   rj   Categoricalr   r#  r   r   )r    r-  r   r   s       r   ,test_merge_datatype_categorical_error_raises:TestAsOfMerge.test_merge_datatype_categorical_error_raises  sx    ! 	
 ||#"..*IJ
 ,^^$=>
 ]]:S1ts+ 211s   >B
B c                    [         R                  " S/S/[         R                  " S/5      S.5      n[        XSSS/S9n[         R                  " S/S/[         R                  " S/5      S.5      n[        R
                  " X#5        g )Nr   r  rf  zr  rf  r  r   )ri   rj   r  r   r   r   )r    r!   r   r   s       r   :test_merge_groupby_multiple_column_with_categorical_columnHTestAsOfMerge.test_merge_groupby_multiple_column_with_categorical_column+  sj    \\1#BNNA34GHIBsSz:<<qc"..!:M NO
f/r   funcc                     U $ N r  s    r   r  TestAsOfMerge.<lambda>3  s    1r   c                     [        U 5      $ r  )r   r  s    r   r  r  3  s    Ar   numericdatetimesider   r   c                 ^   SU S3nU" SS[         R                  /5      nU" / SQ5      n[        R                  " U/ SQS.5      n[        R                  " U/ SQS	.5      n[        R
                  " [        US
9   US:X  a  [        XgSS9  O
[        XvSS9  S S S 5        g ! , (       d  f       g = f)Nz"Merge keys contain null values on z sider\  rt  )r\  rt  g      $@r   r   )r   r   r  r   r  r   r   r   )r   r   ri   rj   r   r#  r  r   )r    r  r  r-  nulls	non_nullsdf_nullr!   s           r   test_merge_on_nans TestAsOfMerge.test_merge_on_nans2  s     34&>c3'()*	,,UHI\\	
CD]]:S1v~73/23/	 211s   9B
B,c                 8   [         R                  " [         R                  SS/US9nUR                  R                  S;   a5  [
        R                  " UR                  R                  5      R                  nO4[
        R                  " UR                  R                  5      R                  nXCS'   [         R                  " U/ SQ/ SQ/ SQS	.5      n[         R                  " U/ S
Q/ SQ/ SQS	.5      n[        XVSS/SS9n[         R                  " U/ SQ/ SQ/ SQS.5      n[
        R                  " [
        R                  [
        R                  [
        R                  /[        S9US'   U(       a  US   R                  S5      US'   [        R                   " Xx5        g )Nr   r   rO  )iur   )HELLOToYou)r   r  r   )r   r   r(  by_col1by_col2on_colrb  )WORLDWideWeb)r   r   r   )r   r'  r  r  r  r  r   r   r  r  r  value_xvalue_ystring[pyarrow_numpy])ri   arrayNArO  kindr   iinfonumpy_dtypemaxfinforj   r   r   rP  rl   r   r   )	r    any_numeric_ea_dtyper~  arrmax_valr   r   r   r   s	            r   test_by_nullableTestAsOfMerge.test_by_nullableD  s>    hhq!},@A99>>Z'hhsyy44599Ghhsyy44599G A||1#(	
 3#(	
 DY	,BxP<<1#*	
 !hh'?vN"*9"5"<"<=T"UHY
f/r   c                    [         R                  " [         R                  " S/5      R                  S5      S/S/S.5      n[         R                  " [         R                  " S/5      R                  S5      S/S/S.5      n[	        XSS	S
9n[         R                  " [         R
                  " SSS9SSS/// SQS9n[        R                  " X45        g )N
2018-01-01r  r   r   )by_colr  valuesr   r   r  r  r  r  )r  r  values_xvalues_yrb   )ri   rj   DatetimeIndextz_localizer   rd  r   r   )r    r   r   r   r   s        r   test_merge_by_col_tz_aware(TestAsOfMerge.test_merge_by_col_tz_awarer  s    ||**L>:FFuM#%
 **L>:FFuM#%
 DHB<<ll<E2AsC@A@
 	f/r   c                 B   [         R                  " [         R                  " S/5      R                  S5      S/S/S/S.5      n[         R                  " [         R                  " S/5      R                  S5      S/S/S	/S.5      n[	        X#S
S/SS9n[         R                  " [         R
                  " SSS9SSS/// SQS9n[        R                  " [        R                  /[        S9US'   U(       a  US   R                  S5      US'   [        R                  " XE5        g )Nr  r  r  r   r   r  r  r   r   r  r  r  r  r  r  rb   r  r  r  )ri   rj   r  r  r   rd  r   r  r   rP  rl   r   r   )r    r~  r   r   r   r   s         r   test_by_mixed_tz_aware$TestAsOfMerge.test_by_mixed_tz_aware  s   ||++\N;GGN#9#	
 ++\N;GGN#9#	
 DY	,BxP<<ll<E2GQDE?
 !hhxv>"*9"5"<"<=T"UHY
f/r   )re   int16zm8[ns]zM8[us]c                 j   [         R                  " [        R                  " S/US9S/S/S.5      n[         R                  " [        R                  " S/US9S/S/S.5      n[	        X#SSS	9n[         R                  " [        R                  " S/US9S/S/S/S
.5      n[
        R                  " XE5        g )Nr   r  r   r   )r  r  rb  r   r  r  r  )r  r  r  r  )ri   rj   r   r  r   r   r   )r    rO  r   r   r   r   s         r   test_by_dtypeTestAsOfMerge.test_by_dtype  s     ||((A3e4#
 ((A3e4#
 DHB<<((A3e4#55	
 	f/r   c                 (   US:X  a  [         R                  " S5        [        R                  " [	        [        / SQ/ SQ5      5      SS/S9n[        R                  " US   S5      R                  S	U S
35      US'   [        R                  " [	        [        / SQ/ SQ5      5      SS/S9n[        R                  " US   S5      R                  S	U S
35      US'   [        R                  " [	        [        / SQ/ SQS[        R                  SS[        R                  [        R                  /5      5      / SQS9n[        R                  " US   S5      R                  S	U S
35      US'   [        X#S[        S5      SS9n[        R                  " XT5        g )Nr	   zHThis test is invalid with unit='s' because that would round left['time'])r   r   r   r"     rU  )r   r   r   r   r  r   r   r   rb   r
   zm8[r   )r   r   	   r!  r"     r   r   r   r  )r   r   r   1msr  )r   r   r   )r   r   ri   rj   r  zipto_timedeltarl   r   r   r   r   r   r   )r    r   r   r   r   r   s         r    test_timedelta_tolerance_nearest.TestAsOfMerge.test_timedelta_tolerance_nearest  sb   3;KK%
 ||+-?@AV$

 tF|T:AACvQ-PV*,>?@W%

 ft<CCc$qMRf<<*&1bffbff5 .	
 ??8F+;TBIICPTvUV-XFi.>)
 	f/r   c                    [         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      nUS   R                  U5      US'   US   R                  U5      US'   [         R                  " / SQ/ SQ[        R                  SS/S	.5      nUS   R                  U5      US'   [        X#SS
S9n[        R                  " XT5        g )N)r   r   r  r  r   )r   r"  rU  r   r   r\  r]  r   r   r  )ri   rj   rl   r   r   r   r   r   )r    any_int_dtyper   r   r   r   s         r   test_int_type_tolerance%TestAsOfMerge.test_int_type_tolerance  s     ||+9EF;YGHI$$]3S	3Z&&}5c
<<9BFFCQTCUV
 !,,];DC2>
f/r   c           
      (   [         R                  " SSSSS9n[         R                  " / SQS/USS  S	9n[         R                  " US
/S-  S/-   S.5      n[        X#SS/S9n[         R                  " / SQUSS  S
/S-  S/-   S.[         R                  " SSSSS9S9n[        R
                  " XE5        [        X2SS/S9n[         R                  " US
/S-  S/-   [        R                  SSSS/S.[        / SQ5      S9n[        R
                  " XE5        g )Nz
2019-10-0130minr   r  )r  r  r  )?皙?ffffff?333333?xyzr   )rc   r  gGz@r  gQ@)	from_dateabcTr  )r   r   r  r  r   )r  r  r  z2019-10-01 00:30:00r  )r   r   r  r  r  r  r  r  )r  r  r  )r   r   r   r   r  )	ri   r  rj   r   r   r   r   r   r   )r    r  r   r   r   r   s         r   test_merge_index_column_tz(TestAsOfMerge.test_merge_index_column_tz  s#   l!N||05'qrS5$!tf9LMNt{m
 <<+"12YvzTF*
 --%GQ5	
 	f/{m
 <<"vzTF*S#s3
 (
 	f/r   c           
          US:X  a  [         R                  " S5        [        R                  " SSSUS9[	        SS9R                  U5      -   n[        R                  " SS	US
9n[        R                  " SS0[        R                  " U5      S9n[        R                  " SS0[        R                  " U5      S9n[        R                  " SSS.[        R                  " U5      S9n[        UUSS[	        SS9S9n[        R                  " Xv5        g )Nr	   z?This test is invalid with unit='s' because that would round dr1z1/1/2020z	1/20/20202D)r  endr  r   g?)secondsz2/1/2020)r  r  r   val1r  r  val2bar)r  r  Tr  )r  r  r   )r   r   ri   r  r   as_unitrj   r  r   r   r   )r    r   dr1dr2r  r  r   r   s           r   %test_left_index_right_index_tolerance3TestAsOfMerge.test_left_index_right_index_tolerance  s    3;KKQ mm+Dt
c"**401 mm**4HllFE?"2B2B32GHllFE?"2B2B32GH<<E*"2B2B32G
 ,
 	f/r   r  N)F)O__name__
__module____qualname____firstlineno__r#   r   fixturern   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r%  r)  r.  r2  r7  r<  rM  markparametrizerS  re  rh  r  r  r  r  r  r  r  r  r   r  	timedeltar  r  r  r  r  r  r  r  r  r  r  r  r  r  r/  r2  r=  rQ  rc  rg  rw  r  r  r  r  r  r  r  r  r  r  r  r  __static_attributes__r  r   r   r   r      s    ^^#" #"J ^^/ /4 ^^}" }"~ ^^}" }"~ ^^m" m"^ ^^m" m"^
0W0r0000000JJ00?0B [[Wx&:;B0 <B0HX80dY0v0
400,\;. [[	6	H..A67./  
0
000)0V0$0 000000d#0J0(0(0<0<;0z0<0>"0H70r
,,&0 [[67i=T   [[Vfg%670 80,0\0.08 [[W&NO0 P06'0R0 0B0r   r   infer_stringFTpyarrow)markskwargsr   r  r!  dataz2019-06-01 00:09:12z2019-06-01 00:10:29r\  c                 *   [        SU5         [        R                  " SU0US9n[        R                  " SU0US9n[        R                  " [
        SS9   [        X440 U D6  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nzfuture.infer_stringr  r  rz  r  )r   ri   rj   r   r#  r   r   )r  r  r  r   r   s        r   #test_merge_asof_non_numerical_dtyper  7  sy     
-|	<||S$Kt4c4[5]]U
 t-f-	
 
=	<
 
 
=	<s$   ABA3"B3
B	=B
Bc            
          [         R                  " / SQ/ SQS.5      n [         R                  " / SQ/ SQS.5      n[        R                  " [        SS9   [        U USS	S	S
S9  S S S 5        g ! , (       d  f       g = f)N)r  1315r   )r   	left_val1)r'  r(  r  r   rz  r  r  r   r   )r  r  r5  r6  r}  r   r   s     r   *test_merge_asof_non_numerical_dtype_objectr  M  sg    <<0OPDLLOLME	Q
 		
	
 
 
s   A,,
A:)r  r  	left_time)r  r  r   )r  r  c                    [        / SQSS9n[        R                  " / SQ/ SQS.US9n[        R                  " S/ S	Q0/ S	QS9n[        X#40 U D6n[        R                  " / SQ/ SQ/ S
QS.US9n[        R
                  " XE5        g )Nr   testnamer   )r   r  r   )r   r  r  r   r   r   )r   r  r   )r   ri   rj   r   r   r   )r  r  r   r   r   r   s         r   test_merge_asof_index_behaviorr
  _  su     *6*E<<zJRWXDLL'?3?KE.v.F|| zINH &+r   c                     [         R                  " S/ SQ0[        / SQSS9S9n [         R                  " S/ SQ0[        / S	QSS9S9n[        XSSS
9n[         R                  " / SQ/ SQ/ SQS.5      n[        R
                  " X#5        g )Nr   r   r  r!  r  r   r  r  r   r        )r   r   r   r  r  r   )ri   rj   r   r   r   r   r   r   r   r   s       r   'test_merge_asof_numeric_column_in_indexr  u  sk    <<l+53MNDLL#|,E)#4NOES3?F||),\RSH&+r   c                  z   [         R                  " S/ SQ0[         R                  R                  / SQ/ SQ/SS/S9S9n [         R                  " S	/ S
Q0[         R                  R                  / SQ/ SQ/SS/S9S9n[	        XSSS9n[         R                  " / SQ/ SQ/ S
QS.5      n[
        R                  " X#5        g )Nr   r  r  r   r   r  )namesr  r   r  r  rf  r  )ri   rj   
MultiIndexfrom_arraysr   r   r   r  s       r   ,test_merge_asof_numeric_column_in_multiindexr    s    <<	lmm''O(DSRUJ'WD LL	lmm''O(DSRUJ'WE
 S3?F||),\RSH&+r   c                     [         R                  " S/ SQ0[        / SQSS9S9n [         R                  " S/ SQ0[        / S	QSS9S9n[        R                  " [
        S
S9   [        XSSS9  S S S 5        U R                  5       R                  SS/5      n UR                  5       R                  SS/5      n[        R                  " [
        S
S9   [        XSSS9  S S S 5        g ! , (       d  f       N~= f! , (       d  f       g = f)Nr   r  )rw  23r   r  r  r   r  )mnorz  r  r  )	ri   rj   r   r   r#  r   r   r   r  r  s     r   3test_merge_asof_numeri_column_in_index_object_dtyper    s    <<l+5s3STDLL#|,E/PS4TUE	Q
 	4c:	
 ''c
3D))3*5E	Q
 	4c:	
 

 

 
s    C$C5$
C25
Dc           	          [         R                  " SS/SU  S3S9n[         R                  " SS/US.5      n[         R                  " [         R                  " S	5      S
SU S9n[         R                  " S/ SQ05      n[        UUUSSSS9n[         R                  " / SQ[        R                  SS/US.5      n[        R                  " XV5        [        UUSUSSS9n[         R                  " SS/USS/S.5      n[        R                  " XV5        g )Nz2021/01/01 00:37z2021/01/01 01:40r   r   r  r   r   )r   tsz2021/01/01 00:00r   1h)r  r  r  r   r   )r     r   r   Fbackward)r  r  r   r   )r   r   r   r  r"  )r   r   r   )
ri   r  rj   r  rd  r   r   r   r   r   )r   dtir   ts_merger   r   r   s          r   test_merge_asof_array_as_onr&    s   


	/0#dV1C LLQ	
E }}ll-.4H <<i()D!F ||)2661a.QRH&+!F ||QQ	
H &+r   c                     [         R                  " / SQ// SQS9n [         R                  " / SQ// SQS9n[        R                  " [        SS9   [        XSS	9  S S S 5        [        R                  " [        SS9   [        XSS
S9  S S S 5        [        R                  " [        SS9   [        XSSS9  S S S 5        g ! , (       d  f       Ni= f! , (       d  f       NM= f! , (       d  f       g = f)N)r   r   r   )r   r   r   rb   )r   r   r   )r   r   r   zcolumn label 'a'r  r   r   r   r  r   )ri   rj   r   r#  r  r   r  s     r   +test_merge_asof_raise_for_duplicate_columnsr(    s    <</EFDLL).EFE	z);	<43' 
= 
z);	<4kB 
= 
z);	<4
SA 
=	< 
=	< 
=	< 
=	<s$   B<:C'C<
C

C
C,rO  Int64zint64[pyarrow]ztimestamp[s][pyarrow]c                    [         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      nUR                  SU 05      nUR                  SU 05      n[        XSS9n[         R                  " / SQ/ SQ[        R
                  SS	/S
.5      nUR                  SU 05      n[        R                  " X45        g )N)r   r   r   r  )join_colr   )r   r   r  )r+  r   r+  r   r]  r_  )r+  r   r   )ri   rj   rl   r   r   r   r   r   )rO  r   r   r   r   s        r   test_merge_asof_extension_dtyper,    s     <<!!	
D LL!"	
E ;;
E*+DLL*e,-E
3F||!!&&#s+	
H 
E23H&+r   c                     [         R                  " [        R                  " SSS5      /SS9n [         R                  " U S/S.5      n[	        XS[        S5      S9n[         R                  " U S/S/S	.5      n[        R                  " X#5        g )
Ni  r   ztimestamp[us, UTC][pyarrow]r  )	timestamprb  r.  r  r  )r.  r  r  )ri   Seriesr  rj   r   r   r   r   )serr!   r   r   s       r   $test_merge_asof_pyarrow_td_tolerancer1    s     ))			4A	&'/LC 
S	

B ;)D/JF||ss	
H &+r   c                  p   [         R                  " S/S/SS9n [         R                  " S/S/SS9nSU R                  R                  R                  l        SUR                  R                  R                  l        [        XSSS9n[         R                  " S/S/S	.S/S
9n[        R                  " X#5        g )Nr   r   )r  r	  r   r   FTr!  r  r  )
ri   r/  r  r  flags	writeabler   rj   r   r   r  s       r   !test_merge_asof_read_only_ndarrayr5    s    99aS&1DIIqc!73E(-DJJ%).EKK&$GF||aSA37sCH&+r   c            
      $   [         R                  " [         R                  " / SQSS/S9S/S-  S/S-  [        S5      S.5      n [         R                  " [         R                  " SS/SS/S9S/S	-  SS	/[        S	5      S.5      n[	        U US
S/SSSS/S9n[         R                  " [         R                  " / SQSS/S9S/S-  S/S-  [        S5      [
        R                  [
        R                  SS/S.5      n[        R                  " X#5        g )N)r   r   r   r   r   r   )
categoriesr  r  r   )c1c2tvr   r8  r9  r:  r   _left_right)r   r   r   suffixesrI  )r8  r9  r:  v_leftv_right)	ri   rj   r  ranger   r   r   r   r   r  s       r   (test_merge_asof_multiby_with_categoricalrB  &  s   <<..!53*M%!)qq		
D LL..#sc
C%!)Qq		
E $<8$F ||..!53*M%!)qAhS1	
H &+r   )(r  numpyr   r   r  pandas.util._test_decoratorsutil_test_decoratorstdpandasri   r   r   r   r   r   pandas._testing_testingr   pandas.core.reshape.merger   r  r   r   r  r  r   
skip_if_nor  r  r
  r  r  r  r&  r(  r,  r1  r5  rB  r  r   r   <module>rM     s       ) )    0 ./ 0W40 W40th UFLLR]]95MNO c{4EF 
23c;P5QR	.		.
$ D151,,,, ;*),XB %R]]9-EF,BMM)4LM,,8 y, ,,	,#,r   