
    I j                       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   " S S5      r\R*                  R-                  SS\R.                  " S\R0                  " S	5      S
9/5      \R*                  R-                  SSS0SSS./5      \R*                  R-                  SSS/SS//5      S 5       5       5       rS r\R*                  R-                  SSSS.SSS.SSS./5      S 5       rS rS rS rS rS r \R*                  R-                  S S!\R.                  " S"\R0                  " S	5      S
9\R.                  " S#\R0                  " S	5      S
9/5      S$ 5       r!\R0                  " S	5      S% 5       r"S& r#S' r$g)(    N)Index	Timedelta
merge_asofoption_contextto_datetime)
MergeErrorc                      \ rS rSrSWS j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\R6                  R9                  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'\R6                  R9                  S%\(" S&5      \)RT                  " S'S(9/S)S*/S+9S, 5       r+S- r,S. 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 rB\R6                  R9                  SDSE \C/SFSG/S+9\R6                  R9                  SHSISJ/5      SK 5       5       rDSL rESM rFSN rG\R6                  R9                  S/ SOQ5      SP 5       rHSQ rISR rJSS rKST rLSUrMgV)X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      {/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/pandas/tests/reshape/merge/test_merge_asof.py	prep_dataTestAsOfMerge.prep_data   sJ    ##VX$6V#DPP Q B bgg&	    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"   r'   r(   z720.9200r)   r"   r'   r(   720.9300200r"   r'   r(   r,   300r"   r'   r(   r,   600r"   r'   r(   r,   44r"   20160525 13:30:00.074AAPL98.6700478343r"   20160525 13:30:00.075r6   r7   r8   r"   r:   r6   z98.66006r"   r:   r6   98.650030r"   r:   r6   r>   r!   r"   r:   r6   r>   20r"   r:   r6   r>   35r"   r:   r6   r>   10r"   r:   r6   98.5500r<   ARCA20160525 13:30:00.076r6   98.56001000rI   rK   r6   rL   r-   rI   rK   r6   rL   r/   rI   rK   r6   rL   400rI   rK   r6   rL   r1   rI   20160525 13:30:00.078r   r    783r"   rT   r   r    r)   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   r(   720.50720.93r   r   51.95rl   20160525 13:30:00.041r   rl   rl   r'   r(   ri   rj   20160525 13:30:00.072r(   ri   z720.88r:   r6   98.5598.56rK   r6   rs   rt   rT   r   rl   rl   rT   r   51.92rl   time,ticker,bid,askrX   rY   bidr\   askTr   r_   rd   s     r   quotesTestAsOfMerge.quotesC   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   rl   r!   r"   rl   rl   r$   r   rl   r%   r"   rl   rl   r'   r(   z720.77r)   r"   720.5rj   r'   r(   z720.92r)   r"   r   rj   r'   r(   rj   r-   r"   r   rj   r'   r(   rj   r/   r"   r   rj   r'   r(   rj   r1   r"   r   rj   r'   r(   rj   r3   r"   r   rj   r5   r6   98.67r8   r"   r:   r6   r   r8   r"   rs   rt   r:   r6   98.66r<   r"   rs   rt   r:   r6   98.65r?   r"   rs   rt   r:   r6   r   r!   r"   rs   rt   r:   r6   r   rB   r"   rs   rt   r:   r6   r   rD   r"   rs   rt   r:   r6   r   rF   r"   rs   rt   r:   r6   rs   r<   rI   rs   rt   rK   r6   rt   rM   rI   rs   rt   rK   r6   rt   r-   rI   rs   rt   rK   r6   rt   r/   rI   rs   rt   rK   r6   rt   rQ   rI   rs   rt   rK   r6   rt   r1   rI   rs   rt   rT   r   rl   rU   r"   rx   rl   rT   r   rl   r)   r"   rx   rl   /time,ticker,price,quantity,marketCenter,bid,askrX   rY   r[   r\   r]   r^   rz   r{   r`   ra   npnanrb   rc   r   rd   s     r   asofTestAsOfMerge.asof^   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   rd   s     r   	toleranceTestAsOfMerge.tolerance^  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r`   ra   r   tmassert_frame_equalr   leftrightexpectedresults        r   test_examples1TestAsOfMerge.test_examples1^  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   szNThis test is invalid for unit='s' because that would round the trades['time']])r   r$   r'   r'   r'   M8[]r   r   r(   r(   r6   皙I@r   g\(@(\@g     X@K      d   r   r   )r   r   r[   r]   rY   )r   r   20160525 13:30:00.030rn   r'   20160525 13:30:00.049rq   r:   )r(   r   r   r   r(   r6   r(   r   )     @r   \(I@QI@r   (\X@r   gzGJ@)=
ףp@{GI@=
ףpI@      J@r   q=
ףX@gףp=
@gp=
J@)r   r   rz   r{   r   r   r   by2msr   r   r   r   r   )r   r   r[   r]   rz   r{   10msFr   r   r   allow_exact_matchesN)pytestskipr`   ra   r   rc   r   r   r   r   r   r   )r   unitre   r}   r   r   s         r   test_examples2TestAsOfMerge.test_examples2j  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r`   ra   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   re   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   rc   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   indexrZ   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   r[   zleft can only have one indexmatchTr   r  r  r   raisesr   r   r   re   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   rz   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  r[   T)r  r   r  r  r   re   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  rz   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1r!  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_by0  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   rz   r{   )r   r   r   r   locr   r   )r   re   r   r}   r   qr   s          r   test_missing_right_by#TestAsOfMerge.test_missing_right_by9  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.046r'   20160525 13:30:00.050r   rI   NSDQr3  BATSr3  r   r   r   r   exchr[   r]   rY   r   r   r   rn   z20160525 13:30:00.045r   )r(   r   r   r   r(   r6   r4  r3  rI   rI   r3  rI   Gz@r   r   r   r   r   r   r   r   r   r   r   r   r   r6  rz   r{   r   r   r:  r   r   r   r   r   r6  r[   r]   rz   r{   r   r   r6  r   )r`   ra   r   r   r   r   r   r   )r   re   r}   r   r   s        r   test_multibyTestAsOfMerge.test_multibyA  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 )Nr0  )r   r   r   r   r   r2  r   r   r5  rY   )r   r6  r7  )r   r   r   r   r   r   r8  r9  r;  r<  r   r   r:  r   r   r   r=  r   r   r6  r   )	r`   ra   r   rc   r   r   r   r   r   )r   r@  re   r}   r   r   s         r    test_multiby_heterogeneous_types.TestAsOfMerge.test_multiby_heterogeneous_types  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k2rY   r   r   20160502      ?       @20160503      @      @r   rJ  rK  valuezincompatible merge keysr  TrJ  rK  r  )
r`   ra   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)NrG  r   r   r   rH  r   rI  rY   r   rL  rM  rN  rO  rP  rQ  rR  TrJ  rK  r  z,left_by and right_by must be the same lengthr  )r   r  r&  r'  )
r`   ra   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   r5   r6   r   r8   r"   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )20160525 13:30:00.084r6   z98.6440r"   rs   rt   )r[  r6   rs   149EDGXrs   rt   )20160525 13:30:00.086r6   rt   500rI   rs   98.63)20160525 13:30:00.104r6   ra  647r^  98.62ra  )rb  r6   ra  r/   r^  rd  ra  )rb  r6   ra  50r"   rd  ra  )rb  r6   ra  70r"   rd  ra  )rb  r6   ra  1r"   rd  ra  )rb  r6   ra  62r"   rd  ra  )rb  r6   ra  rF   r"   rd  ra  )rb  r6   ra  r)   rI   rd  ra  )20160525 13:30:00.105r6   ra  r)   rI   rd  ra  )ri  r6   ra  700rI   rd  ra  )20160525 13:30:00.106r6   ra  61r^  rd  ra  )20160525 13:30:00.107r6   ra  r)   rI   rd  ra  )rm  r6   ra  53rI   rd  ra  )20160525 13:30:00.108r6   ra  r)   rI   rd  ra  )ro  r6   ra  839rI   rd  ra  )20160525 13:30:00.115r6   ra  5r^  rd  ra  )20160525 13:30:00.118r6   ra  295r^  rd  ra  )rs  r6   ra  rr  r^  rd  ra  )20160525 13:30:00.128r6   ra  r)   r"   rd  ra  )ru  r   rx   r)   rI   rx   rl   )20160525 13:30:00.129r6   rd  r)   r"   98.61ra  )rv  r6   rd  rF   r"   rw  ra  )rv  r6   rd  59r"   rw  ra  )rv  r6   rd  31r"   rw  ra  )rv  r6   rd  69r"   rw  ra  )rv  r6   rd  12r"   rw  ra  )rv  r6   rd  r{  r^  rw  ra  )rv  r6   rd  r)   rI   rw  ra  )20160525 13:30:00.130r   rl   317rI   51.93rl   )r|  r   rl   283rI   r~  rl   )20160525 13:30:00.135r   r~  r)   r^  rx   rl   )r  r6   rd  r)   rI   rw  rd  )20160525 13:30:00.144r6   rd  r{  r"   rw  rd  )r  r6   rd  88r"   rw  rd  )r  r6   rd  162r"   rw  rd  )r  r6   rw  r)   r4  rw  rd  )r  r6   rd  rl  rI   rw  rd  )r  r6   rd  25rI   rw  rd  )r  r6   rd  14rI   rw  rd  )20160525 13:30:00.145r6   rd  r{  rI   98.6ra  )r  r6   rd  r)   rI   r  ra  )r  r6   ra  r)   r"   r  ra  r   rX   rY   r[   r\   r]   r^   rz   r{   r   r#   r&   r*   r+   r.   r0   r2   r4   r9   r;   r=   r@   rA   rC   rE   rG   rJ   rN   rO   rP   rR   rS   rV   )r[  r6   z98.6400r\  r"   )r[  r6   rH   r]  r^  )r_  r6   rL   r`  rI   )rb  r6   98.6300rc  r^  )rb  r6   r  r/   r^  )rb  r6   r  re  r"   )rb  r6   r  rf  r"   )rb  r6   r  rg  r"   )rb  r6   r  rh  r"   )rb  r6   r  rF   r"   )rb  r6   r  r)   rI   )ri  r6   r  r)   rI   )ri  r6   r  rj  rI   )rk  r6   r  rl  r^  )rm  r6   r  r)   rI   )rm  r6   r  rn  rI   )ro  r6   r  r)   rI   )ro  r6   r  rp  rI   )rq  r6   r  rr  r^  )rs  r6   r  rt  r^  )rs  r6   r  rr  r^  )ru  r6   r  r)   r"   )ru  r   z51.9200r)   rI   )rv  r6   98.6200r)   r"   )rv  r6   r  rF   r"   )rv  r6   r  rx  r"   )rv  r6   r  ry  r"   )rv  r6   r  rz  r"   )rv  r6   r  r{  r"   )rv  r6   r  r{  r^  )rv  r6   r  r)   rI   )r|  r   r    r}  rI   )r|  r   r    r  rI   )r  r   z51.9300r)   r^  )r  r6   r  r)   rI   )r  r6   r  r{  r"   )r  r6   r  r  r"   )r  r6   r  r  r"   )r  r6   z98.6100r)   r4  )r  r6   r  rl  rI   )r  r6   r  r  rI   )r  r6   r  r  rI   )r  r6   r  r{  rI   )r  r6   r  r)   rI   )r  r6   r  r)   r"   rW   rh   rk   rm   ro   rp   rr   ru   rv   rw   )z20160525 13:30:00.079r   rx   rl   )z20160525 13:30:00.080r6   rs   rt   )r[  r6   rs   rt   )r_  r6   rs   ra  )z20160525 13:30:00.088r6   r   ra  )z20160525 13:30:00.089r6   ra  ra  )rb  r6   ra  ra  )rb  r6   rd  ra  )ri  r6   rd  ra  )rm  r6   rd  ra  )rq  r6   rd  ra  )rs  r6   rd  ra  )ru  r6   rd  ra  )rv  r6   rd  ra  )rv  r6   rw  ra  )r|  r   r~  rl   )r|  r6   rw  ra  )z20160525 13:30:00.131r6   rw  rd  )r  r   rx   rl   )r  r6   rw  rd  )z20160525 13:30:00.136r6   rw  rd  )r  r6   rw  rd  )r  r6   rw  rd  )r  r6   rw  ra  )r  r6   z98.60ra  ry   Tr|   r   r   r   )
r`   ra   r   r   rb   rc   r   r   r   r   )r   datapathr   re   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>q  s/    hh& !&&xa&8DD$DOr   r   r   r   )r   re   r   r}   fr   r   s          r   test_basic_no_byTestAsOfMerge.test_basic_no_byp  s@    

 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   rz   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_keys}  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   )r`   concatsort_valuesr   r   r   r   r   )r   r  re   r}   r   r,  r   r   s           r   test_with_duplicates"TestAsOfMerge.test_with_duplicates  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  rM  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  re   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                  " [         R                  " [        S5      SS[        R
                  US9[        R                  " S5      S.5      n[         R                  " [         R                  " [        S5      SS[        R
                  US9[        S5      S.5      n[        X#S	[        S
5      S9n[         R                  " [         R                  " [        S5      SS[        R
                  US9[        R                  " S5      [        S5      S.5      n[        R                  " XE5        g )Nz
2016-01-02Dr   )startfreqperiodstzr   )datevalue1z
2016-01-01ABCDE)r  value2r  z1 dayr   r   BCDEE)r  r  r  )r`   ra   
date_ranger   datetimeUTCr   arangelistr   r   r   r   )r   r   r   r   r   r   s         r   test_tolerance_tzTestAsOfMerge.test_tolerance_tz  s    ||%l3|| ))A,	
 %l3|| w-	
 DFi>PQ<<%l3|| ))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   )rM        @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   re   r}   r   r   r   s         r   test_index_tolerance"TestAsOfMerge.test_index_toleranceL  sc    &&v.!!&)!!&)'
 	f/r   c                    [        XSSSS9n[        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      n[        R                  " X55        g )/Nr   r   Fr  r   r   rl   r!   r"   r   r   r   r   r   r   r   r5   r6   r   r8   r:   r   r<   r   r?   rB   rD   rF   rs   rI   r   r   r   r   r   rT   r   rl   rU   r"   rl   rl   rT   r   rl   r)   r"   rl   rl   r   rX   rY   r[   r\   r]   r^   rz   r{   )
r   r`   ra   r   r   rb   rc   r   r   r   r   re   r}   r   r   r   s         r   test_allow_exact_matches&TestAsOfMerge.test_allow_exact_matches\  s   v(
 \\ ,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	>>"%
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_forwardO	  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                    [        UUSS[        S5      SS9n[        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      n[        R                  " X55        g )0Nr   r   100msFr   r   r   rl   r!   r"   r   r   r   r   r   r   r   r5   r6   r   r8   r:   r   r<   r   r?   rB   rD   rF   rs   rI   r   r   r   r   r   r  r  r   rX   rY   r[   r\   r]   r^   rz   r{   )r   r   r`   ra   r   r   rb   rc   r   r   r   r  s         r   &test_allow_exact_matches_and_tolerance4TestAsOfMerge.test_allow_exact_matches_and_tolerancem	  s   ( %
 \\ ,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	>>"%
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   )	r`   ra   r   r   r   r   r   r   r   r  s        r   'test_allow_exact_matches_and_tolerance25TestAsOfMerge.test_allow_exact_matches_and_tolerance2e
  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   )	r`   ra   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.040r1  20160525 13:30:00.060)r   r   r   r   r   )r  g333333?g?gffffff?g      ?)r   r  r  rY   )z20160525 13:30:00.015r(  z20160525 13:30:00.025z20160525 13:30:00.035r)  z20160525 13:30:00.055r*  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   )r,  r+  r-  r.  r/  )r   r  r  r  )r`   ra   r   r   r   r   r  s        r   test_by_intTestAsOfMerge.test_by_int   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)r[   symbolr;  r[   rY   )        rM        Y@)-C6?{Gz?皙?)r[   mpvrA  Tr   r   BGACEDF)r4  r9  r3  r5  r7  r6  r8  )r>  r>  r?  r?  r?  r@  r@  )r;  r[   rA  r`   ra   r  r  r   r   r   r   r  s        r   test_on_floatTestAsOfMerge.test_on_float]  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   r:  )rS  r;  r;  rS  rY   r   P   rJ  }   xyzw)rS  r   r   Tr   r   BACEGDFr   r   rH  rI  rK  r   rJ  xxxxxyz)r;  rS  r   )r   r@  typer`   ra   r  rS  r  r   r   r   r   r   any_real_numpy_dtyper@  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 )NrG  )r   r   r   r   r   r   r   r:  )rS  r  r;  )r;  r  rS  rY   rL  )r   r   r   r   rO  )rS  r  r   rS  Tr   r  r   rP  )r   r   r   r   r   r   r   rQ  r  y)r;  r  rS  r   )r   r@  rS  r`   ra   r  rS  r  r   r   r   r   r   rT  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@)r;  r6  r[   rY   )	r   r   r   r   r   r   r   r   r   )	r<  rM  r=  r<        @r=  r<  rg  g     @@)	r>  r?  r@  r>  r?  皙?r>        ?rM  )r6  r[   rA  r[   Tr   r6  r   )	r   r   r   r   r   r   r   r   r   )	r`  r_  r^  rc  ra  rb  rd  re  rf  )	r>  r>  r?  ri  r?  r?  r@  rh  ri  )r;  r6  r[   rA  rC  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                     Sn[         R                  " / SQ/ SQS.5      n[         R                  " / SQ/ SQS.5      n[        R                  " [        US9   [        X#SS	9  S S S 5        g ! , (       d  f       g = f)
N@Incompatible merge dtype, .*, both sides must have numeric dtyper   r   r   r   r   r   r   r  r   r   r`   ra   r   r  r   r   r   r  r   r   s       r    test_merge_datatype_error_raises.TestAsOfMerge.test_merge_datatype_error_raises  sQ    Q||/JK?QR]]:S1ts+ 211s   A**
A8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   rn  r   )r   r  r   r  r   ro  r  r   r   )r`   ra   Categoricalr   r  r   r   rq  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  rY  zr  rY  rz  r   )r`   ra   ru  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>  s    1r   numericr  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 siderM  rg  )rM  rg  g      $@r   r   )r   r   r  r   r  r   r   r   )r   r   r`   ra   r   r  r  r   )r   r}  r  r  nulls	non_nullsdf_nullr   s           r   test_merge_on_nans TestAsOfMerge.test_merge_on_nans  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   r@  )iur   )HELLOToYou)r   r
  r   )r   r   r  by_col1by_col2on_colrS  )WORLDWideWeb)r   r   r   )r   r  r  r  r  r  r   r   r  r  r  value_xvalue_ystr)r`   arrayNAr@  kindr   iinfonumpy_dtypemaxfinfora   r   r   rA  rc   r   r   )	r   any_numeric_ea_dtypeusing_infer_stringarrmax_valr   r   r   r   s	            r   test_by_nullableTestAsOfMerge.test_by_nullable,  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"<"<U"CHY
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_yrY   )r`   ra   DatetimeIndextz_localizer   rT  r   r   )r   r   r   r   r   s        r   test_merge_by_col_tz_aware(TestAsOfMerge.test_merge_by_col_tz_awareZ  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  rY   r  r  r  )r`   ra   r  r  r   rT  r   r  r   rA  rc   r   r   )r   r  r   r   r   r   s         r   test_by_mixed_tz_aware$TestAsOfMerge.test_by_mixed_tz_awareq  s   ||++\N;GGN#9#	
 ++\N;GGN#9#	
 DY	,BxP<<ll<E2GQDE?
 !hhxv>"*9"5"<"<U"CHY
f/r   )r\   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  rS  r   r  r  r  )r  r  r  r  )r`   ra   r   r  r   r   r   )r   r@  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SS9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S9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                  /SS9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  r   rH  )r   r   r   r   r
  r   T)strictr   r   rY   mszm8[r   )r   r   	   r  r     r   r   r   r
  )r   r   r   1msr   )r   r   r   )r   r   r`   ra   r  zipto_timedeltarc   r   r   r   r   r   r   )r   r   r   r   r   r   s         r    test_timedelta_tolerance_nearest.TestAsOfMerge.test_timedelta_tolerance_nearest  si   3;KK%
 ||+-?MNV$

 tF|T:AACvQ-PV*,>tLM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  rH  r   r   rM  rN  r   r   r  )r`   ra   rc   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   )rZ   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
  )	r`   r  ra   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   r`   r  r   as_unitra   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)N__name__
__module____qualname____firstlineno__r   r   fixturere   r}   r   r   r   r   r   r   r   r   r  r	  r  r  r  r  r#  r(  r-  r>  markparametrizerD  rU  rX  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"  r%  r0  rD  rV  rZ  rj  rr  rv  r{  r   r  r  r  r  r  r  r  r  r  __static_attributes__r  r   r   r
   r
      s    ^^#" #"J ^^/ /4 ^^}" }"~ ^^}" }"~
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 q0f00v0p00d#0J0(0(0<0<;0z0<0>"0H70r,,&0 [[k*J0G   [[Vfg%670 80,0\0.08 [[W&NO0 P06(0T0 0B0r   r
   infer_stringFTpyarrow)markskwargsr   r  r  dataz2019-06-01 00:09:12z2019-06-01 00:10:29rM  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  rm  r  )r   r`   ra   r   r  r   r   )r  r  r  r   r   s        r   #test_merge_asof_non_numerical_dtyper     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   rm  r  r  r   r   )r  r   r&  r'  rp  r   r   s     r   *test_merge_asof_non_numerical_dtype_objectr  6  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   r`   ra   r   r   r   )r  r  r   r   r   r   s         r   test_merge_asof_index_behaviorr  H  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   )r`   ra   r   r   r   r   r   r   r   r   s       r   'test_merge_asof_numeric_column_in_indexr  ^  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   rz  )namesr  r   r  ry  rY  r  )r`   ra   
MultiIndexfrom_arraysr   r   r   r  s       r   ,test_merge_asof_numeric_column_in_multiindexr	  h  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  )rg  23r   r  r  r   r  )mnorm  r  r  )	r`   ra   r   r   r  r   r   r   r  r  s     r   3test_merge_asof_numeri_column_in_index_object_dtyper  x  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   )
r`   r  ra   r  rT  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   rY   )r   r   r   )r   r   r   zcolumn label 'a'r  r   r   r   r  r   )r`   ra   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,r@  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   rN  rP  )r  r   r   )r`   ra   rc   r   r   r   r   r   )r@  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  )	timestamprS  r   r  r  )r   r  r  )r`   Seriesr  ra   r   r   r   r   )serr   r   r   s       r   $test_merge_asof_pyarrow_td_tolerancer#    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  )
r`   r!  r  r  flags	writeabler   ra   r   r   r  s       r   !test_merge_asof_read_only_ndarrayr'    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   r*  r+  r,  r   _left_right)r   r   r   suffixesr<  )r*  r+  r,  v_leftv_right)	r`   ra   ru  ranger   r   r   r   r   r  s       r   (test_merge_asof_multiby_with_categoricalr4    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   pandas.util._test_decoratorsutil_test_decoratorstdpandasr`   r   r   r   r   r   pandas._testing_testingr   pandas.core.reshape.merger   r
   r  r  param
skip_if_nor  r  r  r  r	  r  r  r  r  r#  r'  r4  r  r   r   <module>r@     s      ) )    0I40 I40Xh 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   