U
    >vf1                     @   s  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
mZ dd 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d0d1 Zejd+d,d-d.d/gd2d3 Zd4d5 Zd6d7 Zd8d9 Zejd:eeejeegd;d< Zd=d> ZdS )?    N)	DataFrameIndex
MultiIndexSeries_testingconcatc                 C   s(   t | trt| | nt| | d S )N)
isinstancer   tmassert_series_equalZassert_index_equal)leftright r   A/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/strings/test_cat.pyassert_series_or_index_equal   s    
r   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resultr   r   r   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.    


r<   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    )r4   r5   r6   r   r   )r   r   r7   messager   r   r   #test_str_cat_raises_intuitive_errorM   s    r?   r    dtype_targetr2   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   rC   rA   r   r   r7   r9   r8   r   r   r   r   test_str_cat_categoricalX   s$    


"rI   datarH         g?g?g333333?r   ZintegersZfloatsmixed)idsr   c                 C   s   t j| tdS )Nr%   )r/   r1   r2   )xr   r   r   <lambda>       rP   r   r   r3   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   r4   r5   	TypeErrorr   r   )r   rJ   r7   r9   msgr   r   r   test_str_cat_wrong_dtype_raises{   s
    rW   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$   rD   ABCDrH   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   rE   r4   r5   r6   r/   r0   rU   setiterr3   )r   r   r7   r9   r$   r8   r   r:   r;   er]   r   r   r   test_str_cat_mixed_inputs   sl    






ra   rT   r   rR   innerr   c           	      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$   rD   r[   rX   ErY   r`   rT   r    r!   rS   )r   Zalignr   r   r   r   )	r   rT   r   r7   r9   satar8   r   r   r   r   test_str_cat_align_indexed   s    rg   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`   rL   r      rH   rD   r\   aaabbbzc--dddz-ee)howr    rS   rX   rY   rZ   r[   ZaaAZbbBzc-CZddD-e-rb   rR   zothers must be Series,.*r-   rd   r)   r*   r+   r,   )r   r   locrE   rT   r   r   r	   r
   r/   r1   intersectionunionappend
differencer4   r5   rU   r3   r   r6   )rT   r7   r9   r$   Zexpected_outerr8   r   r]   Zrhs_idxr:   r;   r   r   r   test_str_cat_align_mixed_inputs  s8    "rs   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$   rD   rh   r%   )rE   r&   r   rd   )r&   rE   )r   r   r/   r0   r2   rE   r   r   r   r	   r
   )r   Zindex_or_series2r   r   r7   r9   r8   r   r   r   r   test_str_cat_all_na=  s    
rt   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`   rL   r   rh   rH   rD   ri   rj   zc-crk   rm   rR   r    rS   zaa-zd-dr   )r   r   r   r_   r   r	   r
   rn   )r7   r9   r8   r   r   r   r   test_str_cat_special_casesX  s    &ru   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  rH   rK   rL   yearmonth)namesrD   r    r   z2011 2z2011 2 2)r   r   Zfrom_productZreset_indexrw   rv   Zastyper   r   rn   r   )ZdfZstr_yearZ	str_monthZstr_bothZstr_multipler   r   r   test_cat_on_filtered_indexg  s     rz   klassc                 C   sB   t dddg}|j| dddg}t ddd	g}t|| d S )
Nr   r   r   rO   yr;   ZaxZbycz)r   r   r   r	   r
   )r{   r7   r   r8   r   r   r   test_cat_different_classes|  s    r~   c               	   C   sJ   t dddddg} td}tjt|d | jj| jd W 5 Q R X d S )	NZAbCdeZFGHIjZkLLLmzothers must be Series, Index, DataFrame, np.ndarray or list-like (either containing only strings or containing only objects of type Series/Index/np.ndarray[1-dim])r-   )Zothers)r   reescaper4   r5   rU   r   r   )Zpsr>   r   r   r   test_cat_on_series_dot_str  s    r   )r   Znumpyr/   r4   Zpandasr   r   r   r   r   r	   r   r   markZparametrizer   r<   r?   rI   r3   rW   ra   rg   rs   rt   ru   rz   tupler1   r~   r   r   r   r   r   <module>   sD    

) 
f

1
