o
    5c:                     @   s  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
mZ d dlmZ d dlmZ G dd dZejdddid	d	d
gejdddgddggdd Zdd Zejdd	d	ddd	dd	ddgdd Zdd Zdd Zdd Zd d! ZdS )"    N)Index	Timedelta
merge_asofread_csvto_datetime)
MergeErrorc                   @   s  e Zd ZdddZejdd Zejdd Zejdd	 Zejd
d Z	ejdd Z
ej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d8d9 Z d:d; Z!d<d= Z"d>d? Z#d@dA Z$dBdC Z%ej&j'dDe(dEe)j*dFdGgdHdIgdJdKdL Z+dMdN Z,dOdP Z-dQdR Z.dSdT Z/dUdV Z0dWdX Z1dYdZ Z2d[d\ Z3d]d^ Z4d_d` Z5dadb Z6dcdd Z7dedf Z8dgdh Z9didj Z:dkdl Z;dmdn Z<dodp Z=dqdr Z>dsdt Z?dudv Z@dwdx ZAdydz ZBej&j'd{d|d} d~d} gddgdJej&'dddgdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdS )TestAsOfMergeFc                 C   sD   |ddd|}t |}|r|jddgddjdd	}t|j|_|S )
Nreshapemergedatatimetickerlast)keepTdrop)r   drop_duplicatesreset_indexr   r   )selfdatapathnamededupepathx r   `/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/reshape/merge/test_merge_asof.py	read_data   s   zTestAsOfMerge.read_datac                 C      |  |dS )Nz
trades.csvr   r   r   r   r   r   trades      zTestAsOfMerge.tradesc                 C   s   | j |dddS )Nz
quotes.csvTr   r   r   r   r   r   quotes"   s   zTestAsOfMerge.quotesc                 C   r   )Nasof.csvr   r   r   r   r   asof&   r!   zTestAsOfMerge.asofc                 C   r   )Nztolerance.csvr   r   r   r   r   	tolerance*   r!   zTestAsOfMerge.tolerancec                 C   r   )Nzallow_exact_matches.csvr   r   r   r   r   allow_exact_matches.   r!   z!TestAsOfMerge.allow_exact_matchesc                 C   r   )Nz%allow_exact_matches_and_tolerance.csvr   r   r   r   r   !allow_exact_matches_and_tolerance2   r!   z/TestAsOfMerge.allow_exact_matches_and_tolerancec                 C   sl   t g dg dd}t g dg dd}t g dg dg dd}t||dd	}t|| d
S )doc-string examples      
   abcr/   left_valr+               r/   	right_valr+   r6   r8   r/   r3   r:   r/   onNpd	DataFramer   tmassert_frame_equalr   leftrightexpectedresultr   r   r   test_examples16   s   zTestAsOfMerge.test_examples1c                 C   s  t jtg dg dg dg ddg dd}t jtg dg dg d	g d
dg dd}t||ddd t||ddtdd t jtg 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d}t||ddtddd}t|| dS )r)   )20160525 13:30:00.023z20160525 13:30:00.03820160525 13:30:00.048rK   rK   MSFTrM   GOOGrN   AAPL皙I@rQ   g\(@(\@g     X@K      d   rV   rV   )r   r   pricequantitycolumns)rJ   rJ   20160525 13:30:00.03020160525 13:30:00.041rK   20160525 13:30:00.049z20160525 13:30:00.072z20160525 13:30:00.075)rN   rM   rM   rM   rN   rO   rN   rM   )     @rQ   \(I@QI@r^   (\X@r^   gzGJ@)=
ףp@{GI@=
ףpI@      J@rb   q=
ףX@gףp=
@gp=
J@)r   r   bidaskr   r   r>   by2msr>   rj   r&   r_   rd   )r   r   rW   rX   rg   rh   10msFr>   rj   r&   r'   N	r@   rA   r   r   r   npnanrB   rC   r   r    r#   rG   rH   r   r   r   test_examples2B   sV   	
	zTestAsOfMerge.test_examples2c                 C   sr   t g dg dd}t g dg dd}t g dg dddtjgd}t||d	d
d}t|| dS )r)   r*   r.   r2   r4   r9   r+   r7   r<   r/   forwardr>   	directionNr@   rA   rp   rq   r   rB   rC   rD   r   r   r   test_examples3   s   zTestAsOfMerge.test_examples3c                 C   sn   t g dg dd}t g dg dd}t g dg dg dd}t||dd	d
}t|| dS )r)   r*   r.   r2   r4   r9   )r+   r7   r8   r<   r/   nearestru   Nr?   rD   r   r   r   test_examples4   s   zTestAsOfMerge.test_examples4c                 C   s$   |}t ||ddd}t|| d S )Nr   r   ri   r   rB   rC   r   r    r%   r#   rG   rH   r   r   r   
test_basic   s   zTestAsOfMerge.test_basicc                 C   sN   |}|j d|_ |j d|_ |j d|_ t||ddd}t|| d S )Ncategoryr   r   ri   )r   astyper   rB   rC   r|   r   r   r   test_basic_categorical   s   z$TestAsOfMerge.test_basic_categoricalc                 C   sB   |}| d}t||dddd}|j|_||j }t|| d S )Nr   Tr   )
left_indexright_onrj   )	set_indexr   indexrZ   rB   rC   r|   r   r   r   test_basic_left_index   s   


z#TestAsOfMerge.test_basic_left_indexc                 C   s4   |}|}| d}t||dddd}t|| d S )Nr   Tr   )left_onright_indexrj   r   r   rB   rC   r|   r   r   r   test_basic_right_index   s   

z$TestAsOfMerge.test_basic_right_indexc                 C   s@   | d}| d}| d}t||dddd}t|| d S )Nr   Tr   r   r   rj   r   r|   r   r   r   !test_basic_left_index_right_index   s   



z/TestAsOfMerge.test_basic_left_index_right_indexc                 C   s\   | ddg}| d}tjtdd t||ddd W d    d S 1 s'w   Y  d S )Nr   rW   zleft can only have one indexmatchTr   r   r   pytestraisesr   r   r   r    r#   r   r   r   test_multi_index_left   s
   
"z#TestAsOfMerge.test_multi_index_leftc                 C   s\   | d}| ddg}tjtdd t||ddd W d    d S 1 s'w   Y  d S )Nr   rg   zright can only have one indexr   Tr   r   r   r   r   r   test_multi_index_right   s
   
"z$TestAsOfMerge.test_multi_index_rightc                 C   ^   | d}| d}d}tjt|d t||dddd W d    d S 1 s(w   Y  d S )Nr   z:Can only pass argument "left_on" OR "left_index" not both.r   rW   T)r   r   r   r   r   r    r#   msgr   r   r   test_on_and_index_left_on   s   


"z'TestAsOfMerge.test_on_and_index_left_onc                 C   r   )Nr   z<Can only pass argument "right_on" OR "right_index" not both.r   rg   T)r   r   r   r   r   r   r   r   test_on_and_index_right_on  s   


"z(TestAsOfMerge.test_on_and_index_right_onc                 C   s&   |}t ||dddd}t|| d S )Nr   r   )r>   left_byright_byr{   r|   r   r   r   test_basic_left_by_right_by  s
   
z)TestAsOfMerge.test_basic_left_by_right_byc                 C   sL   |}||j dk }t||ddd}tj|j|j dkddgf< t|| d S )NrM   r   r   ri   rg   rh   )r   r   rp   rq   locrB   rC   )r   r    r%   r#   rG   qrH   r   r   r   test_missing_right_by  s
   z#TestAsOfMerge.test_missing_right_byc                 C      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d}t|| d S )NrJ   rJ   z20160525 13:30:00.046rK   20160525 13:30:00.050rL   ARCANSDQr   BATSr   rP   rS   r   r   exchrW   rX   rY   rJ   rJ   r[   r\   z20160525 13:30:00.045r]   )rN   rM   rM   rM   rN   rO   r   r   r   r   r   r   Gz@rQ   r_   r`   r^   ra   rR   rc   rd   re   rb   rf   r   r   r   rg   rh   rQ   r^   r   rc   rb   rR   r   r   r   rW   rX   rg   rh   r   r   r   ri   r@   rA   r   rp   rq   r   rB   rC   rr   r   r   r   test_multiby  J   	
	zTestAsOfMerge.test_multibyc                 C   r   )Nr   )r   r   r+   r+   r5   r   rP   rS   r   rY   r   )r+   r   r   r   r+   r5   r   r   r   r   rQ   r^   r   rc   rb   rR   r   r   r   r   ri   r   rr   r   r   r    test_multiby_heterogeneous_types`  r   z.TestAsOfMerge.test_multiby_heterogeneous_typesc              	   C   sX  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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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d	}t||ddddgd}t|| tjt	dd t||ddddgdgd W d    d S 1 sw   Y  d S )N20160602r+   r/   r5   20160603r0   )r   k1k2rY   r   20160502      ?       @20160503g      @g      @)r   r   r   valueTr   r   r   z(left_by and right_by must be same lengthr   )r   r   r   r   )
r@   rA   r   r   r   rB   rC   r   r   r   rD   r   r   r   test_multiby_indexed  s\   


"z"TestAsOfMerge.test_multiby_indexedc                 C   sH   |  |d}|  |d}| j |ddd}t||ddd}t|| d S )	Nz	asof2.csvztrades2.csvzquotes2.csvTr"   r   r   ri   )r   r   rB   rC   )r   r   rG   r    r#   rH   r   r   r   test_basic2  s
   zTestAsOfMerge.test_basic2c                 C   s>   dd }||}||}||}t ||dd}t|| d S )Nc                 S   s    | | j dk jdddjddS )NrM   r   r+   )axisTr   )r   r   r   r   r   r   r   <lambda>  s
    z0TestAsOfMerge.test_basic_no_by.<locals>.<lambda>r   r=   r{   )r   r    r%   r#   frG   rH   r   r   r   test_basic_no_by  s   zTestAsOfMerge.test_basic_no_byc                 C   s   d}t jt|d t||dddd W d    n1 sw   Y  t jtdd t||ddgdd W d    n1 s>w   Y  t jtdd t||dd	 W d    d S 1 s]w   Y  d S )
Nz6incompatible merge keys \[1\] .* must be the same typer   r   rg   r   )r   r   rj   zcan only asof on a key for leftri   )rj   r   r   r   r   r   r   r   r   test_valid_join_keys  s   "z"TestAsOfMerge.test_valid_join_keysc                 C   sL   t ||gddgjdd}t||ddd}| |d}t|| d S )Nr   r   Tr   ri   r$   )r@   concatsort_valuesr   r   r   rB   rC   )r   r   r    r#   r   rH   rG   r   r   r   test_with_duplicates  s   
z"TestAsOfMerge.test_with_duplicatesc                 C   sl   t g dg dd}t g dg dd}t||dd}t g dg dg dd}t|| d S )	N)r+   r+   r6   r+   r5   r6   )keyr3   )r+   r5   r5   )r   r:   r   r=   )r   r3   r:   r?   r   df1df2rH   rG   r   r   r   test_with_duplicates_no_on  s   z(TestAsOfMerge.test_with_duplicates_no_onc                 C   sJ   d}t jt|d t||dddd W d    d S 1 sw   Y  d S )Nz/allow_exact_matches must be boolean, passed foor   r   r   foor>   rj   r'   r   r   r   r   r   test_valid_allow_exact_matches  s   
"z,TestAsOfMerge.test_valid_allow_exact_matchesc                 C   sT  t ||ddtdd t | | dddd d}tjt|d t ||dddd W d    n1 s5w   Y  tjt|d t | | ddd	d W d    n1 sYw   Y  d
}tjt|d t ||ddtd d W d    n1 s~w   Y  tjt|d t | | dddd W d    d S 1 sw   Y  d S )Nr   r   1srl   r   r+   z6incompatible tolerance .*, must be compat with type .*r   r   ztolerance must be positive)r   r   r   r   r   r   r   r   r   r   test_valid_tolerance  sH   	"z"TestAsOfMerge.test_valid_tolerancec                 C   s  |j ddd}|j ddd}|jjrJ |jjrJ tjtdd t||ddd W d    n1 s4w   Y  | d}|jjsDJ |jjrJJ tjtdd t||ddd W d    n1 sdw   Y  | d}|jjstJ |jjszJ t||ddd d S )	Nr   F)	ascendingzleft keys must be sortedr   r   ri   zright keys must be sorted)r   r   is_monotonic_increasingr   r   
ValueErrorr   r   r   r   r   test_non_sortedE  s"   

zTestAsOfMerge.test_non_sortedtolerance_ts1dayr+   )daysr   zdatetime.timedelta)idsc                 C   s&   t ||dd|d}|}t|| d S )Nr   r   rl   r{   )r   r   r    r#   r&   rH   rG   r   r   r   test_tolerance]  s
   
zTestAsOfMerge.test_tolerancec                 C   t   t g dg dd}t g dg dd}t g dg ddtjdgd}t||d	d
dd}t|| d S )Nr*   r.   r2   r+   r5   r6   r8      r9   r+   r   r<   r/   rt   r>   rv   r&   rw   rD   r   r   r   test_tolerance_forwardi     z$TestAsOfMerge.test_tolerance_forwardc                 C   r   )Nr*   r.   r2   r   r9   r+   r   r<   r/   ry   r   rw   rD   r   r   r   test_tolerance_nearestv  r   z$TestAsOfMerge.test_tolerance_nearestc              	   C   s   t t jtdddtddtdd}t t jtdddtddtdd	}t	||d
t
dd}t t jtdddtddtdtdd}t|| d S )Nz
2016-01-02Dr,   UTC)startfreqperiodstz)datevalue1z
2016-01-01ABCDE)r   value2r   z1 dayr>   r&   BCDEE)r   r   r   )r@   rA   
date_ranger   pytztimezonerp   arangelistr   r   rB   rC   r   rE   rF   rH   rG   r   r   r   test_tolerance_tz  sB   zTestAsOfMerge.test_tolerance_tzc                 C   st   t g dg dd}t g dg dd}t g dg dddtjgd}t||d	d
dd}t|| d S )N)皙?g      @g%@r.   r2   )r         @ffffff
@g      @g      '@r9   r+   r   r<   r/   ry         ?r   rw   rD   r   r   r   test_tolerance_float  s   
z"TestAsOfMerge.test_tolerance_floatc                 C   sF   | d}| d}| d}t||dddtdd}t|| d S )Nr   Tr   r   )r   r   rj   r&   )r   r   r   rB   rC   )r   r    r#   r&   rG   rH   r   r   r   test_index_tolerance  s   


z"TestAsOfMerge.test_index_tolerancec                 C   s&   t ||dddd}|}t|| d S )Nr   r   Fr   r{   )r   r    r#   r'   rH   rG   r   r   r   test_allow_exact_matches  s
   
z&TestAsOfMerge.test_allow_exact_matchesc                 C   p   t g dg dd}t g dg dd}t g dg dg dd}t||dd	d
d}t|| d S )Nr*   r.   r2   r   r9   )r5   r8   r   r<   r/   rt   Fr>   rv   r'   r?   rD   r   r   r    test_allow_exact_matches_forward     
z.TestAsOfMerge.test_allow_exact_matches_forwardc                 C   r   )Nr*   r.   r2   r   r9   )r5   r6   r   r<   r/   ry   Fr   r?   rD   r   r   r    test_allow_exact_matches_nearest  r  z.TestAsOfMerge.test_allow_exact_matches_nearestc                 C   s,   t ||ddtddd}|}t|| d S )Nr   r   100msFrn   )r   r   rB   rC   )r   r    r#   r(   rH   rG   r   r   r   &test_allow_exact_matches_and_tolerance  s   z4TestAsOfMerge.test_allow_exact_matches_and_tolerancec                 C   s   t tdgdgd}t tddgddgd}t||dd	}t tdgdgdgd
}t|| t||ddd}t tdgdgdgd
}t|| t||ddtdd}t tdgdgtjgd
}t|| d S )N2016-07-15 13:30:00.030bobr   username2016-07-15 13:30:00.000r+   r5   r   versionr   r=   r   r	  r  F)r>   r'   rm   r>   r'   r&   )	r@   rA   r   r   rB   rC   r   rp   rq   r   r   r   r   'test_allow_exact_matches_and_tolerance2  sP   	z5TestAsOfMerge.test_allow_exact_matches_and_tolerance2c                 C   s   t tddgddgd}t tddgddgd}t||d	d
tdd}t tddgddgtjtjgd}t|| d S )Nr  r  charlier  r
  r+   r5   r  r   Frm   r  r  ro   r   r   r   r   'test_allow_exact_matches_and_tolerance34  s<   	
	z5TestAsOfMerge.test_allow_exact_matches_and_tolerance3c                 C   sv   t g dg dd}t g dg dd}t g dg dtjddgd}t||d	d
ddd}t|| d S )Nr*   r.   r2   r+   r6      r7   r   r9   r7   r   r<   r/   rt   Fr+   r>   rv   r'   r&   rw   rD   r   r   r   .test_allow_exact_matches_and_tolerance_forwardY     z<TestAsOfMerge.test_allow_exact_matches_and_tolerance_forwardc                 C   sv   t g dg dd}t g dg dd}t g dg dtjddgd	}t||d
dddd}t|| d S )Nr*   r.   r2   r  )r+   r6   r  r8   r   r9   r  r   r<   r/   ry   Fr+   r  rw   rD   r   r   r   .test_allow_exact_matches_and_tolerance_nearestm  r  z<TestAsOfMerge.test_allow_exact_matches_and_tolerance_nearestc              
   C   s   t g dg dg dd}t g dg dg dd}t g dg dg ddtjd	d
dgd}t||dddd}t|| d S )Nr+   r,   r-         )Xr  YZr  r/   r0   r1   der/   r0   r3   r+   r7   r   r     )r  r  r  r  r  r/   r0   r:   r+   r   r  r#  r/   r0   r3   r:   r/   r0   rt   r>   rj   rv   rw   rD   r   r   r   test_forward_by  s*   	zTestAsOfMerge.test_forward_byc                 C   s   t g dg dg dd}t g dg dg dd}t g dg dg dg dd	}t||d
ddd}t|| d S )Nr  )r  r  r  r  r  r  r!  r"  )r  r  r  r  r  r$  )r+   r+   r   r   r#  r%  r/   r0   ry   r&  r?   rD   r   r   r   test_nearest_by  s*   	zTestAsOfMerge.test_nearest_byc                 C   s   t jtg dg dg ddg dd}t jtg dg dg dd	g d	d}t||d
dd}t jtg dg dg dg ddg dd}t|| d S )N)20160525 13:30:00.020r[   20160525 13:30:00.040r   20160525 13:30:00.060)r+   r5   r+   r6   r5   )r   g333333?g?gffffff?g      ?)r   r   r   rY   )z20160525 13:30:00.015r)  z20160525 13:30:00.025z20160525 13:30:00.035r*  z20160525 13:30:00.055r+  z20160525 13:30:00.065)r5   r+   r+   r6   r5   r+   r5   r6   ) @皙@ffffff@333333@r   g@皙@gffffff@)r   r   r   r   r   ri   )r-  r,  r.  r/  r0  )r   r   r   r   )r@   rA   r   r   rB   rC   r   r   r   r   test_by_int  s<   		zTestAsOfMerge.test_by_intc                 C   s   t jg dtddddgd}t jg dg dd	dd
gd}|djdd}t||dd}t jtdg dg ddg dd}t|| d S )N)
ףp=
@HPsb?zG!9@@u@Hz>@皙C@q?ABCDEFG)rW   symbolr:  rW   rY   )        r         Y@)-C6?{Gz?皙?)rW   mpvr@  Tr   r=   BGACEDF)r3  r8  r2  r4  r6  r5  r7  )r=  r=  r>  r>  r>  r?  r?  )r:  rW   r@  r@   rA   r   r   r   r   rB   rC   r   r   r   r   test_on_float  s(   	zTestAsOfMerge.test_on_floatc                 C   s   t |j}tjg dtddddgd}||j|_tjg dtdd	dd
gd}||j|_|djdd}t	||dd}tjtdg dtddg dd}||j|_t
|| d S )Nr,   r5      rV   N   x   O   r9  )r   r:  r:  r   rY   r   P   rG  }   xyzw)r   rH   rH   Tr   r=   BACEGDFr5   r,   rE  rF  rH  rV   rG  xxxxxyz)r:  r   rH   )rp   dtypetyper@   rA   r   r   r   r   r   rB   rC   r   any_real_numpy_dtyperP  r   r   rH   rG   r   r   r   test_on_specialized_type  s,   z&TestAsOfMerge.test_on_specialized_typec                 C   s   t |j}tjg dg dtddg dd}||j|_tjg dg dtd	d
g d
d}||j|_|djdd}t	||d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d}||j|_t|| d S )NrD  )r+   r5   r6   r5   r6   r+   r5   r9  )r   r   r:  )r:  r   r   rY   rI  )r+   r5   r5   r6   rL  )r   r   rH   r   Tr   r   ri   rM  )r5   r+   r6   r6   r5   r5   r+   rN  r   y)r:  r   r   rH   )rp   rP  rQ  r@   rA   r   r   r   r   r   rq   rB   rC   rR  r   r   r   test_on_specialized_type_by_int7  s4   	z-TestAsOfMerge.test_on_specialized_type_by_intc                 C   s   t jtdg dg ddg dd}t jg dg dg dd	g d	d}|d
jdd}|d
jdd}t||d
dd}t jtdg dg dg ddg dd}t|| d S )N	AAABBBCCC)	r+   r5   r6   r+   r5   r6   r+   r5   r6   )	Gz
@ׁsF
@
@)\()@Gz.)@      )@fffffw@33333w@     w@)r:  r   rW   rY   )	r+   r+   r+   r5   r5   r5   r6   r6   r6   )	r;  r   r<  r;        @r<  r;  ra  g     @@)	r=  r>  r?  r=  r>  皙?r=        ?r   )r   rW   r@  rW   Tr   r   ri   )	r6   r5   r+   r6   r+   r5   r+   r5   r6   )	rZ  rY  rX  r]  r[  r\  r^  r_  r`  )	r=  r=  r>  rc  r>  r>  r?  rb  rc  )r:  r   rW   r@  rB  r   r   r   r   test_on_float_by_int[  s4   	z"TestAsOfMerge.test_on_float_by_intc                 C   sv   d}t g dg dd}t g dg dd}tjt|d t||dd	 W d    d S 1 s4w   Y  d S )
N@Incompatible merge dtype, .*, both sides must have numeric dtyper*   r.   r3   r/   r4   r:   r/   r   r/   r=   r@   rA   r   r   r   r   r   r   rE   rF   r   r   r    test_merge_datatype_error_raises  s   "z.TestAsOfMerge.test_merge_datatype_error_raisesc                 C   s   d}t g dt g dd}t g dt g dd}tjt|d t||d	d
 W d    d S 1 s:w   Y  d S )NzHincompatible merge keys \[0\] .* both sides category, but not equal onesr*   r.   rf  r4   )r/   r  r1   r  r0   rg  r   r/   r=   )r@   rA   Categoricalr   r   r   r   ri  r   r   r   ,test_merge_datatype_categorical_error_raises  s   "z:TestAsOfMerge.test_merge_datatype_categorical_error_raisesc                 C   s`   t dgdgt dgd}t||dddgd}t dgdgt dgd}t|| d S )Nr   r   rU  zr   rU  rn  ri   )r@   rA   rk  r   rB   rC   )r   dfrH   rG   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   r     s    zTestAsOfMerge.<lambda>c                 C   s   t | S rr  )r   r   r   r   r   r     s    numericdatetimesiderE   rF   c                 C   s   d| d}|ddt jg}|g d}t|g dd}t|g dd	}tjt|d
$ |dkr<t||dd nt||dd W d    d S W d    d S 1 sVw   Y  d S )Nz"Merge keys contain null values on z sider   ra  )r   ra  g      $@r.   r2   )r+   r7   r   r9   r   rE   r/   r=   )rp   rq   r@   rA   r   r   r   r   )r   rq  ru  r   nulls	non_nullsdf_nullro  r   r   r   test_merge_on_nans  s   "z TestAsOfMerge.test_merge_on_nansc                 C   s   t jt jddg|d}|jjdv rt|jjj}nt	|jjj}||d< t 
|g dg dg dd	}t 
|g d
g dg dd	}t||ddgdd}t 
|g dg dg dd}tjtjtjtjgtd|d< t|| d S )Nr   r+   rP  )iur5   )HELLOToYou)r5   r  r7   )r/   r1   r   by_col1by_col2on_colr   )WORLDWideWeb)r+   r5   r7   )r0   r  r   r  r  r  rj   r>   r  r  r  value_xvalue_y)r@   arrayNArP  kindrp   iinfonumpy_dtypemaxfinforA   r   rq   objectrB   rC   )r   any_numeric_ea_dtypearrmax_valrE   rF   rH   rG   r   r   r   test_by_nullable  s:   	zTestAsOfMerge.test_by_nullablec                 C   s   t t dgddgdgd}t t dgddgdgd}t||dd	d
}t jt jddddddggg dd}t|| d S )N
2018-01-01r   r5   r/   )by_colr  valuesr+   r0   r  r  r  r   )r  r  values_xvalues_yrY   )r@   rA   DatetimeIndextz_localizer   	TimestamprB   rC   r   r   r   r   test_merge_by_col_tz_aware  s$   z(TestAsOfMerge.test_merge_by_col_tz_awarec                 C   s   t t dgddgdgdgd}t t dgddgdgd	gd}t||d
dgdd}t jt jddddddggg dd}tjtjgt	d|d< t
|| d S )Nr  r   r}  r5   r/   r  r  r+   r0   r  r  r  r  r  r  rY   rz  r  )r@   rA   r  r  r   r  rp   r  rq   r  rB   rC   r   r   r   r   test_by_mixed_tz_aware  s*   z$TestAsOfMerge.test_by_mixed_tz_awarec                 C   s   t jttg dg dddgd}t |d d|d< t jttg dg dddgd}t |d d|d< t jttg dg dd	tjd
dtjtjgg dd}t |d d|d< t||dtddd}t	
|| d S )N)r   r,   r-   r     rE  )r   r+   r5   r6   r  r,   r   rE   rY   ms)r   r6   	   r  r     rF   r   r5   r  )r   rE   rF   1msry   )r>   r&   rv   )r@   rA   r   zipto_timedeltarp   rq   r   r   rB   rC   rD   r   r   r    test_timedelta_tolerance_nearest&  s2   z.TestAsOfMerge.test_timedelta_tolerance_nearestc                 C   s   t g dg dd}t g dg dd}|d ||d< |d ||d< t g dg dtjddgd	}|d ||d< t||dd
d}t|| d S )N)r   r-   r  r   r2   )r,   r  rE  r9   r/   r   r   r<   r-   r   )r@   rA   r   rp   rq   r   rB   rC   )r   any_int_numpy_dtyperE   rF   rG   rH   r   r   r   test_int_type_toleranceK  s   z%TestAsOfMerge.test_int_type_tolerancec                 C   s   t jddddd}t jg ddg|dd  d	}t |d
gd dg d}t||ddgd}t jg d|dd  d
gd dg dt jdddddd}t|| t||ddgd}t j|d
gd dg tjddddgdtg dd}t|| d S )Nz
2019-10-0130minr,   r   )r   r   r   )?皙?ffffff?333333?xyzr+   )rZ   r   gGz@r  gQ@)	from_dateabcTr  )rE   rF   r   r   r6   )r  r  r  z2019-10-01 00:30:00r   )rE   rF   r   r   r  r  r  r  )r  r  r  )r   r+   r5   r6   r  )	r@   r   rA   r   rB   rC   rp   rq   r   )r   r   rE   rF   rH   rG   r   r   r   test_merge_index_column_tz[  s6   




z(TestAsOfMerge.test_merge_index_column_tzc                 C   s   t jddddtdd }t jddd}t jd	d
it |d}t jddit |d}t jd
ddt |d}t||ddtddd}t|| d S )Nz1/1/2020z	1/20/20202D)r   endr   g?)secondsz2/1/2020)r   r  val1r   r  val2bar)r  r  Tr   )r   r   r&   )r@   r   r   rA   r  r   rB   rC   )r   dr1dr2r   r   rG   rH   r   r   r   %test_left_index_right_index_tolerance|  s"   z3TestAsOfMerge.test_left_index_right_index_toleranceN)F)K__name__
__module____qualname__r   r   fixturer    r#   r%   r&   r'   r(   rI   rs   rx   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   rt  	timedeltar   r   r   r   r   r   r   r  r  r  r  r  r  r  r'  r(  r1  rC  rT  rV  rd  rj  rl  rp  ry  r  r  r  r  r  r  r  r   r   r   r   r      s    







T
	
	AA2	
	/
(2%=$9	,%!r   kwargsr>   r   Tr   r   z2019-06-01 00:09:12z2019-06-01 00:10:29r   c                 C   sj   t jd|i|d}t jd|i|d}tjtdd t||fi |  W d    d S 1 s.w   Y  d S )Nr   r  re  r   rh  )r  r   rE   rF   r   r   r   #test_merge_asof_non_numerical_dtype  s   	"r  c               	   C   sx   t g dg dd} t g dg dd}tjtdd t| |dd	d	d
d W d    d S 1 s5w   Y  d S )N)121315r.   )r/   	left_val1)r  r   r   r2   re  r   r  r/   r3   )r   r   r   r   rh  rE   rF   r   r   r   *test_merge_asof_non_numerical_dtype_object  s   "r  )r   r   	left_time)r   r   rF   )r   r   c                 C   s   t g ddd}tjg dg dd|d}tjdg d	ig d	d}t||fi | }tjg dg dg d
d|d}t|| d S )Nr*   testr   r.   )r+   r  r-   )rE   r  r  rF   r4   r;   )rE   r  rF   )r   r@   rA   r   rB   rC   )r  r   rE   rF   rH   rG   r   r   r   test_merge_asof_index_behavior  s   
r  c                  C   s   t jdg ditg dddd} t jdg ditg d	ddd}t| |ddd
}t g dg dg dd}t|| d S )Nr0   r-   r   r  r   r/   r  r  r1   r        )r   r5   r6   r   r   r.   )r@   rA   r   r   rB   rC   rE   rF   rH   rG   r   r   r   &test_merge_asof_numeri_column_in_index  s
   ""r  c                  C   s   t jdg dit jjg dg dgddgdd} t jd	g d
it jjg dg dgddgdd}t| |ddd}t g dg dg d
d}t|| d S )Nr0   r  r   r.   r/   rn  )namesr  r1   r  rm  rU  r  )r@   rA   
MultiIndexfrom_arraysr   rB   rC   r  r   r   r   +test_merge_asof_numeri_column_in_multiindex  s   

r  c                  C   s   t jdg ditg dddd} t jdg ditg d	ddd}tjtd
d t| |ddd W d    n1 s<w   Y  |  ddg} | ddg}tjtd
d t| |ddd W d    d S 1 snw   Y  d S )Nr0   r  )123r/   r  r  r1   r  )mnore  r   r  )	r@   rA   r   r   r   r   r   r   r   r  r   r   r   3test_merge_asof_numeri_column_in_index_object_dtype  s    """r  c                  C   s   t ddgt dt dgd} t jt dddd	}t d
g di}t|| |dddd}t g dtjddg|d}t|| t| |d|ddd}t ddgt dt dgddgd}t|| d S )Nr5   r7   z2021/01/01 00:37z2021/01/01 01:40)r/   tsz2021/01/01 00:00r6   1h)r   r   r   r0   )r     r8   r  Fbackward)r   r   r'   rv   )r0   r/   r  r  r  )r/   r  r0   )	r@   rA   r  r   r   rp   rq   rB   rC   )rF   ts_mergerE   rH   rG   r   r   r   test_merge_asof_array_as_on  sD   r  )rt  numpyrp   r   r   pandasr@   r   r   r   r   r   pandas._testing_testingrB   pandas.core.reshape.merger   r   r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   sR               

