3
Ud[                 @   sh   d dl Z d dlZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
 d dljZd dlmZ G dd dZdS )    N)	Timedelta
merge_asofread_csvto_datetime)
MergeErrorc               @   s<  e Zd ZdddZejdddd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zejj d8e!d9e"j#d:d;gd<d=gd>d?d@ Z$dAdB Z%dCdD Z&dEdF Z'dGdH Z(dIdJ Z)dKdL Z*dMdN Z+dOdP Z,dQdR Z-dSdT Z.dUdV Z/dWdX Z0dYdZ Z1d[d\ Z2d]d^ Z3d_d` Z4dadb Z5dcdd Z6dedf Z7dgdh Z8didj Z9dkdl Z:dmdn Z;ejj dodpdq drdq gdsdtgd>ejj dudvdwgdxdy Z<dzd{ Z=d|d} Z>d~d Z?dd Z@dd ZAdd ZBdS )TestAsOfMergeFc             C   sD   |ddd|}t |}|r4|jddgddjdd	}t|j|_|S )
NZreshapemergedatatimetickerlast)ZkeepT)drop)r   Zdrop_duplicatesreset_indexr   r
   )selfdatapathnamededupepathx r   ^/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/reshape/merge/test_merge_asof.py	read_data   s    zTestAsOfMerge.read_dataT)Zautousec             C   s\   | j |d| _| j |ddd| _| j |d| _| j |d| _| j |d| _| j |d| _d S )	Nz
trades.csvz
quotes.csvT)r   zasof.csvztolerance.csvzallow_exact_matches.csvz%allow_exact_matches_and_tolerance.csv)r   tradesquotesasof	toleranceallow_exact_matches!allow_exact_matches_and_tolerance)r   r   r   r   r   setup_method   s    zTestAsOfMerge.setup_methodc             C   s   t jdddgdddgd}t jddd	d
dgddd	d
dgd}t jdddgdddgdd	dgd}t j||dd}tj|| dS )z doc-string examples       
   abc)r"   left_val            )r"   	right_val)r"   r%   r*   )onN)pd	DataFramer   tmassert_frame_equal)r   leftrightexpectedresultr   r   r   test_examples1$   s    $ zTestAsOfMerge.test_examples1c             C   s  t jt jdddddgdddddgdddd	d
gdddddgdddddgd}t jt jddddddddgddddddddgddddddddgddd d!dd"d#d$gd%ddd&d'gd}t j||ddd( t j||ddt jd)d* t jt jdddddgdddddgdddd	d
gdddddgtjdtjtjtjgtjd tjtjtjgd+ddddd&d'gd}t j||ddt jd,d-d.}tj|| d/S )0z doc-string examples z20160525 13:30:00.023z20160525 13:30:00.038z20160525 13:30:00.048MSFTGOOGAAPLgI@g\(@g(\@g     X@K      d   )r
   r   pricequantityr
   r   r;   r<   )columnsz20160525 13:30:00.030z20160525 13:30:00.041z20160525 13:30:00.049z20160525 13:30:00.072z20160525 13:30:00.075g     @g\(I@gQI@g(\X@gzGJ@g=
ףp@g{GI@g=
ףpI@g      J@gq=
ףX@gףp=
@gp=
J@)r
   r   bidaskr>   r?   )r+   byZ2ms)r+   r@   r   )r
   r   r;   r<   r>   r?   10msF)r+   r@   r   r   N)	r,   r-   r   r   r   npnanr.   r/   )r   r   r   r2   r3   r   r   r   test_examples20   sp    zTestAsOfMerge.test_examples2c             C   s   t jdddgdddgd}t jddd	d
dgddd	d
dgd}t jdddgdddgdd
tjgd}t j||ddd}tj|| dS )z doc-string examples r   r    r!   r"   r#   r$   )r"   r%   r&   r'   r(   r)   )r"   r*   )r"   r%   r*   forward)r+   	directionN)r,   r-   rB   rC   r   r.   r/   )r   r0   r1   r2   r3   r   r   r   test_examples3   s    $"zTestAsOfMerge.test_examples3c             C   s   t jdddgdddgd}t jddd	d
dgddd	d
dgd}t jdddgdddgdd
dgd}t j||ddd}tj|| dS )z doc-string examples r   r    r!   r"   r#   r$   )r"   r%   r&   r'   r(   r)   )r"   r*   )r"   r%   r*   nearest)r+   rF   N)r,   r-   r   r.   r/   )r   r0   r1   r2   r3   r   r   r   test_examples4   s    $ zTestAsOfMerge.test_examples4c             C   s2   | j }| j}| j}t||ddd}tj|| d S )Nr
   r   )r+   r@   )r   r   r   r   r.   r/   )r   r2   r   r   r3   r   r   r   
test_basic   s
    zTestAsOfMerge.test_basicc             C   sd   | j }| jj }|jjd|_| jj }|jjd|_|jjd|_t||ddd}tj|| d S )Ncategoryr
   r   )r+   r@   )	r   r   copyr   astyper   r   r.   r/   )r   r2   r   r   r3   r   r   r   test_basic_categorical   s    

z$TestAsOfMerge.test_basic_categoricalc             C   sL   | j }| jjd}| j}t||dddd}|j|_||j }tj|| d S )Nr
   Tr   )
left_indexright_onr@   )	r   r   	set_indexr   r   indexr=   r.   r/   )r   r2   r   r   r3   r   r   r   test_basic_left_index   s    
z#TestAsOfMerge.test_basic_left_indexc             C   s:   | j }| j}| jjd}t||dddd}tj|| d S )Nr
   Tr   )left_onright_indexr@   )r   r   r   rQ   r   r.   r/   )r   r2   r   r   r3   r   r   r   test_basic_right_index   s    z$TestAsOfMerge.test_basic_right_indexc             C   sF   | j jd}| jjd}| jjd}t||dddd}tj|| d S )Nr
   Tr   )rO   rU   r@   )r   rQ   r   r   r   r.   r/   )r   r2   r   r   r3   r   r   r   !test_basic_left_index_right_index   s    z/TestAsOfMerge.test_basic_left_index_right_indexc             C   s   | j jddg}| jjd}tjt t||ddd W d Q R X | j jd}| jjddg}tjt t||ddd W d Q R X d S )Nr
   r;   T)rO   rU   r>   )r   rQ   r   pytestraisesr   r   )r   r   r   r   r   r   test_multi_index   s    zTestAsOfMerge.test_multi_indexc             C   s   | j jd}| jjd}tjt t||dddd W d Q R X | j jd}| jjd}tjt t||dddd W d Q R X d S )Nr
   r;   T)rT   rO   rU   r>   )rP   rO   rU   )r   rQ   r   rX   rY   r   r   )r   r   r   r   r   r   test_on_and_index   s    zTestAsOfMerge.test_on_and_indexc             C   s4   | j }| j}| j}t||dddd}tj|| d S )Nr
   r   )r+   left_byright_by)r   r   r   r   r.   r/   )r   r2   r   r   r3   r   r   r   test_basic_left_by_right_by   s    z)TestAsOfMerge.test_basic_left_by_right_byc             C   sZ   | j }| j}| j}||jdk }t||ddd}tj|j|jdkddgf< tj	|| d S )Nr5   r
   r   )r+   r@   r>   r?   )
r   r   r   r   r   rB   rC   locr.   r/   )r   r2   r   r   qr3   r   r   r   test_missing_right_by  s    z#TestAsOfMerge.test_missing_right_byc             C   sh  t jt jdddddgdddddgdd	d	d
d	gdddddgdddddgddddddgd}t jt jddddddgddddddgd
d	ddd	dgddddd d!gdd"d#d$d%d&gd'dddd(d)gd}t jt jdddddgdddddgdd	d	d
d	gdddddgdddddgtjdd dtjgtjd"d%dtjgd*dddddd(d)gd}t j||dddgd+}tj|| d S ),Nz20160525 13:30:00.023z20160525 13:30:00.046z20160525 13:30:00.048z20160525 13:30:00.050r5   r6   r7   ARCANSDQBATSgI@g\(@g(\@g     X@r8   r9   r:   )r
   r   exchr;   r<   r
   r   re   r;   r<   )r=   z20160525 13:30:00.030z20160525 13:30:00.041z20160525 13:30:00.045z20160525 13:30:00.049gGz@g\(I@gQI@g     @g(\X@g{GI@g=
ףpI@g      J@g=
ףp@gq=
ףX@)r
   r   re   r>   r?   r>   r?   )r
   r   re   r;   r<   r>   r?   )r+   r@   )r,   r-   r   rB   rC   r   r.   r/   )r   r   r   r2   r3   r   r   r   test_multiby  sR    zTestAsOfMerge.test_multibyc             C   sh  t jt jdddddgdddddgdd	d	d
d	gdddddgdddddgddddddgd}t jt jddddddgddddddgd
d	ddd	dgddddd d!gdd"d#d$d%d&gd'dddd(d)gd}t jt jdddddgdddddgdd	d	d
d	gdddddgdddddgtjdd dtjgtjd"d%dtjgd*dddddd(d)gd}t j||dddgd+}tj|| d S ),Nz20160525 13:30:00.023z20160525 13:30:00.046z20160525 13:30:00.048z20160525 13:30:00.050r   r   r&   rb   rc   rd   gI@g\(@g(\@g     X@r8   r9   r:   )r
   r   re   r;   r<   r
   r   re   r;   r<   )r=   z20160525 13:30:00.030z20160525 13:30:00.041z20160525 13:30:00.045z20160525 13:30:00.049gGz@g\(I@gQI@g     @g(\X@g{GI@g=
ףpI@g      J@g=
ףp@gq=
ףX@)r
   r   re   r>   r?   r>   r?   )r
   r   re   r;   r<   r>   r?   )r+   r@   )r,   r-   r   rB   rC   r   r.   r/   )r   r   r   r2   r3   r   r   r    test_multiby_heterogeneous_typesS  sR    z.TestAsOfMerge.test_multiby_heterogeneous_typesc             C   sd  t jt jdddgt jdddgt jdddgt jdddggddd	gd
jd}t jt jddddgt jddddgt jddddgt jddddggddd	dgd
jd}t jt jddddgt jddddgt jddddgt jddddggddd	dgd
jd}t j||dddd	gd}tj|| tjt	" t j||dddd	gdgd W d Q R X d S )NZ20160602r   r"   r&   Z20160603r#   r
   Zk1Zk2)r=   Z20160502g      ?g       @Z20160503g      @g      @valueT)rO   rU   r@   )rO   rU   r\   r]   )
r,   r-   r   rQ   r   r.   r/   rX   rY   r   )r   r0   r1   r2   r3   r   r   r   test_multiby_indexed  s@    z"TestAsOfMerge.test_multiby_indexedc             C   sH   | j |d}| j |d}| j |ddd}t||ddd}tj|| d S )	Nz	asof2.csvztrades2.csvzquotes2.csvT)r   r
   r   )r+   r@   )r   r   r.   r/   )r   r   r2   r   r   r3   r   r   r   test_basic2  s
    zTestAsOfMerge.test_basic2c             C   sD   dd }|| j }|| j}|| j}t||dd}tj|| d S )Nc             S   s    | | j dk jdddjddS )Nr5   r   r   )ZaxisT)r   )r   r   r   )r   r   r   r   <lambda>  s   
z0TestAsOfMerge.test_basic_no_by.<locals>.<lambda>r
   )r+   )r   r   r   r   r.   r/   )r   fr2   r   r   r3   r   r   r   test_basic_no_by  s    


zTestAsOfMerge.test_basic_no_byc             C   s   | j }| j}tjt t||dddd W d Q R X tjt t||ddgdd W d Q R X tjt t||dd W d Q R X d S )Nr
   r>   r   )rT   rP   r@   )r+   r@   )r@   )r   r   rX   rY   r   r   )r   r   r   r   r   r   test_valid_join_keys  s    z"TestAsOfMerge.test_valid_join_keysc             C   sR   t j| j| jgjddgjdd}t| j|ddd}| j|d}tj	|| d S )Nr
   r   T)r   )r+   r@   zasof.csv)
r,   concatr   sort_valuesr   r   r   r   r.   r/   )r   r   r`   r3   r2   r   r   r   test_with_duplicates  s    
z"TestAsOfMerge.test_with_duplicatesc             C   sz   t jdddgdddgd}t jdddgdddgd}t||dd}t jdddgdddgdddgd}tj|| d S )	Nr   r'   r&   )keyr%   )rr   r*   rr   )r+   )rr   r%   r*   )r,   r-   r   r.   r/   )r   df1df2r3   r2   r   r   r   test_with_duplicates_no_on  s     z(TestAsOfMerge.test_with_duplicates_no_onc             C   s8   | j }| j}tjt t||dddd W d Q R X d S )Nr
   r   foo)r+   r@   r   )r   r   rX   rY   r   r   )r   r   r   r   r   r   test_valid_allow_exact_matches  s
    z,TestAsOfMerge.test_valid_allow_exact_matchesc          #   C   s   | j }| j}t||ddtdd t|j |j dddd tjt t||dddd W d Q R X tjt  t|j |j dddd W d Q R X tjt t||ddtd d W d Q R X tjt  t|j |j dddd W d Q R X d S )	Nr
   r   Z1s)r+   r@   r   rR   r   g      ?)r   r   r   r   r   rX   rY   r   )r   r   r   r   r   r   test_valid_tolerance	  s8     z"TestAsOfMerge.test_valid_tolerancec             C   s   | j jddd}| jjddd}|jj s.t|jj s<ttjt t	||ddd W d Q R X | j jd}|jjszt|jj sttjt t	||ddd W d Q R X | jjd}|jjst|jjstt	|| jddd d S )Nr
   F)Z	ascendingr   )r+   r@   )
r   rp   r   r
   Zis_monotonicAssertionErrorrX   rY   
ValueErrorr   )r   r   r   r   r   r   test_non_sorted7  s    zTestAsOfMerge.test_non_sortedr   1dayr   )dayszpd.Timedeltazdatetime.timedelta)idsc             C   s4   | j }| j}t||dd|d}| j}tj|| d S )Nr
   r   )r+   r@   r   )r   r   r   r   r.   r/   )r   r   r   r   r3   r2   r   r   r   test_toleranceO  s
    zTestAsOfMerge.test_tolerancec             C   s   t jdddgdddgd}t jddd	d
dgddd	d
dgd}t jdddgdddgdtjdgd}t j||dddd}tj|| d S )Nr   r    r!   r"   r#   r$   )r"   r%   r&   r'   r)      )r"   r*   )r"   r%   r*   rE   )r+   rF   r   )r,   r-   rB   rC   r   r.   r/   )r   r0   r1   r2   r3   r   r   r   test_tolerance_forward]  s    $"z$TestAsOfMerge.test_tolerance_forwardc             C   s   t jdddgdddgd}t jddd	d
dgddd	d
dgd}t jdddgdddgdtjdgd}t j||dddd}tj|| d S )Nr   r    r!   r"   r#   r$   )r"   r%   r&   r'   r)   r   )r"   r*   )r"   r%   r*   rH   )r+   rF   r   )r,   r-   rB   rC   r   r.   r/   )r   r0   r1   r2   r3   r   r   r   test_tolerance_nearestj  s    $"z$TestAsOfMerge.test_tolerance_nearestc             C   s   t jt jt jdddtjddtjdd}t jt jt jdddtjddtdd	}t j	||d
t j
dd}t jt jt jdddtjddtjdtdd}tj|| d S )Nz
2016-01-02Dr    UTC)startfreqperiodstz)datevalue1z
2016-01-01ZABCDE)r   value2r   z1 day)r+   r   ZBCDEE)r   r   r   )r,   r-   
date_ranger   pytztimezonerB   Zarangelistr   r   r.   r/   )r   r0   r1   r3   r2   r   r   r   test_tolerance_tzw  s0    zTestAsOfMerge.test_tolerance_tzc             C   s   t jdddgdddgd}t jdd	d
ddgdd	d
ddgd}t jdddgdddgdd
tjgd}t j||dddd}tj|| d S )Ng?g      @g%@r"   r#   r$   )r"   r%   g      ?g      @gffffff
@g      @g      '@)r"   r*   r   )r"   r%   r*   rH   g      ?)r+   rF   r   )r,   r-   rB   rC   r   r.   r/   )r   r0   r1   r2   r3   r   r   r   test_tolerance_float  s     z"TestAsOfMerge.test_tolerance_floatc             C   sP   | j jd}| jjd}| jjd}tj||dddtjdd}tj|| d S )Nr
   Tr   r}   )rO   rU   r@   r   )	r   rQ   r   r   r,   r   r   r.   r/   )r   r2   r   r   r3   r   r   r   test_index_tolerance  s    z"TestAsOfMerge.test_index_tolerancec             C   s,   t | j| jdddd}| j}tj|| d S )Nr
   r   F)r+   r@   r   )r   r   r   r   r.   r/   )r   r3   r2   r   r   r   test_allow_exact_matches  s    z&TestAsOfMerge.test_allow_exact_matchesc             C   s   t jdddgdddgd}t jddd	d
dgddd	d
dgd}t jdddgdddgdd
dgd}t j||dddd}tj|| d S )Nr   r    r!   r"   r#   r$   )r"   r%   r&   r'   r)   r   )r"   r*   )r"   r%   r*   rE   F)r+   rF   r   )r,   r-   r   r.   r/   )r   r0   r1   r2   r3   r   r   r    test_allow_exact_matches_forward  s    $ z.TestAsOfMerge.test_allow_exact_matches_forwardc             C   s   t jdddgdddgd}t jddd	d
dgddd	d
dgd}t jdddgdddgdd	dgd}t j||dddd}tj|| d S )Nr   r    r!   r"   r#   r$   )r"   r%   r&   r'   r)   r   )r"   r*   )r"   r%   r*   rH   F)r+   rF   r   )r,   r-   r   r.   r/   )r   r0   r1   r2   r3   r   r   r    test_allow_exact_matches_nearest  s    $ z.TestAsOfMerge.test_allow_exact_matches_nearestc             C   s2   t | j| jddtddd}| j}tj|| d S )Nr
   r   Z100msF)r+   r@   r   r   )r   r   r   r   r   r.   r/   )r   r3   r2   r   r   r   &test_allow_exact_matches_and_tolerance  s    z4TestAsOfMerge.test_allow_exact_matches_and_tolerancec             C   s   t jt jdgdgd}t jt jddgddgd}t j||dd	}t jt jdgdgdgd
}tj|| t j||ddd}t jt jdgdgdgd
}tj|| t j||ddt jdd}t jt jdgdgtjgd
}tj|| d S )Nz2016-07-15 13:30:00.030bob)r
   usernamez2016-07-15 13:30:00.000r   r&   )r
   versionr
   )r+   )r
   r   r   F)r+   r   rA   )r+   r   r   )	r,   r-   r   r   r.   r/   r   rB   rC   )r   rs   rt   r3   r2   r   r   r   'test_allow_exact_matches_and_tolerance2  s:    


z5TestAsOfMerge.test_allow_exact_matches_and_tolerance2c             C   s   t jt jddgddgd}t jt jddgddgd}t j||d	d
t jdd}t jt jddgddgtjtjgd}tj|| d S )Nz2016-07-15 13:30:00.030r   Zcharlie)r
   r   z2016-07-15 13:30:00.000r   r&   )r
   r   r
   FrA   )r+   r   r   )r
   r   r   )	r,   r-   r   r   r   rB   rC   r.   r/   )r   rs   rt   r3   r2   r   r   r   'test_allow_exact_matches_and_tolerance3&  s(    z5TestAsOfMerge.test_allow_exact_matches_and_tolerance3c             C   s   t jdddgdddgd}t jddd	d
dgddd	d
dgd}t jdddgdddgtjd
dgd}t j||ddddd}tj|| d S )Nr   r    r!   r"   r#   r$   )r"   r%   r'      r(   r   )r"   r*   )r"   r%   r*   rE   F)r+   rF   r   r   )r,   r-   rB   rC   r   r.   r/   )r   r0   r1   r2   r3   r   r   r   .test_allow_exact_matches_and_tolerance_forwardK  s    $"z<TestAsOfMerge.test_allow_exact_matches_and_tolerance_forwardc             C   s   t jdddgdddgd}t jddd	d
dgddd	ddgd}t jdddgdddgtjd	dgd}t j||dd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*   rH   F)r+   rF   r   r   )r,   r-   rB   rC   r   r.   r/   )r   r0   r1   r2   r3   r   r   r   .test_allow_exact_matches_and_tolerance_nearest_  s    $"z<TestAsOfMerge.test_allow_exact_matches_and_tolerance_nearestc          	   C   s   t jdddddgdddddgd	d
dddgd}t jdddddgdddddgdddddgd}t jdddddgdddddgd	d
dddgdtjdddgd}t j||d	d
dd}tj|| d S )Nr   r    r!         XYZr"   r#   r$   de)r"   r#   r%   r(   r      )r"   r#   r*   )r"   r#   r%   r*   rE   )r+   r@   rF   )r,   r-   rB   rC   r   r.   r/   )r   r0   r1   r2   r3   r   r   r   test_forward_bys  s    zTestAsOfMerge.test_forward_byc          	   C   s   t jdddddgdddddgd	d
dddgd}t jdddddgdddddgdddddgd}t jdddddgdddddgd	d
dddgdddddgd}t j||d	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*   rH   )r+   r@   rF   )r,   r-   r   r.   r/   )r   r0   r1   r2   r3   r   r   r   test_nearest_by  s    zTestAsOfMerge.test_nearest_byc             C   s  t jt jdddddgdddddgd	d
dddgddddgd}t jt jddddddddgddddddddgddddddddgd ddd!gd}t j||ddd"}t jt jdddddgdddddgd	d
dddgdddddgd#dddd!gd}tj|| d S )$Nz20160525 13:30:00.020z20160525 13:30:00.030z20160525 13:30:00.040z20160525 13:30:00.050z20160525 13:30:00.060r   r&   r'   g?g333333?g?gffffff?g      ?)r
   rr   r   r
   rr   r   )r=   z20160525 13:30:00.015z20160525 13:30:00.025z20160525 13:30:00.035z20160525 13:30:00.055z20160525 13:30:00.065g @g@gffffff@g333333@g      @g@g@gffffff@)r
   rr   r   r   )r+   r@   )r
   rr   r   r   )r,   r-   r   r   r.   r/   )r   rs   rt   r3   r2   r   r   r   test_by_int  sH    zTestAsOfMerge.test_by_intc          
   C   s   t jdddddddgtdd	d
dgd}t jdddgdddgdddgd}|jdjdd}t j||dd}t jtddddddddgdddddddgdd
ddgd}tj|| d S )Ng
ףp=
@gHPsb?gzG!9@g@u@gHz>@gC@gq?ABCDEFG)r;   symbolr   r;   )r=   g        g      ?g      Y@g-C6?g{Gz?g?)r;   mpvr   T)r   )r+   ZBGACEDF)r   r;   r   )r,   r-   r   rp   r   r   r.   r/   )r   rs   rt   r3   r2   r   r   r   test_on_float  s    
zTestAsOfMerge.test_on_floatc          	   C   s   t j|j}tjdddddddgtdd	d
dgd}||j|_tjddddgtddddgd}||j|_|jdjdd}tj	||dd}tjtddddddddgtddd
ddgd}||j|_t
j|| d S )Nr    r&      r:   N   x   O   r   )rh   r   r   rh   )r=   r   P   }   xyzw)rh   r3   r3   T)r   )r+   BACEGDFZxxxxxyz)r   rh   r3   )rB   dtypetyper,   r-   r   rh   rp   r   r   r.   r/   )r   any_real_dtyper   rs   rt   r3   r2   r   r   r   test_on_specialized_type
  s$    
z&TestAsOfMerge.test_on_specialized_typec             C   s&  t j|j}tjdddddddgddd	dd	ddgtd
ddddgd}||j|_tjddddgdddd	gtdddddgd}||j|_|jdjdd}tj	||ddd}tjtdddd	d	dddgdddddddgt j
dt j
t j
t j
ddgdddddgd}||j|_tj|| d S )Nr    r&   r   r:   r   r   r   r   r'   r   )rh   rr   r   r   rr   rh   )r=   r   r   r   r   )rh   rr   r3   r3   T)r   )r+   r@   r   r   y)r   rr   rh   r3   )rB   r   r   r,   r-   r   rh   rp   r   r   rC   r.   r/   )r   r   r   rs   rt   r3   r2   r   r   r   test_on_specialized_type_by_int)  s*    
z-TestAsOfMerge.test_on_specialized_type_by_intc             C   s6  t jtddddddddddg	ddddd	d
dddg	ddddgd}t jdddddddddg	dddddddddg	dddddddddg	ddddgd}|jdjdd }|jdjdd }t j||ddd!}t jtddddddddddg	dddd
dd	dddg	dddddddddg	d"ddddgd}tj|| d S )#NZ	AAABBBCCCr   r&   r'   gGz
@gׁsF
@g
@g)\()@gGz.)@g      )@gfffffw@g33333w@g     w@)r   re   r;   r   re   r;   )r=   g        g      ?g      Y@g      @g     @@g-C6?g{Gz?g?g?g      ?)re   r;   r   r   T)r   )r+   r@   )r   re   r;   r   )r,   r-   r   rp   r   r   r.   r/   )r   rs   rt   r3   r2   r   r   r   test_on_float_by_intM  sH    z"TestAsOfMerge.test_on_float_by_intc             C   sp   d}t jdddgdddgd}t jdd	d
ddgdd	d
ddgd}tjt|d t||dd W d Q R X d S )Nz7incompatible merge keys \[0\] .*, must be the same typer   r    r!   r"   r#   r$   )r%   r"   r&   r'   r(   r)   )r*   r"   )match)r+   )r,   r-   rX   rY   r   r   )r   msgr0   r1   r   r   r    test_merge_datatype_error_raises  s
    $z.TestAsOfMerge.test_merge_datatype_error_raisesc             C   s|   d}t jdddgt jdddgd}t jdd	d
ddgt jdddddgd}tjt|d t||dd W d Q R X d S )NzHincompatible merge keys \[0\] .* both sides category, but not equal onesr   r    r!   r"   r#   r$   )r%   r"   r&   r'   r(   r)   r   )r*   r"   )r   )r+   )r,   r-   CategoricalrX   rY   r   r   )r   r   r0   r1   r   r   r   ,test_merge_datatype_categorical_error_raises  s    z:TestAsOfMerge.test_merge_datatype_categorical_error_raisesc             C   s`   t jdgdgt jdgd}t||dddgd}t jdgdgt jdgd}tj|| d S )Nr   )r   r   zr   r   r   )r+   r@   )r,   r-   r   r   r.   r/   )r   dfr3   r2   r   r   r   :test_merge_groupby_multiple_column_with_categorical_column  s    zHTestAsOfMerge.test_merge_groupby_multiple_column_with_categorical_columnfuncc             C   s   | S )Nr   )r   r   r   r   rk     s    zTestAsOfMerge.<lambda>c             C   s   t | S )N)r   )r   r   r   r   rk     s    numericdatetimesider0   r1   c             C   s   d| d}|ddt jg}|dddg}tj|dddgd	}tj|d
ddgd}tjt|d, |dkr~t||dd nt||dd W d Q R X d S )Nz"Merge keys contain null values on z sideg      ?g      @g      $@r"   r#   r$   )r"   r%   r   r(   r   )r"   r*   )r   r0   )r+   )rB   rC   r,   r-   rX   rY   r{   r   )r   r   r   r   ZnullsZ	non_nullsZdf_nullr   r   r   r   test_merge_on_nans  s    z TestAsOfMerge.test_merge_on_nansc             C   s   t jt jdgjddgdgd}t jt jdgjddgdgd}t j||dd	d
}t jt jddddddggdd	ddgd}tj|| d S )Nz
2018-01-01r   r&   r"   )by_colon_colvaluesr   r#   r   r   )r@   r+   )r   Zvalues_xZvalues_y)r=   )r,   r-   DatetimeIndextz_localizer   	Timestampr.   r/   )r   r0   r1   r3   r2   r   r   r   test_merge_by_col_tz_aware  s    z(TestAsOfMerge.test_merge_by_col_tz_awarec             C   s   t jt jdgjddgdgdgd}t jt jdgjddgdgd	gd}t j||d
dgdd}t jt jddddddggd
dddgd}tjtjgt	d|d< t
j|| d S )Nz
2018-01-01r   ZHELLOr&   r"   )by_col1by_col2r   rh   ZWORLDr   r#   r   r   r   )r@   r+   )r   Zvalue_x)r=   )r   Zvalue_y)r,   r-   r   r   r   r   rB   arrayrC   objectr.   r/   )r   r0   r1   r3   r2   r   r   r   test_by_mixed_tz_aware  s     z$TestAsOfMerge.test_by_mixed_tz_awarec             C   s  t jttddddddgdddd	d
dgddgd}t j|d d|d< t jttdd	ddddgdddd	d
dgddgd}t j|d d|d< t jttddddddgdddd	d
dgdtjdd
tjtjgdddgd}t j|d d|d< t j||dtddd}t	j
|| d S )Nr   r    r!   r      r   r   r&   r'   r   r
   r0   )r=   ms	   r      r1   Z1msrH   )r+   r   rF   )r,   r-   r   zipZto_timedeltarB   rC   r   r   r.   r/   )r   r0   r1   r2   r3   r   r   r    test_timedelta_tolerance_nearest  s&    $$z.TestAsOfMerge.test_timedelta_tolerance_nearestc             C   s   t jdddgdddgd}t jdd	d
gdddgd}|d j||d< |d j||d< t jdddgdddgtjddgd}|d j||d< t j||ddd}tj|| d S )Nr   r!   r   r   r&   r'   )r"   r%   r    r   r   )r"   r*   r"   g      ?g       @)r"   r%   r*   )r+   r   )r,   r-   rM   rB   rC   r   r.   r/   )r   Zany_int_dtyper0   r1   r2   r3   r   r   r   test_int_type_tolerance  s    "z%TestAsOfMerge.test_int_type_tolerancec             C   s  t jddddd}t jdddd	gd
g|dd  d}t j|dgd dg d}t j||ddgd}t jdddd	g|dd  dgd dg dt jddddgd}tj|| t j||ddgd}t j|dgd dg tjdddd	gdt jdddddgd}tj|| d S )Nz
2019-10-01Z30minr    r   )r   r   r   g?g?gffffff?g333333?xyzr   )r=   rR   gGz@r   gQ@)	from_dateabcTr   )r0   r1   rO   rP   r'   )r   r   r   r&   )rR   )r0   r1   rU   rT   )r   r   r   r   )	r,   r   r-   r   Indexr.   r/   rB   rC   )r   rR   r0   r1   r3   r2   r   r   r   test_merge_index_column_tz   s&    "

z(TestAsOfMerge.test_merge_index_column_tzc             C   s   t jddddt jdd }t jddd}t jd	d
it j|d}t jddit j|d}t jd
ddt j|d}t j||ddt jddd}tj|| d S )Nz1/1/2020z	1/20/2020Z2D)r   endr   g?)secondsz2/1/2020)r   r   val1rv   )rR   val2bar)r   r   Tg      ?)rO   rU   r   )r,   r   r   r-   r   r   r.   r/   )r   Zdr1Zdr2rs   rt   r2   r3   r   r   r   %test_left_index_right_index_tolerance?  s    
z3TestAsOfMerge.test_left_index_right_index_toleranceN)F)C__name__
__module____qualname__r   rX   Zfixturer   r4   rD   rG   rI   rJ   rN   rS   rV   rW   rZ   r[   r^   ra   rf   rg   ri   rj   rm   rn   rq   ru   rw   ry   r|   markZparametrizer   r   	timedeltar   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   r   r   r      s|   

V	AA0	

.(2%=$9	$r   )r   ZnumpyrB   rX   r   Zpandasr,   r   r   r   r   Zpandas._testingZ_testingr.   Zpandas.core.reshape.merger   r   r   r   r   r   <module>   s   
