U
    sVc2                     @   s  d dl Zd dlZd dlmZmZmZmZmZ	m
Z
 d dlmZ ejddeegdd Zdd Zd	d
 Zejdddgejdddgejdddgdd Zejjddddgdddgdddggdddgdejjdeeed d! gd"d#d$d%gdd&d' Zd(d) Zejd*d+d,d-d.gd/d0 Zejd*d+d,d-d.gd1d2 Zd3d4 Zd5d6 Zd7d8 Zejd9eeejeegd:d; Zd<d= ZdS )>    N)	DataFrameIndex
MultiIndexSeries_testingconcat)assert_series_or_index_equalotherc                 C   sH   | }ddg}|r||}n|}||ddj j|dd}|jdksDtd S )Nabname)r   ,sep)strcatr   AssertionError)index_or_seriesr	   boxvaluesresult r   A/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/strings/test_cat.pytest_str_cat_name   s    
r   c              	   C   sD  | }|dddddt jg}|j }d}||ks4t|jjdd}d}||ksRt|jjdd	d
}d}||ksrtt jdt jdddt jgtd}|ddddddg}|jj|dd}t|| |jjt|dd}t|| d}t	dddg}t
jt|d |j|j W 5 Q R X t
jt|d |jt| W 5 Q R X d S )Nr
   r   cZaabbc-na_repzaabbc-_ZNA)r   r   Za_a_b_b_c_NAdZfoodtypeaaza-bbZbdZcfooz--<If `others` contains arrays or lists \(or other list-likes.*123match)npnanr   r   r   arrayobjectr   listr   pytestraises
ValueErrorr   )r   r   sr   expectedtrgxzr   r   r   test_str_cat   s.    


r7   c              	   C   sh   | }|ddddg}d}t jt|d |jd W 5 Q R X t jt|d |jd W 5 Q R X d S )	Nr
   r   r   r   z'Did you mean to supply a `sep` keyword?r(   |z    )r/   r0   r1   r   r   )r   r   r2   messager   r   r   #test_str_cat_raises_intuitive_errorE   s    r:   r    dtype_targetr-   categorydtype_callerc           	      C   s.  | }t ddddg|d}|t kr$|n
t||d}t ddddg|d}t dddd	g}|t kr`|n
t||d}|jj|j|d
}t|| t|j|d}|jj||d
}t|| |jj|j|d
}t|| t|j|jd}t dddddg}|t kr|nt||jd d d}|jj||d
}t|| d S )Nr
   r   r    indexr   abr"   r#   acr      )r   r   r   r   r   r   )	r   r>   r<   r   r   r2   r4   r3   r   r   r   r   test_str_cat_categoricalP   s$    


"rD   datarC         g?g?g333333?r   ZintegersZfloatsmixed)idsr   c                 C   s   t j| tdS )Nr    )r*   r,   r-   )xr   r   r   <lambda>{       rK   r   r   r.   znp.arrayc              	   C   sJ   t dddg}| |}d}tjt|d |jj|ddd W 5 Q R X d S )	Nr
   r   r   z;Concatenation requires list-likes containing only strings.*r(   outerr   joinr   )r   r/   r0   	TypeErrorr   r   )r   rE   r2   r4   msgr   r   r   test_str_cat_wrong_dtype_raisess   s
    rR   c              	   C   s  | }t ddddg}|t kr |n
t||d}tdddd	g|jd}t|t||dgd
d}t ddddg}|t krv|nt|j|jd}|j|}t|| |j|j}t|| |j||g}t|| |j||jg}t|| ddddg|_|ddddg}|t kr|nt|j|jd}|j||g}t|| |j||jg}t|| ddddg|_|ddddg}|t kr|nt|j|jd}|j|}t|| d}tdddg}t||gd
d}	tj	t
|d |j|	j W 5 Q R X tj	t
|d |j|j|jg W 5 Q R X tj	t
|d |j|j|g W 5 Q R X d}tdtjdd g}
tj	t|d |j|
dg W 5 Q R X tj	t|d |j|
|g W 5 Q R X tj	t|d |j|
|jg W 5 Q R X tj	t|d |j|
|
|gg W 5 Q R X tj	t|d |jt|
 W 5 Q R X tj	t|d |j|
t|
g W 5 Q R X tj	t|d |jd
 W 5 Q R X tj	t|d  |jt|jt|g W 5 Q R X d S )Nr
   r   r   r   r?   ABCDrC   ZaxisZaAaZbBbZcCcZdDdZaDaZbAbZcBcZdCdZaDdZbAaZcBbZdCcr$   r%   r&   r'   r(   z*others must be Series, Index, DataFrame,.*u)r   r   r   r   r   r   r   r@   r/   r0   r1   r*   r+   rP   setiterr.   )r   r   r2   r4   r   r3   r   r5   r6   erX   r   r   r   test_str_cat_mixed_inputs   sl    






r\   rO   leftrM   innerrightc           	      C   s   | }t ddddgddddgd}t dddd	gddd
dgd}|j||d\}}|jj|dd}|tkr~t|}t|}t|}|jj||dd}t|| d S )Nr
   r   r   r   r?   rV   rS   ErT   r[   rO   r   r   rN   )r   Zalignr   r   r   r   )	r   rO   r   r2   r4   satar3   r   r   r   r   test_str_cat_align_indexed   s    rd   c              	   C   s  t ddddg}t ddddgdddd	gd
}t||gd	d}t dddddg}|j|jj|j| d }|jj||g| dd}t|| |jj|| dd}t|| t	
ddddg}t dddddg}| dkr|j|jn*| dkr|j|jn|j|j|j}|j|jj|| d }|jj||g| dd}t|| tjtdd  |jj|t|g| d! W 5 Q R X d"}	t d#d$d%gj}
tjt|	d  |jj|
| d! W 5 Q R X tjt|	d  |jj||
g| d! W 5 Q R X d S )&Nr
   r   r   r   r[   rG   r      rC   r?   rW   aaabbbzc--dddz-ee)howr   rN   rS   rT   rU   rV   ZaaAZbbBzc-CZddD-e-r^   rM   zothers must be Series,.*r(   ra   r$   r%   r&   r'   )r   r   locr@   rO   r   r   tmassert_series_equalr*   r,   intersectionunionappend
differencer/   r0   rP   r.   r   r1   )rO   r2   r4   r   Zexpected_outerr3   r   rX   Zrhs_idxr5   r6   r   r   r   test_str_cat_align_mixed_inputs  s8    "rr   c                 C   s   | }|}t ddddg}|t kr$|n
t||d}|tjgd td}|t krP|n
t||d}|tkr~ttjgd |jtd}nt tjgd td}|jj|d	d
}t|| |tkrttjgd t|jd}|jj|d	d
}t	
|| d S )Nr
   r   r   r   r?   re   r    )r@   r!   r]   ra   )r!   r@   )r   r   r*   r+   r-   r@   r   r   r   rl   rm   )r   Zindex_or_series2r   r	   r2   r4   r3   r   r   r   r   test_str_cat_all_na5  s    
rs   c                  C   s   t ddddg} t ddddgdddd	gd
}t dddddg}| jjt|| jgddd}t|| t ddgddgd
}| jj|jdg |jdg gddd}t|| d S )Nr
   r   r   r   r[   rG   r   re   rC   r?   rf   rg   zc-crh   rj   rM   r   rN   zaa-zd-dr_   )r   r   r   rZ   r   rl   rm   rk   )r2   r4   r3   r   r   r   r   test_str_cat_special_casesP  s    &rt   c                  C   s   t tjddgdddggddgdd	} |  } | | jdk } | jd
}| jd
}|jj|dd}|j	d dksvt
|jj||gdd}|j	d dkst
d S )Ni  i  rC   rF   rG   yearmonth)namesr?   r    r   z2011 2z2011 2 2)r   r   Zfrom_productZreset_indexrv   ru   Zastyper   r   rk   r   )ZdfZstr_yearZ	str_monthZstr_bothZstr_multipler   r   r   test_cat_on_filtered_index_  s     ry   klassc                 C   sB   t dddg}|j| dddg}t ddd	g}t|| d S )
Nr
   r   r   rJ   yr6   ZaxZbycz)r   r   r   rl   rm   )rz   r2   r   r3   r   r   r   test_cat_different_classest  s    r}   c               	   C   s<   t dddddg} tt | jj| jd W 5 Q R X d S )NZAbCdeZFGHIjZkLLLm)Zothers)r   rl   Zassert_produces_warningFutureWarningr   r   )Zpsr   r   r   test_cat_on_series_dot_str}  s    r   )Znumpyr*   r/   Zpandasr   r   r   r   r   rl   r   Z!pandas.tests.strings.test_stringsr   markZparametrizer   r7   r:   rD   r.   rR   r\   rd   rr   rs   rt   ry   tupler,   r}   r   r   r   r   r   <module>   sB    
) 
f

1
