
    Pi                    4   d dl Z d dlZd dlZd dlmc mZ d dlZ	d dlm
Z
mZmZmZmZ d dlmZ d dlmZ  G d d          Zej                            dd ej        d ej        d	          
          g          ej                            dddidddg          ej                            dddgddgg          d                                     Zd Zej                            ddddddddddg          d             Zd Zd Zd Zd Zd Z ej                            d d! ej        d" ej        d	          
           ej        d# ej        d	          
          g          d$             Z! ej        d	          d%             Z"d& Z#d' Z$dS )(    N)Index	Timedelta
merge_asofoption_contextto_datetime)
MergeErrorc                      e Zd ZdVdZej        d             Zej        d             Zej        d             Zej        d             Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                            dddg          d             Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&ej                            d% e'd&           e(j)        d'(          gd)d*g+          d,             Z*d- Z+d. Z,d/ Z-d0 Z.d1 Z/d2 Z0d3 Z1d4 Z2d5 Z3d6 Z4d7 Z5d8 Z6d9 Z7d: Z8d; Z9d< Z:d= Z;d> Z<d? Z=d@ Z>dA Z?dB Z@dC ZAej                            dDdE eBgdFdGg+          ej                            dHdIdJg          dK                         ZCdL ZDdM ZEdN ZFej                            dg dO          dP             ZGdQ ZHdR ZIdS ZJdT ZKdUS )WTestAsOfMergeFc                     |r-|                     ddgd                              d          }t          |j                  |_        |S )Ntimetickerlast)keepTdrop)drop_duplicatesreset_indexr   r   )selfdfdedupes      ~/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/reshape/merge/test_merge_asof.py	prep_datazTestAsOfMerge.prep_data   sX     	##VX$6V#DDPP Q  B bg&&	    c                    t          j        g dg dg dg dg dg dg dg dg d	g d
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dgd                    d                    }|d                             d          |d<   |d                             d          |d<   |                     |          S ) 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.075r4   r5   r6   r    r8   r4   z98.66006r    r8   r4   98.650030r    r8   r4   r<   r   r    r8   r4   r<   20r    r8   r4   r<   35r    r8   r4   r<   10r    r8   r4   98.5500r:   ARCA20160525 13:30:00.076r4   98.56001000rG   rI   r4   rJ   r+   rG   rI   r4   rJ   r-   rG   rI   r4   rJ   400rG   rI   r4   rJ   r/   rG   20160525 13:30:00.078r   r   783r    rR   r   r   r'   r    'time,ticker,price,quantity,marketCenter,columnspricefloat64quantityint64pd	DataFramesplitastyper   r   r   s     r   tradeszTestAsOfMerge.trades   sn   \LLLMMMNNNNNNNNNNNNNNNMMMPPPPPPKKKLLLLLLLLLLLLLLLIIIIIILLLKKKKKKKKKKKKKKKMMMMMMMMM7: >CCCHH=
 
 
@ k((337J..w77:~~b!!!r   c                 Z   t          j        g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d	gd
                    d                    }|d                             d          |d<   |d                             d          |d<   |                     |d          S )Nr   r&   720.50720.93r   r   51.95ri   20160525 13:30:00.041r   ri   ri   r%   r&   rf   rg   20160525 13:30:00.072r&   rf   z720.88r8   r4   98.5598.56rI   r4   rp   rq   rR   r   ri   ri   rR   r   51.92ri   time,ticker,bid,askrV   rW   bidrZ   askTr   r]   rb   s     r   quoteszTestAsOfMerge.quotesC   s   \EEECCCCCCEEEEEEEEEEEEEEECCCCCCCCCCCCCCCCCCCCCCCC!$ *//44'
 
 
* uI$$Y//5	uI$$Y//5	~~b~...r   c                 B   t          j        g dg dg dg dg dg dg dg dd	d
dddt          j        t          j        gg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dgd                    d                    }|d                              d!          |d <   |d"                             d#          |d"<   |d$                             d!          |d$<   |d%                             d!          |d%<   |                     |          S &Nr   r   ri   r   r    ri   ri   r"   r   ri   r#   r    ri   ri   r%   r&   z720.77r'   r    720.5rg   r%   r&   z720.92r'   r    r   rg   r%   r&   rg   r+   r    r   rg   r%   r&   rg   r-   r    r   rg   r%   r&   rg   r/   r    r   rg   r%   r&   rg   r1   r    r   rg   r3   r4   98.67r6   r    r8   r4   r   r6   r    rp   rq   r8   r4   98.66r:   r    rp   rq   r8   r4   98.65r=   r    rp   rq   r8   r4   r   r   r    rp   rq   r8   r4   r   r@   r    rp   rq   r8   r4   r   rB   r    rp   rq   r8   r4   r   rD   r    rp   rq   r8   r4   rp   r:   rG   rp   rq   rI   r4   rq   rK   rG   rp   rq   rI   r4   rq   r+   rG   rp   rq   rI   r4   rq   r-   rG   rp   rq   rI   r4   rq   rO   rG   rp   rq   rI   r4   rq   r/   rG   rp   rq   rR   r   ri   rS   r    ru   ri   rR   r   ri   r'   r    ru   ri   /time,ticker,price,quantity,marketCenter,bid,askrV   rW   rY   rZ   r[   r\   rw   rx   r^   r_   npnanr`   ra   r   rb   s     r   asofzTestAsOfMerge.asof^   _   \                 ,FF                                    Wtj FKKCPPmw
 w
 w
p k((337J..w77:uI$$Y//5	uI$$Y//5	~~b!!!r   c                 B   t          j        g dg dg dg dg dg dg dg dd	d
dddt          j        t          j        gg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dgd                    d                    }|d                              d!          |d <   |d"                             d#          |d"<   |d$                             d!          |d$<   |d%                             d!          |d%<   |                     |          S r|   r   rb   s     r   	tolerancezTestAsOfMerge.tolerance^  r   r   c                     t          j        g dg dd          }t          j        g dg dd          }t          j        g dg dg dd          }t          ||d	          }t          j        ||           d
S )doc-string examples      
   abcr   left_valr               r   	right_valr   r   r   r   r   r   r   onNr^   r_   r   tmassert_frame_equalr   leftrightexpectedresults        r   test_examples1zTestAsOfMerge.test_examples1^  s    |***///JJKK???QQRR<**///			RR
 
 D%C000
fh/////r   c                 ~   |dk    rt          j        d           t          j        t	          g d                              d| d          g dg dg dd	g d	
          }t          j        t	          g d                              d| d          g dg dg ddg d
          }t          ||dd           t          ||ddt          d                     t          j        t	          g d                              d| d          g dg dg dt          j	        dt          j	        t          j	        t          j	        gt          j	        dt          j	        t          j	        t          j	        gdg d
          }t          ||ddt          d          d          }t          j        ||           dS )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&   r4   皙I@r   g\(@(\@g     X@K      d   r   r   )r   r   rY   r[   rW   )r   r   20160525 13:30:00.030rk   r%   20160525 13:30:00.049rn   r8   )r&   r   r   r   r&   r4   r&   r   )     @r   \(I@QI@r   (\X@r   gzGJ@)=
ףp@{GI@=
ףpI@      J@r   q=
ףX@gףp=
@gp=
J@)r   r   rw   rx   r   r   r   by2msr   r   r   r   r   )r   r   rY   r[   rw   rx   10msFr   r   r   allow_exact_matchesN)pytestskipr^   r_   r   ra   r   r   r   r   r   r   )r   unitrc   rz   r   r   s         r   test_examples2zTestAsOfMerge.test_examples2j  sN   3;;K,   #    &t''BBB>>>444  <;;
 
 
$ #	 	 	  &t''	 	 	 SRRRRR1 4 5447
 
 
< 	66f::::66fYuEUEUVVVV<#    &t''BBB>>>444rvrvrv>rvrvrv>   JII#
 
 
( '' %
 
 
 	fh/////r   c                    t          j        g dg dd          }t          j        g dg dd          }t          j        g dg dddt          j        gd          }t	          ||d	d
          }t          j        ||           dS )r   r   r   r   r   r   r   r   r   r   forwardr   	directionNr^   r_   r   r   r   r   r   r   s        r   test_examples3zTestAsOfMerge.test_examples3  s     |***///JJKK???QQRR<**///ArvWW
 
 D%C9EEE
fh/////r   c                     t          j        g dg dd          }t          j        g dg dd          }t          j        g dg dg dd          }t          ||dd	
          }t          j        ||           dS )r   r   r   r   r   r   )r   r   r   r   r   nearestr   Nr   r   s        r   test_examples4zTestAsOfMerge.test_examples4  s     |***///JJKK???QQRR<**///			RR
 
 D%C9EEE
fh/////r   c                 Z    |}t          ||dd          }t          j        ||           d S )Nr   r   r   r   r   r   r   rc   r   rz   r   r   s         r   
test_basiczTestAsOfMerge.test_basic  s6    FFv(CCC
fh/////r   c                    |}|j                             d          |_         |j                             d          |_         |j                             d          |_         t          ||dd          }t          j        ||           d S )Ncategoryr   r   r   )r   ra   r   r   r   r   s         r   test_basic_categoricalz$TestAsOfMerge.test_basic_categorical  s{    ,,Z88,,Z88"/00<<FFv(CCC
fh/////r   c                     |}|                     d          }t          ||ddd          }|j        |_        ||j                 }t	          j        ||           d S )Nr   Tr   )
left_indexright_onr   )	set_indexr   indexrX   r   r   r   s         r   test_basic_left_indexz#TestAsOfMerge.test_basic_left_index  si    !!&))Ftf
 
 
  FN+
fh/////r   c                     |}|                     d          }t          ||ddd          }t          j        ||           d S )Nr   Tr   )left_onright_indexr   r   r   r   r   r   s         r   test_basic_right_indexz$TestAsOfMerge.test_basic_right_index  sT    !!&))FF
 
 
 	fh/////r   c                     |                     d          }|                     d          }|                     d          }t          ||ddd          }t          j        ||           d S )Nr   Tr   r   r   r   r   r   s         r   !test_basic_left_index_right_indexz/TestAsOfMerge.test_basic_left_index_right_index  ss    >>&))!!&))!!&))Ft(
 
 
 	fh/////r   c                     |                     ddg          }|                     d          }t          j        t          d          5  t	          ||dd           d d d            d S # 1 swxY w Y   d S )Nr   rY   zleft can only have one indexmatchTr   r   r   r   raisesr   r   r   rc   rz   s      r   test_multi_index_leftz#TestAsOfMerge.test_multi_index_left  s    !!67"344!!&))]:-KLLL 	J 	Jvv$DIIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J   A))A-0A-c                     |                     d          }|                     ddg          }t          j        t          d          5  t	          ||dd           d d d            d S # 1 swxY w Y   d S )Nr   rw   zright can only have one indexr  Tr  r  r  s      r   test_multi_index_rightz$TestAsOfMerge.test_multi_index_right  s    !!&))!!65/22]:-LMMM 	J 	Jvv$DIIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Jr  c                     |                     d          }|                     d          }d}t          j        t          |          5  t	          ||ddd           d d d            d S # 1 swxY w Y   d S )Nr   z:Can only pass argument "left_on" OR "left_index" not both.r  rY   T)r   r   r   r  r   rc   rz   msgs       r   test_on_and_index_left_onz'TestAsOfMerge.test_on_and_index_left_on  s    !!&))!!&))J]:S111 	 	Dd   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   A**A.1A.c                     |                     d          }|                     d          }d}t          j        t          |          5  t	          ||ddd           d d d            d S # 1 swxY w Y   d S )Nr   z<Can only pass argument "right_on" OR "right_index" not both.r  rw   T)r   r   r   r  r  s       r   test_on_and_index_right_onz(TestAsOfMerge.test_on_and_index_right_on'  s    !!&))!!&))L]:S111 	 	4T   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                 \    |}t          ||ddd          }t          j        ||           d S )Nr   r   )r   left_byright_byr   r   s         r   test_basic_left_by_right_byz)TestAsOfMerge.test_basic_left_by_right_by0  sA    Fvx(
 
 
 	fh/////r   c                     |}||j         dk             }t          ||dd          }t          j        |j        |j         dk    ddgf<   t          j        ||           d S )Nr   r   r   r   rw   rx   )r   r   r   r   locr   r   )r   rc   r   rz   r   qr   s          r   test_missing_right_byz#TestAsOfMerge.test_missing_right_by9  se    6=F*+FA&X>>>BD&X_.>?
fh/////r   c                     t          j        t          g d          g dg dg dg ddg d          }t          j        t          g d          g d	g d
g dg ddg d          }t          j        t          g d          g dg dg dg dt          j        dddt          j        gt          j        dddt          j        gdg d          }t          ||dddg          }t          j        ||           d S )Nr   r   z20160525 13:30:00.046r%   20160525 13:30:00.050r   rG   NSDQr  BATSr  r   r   r   r   exchrY   r[   rW   r   r   r   rk   z20160525 13:30:00.045r   )r&   r   r   r   r&   r4   r  r  rG   rG   r  rG   Gz@r   r   r   r   r   r   r   r   r   r   r   r   r   r!  rw   rx   r   r   r%  r   r   r   r   r   r!  rY   r[   rw   rx   r   r   r!  r   )r^   r_   r   r   r   r   r   r   )r   rc   rz   r   r   s        r   test_multibyzTestAsOfMerge.test_multibyA  s   #    CBB@@@>>>444  DCC!
 
 
& #  	 	 KJJHHHCCCCCC   =<<#
 
 
( <#    CBB@@@>>>444vvrv>vvrv> " RQQ%
 
 
* FFv8V:LMMM
fh/////r   dtypeobjectstringc                    t          j        t          g d          g dg dg dg ddg d          }|                    ||d          }t          j        t          g d	          g d
g dg dg ddg d          }|                    ||d          }t          j        t          g d          g dg dg dg dt          j        dddt          j        gt          j        dddt          j        gdg d          }|                    ||d          }t          ||dddg          }t          j        ||           d S )Nr  )r   r   r   r   r   r  r   r   r   rW   )r   r!  r"  )r   r   r   r   r   r   r#  r$  r&  r'  r   r   r%  r   r   r   r(  r   r   r!  r   )	r^   r_   r   ra   r   r   r   r   r   )r   r*  rc   rz   r   r   s         r    test_multiby_heterogeneous_typesz.TestAsOfMerge.test_multiby_heterogeneous_types  s    #    *//@@@>>>444  DCC!
 
 
$ %??@@#  	 	 -,,HHHCCCCCC   =<<#
 
 
& %??@@<#    *//@@@>>>444vvrv>vvrv> " RQQ%
 
 
( ??eU#C#CDDFFv8V:LMMM
fh/////r   c           	         t          j        t          d          ddgt          d          ddgt          d          ddgt          d          ddggg d                              d	          }|j        t          j        d
          z
  |_        t          j        t          d          dddgt          d          dddgt          d          dddgt          d          dddggg d                              d	          }d}t          j        t          |          5  t          ||ddddg           d d d            d S # 1 swxY w Y   d S )N20160602r   r   r   20160603r   r   k1k2rW   r   r   20160502      ?       @20160503      @      @r   r3  r4  valuezincompatible merge keysr  Tr3  r4  r   )
r^   r_   r   r   r   	Timestampr   r  r   r   )r   r   r   r  s       r   test_mismatched_index_dtypez)TestAsOfMerge.test_mismatched_index_dtype  s   |Z((!S1Z((!S1Z((!S1Z((!S1	 )((
 
 
 )F

 	 Z",q//1
Z((!S#6Z((!S#6Z((!S#6Z((!S#6	 211
 
 
 )F

 	 (]:S111 	X 	XtUt4QU,WWWW	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	Xs   !EE	E	c           	         t          j        t          d          ddgt          d          ddgt          d          ddgt          d          ddggg d                              d	          }t          j        t          d
          dddgt          d
          dddgt          d          dddgt          d          dddggg d                              d	          }t          j        t          d          dddgt          d          dddgt          d          dddgt          d          dddggg d                              d	          }t	          ||ddddg          }t          j        ||           t          j        t          d          5  t	          ||ddddgdg           d d d            d S # 1 swxY w Y   d S )Nr0  r   r   r   r1  r   r2  rW   r   r5  r6  r7  r8  r9  r:  r;  Tr3  r4  r   z,left_by and right_by must be the same lengthr  )r   r   r  r  )
r^   r_   r   r   r   r   r   r   r  r   r   s        r   test_multiby_indexedz"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11
 
 
 )F

 	 <Z((!S#6Z((!S#6Z((!S#6Z((!S#6	 211
 
 
 )F

 	 %Ddd|
 
 
 	h///]L
 
 
 
	 
	  t   
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	s   GG	Gc           
      p
   t          j        g g dg dg dg dg dg dg dg dd	d
dddt          j        t          j        gg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d"g d"g d#g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;g d;g d<g d=g d>g d?g d@g dAg dBg dCg dDg dEg dFg dGg dHg dIg dIdJ                    dK          L          }|dM                             dN          |dM<   |dO                             dP          |dO<   |dQ                             dN          |dQ<   |dR                             dN          |dR<   |                     |          }t          j        g g dSg dTg dUg dVg dWg dXg dYg dZg d[g d\g d]g d^g d_g d`g dag dbg dcg dcg ddg deg dfg dgg dhg deg dig djg djg dkg dlg dmg dng dog dpg dpg dqg dqg drg dsg dtg dug dvg dwg dxg dyg dzg d{g d|g d}g d~g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dd                    dK          L          }|dM                             dN          |dM<   |dO                             dP          |dO<   |                     |          }t          j        g g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dd                    dK          L          }|dQ                             dN          |dQ<   |dR                             dN          |dR<   |                     |d          }t          ||dd          }t          j	        ||           d S )Nr}   r~   r   r   r   r   r   r   r3   r4   r   r6   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )20160525 13:30:00.084r4   z98.6440r    rp   rq   )rB  r4   rp   149EDGXrp   rq   )20160525 13:30:00.086r4   rq   500rG   rp   98.63)20160525 13:30:00.104r4   rH  647rE  98.62rH  )rI  r4   rH  r-   rE  rK  rH  )rI  r4   rH  50r    rK  rH  )rI  r4   rH  70r    rK  rH  )rI  r4   rH  1r    rK  rH  )rI  r4   rH  62r    rK  rH  )rI  r4   rH  rD   r    rK  rH  )rI  r4   rH  r'   rG   rK  rH  )20160525 13:30:00.105r4   rH  r'   rG   rK  rH  )rP  r4   rH  700rG   rK  rH  )20160525 13:30:00.106r4   rH  61rE  rK  rH  )20160525 13:30:00.107r4   rH  r'   rG   rK  rH  )rT  r4   rH  53rG   rK  rH  )20160525 13:30:00.108r4   rH  r'   rG   rK  rH  )rV  r4   rH  839rG   rK  rH  )20160525 13:30:00.115r4   rH  5rE  rK  rH  )20160525 13:30:00.118r4   rH  295rE  rK  rH  )rZ  r4   rH  rY  rE  rK  rH  )20160525 13:30:00.128r4   rH  r'   r    rK  rH  )r\  r   ru   r'   rG   ru   ri   )20160525 13:30:00.129r4   rK  r'   r    98.61rH  )r]  r4   rK  rD   r    r^  rH  )r]  r4   rK  59r    r^  rH  )r]  r4   rK  31r    r^  rH  )r]  r4   rK  69r    r^  rH  )r]  r4   rK  12r    r^  rH  )r]  r4   rK  rb  rE  r^  rH  )r]  r4   rK  r'   rG   r^  rH  )20160525 13:30:00.130r   ri   317rG   51.93ri   )rc  r   ri   283rG   re  ri   )20160525 13:30:00.135r   re  r'   rE  ru   ri   )rg  r4   rK  r'   rG   r^  rK  )20160525 13:30:00.144r4   rK  rb  r    r^  rK  )rh  r4   rK  88r    r^  rK  )rh  r4   rK  162r    r^  rK  )rh  r4   r^  r'   r  r^  rK  )rh  r4   rK  rS  rG   r^  rK  )rh  r4   rK  25rG   r^  rK  )rh  r4   rK  14rG   r^  rK  )20160525 13:30:00.145r4   rK  rb  rG   98.6rH  )rm  r4   rK  r'   rG   rn  rH  )rm  r4   rH  r'   r    rn  rH  r   rV   rW   rY   rZ   r[   r\   rw   rx   r   r!   r$   r(   r)   r,   r.   r0   r2   r7   r9   r;   r>   r?   rA   rC   rE   rH   rL   rM   rN   rP   rQ   rT   )rB  r4   z98.6400rC  r    )rB  r4   rF   rD  rE  )rF  r4   rJ   rG  rG   )rI  r4   98.6300rJ  rE  )rI  r4   ro  r-   rE  )rI  r4   ro  rL  r    )rI  r4   ro  rM  r    )rI  r4   ro  rN  r    )rI  r4   ro  rO  r    )rI  r4   ro  rD   r    )rI  r4   ro  r'   rG   )rP  r4   ro  r'   rG   )rP  r4   ro  rQ  rG   )rR  r4   ro  rS  rE  )rT  r4   ro  r'   rG   )rT  r4   ro  rU  rG   )rV  r4   ro  r'   rG   )rV  r4   ro  rW  rG   )rX  r4   ro  rY  rE  )rZ  r4   ro  r[  rE  )rZ  r4   ro  rY  rE  )r\  r4   ro  r'   r    )r\  r   z51.9200r'   rG   )r]  r4   98.6200r'   r    )r]  r4   rp  rD   r    )r]  r4   rp  r_  r    )r]  r4   rp  r`  r    )r]  r4   rp  ra  r    )r]  r4   rp  rb  r    )r]  r4   rp  rb  rE  )r]  r4   rp  r'   rG   )rc  r   r   rd  rG   )rc  r   r   rf  rG   )rg  r   z51.9300r'   rE  )rg  r4   rp  r'   rG   )rh  r4   rp  rb  r    )rh  r4   rp  ri  r    )rh  r4   rp  rj  r    )rh  r4   z98.6100r'   r  )rh  r4   rp  rS  rG   )rh  r4   rp  rk  rG   )rh  r4   rp  rl  rG   )rm  r4   rp  rb  rG   )rm  r4   rp  r'   rG   )rm  r4   ro  r'   r    rU   re   rh   rj   rl   rm   ro   rr   rs   rt   )z20160525 13:30:00.079r   ru   ri   )z20160525 13:30:00.080r4   rp   rq   )rB  r4   rp   rq   )rF  r4   rp   rH  )z20160525 13:30:00.088r4   r   rH  )z20160525 13:30:00.089r4   rH  rH  )rI  r4   rH  rH  )rI  r4   rK  rH  )rP  r4   rK  rH  )rT  r4   rK  rH  )rX  r4   rK  rH  )rZ  r4   rK  rH  )r\  r4   rK  rH  )r]  r4   rK  rH  )r]  r4   r^  rH  )rc  r   re  ri   )rc  r4   r^  rH  )z20160525 13:30:00.131r4   r^  rK  )rg  r   ru   ri   )rg  r4   r^  rK  )z20160525 13:30:00.136r4   r^  rK  )rh  r4   r^  rK  )rm  r4   r^  rK  )rm  r4   r^  rH  )rm  r4   z98.60rH  rv   Try   r   r   r   )
r^   r_   r   r   r`   ra   r   r   r   r   )r   datapathr   rc   rz   r   s         r   test_basic2zTestAsOfMerge.test_basic2  s   <v
  v
  v
&  'v
8  9v
J  Kv
\  ]v
n  ov
@  Av
T ,FF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PPqy

 y

 y

t %W-44Y??'
3::7CC"5/00;;"5/00;;>>(++NLLLNMMMN ONNN ONN	N
 ONNN ONNN ONNN NMMN QPPN QPPN LKKN MLLN MLLN MLLN MLLN  MLL!N" JII#N$ JII%N& MLL'N( LKK)N* LKK+N, LKK-N. LKK/N0 LKK1N2 NMM3N4 NMM5N6 NMM7N8 MLL9N: LKK;N< LKK=N> LKK?N@ LKKANB MLLCND MLLENF MLLGNH MLLINJ LKKKNL MLLMNN MLLONP LKKQNR LKKSNT LKKUNV KJJWNX LKKYNZ KJJ[N\ LKK]N^ LKK_N` JIIaNb LKKcNd JIIeNf NMMgNh NMMiNj LKKkNl NMMmNn MLLoNp MLLqNr MLLsNt MLLuNv MLLwNx KJJyNz LKK{N| LKK}N~ LKKN@ LKKANB LKKCND LKKENF MLLGNH MLLINJ NMMKNL LKKMNN KJJONP KJJQNR KJJSNT KJJUNV LKKWNX NMMYNZ NMM[N^ >CCCHHaQ
 Q
 Q
d !/00;;w#J/66w??z''9EEE9CCC9 DCC9 FEE	9
 FEE9 FEE9 FEE9 FEE9 DCC9 DCC9 DCC9 DCC9 DCC9 DCC9 DCC9  DCC!9" DCC#9$ DCC%9& DCC'9( DCC)9* DCC+9, DCC-9. DCC/90 DCC192 DCC394 DCC596 DCC798 DCC99: DCC;9< DCC=9> DCC?9@ DCCA9B DCCC9D DCCE9F DCCG9H DCCI9J DCCK9L DCCM9N DCCO9P DCCQ9R DCCS9T DCCU9V DCCW9X DCCY9Z DCC[9\ DCC]9^ DCC_9` DCCa9b DCCc9d DCCe9f DCCg9h DCCi9j DCCk9l DCCm9n DCCo9p DCCq9t *//44w<
 <
 <
z u,,Y77uu,,Y77ut44FFv(CCC
fh/////r   c                     d } ||          } ||          } ||          }t          ||d          }t          j        ||           d S )Nc                 v    | | j         dk                                 dd                              d          S )Nr   r   r   )axisTr   )r   r   r   xs    r   <lambda>z0TestAsOfMerge.test_basic_no_by.<locals>.<lambda>r  s5    aF*+T(T##[d[## r   r   r   r   )r   rc   r   rz   fr   r   s          r   test_basic_no_byzTestAsOfMerge.test_basic_no_byp  sg    $ $ 	
 1T7766FFv666
fh/////r   c                    d}t          j        t          |          5  t          ||ddd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          ||ddgd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          ||d	           d d d            d S # 1 swxY w Y   d S )
Nz6incompatible merge keys \[1\] .* must be the same typer  r   rw   r   )r   r   r   zcan only asof on a key for leftr   )r   r   r  r   r   r  s       r   test_valid_join_keysz"TestAsOfMerge.test_valid_join_keys  s   G]:S111 	T 	Tvvv(SSSS	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T ]:-NOOO 	K 	Kvv68*<JJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K ]:-NOOO 	4 	4vv(3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s3   ?AA%BBB-CCCc                     t          j        ||g                              ddg                              d          }t	          ||dd          }|                     |          }t          j        ||           d S )Nr   r   Tr   r   )r^   concatsort_valuesr   r   r   r   r   )r   rq  rc   rz   r   r  r   r   s           r   test_with_duplicatesz"TestAsOfMerge.test_with_duplicates  s|    Ivv&''[&(+,,[d[## 	

 FA&X>>>>>$''
fh/////r   c                     t          j        g dg dd          }t          j        g dg dd          }t          ||d          }t          j        g dg dg dd          }t          j        ||           d S )	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_onz(TestAsOfMerge.test_with_duplicates_no_on  s    l999)))DDEEl999999EEFFC///<II999999MM
 
 	fh/////r   c                     d}t          j        t          |          5  t          ||ddd           d d d            d S # 1 swxY w Y   d S )Nz/allow_exact_matches must be boolean, passed foor  r   r   foor   r   r   r|  r  s       r   test_valid_allow_exact_matchesz,TestAsOfMerge.test_valid_allow_exact_matches  s    ?]:S111 	 	6hE   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A  AAc           
         t          ||ddt          d                     t          |                                |                                ddd           d}t          j        t
          |          5  t          ||ddd           d d d            n# 1 swxY w Y   t          j        t
          |          5  t          |                                |                                ddd	           d d d            n# 1 swxY w Y   d
}t          j        t
          |          5  t          ||ddt          d                      d d d            n# 1 swxY w Y   t          j        t
          |          5  t          |                                |                                ddd           d d d            d S # 1 swxY w Y   d S )Nr   r   1sr   r   r   z6incompatible tolerance .*, must be compat with type .*r  r6  ztolerance must be positive)r   r   r   r   r  r   r  s       r   test_valid_tolerancez"TestAsOfMerge.test_valid_tolerance  s    66fYt__UUUU 	    	
 	
 	
 	
 H ]:S111 	L 	Lvv&XKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L ]:S111 	 	""$$""$$   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 + ]:S111 	 	6h9T??BR   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ]:S111 	 	""$$""$$   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   7BBB>9DD
D+#EE!E 9GG
G
c                    |                     dd          }|                     dd          }|j        j        rJ |j        j        rJ t          j        t
          d          5  t          ||dd           d d d            n# 1 swxY w Y   |                     d          }|j        j        sJ |j        j        rJ t          j        t
          d          5  t          ||dd           d d d            n# 1 swxY w Y   |                     d          }|j        j        sJ |j        j        sJ t          ||dd           d S )	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_sortedzTestAsOfMerge.test_non_sorted  s   ##Fe#<<##Fe#<< ;6666;6666]:-GHHH 	? 	?vv&X>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? ##F++{2222;6666]:-HIII 	? 	?vv&X>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? ##F++{2222{2222 	66f::::::s$   &BB
B
C==DDtolerance_ts1dayr   )daysr   zdatetime.timedelta)idsc                 \    t          ||dd|          }|}t          j        ||           d S )Nr   r   r   r   )r   r  rc   rz   r   r   r   s          r   test_tolerancezTestAsOfMerge.test_tolerance  sC     Fv(l
 
 
 
fh/////r   c                    t          j        g dg dd          }t          j        g dg dd          }t          j        g dg ddt          j        dgd          }t	          ||d	d
d          }t          j        ||           d S )Nr   r   r   r   r   r   r      r   r   r  r   r   r   r   r   r   r   r   s        r   test_tolerance_forwardz$TestAsOfMerge.test_tolerance_forward       |***///JJKK#3#3#3BRBRBRSSTT<**///BFTVXX
 
 D%C9PQRRR
fh/////r   c                    t          j        g dg dd          }t          j        g dg dd          }t          j        g dg ddt          j        dgd          }t	          ||d	d
d          }t          j        ||           d S )Nr   r   r   r  r   r   r  r   r   r   r  r   r   s        r   test_tolerance_nearestz$TestAsOfMerge.test_tolerance_nearest  r  r   c           	         t          j        t          j        t          d          ddt          j        |          t          j        d          d          }t          j        t          j        t          d          ddt          j        |          t          d          d          }t          ||d	t          d
                    }t          j        t          j        t          d          ddt          j        |          t          j        d          t          d          d          }t          j        ||           d S )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^   r_   
date_ranger   datetimeUTCr   arangelistr   r   r   r   )r   r   r   r   r   r   s         r   test_tolerance_tzzTestAsOfMerge.test_tolerance_tz  sE   |%l33|   )A,,	 	
 
 %l33|   w--	 	
 
 D%Fi>P>PQQQ<%l33|   )A,,w--
 

 
 	fh/////r   c                    t          j        g dg dd          }t          j        g dg dd          }t          j        g dg dddt          j        gd          }t	          ||d	d
d          }t          j        ||           d S )N)皙?g      @g%@r   r   )r6        @ffffff
@g      @g      '@r   r   r  r   r   r         ?r  r   r   s        r   test_tolerance_floatz"TestAsOfMerge.test_tolerance_float<  s    |"2"2"2PPQQ,,,;U;U;UVV
 
 <%%%+OObf- 
 
 D%C9PSTTT
fh/////r   c           
          |                     d          }|                     d          }|                     d          }t          ||dddt          d                    }t          j        ||           d S )Nr   Tr   r  )r   r   r   r   )r   r   r   r   r   )r   rc   rz   r   r   r   s         r   test_index_tolerancez"TestAsOfMerge.test_index_toleranceN  s    &&v..!!&))!!&))''
 
 
 	fh/////r   c                    t          ||ddd          }t          j        ddddd	t          j        t          j        gg d
g dg dg dg dg dg dddddd	t          j        t          j        gddddd	t          j        t          j        gddddd	t          j        t          j        gddddd	t          j        t          j        gddddd	t          j        t          j        gddddd	t          j        t          j        gddddd	t          j        t          j        gddddd	t          j        t          j        gdddddt          j        t          j        gdddddt          j        t          j        gg dg d g d!g d"g d#g d g d$g d%g d%gd&                    d'          (          }|d)                             d*          |d)<   |d+                             d,          |d+<   |d-                             d*          |d-<   |d.                             d*          |d.<   |                     |          }t          j	        ||           d S )/Nr   r   Fr  r   r   ri   r   r    r~   r   r   r   r   r   r   r3   r4   r   r6   r8   r   r:   r   r=   r@   rB   rD   rp   rG   r   r   r   r   r   rR   r   ri   rS   r    ri   ri   rR   r   ri   r'   r    ri   ri   r   rV   rW   rY   rZ   r[   r\   rw   rx   )
r   r^   r_   r   r   r`   ra   r   r   r   r   rc   rz   r   r   r   s         r   test_allow_exact_matchesz&TestAsOfMerge.test_allow_exact_matches^  s4   Fv(
 
 
 \ ,FF               ,FF ,FF ,FF ,FF ,FF ,FF ,FF ,FF )&'3PRPVW(&'3PRPVW                  wdJ FKKCPPMg
 g
 g
P k((337J..w77:uI$$Y//5	uI$$Y//5	>>"%%
fh/////r   c                     t          j        g dg dd          }t          j        g dg dd          }t          j        g dg dg dd          }t          ||dd	d
          }t          j        ||           d S )Nr   r   r   r  r   )r   r   r  r   r   r   Fr   r   r   r   r   s        r    test_allow_exact_matches_forwardz.TestAsOfMerge.test_allow_exact_matches_forwardQ	       |***///JJKK#3#3#3BRBRBRSSTT<**///


SS
 
 %C9%
 
 
 	fh/////r   c                     t          j        g dg dd          }t          j        g dg dd          }t          j        g dg dg dd          }t          ||dd	d
          }t          j        ||           d S )Nr   r   r   r  r   )r   r   r  r   r   r   Fr  r   r   s        r    test_allow_exact_matches_nearestz.TestAsOfMerge.test_allow_exact_matches_nearest`	  r  r   c                    t          ||ddt          d          d          }t          j        dddd	d
t          j        t          j        gg dg dg dg dg dg dg dddddd
t          j        t          j        gddddd
t          j        t          j        gddddd
t          j        t          j        gddddd
t          j        t          j        gdddd	d
t          j        t          j        gddddd
t          j        t          j        gddddd
t          j        t          j        gddddd
t          j        t          j        gdddddt          j        t          j        gdddddt          j        t          j        gg d g d!g d"g d#g d$g d!g d%g d&g d&gd'                    d(          )          }|d*                             d+          |d*<   |d,                             d-          |d,<   |d.                             d+          |d.<   |d/                             d+          |d/<   |                     |          }t          j
        ||           d S )0Nr   r   100msFr   r   r   ri   r   r    r~   r   r   r   r   r   r   r3   r4   r   r6   r8   r   r:   r   r=   r@   rB   rD   rp   rG   r   r   r   r   r   r  r  r   rV   rW   rY   rZ   r[   r\   rw   rx   )r   r   r^   r_   r   r   r`   ra   r   r   r   r  s         r   &test_allow_exact_matches_and_tolerancez4TestAsOfMerge.test_allow_exact_matches_and_toleranceo	  sC   (( %
 
 
 \ ,FF               ,FF ,FF ,FF ,FF ,FF ,FF ,FF ,FF )&'3PRPVW(&'3PRPVW                  wdJ FKKCPPMg
 g
 g
P k((337J..w77:uI$$Y//5	uI$$Y//5	>>"%%
fh/////r   c           	         t          j        t          dg          dgd          }t          j        t          ddg          ddgd          }t          ||d	          }t          j        t          dg          dgdgd
          }t	          j        ||           t          ||dd          }t          j        t          dg          dgdgd
          }t	          j        ||           t          ||ddt          d                    }t          j        t          dg          dgt          j        gd
          }t	          j        ||           d S )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^   r_   r   r   r   r   r   r   r   r  s        r   'test_allow_exact_matches_and_tolerance2z5TestAsOfMerge.test_allow_exact_matches_and_tolerance2g
  s   l ";!<==E7SS
 
 l#.0IJ  q6	 
 
 C000<#%>$?@@"G3 
 
 	fh///CUKKK<#%>$?@@"G3 
 
 	fh/// %''
 
 
 <#%>$?@@"GF8 
 
 	fh/////r   c           	         t          j        t          ddg          ddgd          }t          j        t          ddg          ddgd          }t          ||d	d
t	          d                    }t          j        t          ddg          ddgt
          j        t
          j        gd          }t          j        ||           d S )Nr  r  charlier  r  r   r   r  r   Fr   r  r  )	r^   r_   r   r   r   r   r   r   r   r  s        r   'test_allow_exact_matches_and_tolerance3z5TestAsOfMerge.test_allow_exact_matches_and_tolerance3
  s
   l#.0IJ  #I.	 
 
 l#.0IJ  q6	 
 
  %''
 
 
 <#.0IJ  #I.FBF+ 
 
 	fh/////r   c                    t          j        g dg dd          }t          j        g dg dd          }t          j        g dg dt          j        ddgd          }t	          ||d	d
dd          }t          j        ||           d S )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_forwardz<TestAsOfMerge.test_allow_exact_matches_and_tolerance_forward
       |***///JJKK#3#3#3BRBRBRSSTT<**///QRTVXX
 
  %
 
 
 	fh/////r   c                    t          j        g dg dd          }t          j        g dg dd          }t          j        g dg dt          j        ddgd	          }t	          ||d
ddd          }t          j        ||           d S )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_nearestz<TestAsOfMerge.test_allow_exact_matches_and_tolerance_nearest
  r  r   c           
      ,   t          j        g dg dg dd          }t          j        g dg dg dd          }t          j        g dg dg ddt          j        d	d
dgd          }t	          ||ddd          }t          j        ||           d S )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_byzTestAsOfMerge.test_forward_by
  s     |'''...555 
 
 '''.../// 
 
 <'''...555R4	 
 
 D%CC9MMM
fh/////r   c                    t          j        g dg dg dd          }t          j        g dg dg dd          }t          j        g dg dg dg dd	          }t          ||d
dd          }t          j        ||           d S )Nr  )r  r  r  r  r  r  r  r  )r  r  r  r  r  r  )r   r   r  r  r  r  r   r   r   r  r   r   s        r   test_nearest_byzTestAsOfMerge.test_nearest_by  s     |'''...555 
 
 '''.../// 
 
 <'''...555///	 
 
 D%CC9MMM
fh/////r   c                 v   t          j        t          g d          g dg ddg d          }t          j        t          g d          g dg dd	g d	          }t          ||d
d          }t          j        t          g d          g dg dg ddg d          }t	          j        ||           d S )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  rW   )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^   r_   r   r   r   r   r  s        r   test_by_intzTestAsOfMerge.test_by_int"  sM   l#    '333  .--
 
 
" l#	 	 	  0//BBB   .--#
 
 
( CE:::<#    '333333  877
 
 
$ 	fh/////r   c                    t          j        g dt          d          dddg          }t          j        g dg dd	dd
g          }|                    d                              d          }t          ||d          }t          j        t          d          g dg ddg d          }t          j        ||           d S )N)
ףp=
@HPsb?zG!9@@u@Hz>@皙C@q?ABCDEFG)rY   symbolr  rY   rW   )        r6        Y@)-C6?{Gz?皙?)rY   mpvr  Tr   r   BGACEDF)r  r  r   r  r  r  r  )r  r  r  r  r  r  r  )r  rY   r  r^   r_   r  r  r   r   r   r   r  s        r   test_on_floatzTestAsOfMerge.test_on_float_  s   lNNNy//  w'
 
 
 l'''0D0D0DEEe$
 
 

 oog&&222==C111<y//NNNEEE 
 /..
 
 
 	fh/////r   c                 n   t          j        |          j        }t          j        g dt          d          dddg          } ||j                  |_        t          j        g dt          d          d	dd
g          } ||j                  |_        |                    d                              d          }t          ||d          }t          j        t          d          g dt          d          dg d          } ||j                  |_        t          j        ||           d S )Nr   r      r   N   x   O   r  )r<  r  r  r<  rW   r   P   r  }   xyzw)r<  r   r   Tr   r   BACEGDFr   r   r  r  r  r   r  xxxxxyz)r  r<  r   )r   r*  typer^   r_   r  r<  r  r   r   r   r   r   any_real_numpy_dtyper*  r  r  r   r   s          r   test_on_specialized_typez&TestAsOfMerge.test_on_specialized_type}  sS   -..3l222d9ooNNw'
 
 
 E#)$$	l'''4<<@@h'
 
 
 E#)$$	oog&&222==C111<y//555y// 
 211
 
 
 x~..
fh/////r   c                    t          j        |          j        }t          j        g dg dt          d          dg d          } ||j                  |_        t          j        g dg dt          d	          d
g d
          } ||j                  |_        |                    d                              d          }t          ||dd          }t          j        t          d          g dg dt           j
        dt           j
        t           j
        t           j
        ddgdg d          } ||j                  |_        t          j        ||           d S )Nr  )r   r   r   r   r   r   r   r  )r<  r  r  )r  r  r<  rW   r  )r   r   r   r   r  )r<  r  r   r<  Tr   r  r   r  )r   r   r   r   r   r   r   r  rw  y)r  r  r<  r   )r   r*  r  r^   r_   r  r<  r  r   r   r   r   r   r   s          r   test_on_specialized_type_by_intz-TestAsOfMerge.test_on_specialized_type_by_int  s   -..3l555,,,y// 
 /..
 
 
 E#)$$	l'''VUU...
 
 
 E#)$$	oog&&222==CU;;;<y//,,,55563SI	  988
 
 
 x~..
fh/////r   c                    t          j        t          d          g dg ddg d          }t          j        g dg dg dd	g d	          }|                    d
                              d          }|                    d
                              d          }t          ||d
d          }t          j        t          d          g dg dg ddg d          }t          j        ||           d S )N	AAABBBCCC)	r   r   r   r   r   r   r   r   r   )	Gz
@ׁsF
@
@)\()@Gz.)@      )@fffffw@33333w@     w@)r  r!  rY   rW   )	r   r   r   r   r   r   r   r   r   )	r	  r6  r
  r	        @r
  r	  r1  g     @@)	r  r  r  r  r  皙?r        ?r6  )r!  rY   r  rY   Tr   r!  r   )	r   r   r   r   r   r   r   r   r   )	r*  r)  r(  r-  r+  r,  r.  r/  r0  )	r  r  r  r3  r  r  r  r2  r3  )r  r!  rY   r  r  r  s        r   test_on_float_by_intz"TestAsOfMerge.test_on_float_by_int  si   l{++333
 
 
  0//!
 
 
& l333MMMQQQ 
 -,,
 
 
 oog&&222==oog&&222==CV<<<<{++333
 
 
 QPP   766#
 
 
( 	fh/////r   c                    d}t          j        g dg dd          }t          j        g dg dd          }t          j        t          |          5  t          ||d	           d d d            d S # 1 swxY w Y   d S )
N@Incompatible merge dtype, .*, both sides must have numeric dtyper   r   r   r   r   r   r   r  r   r   r^   r_   r   r  r   r   r   r  r   r   s       r    test_merge_datatype_error_raisesz.TestAsOfMerge.test_merge_datatype_error_raises  s    Q|///JJKK???QQRR]:S111 	, 	,tUs++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   A44A8;A8c                 J   d}t          j        g dt          j        g d          d          }t          j        g dt          j        g d          d          }t          j        t
          |          5  t          ||d	
           d d d            d S # 1 swxY w Y   d S )NzHincompatible merge keys \[0\] .* both sides category, but not equal onesr   r   r7  r   )r   r  r   r  r   r8  r  r   r   )r^   r_   Categoricalr   r  r   r   r:  s       r   ,test_merge_datatype_categorical_error_raisesz:TestAsOfMerge.test_merge_datatype_categorical_error_raises  s   ! 	
 |#".*I*IJJ
 
 ,__^$=$=$=>> 
 
 ]:S111 	, 	,tUs++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   8BBBc                    t          j        dgdgt          j        dg          d          }t          ||dddg          }t          j        dgdgt          j        dg          d          }t	          j        ||           d S )Nr   rw  r$  zrw  r$  rA  r   )r^   r_   r=  r   r   r   )r   r   r   r   s       r   :test_merge_groupby_multiple_column_with_categorical_columnzHTestAsOfMerge.test_merge_groupby_multiple_column_with_categorical_column  s    \1#BNA34G4GHHIIBsSz:::<qc".!:M:M N NOO
fh/////r   funcc                     | S )N rv  s    r   rx  zTestAsOfMerge.<lambda>  s    1 r   numericr  sider   r   c                 ~   d| d} |ddt           j        g          } |g d          }t          j        |g dd          }t          j        |g dd	          }t	          j        t          |
          5  |dk    rt          ||d           nt          ||d           d d d            d S # 1 swxY w Y   d S )Nz"Merge keys contain null values on z sider6  r1  )r6  r1  g      $@r   r   )r   r   r  r   r  r   r   r   )r   r   r^   r_   r   r  r  r   )r   rC  rG  r  nulls	non_nullsdf_nullr   s           r   test_merge_on_nansz TestAsOfMerge.test_merge_on_nans  s'    ?4>>>c3'((D)))**	,UHHII\	


CCDD]:S111 	0 	0v~~7B3/////2w3////		0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   9,B22B69B6c                    t          j        t           j        ddg|          }|j        j        dv r$t          j        |j        j                  j        }n#t          j	        |j        j                  j        }||d<   t          j
        |g dg dg dd	          }t          j
        |g d
g dg dd	          }t          ||ddgd          }t          j
        |g dg dg dd          }t          j        t
          j        t
          j        t
          j        gt                    |d<   |r|d                             d          |d<   t          j        ||           d S )Nr   r   r*  )iur   )HELLOToYou)r   r  r   )r   r   r  by_col1by_col2on_colr<  )WORLDWideWeb)r   r   r   )r   r  ry  rU  rV  rW  r   r   rU  rV  rW  value_xvalue_ystr)r^   arrayNAr*  kindr   iinfonumpy_dtypemaxfinfor_   r   r   r+  ra   r   r   )	r   any_numeric_ea_dtypeusing_infer_stringarrmax_valr   r   r   r   s	            r   test_by_nullablezTestAsOfMerge.test_by_nullable.  s    hq!},@AAA9>Z''hsy4559GGhsy4559G A|111#))(	 
 
 333#))(	 
 
 D%Y	,BxPPP<111#))*??	 
 
 !h'?vNNN 	D"*9"5"<"<U"C"CHY
fh/////r   c                    t          j        t          j        dg                              d          dgdgd          }t          j        t          j        dg                              d          dgdgd          }t	          ||dd	
          }t          j        t          j        dd          dddggg d          }t          j        ||           d S )N
2018-01-01r  r   r   )by_colrW  valuesr   r   rn  rW  r[  r  )rn  rW  values_xvalues_yrW   )r^   r_   DatetimeIndextz_localizer   r=  r   r   )r   r   r   r   r   s        r   test_merge_by_col_tz_awarez(TestAsOfMerge.test_merge_by_col_tz_aware\  s    |*L>::FFuMM#% 
 
 *L>::FFuMM#% 
 
 D%HBBB<l<E222AsC@A@@@
 
 
 	fh/////r   c                 V   t          j        t          j        dg                              d          dgdgdgd          }t          j        t          j        dg                              d          dgdgd	gd          }t	          ||d
dgd          }t          j        t          j        dd          dddggg d          }t          j        t          j        gt                    |d<   |r|d         
                    d          |d<   t          j        ||           d S )Nrm  r  rQ  r   r   rT  rX  r   r   rU  rV  rW  r[  rp  r\  rW   rN  r^  r_  )r^   r_   rs  rt  r   r=  r   r`  r   r+  ra   r   r   )r   rh  r   r   r   r   s         r   test_by_mixed_tz_awarez$TestAsOfMerge.test_by_mixed_tz_awares  sL   |+\N;;GGNN#9#	 
 
 +\N;;GGNN#9#	 
 
 D%Y	,BxPPP<l<E222GQDE???
 
 
 !hxv>>> 	D"*9"5"<"<U"C"CHY
fh/////r   )rZ   int16zm8[ns]zM8[us]c                 t   t          j        t          j        dg|          dgdgd          }t          j        t          j        dg|          dgdgd          }t	          ||dd	          }t          j        t          j        dg|          dgdgdgd
          }t          j        ||           d S )Nr   rN  r   r   )rn  rW  r<  r   rn  rW  r[  )rn  rW  r]  r^  )r^   r_   r   r`  r   r   r   )r   r*  r   r   r   r   s         r   test_by_dtypezTestAsOfMerge.test_by_dtype  s     |(A3e444# 
 
 (A3e444# 
 
 D%HBBB<(A3e444#55	 
 
 	fh/////r   c                    |dk    rt          j        d           t          j        t	          t          g dg dd                    ddg	          }t          j        |d         d
                              d| d          |d<   t          j        t	          t          g dg dd                    ddg	          }t          j        |d         d
                              d| d          |d<   t          j        t	          t          g dg ddt          j	        ddt          j	        t          j	        gd                    g d	          }t          j        |d         d
                              d| d          |d<   t          ||dt          d          d          }t          j        ||           d S )Nr   zHThis test is invalid with unit='s' because that would round left['time'])r   r   r   r     r  )r   r   r   r   r  r   T)strictr   r   rW   mszm8[r   )r   r   	   r  r     r   r   r   r  )r   r   r   1msr   )r   r   r   )r   r   r^   r_   r  zipto_timedeltara   r   r   r   r   r   r   )r   r   r   r   r   r   s         r    test_timedelta_tolerance_nearestz.TestAsOfMerge.test_timedelta_tolerance_nearest  s   3;;K%  
 |+++-?-?-?MMMNNV$
 
 

 tF|T::AA----PPV***,>,>,>tLLLMMW%
 
 

 ft<<CCM$MMMRRf<***&&&1bfbf5	    .--

 

 

 ?8F+;TBBII-PT---XX%Fi.>.>)
 
 
 	fh/////r   c                    t          j        g dg dd          }t          j        g dg dd          }|d                             |          |d<   |d                             |          |d<   t          j        g dg dt          j        ddgd	          }|d                             |          |d<   t          ||dd
          }t          j        ||           d S )N)r   r   r|  r  r   )r   r  r  r   r   r6  r7  r   r   r  )r^   r_   ra   r   r   r   r   r   )r   any_int_dtyper   r   r   r   s         r   test_int_type_tolerancez%TestAsOfMerge.test_int_type_tolerance  s     |+++999EEFF;;;YYYGGHHI$$]33S	3Z&&}55c
<++999BFCQTCUVV
 
 !,,];;D%C2>>>
fh/////r   c           	      `   t          j        dddd          }t          j        g ddg|dd          	          }t          j        |d
gdz  dgz   d          }t          ||ddg          }t          j        g d|dd          d
gdz  dgz   dt          j        dddd                    }t	          j        ||           t          ||ddg          }t          j        |d
gdz  dgz   t          j        ddddgdt          g d                    }t	          j        ||           d S )Nz
2019-10-0130minr   r  )r  r  r  )?皙?ffffff?333333?xyzr   )rX   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  r_   r   r   r   r   r   r   )r   r   r   r   r   r   s         r   test_merge_index_column_tzz(TestAsOfMerge.test_merge_index_column_tz  s   l!NNN|0005'qrrSSS5$!tf9LMMNNUt{m
 
 
 <+++"122YvzTF* 
 -%GQ5  	
 	
 	
 	fh///d{m
 
 
 <"vzTF*S#s3 
 ((
 
 
 	fh/////r   c           	      L   |dk    rt          j        d           t          j        ddd|          t	          d                              |          z   }t          j        dd	|
          }t          j        ddit          j        |                    }t          j        ddit          j        |                    }t          j        dddt          j        |                    }t          ||ddt	          d                    }t          j
        ||           d S )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_unitr_   rs  r   r   r   )r   r   dr1dr2r  r  r   r   s           r   %test_left_index_right_index_tolerancez3TestAsOfMerge.test_left_index_right_index_tolerance  s;   3;;KQ   m+Dt
 
 
c"""**4001 m**4HHHlFE?"2B32G2GHHHlFE?"2B32G2GHHH<E**"2B32G2G
 
 
 ,,,
 
 
 	fh/////r   N)F)L__name__
__module____qualname__r   r   fixturerc   rz   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r)  markparametrizer.  r>  r@  rr  rz  r}  r  r  r  r  r  r   r  	timedeltar  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r%  r4  r;  r>  rB  r   rL  rk  ru  rw  rz  r  r  r  r  rE  r   r   r
   r
      sO           ^#" #" ^#"J ^/ / ^/4 ^}" }" ^}"~ ^}" }" ^}"~
0 
0 
0W0 W0 W0r0 0 00 0 00 0 00 0 00 0 00 0 00 0 0J J JJ J J    0 0 00 0 0?0 ?0 ?0B [Wx&:;;B0 B0 <;B0HX X X80 0 0dY0 Y0 Y0v0 0 0
4 
4 
40 0 00 0 0  , , ,\; ; ;. [	6		.H.A6667./   
0 0 
00 0 00 0 0)0 )0 )0V0 0 0$0 0 0 q0 q0 q0f0 0 00 0 0v0 v0 v0p00 00 00d#0 #0 #0J0 0 0(0 0 0(0 0 0<0 0 0<;0 ;0 ;0z0 0 0<0 0 0>"0 "0 "0H70 70 70r, , ,, , ,&0 0 0 [k*J0G    [Vfg%6770 0 87 0,0 ,0 ,0\0 0 0.0 0 08 [W&N&N&NOO0 0 PO06(0 (0 (0T0 0 0 0 0 0B0 0 0 0 0r   r
   infer_stringFTpyarrow)markskwargsr   rw  r  dataz2019-06-01 00:09:12z2019-06-01 00:10:29r6  c                 :   t          d|          5  t          j        d|i|          }t          j        d|i|          }t          j        t
          d          5  t          ||fi |  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nzfuture.infer_stringrw  r  r6  r  )r   r^   r_   r   r  r   r   )r  r  r  r   r   s        r   #test_merge_asof_non_numerical_dtyper  "  s5    
-|	<	< . .|S$Kt444c4[555]U
 
 
 	. 	. tU--f---		. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.. . . . . . . . . . . . . . . . . .s6   ABA8,B8A<	<B?A<	 BBBc            	         t          j        g dg dd          } t          j        g dg dd          }t          j        t          d          5  t          | |dd	d	d
           d d d            d S # 1 swxY w Y   d S )N)rb  1315r   )r   	left_val1)r  r  ry  r   r6  r  r  r   r   )r   r   r  r  r9  r   r   s     r   *test_merge_asof_non_numerical_dtype_objectr  8  s    <000OOPPDLOOOLLMME	Q
 
 
 
 
 		
 	
 	
 	
	
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   A55A9<A9)r   r   	left_time)r   r   r   )r   r   c                 $   t          g dd          }t          j        g dg dd|          }t          j        dg d	ig d	          }t          ||fi | }t          j        g dg dg d
d|          }t	          j        ||           d S )Nr   testnamer   )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_merge_asof_index_behaviorr  J  s     ***6***E<zzzJJRWXXXDL'???3???KKKEe..v..F| zzzIIINN  H &(+++++r   c                  >   t          j        dg dit          g dd                    } t          j        dg dit          g d	d                    }t          | |dd
          }t          j        g dg dg dd          }t	          j        ||           d S )Nr   r   r  r  r  r   r  r  r   r|        )r   r   r   r   r   r   )r^   r_   r   r   r   r   r   r   r   r   s       r   'test_merge_asof_numeric_column_in_indexr  `  s    <lll+53M3M3MNNNDL#|||,E)))#4N4N4NOOOEeS3???F|))),,,\\\RRSSH&(+++++r   c                     t          j        dg dit           j                            g dg dgddg                    } t          j        d	g d
it           j                            g dg dgddg                    }t	          | |dd          }t          j        g dg dg d
d          }t          j        ||           d S )Nr   r  r  r   r   rA  )namesr  r   r  r@  r$  r  )r^   r_   
MultiIndexfrom_arraysr   r   r   r  s       r   ,test_merge_asof_numeric_column_in_multiindexr  j  s    <	lllm''OOO(DSRUJ'WW  D L	lllm''OOO(DSRUJ'WW  E
 eS3???F|))),,,\\\RRSSH&(+++++r   c                  p   t          j        dg dit          g dd                    } t          j        dg dit          g d	d                    }t          j        t
          d
          5  t          | |dd           d d d            n# 1 swxY w Y   |                                                     ddg          } |                                                    ddg          }t          j        t
          d
          5  t          | |dd           d d d            d S # 1 swxY w Y   d S )Nr   r  )rN  23r   r  r  r   r  )mnor6  r  r  )	r^   r_   r   r   r  r   r   r   r   r  s     r   3test_merge_asof_numeri_column_in_index_object_dtyper  z  s   <lll+5s3S3S3STTTDL#|||,E///PS4T4T4TUUUE	Q
 
 
 ; ; 	4c::::	; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ''c
33D))3*55E	Q
 
 
 ; ; 	4c::::	; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s$   2BBB
D++D/2D/c                 "   t          j        ddgd|  d          }t          j        ddg|d          }t          j        t          j        d	          d
d|           }t          j        dg di          }t          |||ddd          }t          j        g dt          j        ddg|d          }t          j	        ||           t          ||d|dd          }t          j        ddg|ddgd          }t          j	        ||           d S )Nz2021/01/01 00:37z2021/01/01 01:40r   r   rN  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^   rs  r_   r  r=  r   r   r   r   r   )r   dtir   ts_merger   r   r   s          r   test_merge_asof_array_as_onr    sh   

	/0d  C LQ	
 	
 E }l-..4  H <iii())D!  F |)))261a.QQRRH&(+++!  F |QQ	
 	
 H &(+++++r   c                     t          j        g dgg d          } t          j        g dgg d          }t          j        t          d          5  t          | |d	           d d d            n# 1 swxY w Y   t          j        t          d          5  t          | |dd
           d d d            n# 1 swxY w Y   t          j        t          d          5  t          | |dd           d d d            d S # 1 swxY w Y   d S )N)r   r   r   )r   r   r   rW   )r   r   r   )r   r   r   zcolumn label 'a'r  r   r   r   r  r   )r^   r_   r   r  r  r   r  s     r   +test_merge_asof_raise_for_duplicate_columnsr    s    </E/E/EFFFDL))).E.E.EFFFE	z);	<	<	< ( (43''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
z);	<	<	< C C4kBBBBC C C C C C C C C C C C C C C 
z);	<	<	< B B4
SAAAAB B B B B B B B B B B B B B B B B Bs6   A11A58A5B77B;>B;C>>DDr*  Int64zint64[pyarrow]ztimestamp[s][pyarrow]c                    t          j        g dg dd          }t          j        g dg dd          }|                    d| i          }|                    d| i          }t          ||d          }t          j        g dg dt          j        dd	gd
          }|                    d| i          }t          j        ||           d S )N)r   r   r   r  )join_colr   )r   r   r  )r  r   r  r   r7  r9  )r  r   r   )r^   r_   ra   r   r   r   r   r   )r*  r   r   r   r   s        r   test_merge_asof_extension_dtyper    s     <!		!			
 	
 D L!		"	
 	
 E ;;
E*++DLL*e,--Ee
333F|!		!		&#s+	
 	
 H 
E233H&(+++++r   c                  *   t          j        t          j        ddd          gd          } t          j        | dgd          }t	          ||dt          d                    }t          j        | dgdgd	          }t          j        ||           d S )
Ni  r   ztimestamp[us, UTC][pyarrow]rN  )	timestampr<  r  r  r  )r  r]  r^  )r^   Seriesr  r_   r   r   r   r   )serr   r   r   s       r   $test_merge_asof_pyarrow_td_tolerancer    s     )		4A	&	&'/L  C 
S	
 	

 
B B;)D//JJJF|ss	
 	
 H &(+++++r   c                  J   t          j        dgdgd          } t          j        dgdgd          }d| j        j        j        _        d|j        j        j        _        t          | |dd          }t          j        dgdgd	dg
          }t          j	        ||           d S )Nr   r   )r   r  r   r   FTr  r  r  )
r^   r  r   ro  flags	writeabler   r_   r   r   r  s       r   !test_merge_asof_read_only_ndarrayr    s    9aS&111DIqc!7333E(-DJ%).EK&e$GGGF|aSA377sCCCH&(+++++r   c            
      4   t          j        t          j        g dddg          dgdz  dgdz  t          d          d          } t          j        t          j        ddgddg          dgd	z  dd	gt          d	          d          }t	          | |d
dgddddg          }t          j        t          j        g dddg          dgdz  dgdz  t          d          t
          j        t
          j        ddgd          }t          j        ||           d S )N)r   r   r   r   r   r   )
categoriesrw  r  r   )c1c2tvr   r  r  r  r   _left_right)r   r   r   suffixesr	  )r  r  r  v_leftv_right)	r^   r_   r=  ranger   r   r   r   r   r  s       r   (test_merge_asof_multiby_with_categoricalr    sV   <.!5!5!53*MMM%!)qq		
 	
 D L.#sc
CCC%!)Qq		
 	
 E $<8$  F |.!5!5!53*MMM%!)qAhh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  r  rE  r   r   <module>r     s2         ) ) ) ) ) ) ) ) )                        0 0 0 0 0 0K40 K40 K40 K40 K40 K40 K40 K40\h ULFL]R]95M5MNNNO  c{4EEF  
23c;P5QR 	. 	.	   	.
 
 
$ D115511 , , ,, , ,, , , ; ; ;*), ), ),XB B B %]R]9-E-EFFF,MBM)4L4LMMM , , ,8 y, , ,,	, 	, 	,#, #, #, #, #,r   