a
    dyC                     @   s  d dl m Z  d dlZd dlZd dl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 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ejdd Zejdddeddgddgdddgdfddeddgddgdddgdfd	deg d ddejgdg d!dfd	deg d"ejddgdg d#dfddeejddgg d$dg d%dfddeddejgg d&dg d'dfd(ded ddejgejddd)gdg d*dfd(ded ddejgejddd)gdg d*dfgd+d, Zd-d. Zd/d0 Zd1d2 Z d3d4 Z!d5d6 Z"d7d8 Z#d9d: Z$d;d< Z%d=d> Z&d?d@ Z'dAdB Z(dCdD Z)dEdF Z*ejdGddgdHdI Z+G dJdK dKZ,dS )L    )datetimeN)
MergeError)	DataFrameIndex
MultiIndex
date_rangeperiod_range)concatc                   C   s*   t tdddtdtdddddS )	N         Zabcde2000A)startfreqperiodsdatacolumnsindex)r   npZarangeZreshapelistr    r   r   m/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/frame/methods/test_join.pyframe_with_period_index   s
    r   c                   C   s   t dg dig ddS )Nar
   
   r         r   r   r   r   r   r   r   left   s    r#   c                   C   s   t dg dig ddS )Nb,  d         r    r   r!   r"   r   r   r   r   right"   s    r+   c                   C   s   t g dg ddtddS )Nr   r$   cdcatdogweaselZhorser   r$   r   r!   )r   ranger   r   r   r   left_no_dup'   s    r5   c                   C   s$   t g dg ddtdddS )N)r   r$   r-   r.   e)meowbarkum... weasel noise?ZnayZchirpr   r-   r   r!   r   )r   r4   	set_indexr   r   r   r   right_no_dup/   s    r<   c                 C   s$   t | tdgdgddgdgddS )Nr   Zcowr3   r*   r!   T)sort)r	   r   )r5   r   r   r   left_w_dups:   s    r>   c                 C   s&   t | tdgdgddgdgdS )Nr6   Zmoor:   r*   r!   r   )r	   r   r;   )r<   r   r   r   right_w_dupsA   s
    r?   zhow, sort, expectedinnerFr
   r   r(   r'   r3   r   r    r!   Tr   r   r   r   r
   )r   r    r   r%   r)   r'   r(   r&   r    r   r*   outerr&   )r   r    r   r*   c                 C   s"   | j |||dd}t|| d S )N1:1)howr=   validate)jointmassert_frame_equal)r#   r+   rF   r=   expectedresultr   r   r   	test_joinH   s    ,rM   c                  C   sd  t dg di} t g dg dd}t g dg dd}d}tjt|d  | j|gd	d
 W d    n1 st0    Y  tjt|d" | j||gdd W d    n1 s0    Y  tjt|d$ | j||gd	dd W d    n1 s0    Y  tjtdd | ||g W d    n1 s40    Y  | |g}| |}t|| d S )Nkey)r    r   r*   r   r   )r       r*   r   r   )rN   Zv1)r   r   r*   r   r    )keysZv2z7Suffixes not supported when joining multiple DataFramesmatchy)lsuffixx)rsuffixrT   rV   zIndexes have overlapping values)r   pytestraises
ValueErrorrH   rI   rJ   )firstsecondthirdmsgZ
arr_joinedZnorm_joinedr   r   r   test_suffix_on_list_joinx   s    .02.
r_   c                 C   sF   d}t jt|d  | j|ddd W d    n1 s80    Y  d S )Nz"invalid" is not a valid argument. Valid arguments are:
- "1:1"
- "1:m"
- "m:1"
- "m:m"
- "one_to_one"
- "one_to_many"
- "many_to_one"
- "many_to_many"rQ   r   invalidonrG   )rX   rY   rZ   merge)r5   r<   r^   r   r   r   test_join_invalid_validate   s    rd   c                 C   sV   | j |ddd d}tjt|d  | j |ddd W d    n1 sH0    Y  d S )Nr   one_to_manyra   zBMerge keys are not unique in right dataset; not a one-to-one mergerQ   
one_to_onerH   rX   rY   r   )r5   r?   r^   r   r   r   $test_join_on_single_col_dup_on_right   s    rh   c                 C   sV   | j |ddd d}tjt|d  | j |ddd W d    n1 sH0    Y  d S )Nr   many_to_onera   zAMerge keys are not unique in left dataset; not a one-to-one mergerQ   rf   rg   )r>   r<   r^   r   r   r   #test_join_on_single_col_dup_on_left   s    rj   c                 C   s   | j |ddd d}tjt|d  | j |ddd W d    n1 sH0    Y  d}tjt|d  | j |ddd W d    n1 s0    Y  d S )	Nr   Zmany_to_manyra   zCMerge keys are not unique in right dataset; not a many-to-one mergerQ   ri   zBMerge keys are not unique in left dataset; not a one-to-many mergere   rg   )r>   r?   r^   r   r   r   #test_join_on_single_col_dup_on_both   s    $rk   c                  C   s   t g dg dg ddtddddg} t g d	g d
g ddtddddg}t g d	g d
g dg ddtddddg}| j|ddd}t|| d S )N)r   r   r$   r$   )r   r    r   r    r/   r   r$   r-   r   r!   r   r$   )r   r   r$   )r   r    r   )r7   r8   r9   )r   r$   r.   r*   )r0   r1   r2   r,   r@   rE   )rF   rG   )r   r4   r;   rH   rI   rJ   )r#   r+   Zexpected_multirL   r   r   r    test_join_on_multi_col_check_dup   s<    		rm   c              	   C   s  | j | jd d ddgf }| j | jdd  ddgf jd d d }||}t|j|j tg d}t|j| |j|d	d
}t|j|j t|j| |j|dd
}t|j|j t|j| |j|dd
}t|j|jdd  t|j| |j|dd
}t|j| j  t|j| t	j
tdd |j|dd
 W d    n1 sh0    Y  d}dD ]D}t	j
t|d | j| |d
 W d    n1 s0    Y  qzd S )Nr   r   Br   CD)r   rn   ro   rp   r#   rF   r+   r@   rD   zjoin methodrQ   Zfoozcolumns overlap but no suffix)rD   r#   r@   )locr   ZilocrH   rI   assert_index_equalr   r   Zsort_valuesrX   rY   rZ   )float_frameff2joinedZexpected_columnsr^   rF   r   r   r   test_join_index  s0    (
.ry   c                 C   s   | j d d ddgf }| j d d dddgf }| }| d d d d |d< | d d d d |d< ||}t|| |j|dd}t||d d d  |j|dd}t||j d d |jf  d S )Nr   rn   r   ro   rp   r+   rr   )rs   copyrH   rI   rJ   r   )ru   afZbfrK   rL   r   r   r   test_join_index_more,  s    
r|   c                 C   sp   |   }|| jd }||}t||  d |_tjt	dd || W d    n1 sb0    Y  d S )Nrq   zmust have a namerQ   )
rz   popr   rH   rI   rJ   namerX   rY   rZ   )ru   ZdfZserrx   r   r   r   test_join_index_series>  s    
r   c                 C   s   | j d d g df }| j d d g df }|j|ddd}|j d d ddgf d}|j d d ddgf d}| j d d dd	gf }|||}t||j d d |jf  d S )
N)r   rn   ro   )rn   ro   rp   Z_df1Z_df2rW   rn   ro   r   rp   )rs   rH   Z
add_suffixrI   rJ   r   )ru   df1df2rx   Zdf1_sufZdf2_sufZ
no_overlaprK   r   r   r   test_join_overlapJ  s    r   c                 C   s^   | j dd d}tj| jgd dd}| j|j}| |}t||| jd}t	
|| d S )Nc                 S   s   |  |  S )Nr   )rN   r   r   r   <lambda>Z      z(test_join_period_index.<locals>.<lambda>r   r   r    )Zaxisr   )renamer   Zconcatenatevaluesr   appendrH   r   r   rI   rJ   )r   otherZjoined_valuesZjoined_colsrx   rK   r   r   r   test_join_period_indexY  s    
r   c                  C   s   t dg dig dd} t dg dig dd}t dg d	ig d
d}| j||gdd}t g dtjdddgtjddtjgdg dd}t|| d S )Nr   rA   rC   r!   r$   rB   )r   r*   r   r-   )    iX  )r   r   r   r#   rr   )r   r   r   r
   r&   r(   r   r   rl   )r    r   r   r*   )r   rH   r   nanrI   rJ   )r   r   df3rx   rK   r   r   r   (test_join_left_sequence_non_unique_indexh  s    	r   c                 C   s6   | j  }| j| ddg g}||}t||  d S )Nro   rp   )r   Zto_framern   rH   rI   rJ   )ru   r#   r+   rL   r   r   r   test_join_list_series|  s    

r   sort_kwc                 C   s   t dddgiddgd}t ddd	gid
dgd}t dddgidd
gd}t dtdddddtddddtddd}| du r|jg dd}td $ |j||gd| d}W d    n1 s0    Y  t|| d S )Ncol1r    r   r-   r   r!   col2r   r   r$   col3   rO          @r         ?rl   g      @g      @g      @g       @r   r   r   F)r-   r   r$   rD   )rF   r=   )r   floatreindexrI   Zassert_produces_warningrH   rJ   )r   r   r$   r-   rK   rL   r   r   r   )test_suppress_future_warning_with_sort_kw  s    2r   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestDataFrameJoinc                 C   s   |}|j |jd d dgf }|j |jdd  ddgf }|j|dd|j}| j }tj|t|j< t	||j|j
d}t|j rJ t|| d S )	Nr   r   r   rn   ro   rD   rr   r   r   )rs   r   rH   r   rz   r   r   r   isnanr   r   allrI   rJ   )selfZ multiindex_dataframe_random_dataframer   r$   rx   rK   r   r   r   rM     s    zTestDataFrameJoin.test_joinc                 C   sp   t ddgddgddgd}t ddgddgddgd}|ddg}|ddg}dD ]}|j||d qXd S )	Nr    r   )r   r$   rU   )r   r$   rS   r   r$   )r#   r+   rD   rr   )r   r;   rH   )r   r   r   rF   r   r   r   test_join_segfault  s    z$TestDataFrameJoin.test_join_segfaultc                 C   sr   ddg}t dddt dddg}t|tddgd}td	dgd
dgg||d}|j|dd}t|jd
ksnJ d S )NZ20120209Z20120222i  r   	      Zaar   r    r*   r   rb   )r   r   r4   rH   lenr   )r   Z	str_datesZdt_datesr   ro   Ztstr   r   r   test_join_str_datetime  s    z(TestDataFrameJoin.test_join_str_datetimec                 C   s  t g dg dg dg dg dg dg dg dg d	g	g d
dddg}t ddgddggddgddg}t ddgddgddgddgddgddgdtjgdtjgdtjgg	|jddgd}t|j|dd| t|j|d d|ddg  tj	ddgg d!gddgd"}t ddgddgddgddgddgddgg|ddgd}t|j|d d| t|j|dd|ddg  d S )#N)r   rU   R
1?)r   rS   ?)r   z<+J	?)r$   rU   4ֿ)r$   rS   ^9S?)r$   r   ?)r-   rU   r    )r-   rS   r   )r-   r   r*   )r[   r\   value1r   r[   r\   r   r   r$   r
   Zvalue2r   r   r   r   r   r   r   r   g      @r   r   r#   rr   r+   )rU   rS   r   names)
r   r;   r   r   r   rI   rJ   rH   r   Zfrom_product)r   r   r   expZexp_idxr   r   r   test_join_multiindex_leftright  sd    z0TestDataFrameJoin.test_join_multiindex_leftrightc                 C   s   t ddd }tjd|fgddgd}tddgi|d}tjd|fgddgd}td	dgi|d}tjd|fgddgd}td
dgi|d}|||g}tjd|fgddgd}	tdgdgdgd|	d}
t||
 d S )Ni  r    r   Zindex_0dater   r   r!   r   r   r   )	pd	Timestampr   r   from_tuplesr   rH   rI   Zassert_equal)r   r   Z	df1_indexr   Z	df2_indexr   Z	df3_indexr   rL   Zexpected_indexrK   r   r   r   test_join_multiindex_dates  s    z,TestDataFrameJoin.test_join_multiindex_datesc                 C   s   t ddgddgddggd}tdd	g}t |dd
gddggd}tjtdd  tj||dd W d    n1 sv0    Y  tjtdd |j|dd W d    n1 s0    Y  d S )Nr   r$   r       r   r   )r   r   )r    )r-   Zc1!   ,   z-Not allowed to merge between different levelsrQ   r   )	r   r   r   rX   rY   r   r   rc   rH   )r   r   r   r   r   r   r   'test_merge_join_different_levels_raises  s    .z9TestDataFrameJoin.test_merge_join_different_levels_raisesc                 C   s   t tdtdddddd}t tdtdd	d
ddtd	dd}|j|dd}|j|j}t	|j| |jj
jdksJ d S )N)   r*   z2012-11-15 00:00:00r   Z100Lz
US/Central)r   r   tzr!   )r*   r*   r*   Z250Lr   rD   rr   )r   r   zerosr   r4   rH   r   unionrI   rt   r   zone)r   Ztest1Ztest2rL   rK   r   r   r   test_frame_join_tzaware(  s"    z)TestDataFrameJoin.test_frame_join_tzawareN)
__name__
__module____qualname__rM   r   r   r   r   r   r   r   r   r   r   r     s   
<r   )-r   numpyr   rX   Zpandas.errorsr   Zpandasr   r   r   r   r   r   Zpandas._testingZ_testingrI   Zpandas.core.reshape.concatr	   Zfixturer   r#   r+   r5   r<   r>   r?   markZparametrizer   rM   r_   rd   rh   rj   rk   rm   ry   r|   r   r   r   r   r   r   r   r   r   r   r   <module>   s   







""    	+
$)	
