B
    x\L             '   @   sf  d dl m Z mZ d dlZd dlZd dlmZ d dlmZ d dl	Z	d dl
mZ d dl
mZmZmZ d dlmZmZmZmZmZmZmZ d dlm  mZ d dlm  mZ d dlmZmZ dd	 Z d
dddifd
ee!dfdddfddi fddi fddi fddi fddi fddi fddddifddddifddi fd di fd!di fd"d#i fd$d%i fd&d'i fd(di fd)di fd*d+i fd,di fd-d.ddifd-d.ddifd/d0i fd1d2i fd3di fd4d%i fd5di fd6d.ddifd6d.ddifd7d8i fd9d:i fd;d.ddifd;d.ddifd<di fd=d>d?ifi fd@dAi fdBdi fg%e!e"dCd
dDdEdFdGdHdIdJdKdLdMdNdOdPd-d6dQdRd7d9d;dSdTdUdVgdgd? i gd?  Z#e"e# \Z$Z%Z%dWdX e&ej'D e(e$ Z)e)rt*e	j+e#e$dYdZd[ Z,d\d]ejd^gfesd_nd\ed]ejed^gferd`nd\daejdbgfdcejejejgfdcg fddd]ejdegfgZ-e"e- \Z$Z%e	j+e-e$dYdfdg Z.G dhdi die/Z0dS )j    )datetime	timedeltaN)nan)randint)PY3rangeu)	DataFrameIndex
MultiIndexSeriesconcatisnanotna)assert_index_equalassert_series_equalc             C   s$   t | trt| | n
t| | d S )N)
isinstancer   r   r   )leftright r   8lib/python3.7/site-packages/pandas/tests/test_strings.pyassert_series_or_index_equal   s    
r   catr   sep,Zzyxr   )r   joincenter)
   contains)acountdecode)zUTF-8encodeendswithextract)z([a-z]*)expandFT
extractallfindfindallget)r   index) r   )r   ljustmatch	normalize)NFCpad	partition) repeat)   replace)r   zrfindrindexrjust
rpartitionslice)r      slice_replace)r   r<   r6   split
startswith	translatea   d   wrap)   zfill
capitalizeget_dummiesisalnumisalpha	isdecimalisdigitislower	isnumericisspaceistitleisupperlenlowerlstriprsplitrstripstripswapcasetitleupperc             C   s   h | ]}| d s|qS )_)r?   ).0fr   r   r   	<setcomp>U   s    r]   )Zparamsidsc             C   s   | j S )a  
    Fixture for all public methods of `StringMethods`

    This fixture returns a tuple of the method name and sample arguments
    necessary to call the method.

    Returns
    -------
    method_name : str
        The name of the method in `StringMethods`
    args : tuple
        Sample values for the positional arguments
    kwargs : dict
        Sample values for the keyword arguments

    Examples
    --------
    >>> def test_something(any_string_method):
    ...     s = pd.Series(['a', 'b', np.nan, 'd'])
    ...
    ...     method_name, args, kwargs = any_string_method
    ...     method = getattr(s.str, method_name)
    ...     # will not raise
    ...     method(*args, **kwargs)
    )param)requestr   r   r   any_string_methodZ   s    ra   stringr   cunicodebytes   a   cemptyzmixed-integerrD   c             C   s    | j \}}tj|td}||fS )a  
    Fixture for all (inferred) dtypes allowed in StringMethods.__init__

    The covered (inferred) types are:
    * 'string'
    * 'unicode' (if PY2)
    * 'empty'
    * 'bytes' (if PY3)
    * 'mixed'
    * 'mixed-integer'

    Returns
    -------
    inferred_dtype : str
        The string for the inferred dtype from _libs.lib.infer_dtype
    values : np.ndarray
        An array of object dtype that will be inferred to have
        `inferred_dtype`

    Examples
    --------
    >>> import pandas._libs.lib as lib
    >>>
    >>> def test_something(any_allowed_skipna_inferred_dtype):
    ...     inferred_dtype, values = any_allowed_skipna_inferred_dtype
    ...     # will pass
    ...     assert lib.infer_dtype(values, skipna=True) == inferred_dtype
    )dtype)r_   nparrayobject)r`   inferred_dtypevaluesr   r   r   !any_allowed_skipna_inferred_dtype   s    
ro   c               @   sN  e Zd Zdd Zejdedgejdee	gdd Z
ejdedgejdee	gdd	 Zd
d Zdd Zdd Zdd Zdd Zejdee	gejddee	gdd Zejdee	gdd Zejdee	gdd Zejdddgejdddgejd ddgejdee	gd!d" Zejdee	gd#d$ Zejd%d&d'd(d)gejdee	gd*d+ Zejd%d&d'd(d)gd,d- Zejdee	gejdee	g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"dDdE Z#dFdG Z$dHdI Z%dJdK Z&dLdM Z'dNdO Z(dPdQ Z)dRdS Z*dTdU Z+dVdW Z,dXdY Z-dZd[ Z.d\d] Z/d^d_ Z0d`da Z1dbdc Z2ddde Z3dfdg Z4ejdhg difg djfg dkfg dlfdmdndogdifdmdndogdlfdmdndogdkfdmdndogdlfgdpdq Z5drds Z6dtdu Z7dvdw Z8dxdy Z9dzd{ Z:d|d} Z;d~d Z<dd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHejddddddgdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZddÄ Z[ddń Z\ddǄ Z]ddɄ Z^dd˄ Z_dd̈́ Z`ddτ Zaddф Zbddӄ ZcddՄ Zdddׄ Zeddل Zfddۄ Zgdd݄ Zhdd߄ Ziejdejekeljmgdd Zndd Zodd Zpdd Zqdd Zrdd Zsdd Ztdd Zudd Zvdd Zwdd Zxdd Zydd ZzdS )TestStringMethodsc             C   s,   t jtjksttt dgjtjs(td S )Nr+   )r   strstringsStringMethodsAssertionErrorr   )selfr   r   r   test_api   s    zTestStringMethods.test_apiri   categoryboxc          	   C   s  |\}}|||d}|dkr0|dkr0t jdd |tkrL|dkrLt jdd |tkrp|tkrp|dkrpt jd	d |tkr|tkr|d
ks|dkr|dkrt jdd ddddddg}||krt|jtjst	n.t j
tdd |j W d Q R X t|drt	d S )N)ri   rw   )ZperiodZintervalzConversion to numpy array fails because the ._values-attribute is not a numpy array for PeriodArray/IntervalArray; see GH 23553)reason)rh   re   z-Raising too restrictively; solved by GH 23167)booleandatetimez9Inferring incorrectly because of NaNs; solved by GH 23167)rb   rd   rh   re   mixedzmixed-integer)Zdecimalrz   r|   z)Not raising correctly; solved by GH 23167rb   rd   rh   re   r}   zmixed-integerz/Can only use .str accessor with string values.*)r-   rq   )pytestxfailr
   rl   r   r   rq   rr   rs   rt   raisesAttributeErrorhasattr)ru   rx   ri   Zany_skipna_inferred_dtyperm   rn   tZtypes_passing_constructorr   r   r   test_api_per_dtype   s*    
z$TestStringMethods.test_api_per_dtypec          	   C   s  |\}}|\}}}	|dkr.|dkr.t jdd |dkrJ|dkrJt jdd |tkrf|dkrft jd	d |tkr|tkr|d
krt jdd |||d}
t|
j|}|dk}|dk}dddgdg|  ddg|  }||kr|||	 n2dj||d}t jt|d |||	 W d Q R X d S )N)r"   r!   rQ   re   zdNot raising for "bytes", see GH 23011;Also: malformed method names, see GH 23551; solved by GH 23167)ry   r   )r}   zmixed-integerz:Bad error message; should raise better; solved by GH 23167)rh   re   z-Raising too restrictively; solved by GH 23167)rz   r{   r|   z9Inferring incorrectly because of NaNs; solved by GH 23167)ri   )r   rb   rd   rh   r}   zmixed-integerzHCannot use .str.{name} with values of inferred dtype {inferred_dtype!r}.)namerm   )r-   )	r~   r   r
   rl   getattrrq   formatr   	TypeError)ru   rx   ri   ro   ra   rm   rn   method_nameargskwargsr   methodZbytes_allowedZmixed_allowedZallowed_typesmsgr   r   r   test_api_per_method   s2    

 z%TestStringMethods.test_api_per_methodc       	      C   s   t td}|d | }|d}t|jtjs4t|\}}}t|j|||}t|j|||}t|t	rzt
|| n$t|t rt
|| n||kstd S )NZaabbr2   rw   )r   listastyper   rq   rr   rs   rt   r   r	   tmassert_frame_equalr   )	ru   ra   src   r   r   r   resultexpectedr   r   r   test_api_for_categorical  s    



z*TestStringMethods.test_api_for_categoricalc             C   sz   d}t |}xR|jD ]H}t|t s&tt|j|j x$|D ]}t|tjs<t	|s<tq<W qW |
 j dksvtd S )N)googleZ	wikimediaZ	wikipediaZ
wikitravell)r   rq   r   rt   r   r   r*   compatZstring_typesr   Zdropnarn   item)ru   Zstrsdsr   Zelr   r   r   	test_iter%  s    
 zTestStringMethods.test_iterc             C   sH   t g td}d\}}xt|jD ]\}}q W |dks8t|dksDtd S )N)ri   )rB   r<   rB   r<   )r   rl   	enumeraterq   rt   )ru   r   ir   r   r   r   test_iter_empty;  s    z!TestStringMethods.test_iter_emptyc             C   s8   t dg}xt|jD ]\}}qW |r*tt|| d S )Nr   )r   r   rq   rt   r   )ru   r   r   r   r   r   r   test_iter_single_elementH  s
    
z*TestStringMethods.test_iter_single_elementc             C   sR   t dd tdD }d\}}xt|jD ]\}}q*W |dksBt|dksNtd S )Nc             S   s"   g | ]}t d tdtddqS )Nr      )r;   r   )r[   rZ   r   r   r   
<listcomp>R  s    zATestStringMethods.test_iter_object_try_string.<locals>.<listcomp>   )rB   hrB   r   )r   r   r   rq   rt   )ru   r   r   r   r   r   r   test_iter_object_try_stringQ  s    
z-TestStringMethods.test_iter_object_try_stringotherNc             C   sF   ddg}|r||}n|}||ddj j|ddd}|jdksBtd S )Nr   br   )r   r   r   )r   r   )rq   r   r   rt   )ru   rx   r   rn   r   r   r   r   test_str_cat_name]  s    
z#TestStringMethods.test_str_cat_namec          	   C   sf  |dddddt jg}|j }d}||ks0t|jjdd}d}||ksNt|jjdd	d
}d}||ksnt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| W d Q R X t
jt|d |j|j W d Q R X t
jt|d |jt| W d Q R X d S )Nr   r   rc   Zaabbc-)na_repzaabbc-rZ   NA)r   r   Za_a_b_b_c_NAdfoo)ri   aaza-bbZbdZcfooz--z>All arrays must be same length, except those having an index.*123)r-   )rj   r   rq   r   rt   rk   rl   r   r   r   r~   r   
ValueErrorrn   )ru   rx   r   r   r   r   rgxr6   r   r   r   test_str_cati  s0    


zTestStringMethods.test_str_catc          	   C   sd   |ddddg}d}t jt|d |jd W d Q R X t jt|d |jd W d Q R X d S )	Nr   r   rc   r   z'Did you mean to supply a `sep` keyword?)r-   |z    )r~   r   r   rq   r   )ru   rx   r   messager   r   r   #test_str_cat_raises_intuitive_error  s    z5TestStringMethods.test_str_cat_raises_intuitive_errorr   r+   dtype_targetrl   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}tjtd
  |jj||d}t|| W d Q R X t||d}|jj||d}t|| |jj|j|d}t|| t|j|d}tjtd
  |jj||d}t|| W d Q R X d S )Nr   r   )ri   )r*   rc   abr   r   Zac)expected_warning)r   )	r
   r   r   assert_produces_warningFutureWarningrq   r   r   rn   )	ru   rx   r   r   r   r   r   r   r   r   r   r   test_str_cat_categorical  s"    

z*TestStringMethods.test_str_cat_categoricalc          	   C   sD  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rr|nt|j|jd}|j|}t|| |j|j}t|| |j||g}t|| |j||jg}t|| tjt	d& |j|jt
|g}t|| W d Q R X ddddg|_tjt	d  |j||g}t|| W d Q R X tjt	d" |j||jg}t|| W d Q R X ddddg|_tjt	d |j|}t|| W d Q R X tjt	d* |jt|jt
|g}t|| W d Q R X d}tdddg}t||gd
d}	tjt|d |j|	 W d Q R X tjt|d |j|	j W d Q R X tjt|d |j||g W d Q R X tjt|d |j|j|jg W d Q R X tjt|d |j|j|g W d Q R X d}tdtjdd g}
tjt|d |j|
dg W d Q R X tjt|d |j|
|g W d Q R X tjt|d |j|
|jg W d Q R X tjt|d |j|
|
|gg W d Q R X tjt|d |jt|
 W d Q R X tjt|d |j|
t|
g W d Q R X tjt|d |jd
 W d Q R X d S )Nr   r   rc   r   )r*   ABCDr<   )axisZaAaZbBbZcCcZdDd)r   z>All arrays must be same length, except those having an index.*r   r   r   )r-   z*others must be Series, Index, DataFrame,.*r   )r
   r   rn   r   rq   r   r   r   r   r   r   r*   iterr~   r   r   rj   r   r   set)ru   rx   r   r   r   r   r   r   r6   er   r   r   r   test_str_cat_mixed_inputs  sz    




z+TestStringMethods.test_str_cat_mixed_inputsr   r   outer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rzt|}t|}t|}|jj||dd}t|| d S )Nr   r   rc   r   )r*   r   r   Er   r   )r   r   )r   )r   r   )r   Zalignrq   r   r
   r   )	ru   rx   r   r   r   ZsaZtar   r   r   r   r   test_str_cat_align_indexed8  s    z,TestStringMethods.test_str_cat_align_indexedc          	   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
|j|jB }	|j|jj|	|d }|jj||g|dd}t|| tjtd, |jj|t|g|dd}t|| W d Q R X d}
t d d!d"gj}tjt|
d# |jj||d$ W d Q R X tjt|
d# |jj||g|d$ W d Q R X d S )%Nr   r   rc   r   r   r4   r   r   r<   )r*   )r   aaabbbzc--dddz-ee)Zhowr   )r   r   r   r   r   r   ZaaAZbbBzc-CZddDz-e-r   )r   z<If `others` contains arrays or lists \(or other list-likes.*r   r   r   )r-   )r   )r   r   locr*   r   rq   r   r   r   rj   rk   r   r   r   rn   r~   r   r   )ru   r   r   r   r   Zexpected_outerr   r   r   Zrhs_idxr   r6   r   r   r   test_str_cat_align_mixed_inputsJ  s0     z1TestStringMethods.test_str_cat_align_mixed_inputsc             C   s   t ddddg}|t kr|n
t||d}|tjgd td}|t krH|n
t||d}|tkrvt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   rc   r   )r*   r   )ri   )r*   ri   r   )r   )ri   r*   )r
   r   rj   r   rl   r*   rq   r   r   r   r   )ru   rx   r   r   r   r   r   r   r   r   test_str_cat_all_nav  s    
z%TestStringMethods.test_str_cat_all_nac             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   rc   r   r   r4   r   r   r<   )r*   r   r   zc-cr   z-e-r   r   )r   r   zaa-zd-dr   )r   rq   r   r   rn   r   r   r   )ru   r   r   r   r   r   r   r   test_str_cat_special_cases  s    &z,TestStringMethods.test_str_cat_special_casesc             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  r<   rD   r4   yearmonth)names)r*   rq   r2   )r   z2011 2z2011 2 2)r	   r   Zfrom_productZreset_indexr   r   r   rq   r   r   rt   )ru   ZdfZstr_yearZ	str_monthZstr_bothZstr_multipler   r   r   test_cat_on_filtered_index  s     z,TestStringMethods.test_cat_on_filtered_indexc             C   s  t jddtdgt jd}t|d}t ddtdg}t|| t|j	
d}tddtdg}t|tsptt|| d	td
dt dd ddg	}t|d	}t dtdttdtttg	}t|| t|j	
d	}tdtdttdtttg	}t|tstt|| tdtdttdg}t|d}t ddtdg}t|| t|j	
d}tddtdg}t|tstt|| d S )Nr   ZfoofooZfoooofooofommmfoo)ri   zf[o]+r<   rD   r   r   r   Tg       @r   )rj   rk   r   object_rr   Z	str_countr   assert_numpy_array_equalr   rq   r    r   rt   r   r   todayr   )ru   rn   r   expr}   rsxpr   r   r   
test_count  s2    
zTestStringMethods.test_countc          
   C   s  t jdtdddgt jd}d}t||}t jdtdddgt jd}t|| tj||dd	}t jdtdddgt jd}t|| dd
ddg}t||}t ddddg}|jt j	kst
t|| ddddg}tj|ddd}t ddddg}t|| tj|dddd}t ddddg}t|| dtddt dd ddg	}t|d}t jdtdttdtttg	t jd}t|| t|jd}tdtdttdtttg	}t|tst
t|| t jdtddgt jd}d}t||}t jdt jddgt jd}t|| tj||dd}t ddddg}t|| t jdd
ddgt jd}t||}t ddddg}|jt j	kst
t|| d S )Nr   Zfooommm__fooZmmm_zfoommm[_]+bar)ri   zmmm[_]+FT)regexZxyzFooZxYzZfOOomMm__fOoZMMM_zFOO|mmm)case)r   r   r   r   r<   g       @o)na)rj   rk   r   r   rr   Zstr_containsr   r   ri   bool_rt   r   r   r   rq   r   r   r   r   )ru   rn   patr   r   r}   r   r   r   r   r   test_contains  sZ    



zTestStringMethods.test_containsc             C   s   t ddddtjgdd}|jjddd}t dddddg}t|| |jjddd}t dddddg}t|| t ddddtjg}|jjddd}t dddddg}t|| |jjddd}t dddddg}t|| d S )	Nr   r   rc   rw   )ri   T)r   F)r   rj   r   rq   r   r   r   )ru   rn   r   r   r   r   r   !test_contains_for_object_category  s    z3TestStringMethods.test_contains_for_object_categoryc          
   C   sl  t dtdddtdg}|jd}t dtdddtdg}t|| tjdtd	dt	 dd d
dg	tj
d}t|d}tjdtdttdtttg	tj
d}t|| t |jd}t|t stt dtdttdtttg	}t|| t tdttdtdtdttdg}|jd}t dtdddtdg}t|| |jjddd}t||dt d S )Nomfoo_nomnombar_foor   FTr   r   r<   g       @)ri   r\   )r   )r   r   rq   r?   r   r   rj   rk   r   r   r   rr   Zstr_startswithr   r   rt   r   fillnar   bool)ru   rn   r   r   r}   r   r   r   r   r   test_startswith(  s*    
z!TestStringMethods.test_startswithc          
   C   s`  t dtdddtdg}|jd}t dtdddtdg}t|| dtd	dt dd d
dg	}t	|d}t
jdtdttdtttg	t
jd}t|| t |jd}t dtdttdtttg	}t|t stt|| t tdttdtdtdttdg}|jd}t dtdddtdg}t|| |jjddd}t||dt d S )Nr   r   r   r   r   FTr   r   r<   g       @r\   )ri   )r   )r   r   rq   r#   r   r   r   r   rr   Zstr_endswithrj   rk   r   r   r   rt   r   r   r   r   )ru   rn   r   r   r}   r   r   r   r   r   test_endswithG  s(    
zTestStringMethods.test_endswithc          
   C   s   t ddtddg}|j }t ddtddg}t|| t dtdd	t d
d ddg	}|j }t dtdttdtttg	}t|| t t	dtt	dt	dg}|j }t t	dtt	dt	dg}t|| d S )NFOOBARBlahblurgr   BarBlurgbarTblahr<   g       @)
r   r   rq   rX   r   r   r   r   assert_almost_equalr   )ru   rn   r   r   r}   resultsr   r   r   
test_titlee  s    



zTestStringMethods.test_titlec          
   C   s  t dtddg}|j }t dtddg}t|| |j }t|| t dtddt dd d	d
g	}|j }t |j }t dtdttdtttg	}t	|t st
t|| t tdttdtdg}|j }t tdttdtdg}t|| |j }t|| d S )Nr   r   ZOMZNOMr   r   Tr   r<   g       @)r   r   rq   rY   r   r   rR   r   r   r   rt   r   )ru   rn   r   r   r}   r   r   r   r   r   test_lower_upper{  s&    




z"TestStringMethods.test_lower_upperc          
   C   s   t ddtddg}|j }t ddtddg}t|| t dtdd	t d
d ddg	}|j }t dtdttdtttg	}t|| t t	dtt	dt	dg}|j }t t	dtt	dt	dg}t|| d S )Nr   r   r   r   r   r   r   r   Tr   r<   g       @)
r   r   rq   rF   r   r   r   r   r   r   )ru   rn   r   r   r}   r   r   r   r   test_capitalize  s    



z!TestStringMethods.test_capitalizec          
   C   s   t ddtddg}|j }t ddtddg}t|| t dtdd	t dd d
dg	}|j }t dtdttdtttg	}t|| t t	dtt	dt	dg}|j }t t	dtt	dt	dg}t|| d S )Nr   r   r   r   r   r   ZbLAHZBLURGTr<   g       @r   ZbLURG)
r   r   rq   rW   r   r   r   r   r   r   )ru   rn   r   r   r}   r   r   r   r   test_swapcase  s    



zTestStringMethods.test_swapcasec             C   s   dddddg}t |}|j  dd |D ks6t|j  dd |D ksVt|j  d	d |D ksvt|j  d
d |D kst|j  dd |D kstd S )Nr   r   ZCCCZDdddZeEEEc             S   s   g | ]}|  qS r   )rR   )r[   vr   r   r   r     s    z6TestStringMethods.test_casemethods.<locals>.<listcomp>c             S   s   g | ]}|  qS r   )rY   )r[   r   r   r   r   r     s    c             S   s   g | ]}|  qS r   )rX   )r[   r   r   r   r   r     s    c             S   s   g | ]}|  qS r   )rF   )r[   r   r   r   r   r     s    c             S   s   g | ]}|  qS r   )rW   )r[   r   r   r   r   r     s    )	r   rq   rR   tolistrt   rY   rX   rF   rW   )ru   rn   r   r   r   r   test_casemethods  s        z"TestStringMethods.test_casemethodsc       
   
   C   s  t dtg}|jdd}t dtg}t|| |jjdddd}t dtg}t|| t dtd	d
t dd ddg	}t |jdd}t dtdttdtttg	}t|t st	t
|| t tdtg}|jdd}t tdtg}t|| |jjdddd}t tdtg}t|| t ddg}t ddg}|jjddtjd}t|| xjt tfD ]^}xVd dddifD ]D}x<ddd gddddgfD ]"}	||	}tt|jjd| qW qW qrW d S )NfooBAD__barBADzBAD[_]*r+   foobarr<   )n	foobarBADaBADbBADTfooBADg       @r   r   r   s   abcd,àzutf-8s   abcd, àz(?<=\w),(?=\w)z, )flagsr4   rc   ad)r   r   rq   r5   r   r   r   r   r   rt   r   r   r!   reUNICODEr
   r~   r   r   )
ru   rn   r   r   r}   r   r   klassrepldatar   r   r   test_replace  s:    zTestStringMethods.test_replacec          	   C   s"  t dtg}dd }|jjd|dd}t dtg}t|| tjrJd}nd	}d
d }tj	t
|d |jd| W d Q R X dd }tj	t
|d |jd| W d Q R X ddd}tj	t
|d |jd| W d Q R X t dtg}d}dd }|j||}t dtg}t|| d S )Nr  c             S   s   |  d S )Nr   )grouprW   )mr   r   r   <lambda>  s    z9TestStringMethods.test_replace_callable.<locals>.<lambda>z[a-z][A-Z]{2}rD   )r  foObaD__baRbaDz4takes (no|(exactly|at (least|most)) ?\d+) arguments?zO((takes)|(missing)) (?(2)from \d+ to )?\d+ (?(3)required )positional arguments?c               S   s   d S )Nr   r   r   r   r   r    s    )r-   r   c             S   s   d S )Nr   )r  xr   r   r   r    s    c             S   s   d S )Nr   )r  r  yr   r   r   r    s    zFoo Bar Bazz,(?P<first>\w+) (?P<middle>\w+) (?P<last>\w+)c             S   s   |  d S )NZmiddle)r  rW   )r  r   r   r   r    s    ZbAR)N)r   r   rq   r5   r   r   r   ZPY2r~   r   r   )ru   rn   r  r   r   Zp_errr   r   r   r   test_replace_callable  s.    
z'TestStringMethods.test_replace_callablec       	   
   C   s:  t dtg}td}|j|d}t dtg}t|| t dtddt	 dd d	d
g	}t |j|d}t dtdttdtttg	}t
|t stt|| t tdtg}|j|d}t tdtg}t|| |jj|dd	d}t tdtg}t|| t ddg}t ddg}tjdtjd}|j|d}t|| t dtg}td}tjtdd |jj|dtjd}W d Q R X tjtdd |jj|ddd}W d Q R X tjtdd |jj|ddd}W d Q R X t dtg}dd }td}|jj||dd}t dtg}t|| d S ) Nr  zBAD[_]*r+   r  r  r  Tr  r<   g       @r   r   r   )r  r  s   abcd,àzutf-8s   abcd, àz(?<=\w),(?=\w))r  z, ZfooBAD__barBAD__badzcase and flags cannot be)r-   F)r   c             S   s   |  d S )Nr   )r  rW   )r  r   r   r   r  P  s    z?TestStringMethods.test_replace_compiled_regex.<locals>.<lambda>z[a-z][A-Z]{2}rD   r  )r   r   r
  compilerq   r5   r   r   r   r   r   rt   r   r   r!   r  r~   r   r   
IGNORECASE)	ru   rn   r   r   r   r}   r   r   r  r   r   r   test_replace_compiled_regex  sP    





z-TestStringMethods.test_replace_compiled_regexc             C   s   t ddtg}t ddtg}|jdd}t|| t ddtg}|jjdddd}t|| dd	 }td
}tj	t
|jjd|dd tj	t
|jj|ddd d S )Nzf.or   Zbaozf.baF)r   c             S   s   |  d S )Nr   )r  rW   )r  r   r   r   r  c  s    z8TestStringMethods.test_replace_literal.<locals>.<lambda>z[a-z][A-Z]{2}abcr+   )r   r   rq   r5   r   r   r
  r  r~   r   r   )ru   rn   r   r   Zcallable_replZcompiled_patr   r   r   test_replace_literalV  s    
z&TestStringMethods.test_replace_literalc          
   C   s  t ddtdtdg}|jd}t ddtdtd	g}t|| |jd
dddddg}t ddtdtdg}t|| t dtddt dd d
dg	}t |jd}t dtdttdtttg	}t|t st	t|| t t
dt
dtt
dtt
dg}|jd}t t
dt
dtt
dtt
d	g}t|| |jd
dddddg}t t
dt
dtt
dtt
dg}t|| d S )Nr   r   rc   r   r4   r   r   Zcccr   r<   rD   r         r   ccccZddddddTr   g       @Z	foofoofoo)r   r   rq   r3   r   r   r   r   r   rt   r   )ru   rn   r   r   r}   r   r   r   r   r   test_repeatk  s(    $$$zTestStringMethods.test_repeatc          
   C   sr  t dtdg}|jd}t dtdg}t|| t dtdg}|jd}t dtdg}t|| t dtddt dd d	d
g	}t |jd}t dtdttdtttg	}t|t st	t|| t t
dtt
dg}|jd}t dtdg}t|| t ddtjgjjddd}t dddg}t|| t ddtjgjd}t dtjtjg}t|| d S )Nr  r   z.*(BAD[_]+).*(BAD)TFz.*BAD[_]+.*BADaBAD_BAD	BAD_b_BADr<   g       @r   r   )r   )r   r   rq   r-   r   r   r   r   r   rt   r   rj   r   )ru   rn   r   r   r}   r   r   resr   r   r   
test_match  s0    
zTestStringMethods.test_matchc          	   C   s<   t dtdg}tjtdd |jjdd d W d Q R X d S )Nr  r   zexpand must be True or False)r-   z.*(BAD[_]+).*(BAD))r%   )r   r   r~   r   r   rq   r$   )ru   rn   r   r   r   test_extract_expand_None  s    
z*TestStringMethods.test_extract_expand_Nonec             C   sH   t dtdg}|jd}t|ts(t|jjddd}t|| d S )Nr  r   z.*(BAD[_]+).*T)r%   )	r   r   rq   r$   r   r	   rt   r   r   )ru   rn   Zresult_unspecifiedZresult_truer   r   r   test_extract_expand_unspecified  s
    z1TestStringMethods.test_extract_expand_unspecifiedc          
      s  t dtdg}ttg}|jjddd}tddg||g}t|| t dtd	d
t dd ddg	}t |jjddd}tddg|ddg||||||g	}t|| t t	dtt	dg}|jjddd}tt	dt	dg||g}t|| t
dddddg}tjtdd |jjddd W d Q R X xt t
gD ]}|dddg  fdd}	tt|	  fdd}	tt|	 |ddg  jjddd}|jdkst|ddgdd}|t krt|| nt|| q6W t dddg}
|
jjddd}t tttgtd }t|| |
jjd!dd}tttgttgttggtd }t|| |
jjd"dd}t dd#tg}t|| |
jjddd}tdd$gd#d%gttgg}t|| |
jjd&dd}t dd#tgd'd}t|| |
jjd(dd}tdd$gd#d%gttggd'd)gd*}t|| |
jjd+dd}tdd$gd#d%gttggd,d)gd*}t|| |
jjd-dd}t dd#tg}t|| t d.d/d0gjjd1dd}tdd$gd#d%gttgg}t|| t ddd2gjjd3dd}tdd$gd#d%gtd2ggd'd)gd*}t|| t ddd4gjjd5dd}tdd$gd#d%gd4tggd'd)gd*}t|| d6d7 }tjtjtjtjtjtjg}x|D ]}||  qW t d8d9d:gd;d}
|
jjd<dd}t d=d>d?gd@d}t|| |j|jkstd S )ANr  r   z.*(BAD[_]+).*(BAD)F)r%   BAD__BADr!  r"  Tr<   g       @BAD_A1A2A3ZA4ZB5Z	supported)r-   z([AB])([123])B2C3c                  s    j jdddS )Nz
[ABC][123]F)r%   )rq   r$   r   )s_or_idxr   r   r    s    z=TestStringMethods.test_extract_expand_False.<locals>.<lambda>c                  s    j jdddS )Nz
(?:[AB]).*F)r%   )rq   r$   r   )r/  r   r   r    s    z(?P<uno>A)\dunor   )r   z(_))ri   z(_)(_)z([AB])[123]r   r   r   z(?P<letter>[AB])letterz!(?P<letter>[AB])(?P<number>[123])number)columnsz([AB])(?P<number>[123])r   z([AB])(?:[123])A11B22C33z([AB])([123])(?:[123])r   z"(?P<letter>[AB])?(?P<number>[123])r   z#(?P<letter>[ABC])(?P<number>[123])?c             S   s   dddg}| d t | } t|| d}|jjddd}tdd	tg| d}t|| t|| djjd
dd}ddgdd	gdtgg}t|ddg| d}t|| d S )Nr*  r-  r   )r*   z(\d)F)r%   r   r   z(?P<letter>\D)(?P<number>\d)?r   r   r1  r2  )r3  r*   )	rQ   r   rq   r$   r   r   r   r	   r   )r*   r  r   r   r   e_listr   r   r   check_index1  s    


z@TestStringMethods.test_extract_expand_False.<locals>.check_indexa3b3c2Zbobz(?P<sue>[a-z])r   r   rc   Zsue)r   r   rq   r$   r	   r   r   r   r   r   r
   r~   r   r   r   rt   r   r   rl   makeStringIndexmakeUnicodeIndexmakeIntIndexmakeDateIndexmakePeriodIndexmakeRangeIndex)ru   rn   err   r   r}   r   idxr  r\   r   r8  i_funsr*   rr   r   )r/  r   test_extract_expand_False  s    





z+TestStringMethods.test_extract_expand_Falsec          
      s  t dtdg}ttg}|jjddd}tddg||g}t|| t dtd	dt dd d
dg	}t |jjddd}tddg|ddg||||||g	}t|| t t	dtt	dg}|jjddd}tt	dt	dg||g}t|| xt t
gD ]}|dddg  fdd}tt|  fdd}tt| |ddg  jjddd}	t|	tsht|	d }
t|
t ddgdd qW d S )Nr  r   z.*(BAD[_]+).*(BAD)T)r%   r'  r(  r!  r"  r<   g       @r)  r*  r-  r.  c                  s    j jdddS )Nz
[ABC][123]T)r%   )rq   r$   r   )r/  r   r   r  n  s    z<TestStringMethods.test_extract_expand_True.<locals>.<lambda>c                  s    j jdddS )Nz
(?:[AB]).*T)r%   )rq   r$   r   )r/  r   r   r  r  s    r+  z(?P<uno>A)\dr0  r   )r   )r   r   rq   r$   r	   r   r   r   r   r   r
   r~   r   r   r   rt   r   )ru   rn   rB  r   r   r}   r   r  r\   Z	result_dfZresult_seriesr   )r/  r   test_extract_expand_TrueQ  s4    z*TestStringMethods.test_extract_expand_Truec             C   s  xdD ]}t dddg|d}|jjddd}ttttgtd	}t|| |jjd
dd}tttgttgttggtd	}t|| |jjddd}tddtg}t|| |jjddd}tddgddgttgg}t|| |jjddd}tdddtgi}t|| |jjddd}ddgddgttgg}t|ddgd}t|| |jjddd}t|ddgd}t|| |jjddd}tddtg}t|| qW d S )N)Nseries_namer*  r-  r.  )r   z(_)T)r%   )ri   z(_)(_)z([AB])[123]r   r   z([AB])([123])r   r   z(?P<letter>[AB])r1  z!(?P<letter>[AB])(?P<number>[123])r2  )r3  z([AB])(?P<number>[123])r   z([AB])(?:[123]))r   rq   r$   r	   r   rl   r   r   )ru   rH  r   r   r   r7  r   r   r   test_extract_series|  s>    
z%TestStringMethods.test_extract_seriesc             C   s  t dddgjjddd}tddgd	d
gttgg}t|| t dddgjjddd}ddgd	d
gtdgg}t|ddgd}t|| t dddgjjddd}ddgd	d
gdtgg}t|ddgd}t|| dd }tjtjtj	tj
tjtjg}x|D ]}||  qW d S )Nr4  r5  r6  z([AB])([123])(?:[123])T)r%   r   r   r   r   r*  r-  r   z"(?P<letter>[AB])?(?P<number>[123])r1  r2  )r3  r   z#(?P<letter>[ABC])(?P<number>[123])?c             S   s   dddg}| d t | } t|| djjddd}tdd	tg| d}t|| t|| djjd
dd}ddgdd	gdtgg}t|ddg| d}t|| d S )Nr*  r-  r   )r*   z(\d)T)r%   r   r   z(?P<letter>\D)(?P<number>\d)?r   r   r1  r2  )r3  r*   )rQ   r   rq   r$   r	   r   r   r   )r*   r  r   r   r7  r   r   r   r8    s    



zCTestStringMethods.test_extract_optional_groups.<locals>.check_index)r   rq   r$   r	   r   r   r   r<  r=  r>  r?  r@  rA  )ru   r   r   r7  r8  rD  r*   r   r   r   test_extract_optional_groups  s.    





z.TestStringMethods.test_extract_optional_groupsc             C   sD   t dddgdd}|jjddd}td	d
ddgi}t|| d S )Nr9  r:  r;  rH  )r   z(?P<letter>[a-z])T)r%   r1  r   r   rc   )r   rq   r$   r	   r   r   )ru   r   rE  r   r   r   r   'test_extract_single_group_returns_frame  s    z9TestStringMethods.test_extract_single_group_returns_framec          	   C   s  dddddt jdg}ddd	d
ddddg}d}dddg}t|}tjddddddddgdd}t|||}|j|tj	}t
|| tdddd d!d"d#g}	t||	}
tjd$d%d&d'd(d)d*d+gd,d}t|||}|
j|tj	}t
|| t||	}d-|j_d.|_t|||}|j|tj	}t
|| dd/d0g}d1}t|j|}tjddd2gdd}td3td4ftd5fg|d6d7gd8}t
|| d9}t|j|}td3td4ftd5fg|d:d7gd8}t
|| d S );Nzdave@google.comztdhock5@gmail.comzmaudelaperriere@gmail.comz'rob@gmail.com some text steve@gmail.comz%a@b.com some text c@d.com and e@f.comr+   )daver   com)Ztdhock5gmailrM  )ZmaudelaperriererN  rM  )ZrobrN  rM  )ZsteverN  rM  )r   r   rM  )rc   r   rM  )r   r\   rM  zq
        (?P<user>[a-z0-9]+)
        @
        (?P<domain>[a-z]+)
        \.
        (?P<tld>[a-z]{2,4})
        userZdomainZtld)r   r   )r<   r   )rD   r   )r4   r   )r4   r<   )r   r   )r   r<   )r   rD   )Nr-   )r   )singleDave)rP  Toby)rP  Maude)multiplerobAndSteve)rT  abcdef)noneZmissing)rW  rh   )rP  rQ  r   )rP  rR  r   )rP  rS  r   )rT  rU  r   )rT  rU  r<   )rT  rV  r   )rT  rV  r<   )rT  rV  rD   )NNr-   )matchesdescription)rX  rY  r-   r*  Z32z"(?P<letter>[AB])?(?P<number>[123]))rD   r<   )r   r   r   r   r1  r2  )r3  z([AB])?(?P<number>[123])r   )rj   r   r   r   from_tuplesr	   rq   r&   r
  VERBOSEr   r   r*   r   r   )ru   Zsubject_listZexpected_tuplesZnamed_patternZexpected_columnsSZexpected_indexZexpected_dfZcomputed_dfZseries_indexZSiZSnpatternr   r   r   test_extractall  s    







z!TestStringMethods.test_extractallc             C   s   t dddgdd}|jd}tjddd	d
gdd}tdddddgi|}t|| |jd}tddddg|}t|| d S )Nr9  r:  d4c2rH  )r   z(?P<letter>[a-z]))r   r   )r<   r   )rD   r   )rD   r<   )Nr-   )r   r1  r   r   r   rc   z([a-z]))r   rq   r&   r   rZ  r	   r   r   )ru   r   rE  r   r   r   r   r   test_extractall_single_group[  s    z.TestStringMethods.test_extractall_single_groupc             C   sV   t dddgdd}|jd}tjddd	d
gdd}tddddg|}t|| d S )NZab3Zabc3Zd4cd2rH  )r   z([a-z]+))r   r   )r<   r   )rD   r   )rD   r<   )Nr-   )r   r   r  r   Zcd)r   rq   r&   r   rZ  r	   r   r   )ru   r   rE  r   r   r   r   r   ,test_extractall_single_group_with_quantifiero  s    z>TestStringMethods.test_extractall_single_group_with_quantifierzdata, names)N)i1)Ni2)rb  rc  r9  r:  r_  c       	         s8  t | t |dkr*tt |d d}n$ fddt D }tj||d}t|d|dd	}tjg |d
 d}|jd}tdg|d}t	
|| |jd}tddg|d}t	
|| |jd}tdg|d}t	
|| |jd}tddg|d}t	
|| |jd}tddg|d}t	
|| d S )Nr<   r   )r   c             3   s    | ]}t |g d   V  qdS )r<   N)tuple)r[   r   )r  r   r   	<genexpr>  s    z?TestStringMethods.test_extractall_no_matches.<locals>.<genexpr>)r   rH  rl   )r   r*   ri   )r-   z(z))r3  r*   z(z)(z)z(?P<first>z)firstz(?P<first>z)(?P<second>z)secondz(z)(?P<second>z))rQ   r
   r   r   rZ  r   rq   r&   r	   r   r   )	ru   r  r   r   r   r   ZeirE  r   r   )r  r   test_extractall_no_matches}  s,    z,TestStringMethods.test_extractall_no_matchesc             C   s  t dddgdd}|jd}tjddd	gd d
gd}tddddgi|d}t|| x@tdddgtdddgddgD ]}|jd}t|| qzW t dddgdtdddgddd}|jd}tjdddgdd
gd}tddddgi|d}t|| d S )NZa1a2Zb1Zc1xxx)r   z[ab](?P<digit>\d))r   r   )r   r<   )r<   r   r-   )r   digitr   r   )r*   Zs_nameXXyyZzzZidx_name)r   r*   )rk  r   )rk  r<   )rl  r   )	r   rq   r&   r   rZ  r	   r   r   r
   )ru   r   r#  Zexp_idxr   rC  r   r   r   test_extractall_stringindex  s"    z-TestStringMethods.test_extractall_stringindexc          	   C   s<   t dddgdd}tjtdd |jd W d Q R X d S )	Nr9  r:  r_  rH  )r   zno capture groups)r-   z[a-z])r   r~   r   r   rq   r&   )ru   r   r   r   r   test_extractall_errors  s    z(TestStringMethods.test_extractall_errorsc             C   s   t dddgdddgdd}|jjjd	d
d}tdddg}t|| |jjjdd
d}dddg}t|ddgd}t|| d S )Nr9  r:  r_  r,  ZB3ZD4rH  )r*   r   z([A-Z])T)r%   r   r   r   z!(?P<letter>[A-Z])(?P<digit>[0-9]))r   r   )r   r   )r   4r1  rj  )r3  )r   r*   rq   r$   r	   r   r   )ru   r   rE  r   r7  r   r   r   !test_extract_index_one_two_groups  s    
z3TestStringMethods.test_extract_index_one_two_groupsc             C   s   t dddgdd}d}|jj|dd}|j|}|jd	d
d}t|| d}|jj|dd}|j|}|jd	d
d}t|| d}|jj|dd}	|j|}|jd	d
d}t|	| d}
|jj|
dd}|j|
}|jd	d
d}t|| d S )Nr9  r:  r;  rH  )r   z([a-z])([0-9])T)r%   r   r-   )levelz!(?P<letter>[a-z])(?P<digit>[0-9])z(?P<group_name>[a-z])z([a-z]))r   rq   r$   r&   xsr   r   )ru   r   pattern_two_nonameextract_two_nonameZhas_multi_indexZno_multi_indexpattern_two_namedextract_two_namedpattern_one_namedextract_one_namedpattern_one_nonameextract_one_nonamer   r   r   test_extractall_same_as_extract  s*    z1TestStringMethods.test_extractall_same_as_extractc             C   s  t jdddgdd}tdddg|d	d
}d}|jj|dd}|j|}|jddd}t|| d}|jj|dd}|j|}|jddd}t|| d}	|jj|	dd}
|j|	}|jddd}t|
| d}|jj|dd}|j|}|jddd}t|| d S )N)r   rf  )r   rg  )r   Zthird)ZcapitalZordinal)r   r9  r:  r;  rH  )r   z([a-z])([0-9])T)r%   r   r-   )rq  z!(?P<letter>[a-z])(?P<digit>[0-9])z(?P<group_name>[a-z])z([a-z]))	r   rZ  r   rq   r$   r&   rr  r   r   )ru   r   r   rs  rt  Zhas_match_indexZno_match_indexru  rv  rw  rx  ry  rz  r   r   r   -test_extractall_same_as_extract_subject_index  s4    z?TestStringMethods.test_extractall_same_as_extract_subject_indexc             C   s`  t td }}t td}t td}t td}t||j| d|j ksRtt||j	  t||j
d t||jd t||jd t||jd t||j  t||j  t||jdd t||jd t||jd ttdgtd|jjd	d
d ttddgtd|jjdd
d t||jjd	dd ttddgtd|jjddd tttd|j  t||jd t||j  t||jd t||jd t||jd t||jd t||jd t||jd t||jd t||jj ddd t||jj!ddd t||jj"dd t||jj"dd t||j#  t||j$  t||j%  t||j&d t||j'd t||j(d t||j)d t||j*  t||j+  t||j,  t||j-  t||j.  t||j/  t||j0  t||j1  t||j2  t||j3  t||j4  t||j5d t6j7r4t8dd}ndd l9}|8dd}t||j:| d S )N)ri   r+   r   r   r4   z^ar   )r3  ri   z()T)r%   r<   z()()F*   )stop)stepasciir/   );r   rl   intr   r   r   rq   r   rt   rX   r    r   r?   r#   rR   rY   r5   r3   r-   r   r	   r$   rG   r   rQ   r(   r'   r7   r0   r   r>   rT   r1   r:   r;   rV   rS   rU   rC   r)   r!   r"   rH   rI   rK   rN   rL   rP   rO   rM   rJ   rF   rW   r.   r   r   	maketransrb   r@   )ru   Z	empty_strrh   Z	empty_intZ
empty_boolZempty_bytestablerb   r   r   r   test_empty_str_methods  s    


z(TestStringMethods.test_empty_str_methodsc             C   s>   t td}tg }t||jd t||jd d S )N)ri   r   )r   rq   r	   r   r   r1   r:   )ru   rh   Zempty_dfr   r   r   test_empty_str_methods_to_framef  s    
z1TestStringMethods.test_empty_str_methods_to_framec          
   C   sl  ddddddddd	d
g
}t |}ddddddddddg
}ddddddddddg
}ddddddddddg
}ddddddddddg
}ddddddddddg
}ddddddddddg
}ddddddddddg
}	ddddddddddg
}
t|j t | t|j t | t|j t | t|j t | t|j t | t|j	 t |	 t|j
 t |
 |j  dd |D kst|j  dd |D kst|j  dd |D kst|j  dd |D kst|j  dd |D ks$t|j	  dd |D ksFt|j
  dd |D kshtd S )Nr   r   ZXyro  Z3Ar+   ZTTZ55r   z  TFc             S   s   g | ]}|  qS r   )rH   )r[   r   r   r   r   r     s    z4TestStringMethods.test_ismethods.<locals>.<listcomp>c             S   s   g | ]}|  qS r   )rI   )r[   r   r   r   r   r     s    c             S   s   g | ]}|  qS r   )rK   )r[   r   r   r   r   r     s    c             S   s   g | ]}|  qS r   )rN   )r[   r   r   r   r   r     s    c             S   s   g | ]}|  qS r   )rL   )r[   r   r   r   r   r     s    c             S   s   g | ]}|  qS r   )rP   )r[   r   r   r   r   r     s    c             S   s   g | ]}|  qS r   )rO   )r[   r   r   r   r   r     s    )r   r   r   rq   rH   rI   rK   rN   rL   rP   rO   r   rt   )ru   rn   Zstr_sZalnum_eZalpha_eZdigit_eZnum_eZspace_eZlower_eZupper_eZtitle_er   r   r   test_ismethodsl  s@    """"""z TestStringMethods.test_ismethodsc             C   s6  dddddddg}t |}dd	d	dd	d	dg}dd	dddd	dg}t|j t | t|j t | dddddddg}|j  d
d |D kst|j  dd |D kstdtj	ddtj	ddg}t |}dtj	d	dtj	d	dg}dtj	ddtj	d	dg}t|j t | t|j t | d S )Nr   r      ¼u   ★u   ፸u   ３ZfourFTc             S   s   g | ]}|  qS r   )rM   )r[   r   r   r   r   r     s    z4TestStringMethods.test_isnumeric.<locals>.<listcomp>c             S   s   g | ]}|  qS r   )rJ   )r[   r   r   r   r   r     s    )
r   r   r   rq   rM   rJ   r   rt   rj   r   )ru   rn   r   Z	numeric_eZ	decimal_eZunicodesr   r   r   test_isnumeric  s      z TestStringMethods.test_isnumericc             C   s   t ddtjg}|jd}tdddgdddgdddggtdd}t|| t dd	d
g}|jd}tdddgdddgdddggtdd}t|| t	dddg}|jd}t
jdddgdd}t|| d S )Nza|bza|cr   r<   r   r  )r3  za;br      ;Z7abzb|c)r<   r<   r   )r<   r   r<   )r   r<   r<   )r   r   rc   )r   )r   rj   r   rq   rG   r	   r   r   r   r
   r   rZ  r   )ru   r   r   r   rC  r   r   r   test_get_dummies  s    z"TestStringMethods.test_get_dummiesc             C   s   t dddg}|jd}tdddgdddgdddggdddgd}t|| td	d
dg}|jd}tjdddgdd}t	|| d S )Nr   zb,namer   r   r<   r   r   )r3  za|bzname|czb|namer   )r<   r<   r   r   )r   r   r<   r<   )r   r<   r   r<   )r   r   rc   r   )r   )
r   rq   rG   r	   r   r   r
   r   rZ  r   )ru   r   r   r   rC  r   r   r    test_get_dummies_with_name_dummy  s    z2TestStringMethods.test_get_dummies_with_name_dummyc          
   C   s   t ddtjdg}|jdjd}t|| t dtddt	
 dd d	d
g	}t |jdjd}t dtdttdtttg	}t|t stt|| t tdtdtjtdg}|jdjd}t|| d S )Na_b_cc_d_ef_g_hrZ   a_basdf_cas_asdfTr   r<   g       @)r   rj   r   rq   r>   r   r   r   r   r   r   r   rt   r   r   )ru   rn   r   r}   r   r   r   r   r   	test_join  s    zTestStringMethods.test_joinc          
   C   s   t dddtjdg}|j }|dd }t|| t dtdd	t	
 dd d
dg	}t |j }t dtdttdtttg	}t|t stt|| t tdtdtdtjtdg}|j }|dd }t|| d S )Nr   ZfoooZfoooooZfoooooooc             S   s   t | rt| S tS )N)r   rQ   r   )r  r   r   r   r    s    z,TestStringMethods.test_len.<locals>.<lambda>r  r  Tr<   g       @r4      c             S   s   t | rt| S tS )N)r   rQ   r   )r  r   r   r   r    s    )r   rj   r   rq   rQ   mapr   r   r   r   r   r   rt   r   r   )ru   rn   r   r   r}   r   r   r   r   r   test_len  s    


zTestStringMethods.test_lenc          
   C   s   t dtddg}|jd}t ddgtg dgg}t|| t dtddt dd ddg	}t |jd}t ddgtg ttdgtttg	}t|t st	t|| t t
dtt
dt
dg}|jd}t t
dt
dgtg t
dgg}t|| d S )	Nr  r   r(  zBAD[_]*r'  Tr<   g       @)r   r   rq   r(   r   r   r   r   r   rt   r   )ru   rn   r   r   r}   r   r   r   r   r   test_findall  s     "zTestStringMethods.test_findallc          	   C   sN  t dddddg}|jd}t|t ddd	d
dg tjdd |jD tjd}t	|j| |j
d}t|t dddddg tjdd |jD tjd}t	|j| |jdd}t|t dddddg tjdd |jD tjd}t	|j| |j
dd}t|t dddddg tjdd |jD tjd}t	|j| |jddd}t|t dddddg tjdd |jD tjd}t	|j| |j
ddd}t|t dddddg tjdd |jD tjd}t	|j| tjtdd |jd
}W d Q R X tjtdd |j
d
}W d Q R X d S )NABCDEFGBCDEFEF	DEFGHIJEFEFGHEFXXXXEFr   r4   r<   r   c             S   s   g | ]}| d qS )r  )r'   )r[   r   r   r   r   r     s    z/TestStringMethods.test_find.<locals>.<listcomp>)ri   r  r  c             S   s   g | ]}| d qS )r  )r7   )r[   r   r   r   r   r     s    c             S   s   g | ]}| d dqS )r  r4   )r'   )r[   r   r   r   r   r   %  s    c             S   s   g | ]}| d dqS )r  r4   )r7   )r[   r   r   r   r   r   +  s    r  c             S   s   g | ]}| d ddqS )r  r4   r  )r'   )r[   r   r   r   r   r   1  s    c             S   s   g | ]}| d ddqS )r  r4   r  )r7   )r[   r   r   r   r   r   7  s    z!expected a string object, not int)r-   )r   rq   r'   r   r   rj   rk   rn   int64r   r7   r~   r   r   )ru   rn   r   r   r   r   r   	test_find  sJ    







zTestStringMethods.test_findc          	   C   s"  t dtjdtjdg}|jd}t|t dtjdtjdg |jd}t|t dtjdtjdg |jdd	}t|t dtjdtjdg |jdd	}t|t dtjdtjdg |jdd	d
}t|t dtjdtjdg |jdd	d
}t|t dtjdtjdg d S )Nr  r  r  r  r   r<   r  r  r4   r  )r   rj   r   rq   r'   r   r   r7   )ru   rn   r   r   r   r   test_find_nanC  s    zTestStringMethods.test_find_nanc          
   C   s  dd }xFt tgD ]8}|ddddg}|jd}|||dd	d
dg tjdd |jD tjd}t	|j| |j
d}|||ddddg tjdd |jD tjd}t	|j| |jdd	}|||dd	ddg tjdd |jD tjd}t	|j| |j
dd	}|||ddddg tjdd |jD tjd}t	|j| |jddd}|||ddddg tjdd |jD tjd}t	|j| |j
ddd}|||dd	d
dg tjdd |jD tjd}t	|j| tjtdd |jd}W d Q R X d}tjt|d |jd}W d Q R X qW t dddtjg}|jd}t|t d
d
dtjg |j
d}t|t d	d
d tjg d S )!Nc             S   s(   t | trt| | nt| | d S )N)r   r   r   r   r   )r   r   r   r   r   _checkY  s    
z,TestStringMethods.test_index.<locals>._checkr  r  r  r  r  r   r4   r<   r   c             S   s   g | ]}| d qS )r  )r*   )r[   r   r   r   r   r   d  s    z0TestStringMethods.test_index.<locals>.<listcomp>)ri   r  r  c             S   s   g | ]}| d qS )r  )r8   )r[   r   r   r   r   r   j  s    c             S   s   g | ]}| d dqS )r  r4   )r*   )r[   r   r   r   r   r   p  s    c             S   s   g | ]}| d dqS )r  r4   )r8   )r[   r   r   r   r   r   v  s    r      c             S   s   g | ]}| d ddqS )r   r   r  )r*   )r[   r   r   r   r   r   |  s    c             S   s   g | ]}| d ddqS )r   r   r  )r8   )r[   r   r   r   r   r     s    zsubstring not found)r-   ZDEz!expected a string object, not intZabcbr   Zbcber   rD   )r   r
   rq   r*   rj   rk   rn   r  r   r   r8   r~   r   r   r   r   r   )ru   r  r  r   r   r   r   r   r   r   
test_indexW  sV    





zTestStringMethods.test_indexc          
   C   s  t ddtdtdg}|jjddd}t dd	td
tdg}t|| |jjddd}t ddtdtdg}t|| |jjddd}t ddtdtdg}t|| t dtddt dd ddg	}t |jjddd}t dtd	ttdtttg	}t|t st	t|| t dtddt dd ddg	}t |jjddd}t dtdttdtttg	}t|t sft	t|| t dtddt dd ddg	}t |jjddd}t dtdttdtttg	}t|t st	t|| t t
dt
dtt
dtt
dg}|jjddd}t t
dt
d	tt
d
tt
dg}t|| |jjddd}t t
dt
dtt
dtt
dg}t|| |jjddd}t t
dt
dtt
dtt
dg}t|| d S )Nr   r   rc   eeeeeer  r   )sidez    az    bz    cr   za    zb    zc    bothz  a  z  b  z  c  TZeer<   g       @z   eezee   z  ee )r   r   rq   r0   r   r   r   r   r   rt   r   )ru   rn   r   r   r}   r   r   r   r   r   test_pad  sF    $$$$zTestStringMethods.test_padc          	   C   s
  t ddtdtdg}|jjdddd}t d	d
tdtdg}t|| |jjdddd}t ddtdtdg}t|| |jjdddd}t ddtdtdg}t|| d}tjt|d |jjddd}W d Q R X d}tjt|d |jjddd}W d Q R X d S )Nr   r   rc   r  r  r   X)r  fillcharXXXXaZXXXXbZXXXXcr   aXXXXZbXXXXZcXXXXr  XXaXXZXXbXXZXXcXXz%fillchar must be a character, not str)r-   XY)r  z%fillchar must be a character, not int)	r   r   rq   r0   r   r   r~   r   r   )ru   rn   r   r   r   r   r   r   test_pad_fillchar  s     z#TestStringMethods.test_pad_fillcharr\   r   r,   r9   rE   r0   c          	   C   sB   t ddddg}d}tjt|d t|j|d W d Q R X d S )Nr   22r   r   z#width must be of integer type, not*)r-   r\   )r   r~   r   r   r   rq   )ru   r\   r   r   r   r   r   test_pad_width  s    z TestStringMethods.test_pad_widthc       	   
   C   s@  dd }xt tgD ]}|ddddg}tjsBdd l}|dd	}ntdd	}|j|}|d
dddg}||| tjs|jj|dd}|ddddg}||| |jjd dd}|dddd	g}||| qd}tj	t
|d |jj|dd}W d Q R X qW t ddddg}t dddtjg}|j|}t|| d S )Nc             S   s(   t | trt| | nt| | d S )N)r   r   r   r   r   )r   r   r   r   r   r    s    
z0TestStringMethods.test_translate.<locals>._checkZabcdefgZabccZcdddfgZcdefgggr   r  cdeZcdedefgZcdeeZedddfgZedefgggZfg)ZdeletecharsZcdedeZedddZedeZabcdeZcdddz#deletechars is not a valid argument)r-   r   r   rc   g333333?r   r   )r   r
   r   r   rb   r  rq   r@   r~   r   r   rj   r   r   r   )	ru   r  r  r   rb   r  r   r   r   r   r   r   test_translate  s0    

z TestStringMethods.test_translatec             C   sj  t ddtdtdg}|jd}t ddtdtdg}t|| |jd}t d	d
tdtdg}t|| |jd}t ddtdtdg}t|| t dtddt	 ddd ddg
}t |jd}t dtdttddtttg
}t
|t stt|| t |jd}t d	td
ttddtttg
}t
|t s:tt|| t |jd}t dtdttddtttg
}t
|t stt|| t tdtdttdttdg}|jd}t tdtdttdttdg}t|| |jd}t td	td
ttdttdg}t|| |jd}t tdtdttdttdg}t|| d S )Nr   r   rc   r  r  z  a  z  b  z  c  za    zb    zc    z    az    bz    cTZeeer<   g       @z eee zeee  z  eee)r   r   rq   r   r   r   r,   r9   r   r   r   rt   r   )ru   rn   r   r   r}   r   r   r   r   r   test_center_ljust_rjust	  sD    
$$$$z)TestStringMethods.test_center_ljust_rjustc          	   C   sN  t dddddg}|jjddd}t d	d
dddg}t|| tjdd |jD tjd}t	|j| |jj
ddd}t dddddg}t|| tjdd |jD tjd}t	|j| |jjddd}t dddddg}t|| tjdd |jD tjd}t	|j| d}tjt|jddd |jjddd W d Q R X tjt|jddd |jj
ddd W d Q R X tjt|jddd |jjddd W d Q R X tjt|jddd |jjddd W d Q R X tjt|jddd |jj
ddd W d Q R X tjt|jddd |jjddd W d Q R X d S )Nr   r   r  Zdddddr  r  r  )r  r  ZXXbbXZXccccc             S   s   g | ]}| d dqS )r  r  )r   )r[   r   r   r   r   r   P	  s    zFTestStringMethods.test_center_ljust_rjust_fillchar.<locals>.<listcomp>)ri   r  ZbbXXXZccccXc             S   s   g | ]}| d dqS )r  r  )r,   )r[   r   r   r   r   r   W	  s    r  ZXXXbbc             S   s   g | ]}| d dqS )r  r  )r9   )r[   r   r   r   r   r   ^	  s    z)fillchar must be a character, not {dtype}rq   )r-   r  r  r<   )r   rq   r   r   r   rj   rk   rn   r   r   r,   r9   r~   r   r   r   )ru   rn   r   r   templater   r   r    test_center_ljust_rjust_fillcharJ	  s@    


z2TestStringMethods.test_center_ljust_rjust_fillcharc             C   s  t dddddg}|jd}t ddd	d
dg}t|| tjdd |jD tjd}t	|j| |jd}t dddddg}t|| tjdd |jD tjd}t	|j| t dtj
dtj
dg}|jd}t dtj
d	tj
dg}t|| d S )Nr   r  r   Z333Z45678r  Z00001Z00022Z00aaaZ00333c             S   s   g | ]}| d qS )r  )rE   )r[   r   r   r   r   r   	  s    z0TestStringMethods.test_zfill.<locals>.<listcomp>)ri   r4   Z001Z022c             S   s   g | ]}| d qS )r4   )rE   )r[   r   r   r   r   r   	  s    )r   rq   rE   r   r   rj   rk   rn   r   r   r   )ru   rn   r   r   r   r   r   
test_zfilly	  s"    

zTestStringMethods.test_zfillc          	   C   s4  t ddtdg}|jd}t dddgddd	gtd
ddgg}t|| t ddtdg}|jd}t|| |jjddd}t|| t dtddt d ddg}|jd}t dddgtdd	d
gtttttg}t|t st	t
|| |jjddd}t|t st	t
|| t tdtdttdg}|jd}t tdtdtdgtdtdtd	gttd
tdtdgg}t|| |jjddd}t|| t tdtdttdg}|jd}t tdtdtdgtdtdtd	gttd
tdtdgg}t|| d S )Nr  r  r  rZ   r   r   rc   r   r   r\   gr   a__b__cc__d__ef__g__h__F)r%   d_e_fTr<   g       @za,b_czc_d,ezf,g,hz[,_])r   r   rq   r>   r   r   r   r   r   rt   r   r   )ru   rn   r   r   r}   r   r   r   
test_split	  s<    "$,,zTestStringMethods.test_splitc          	   C   sX  t ddtdg}|jd}t dddgddd	gtd
ddgg}t|| t ddtdg}|jd}t|| |jjddd}t|| t dtddt d ddg}|jd}t dddgtdd	d
gtttttg}t|t st	t
|| |jjddd}t|t st	t
|| t tdtdttdg}|jd}t tdtdtdgtdtdtd	gttd
tdtdgg}t|| |jjddd}t|| t tdtdttdg}|jd}t tdgtdgttdgg}t|| t ddtdg}|jjddd}t ddgdd	gtddgg}t|| d S )Nr  r  r  rZ   r   r   rc   r   r   r\   r  r   r  r  r  r  F)r%   r  Tr<   g       @za,b_czc_d,ezf,g,hz[,_])r  r  c_df_g)r   r   rq   rT   r   r   r   r   r   rt   r   r   )ru   rn   r   r   r}   r   r   r   test_rsplit	  sB    "$,"zTestStringMethods.test_rsplitc             C   s   t dgdd}|jjdd}tg g}t|| t ddddgdd}|jjdd}td	d
dgd	d
tjgtjtjtjgtjtjtjgg}t|| d S )Nr+   Ztest)r   T)r%   za b cza br2   r   r   rc   )r   rq   r>   r	   r   r   rj   r   )ru   rn   r   r   r   r   r   test_split_blank_string	  s    
"z)TestStringMethods.test_split_blank_stringc             C   sL   t ddg}|j }ddg}|d |ks.t|j }|d |ksHtd S )NzWes McKinneyzTravis  OliphantZTravisZOliphantr<   )r   rq   r>   rt   rT   )ru   r   r   r   r   r   r   test_split_noargs	  s    

z#TestStringMethods.test_split_noargsc             C   s   t ddg}|jjdd}|j }t|| |jjdd}t|| |jd}|jjddd}t|| |jjddd}t|| d S )Nzbd asdf jfgzkjasdflqw asdfnfkr  )r  r   Zasdf)r   rq   r>   r   r   )ru   r   r   r   r   r   r   test_split_maxsplit
  s    
z%TestStringMethods.test_split_maxsplitc             C   sD   t ddg}|jjdd}t ddgddgd}tj||d	d
 d S )Nz
split oncezsplit once too!r<   )r  r>   oncez	once too!)r   r<   F)Zcheck_index_type)r   rq   r>   r   r   )ru   r   r   r   r   r   r    test_split_no_pat_with_nonzero_n
  s    z2TestStringMethods.test_split_no_pat_with_nonzero_nc          	   C   sR  t ddg}|jjddd}tdt ddgi}t|| t ddg}|jjddd}td	d
gddgddgd}t|| t ddg}|jjddd}td	dgddgddgtdgtdgtdgd}t|| t ddgddgd}|jjddd}td	d
gddgd ddgd}t|| tjt	d!d" |jjdd#d W d Q R X d S )$NnosplitalsonosplitrZ   T)r%   r   some_equal_splitswith_no_nanssomewithequalnosplitsnans)r   r<   rD   some_unequal_splitsone_of_these_things_is_notoneunequalofthesethingsisnot)r   r<   rD   r4   r   r  some_splits
with_indexpreserveme)r*   r*   )r   r<   zexpand must be)r-   not_a_boolean)
r   rq   r>   r	   r   r   r   r~   r   r   )ru   r   r   r   r   r   r   test_split_to_dataframe
  s4    z)TestStringMethods.test_split_to_dataframec          
   C   s@  t ddtjg}|jjddd}|}t|| |jdks>tt ddtjd g}|jjddd}t	
d	d
tjtjtjgd d d gg}t|| |jdkstt ddtjd g}|jjddd}t	
dddtttfdtjtjtjtjtjtjfdg}t|| |jdksttjtdd |jjddd W d Q R X d S )Nr  r  rZ   T)r%   r<   r  r  )r  r  r  )r  r  r  r4   r  r  r  r  r  )r  r  r  r  r  r  )NNNNNNr  zexpand must be)r-   r  )r
   rj   r   rq   r>   r   r   nlevelsrt   r   rZ  r   r~   r   r   )ru   rC  r   r   r   r   r   test_split_to_multiindex_expand<
  s6    
z1TestStringMethods.test_split_to_multiindex_expandc             C   s@  t ddg}|jjddd}tdt ddgi}t|| t ddg}|jjddd}td	d
gddgddgd}t|| |jjdddd}td	d
gddgddgd}t|| |jjdddd}tddgddgd}t|| t ddgddgd}|jjddd}td	d
gddgdddgd}t|| d S )Nr  r  rZ   T)r%   r   r  r  r  r  r  r  r  r  )r   r<   rD   rD   )r%   r  r<   
some_equalwith_no)r   r<   r  r  r  r  )r*   r*   )r   rq   rT   r	   r   r   )ru   r   r   r   r   r   r   test_rsplit_to_dataframe_expand`
  s.    z1TestStringMethods.test_rsplit_to_dataframe_expandc             C   s   t ddg}|jjddd}|}t|| |jdks:tt ddg}|jjddd}td	d
g}t|| |jdks~tt ddg}|jjdddd}tddg}t|| |jdkstd S )Nr  r  rZ   T)r%   r<   r  r  )r  r  r  )r  r  r  r4   )r%   r  )r  r  )r  r  rD   )	r
   rq   rT   r   r   r  rt   r   rZ  )ru   rC  r   r   r   r   r    test_rsplit_to_multiindex_expand}
  s"    z2TestStringMethods.test_rsplit_to_multiindex_expandc             C   s`   t dtg}|jjddd}tdddgtttgg}t|| tdd	 |jd
 D s\t	d S )Nzfoo,bar,bazr   T)r%   r   r   bazc             s   s   | ]}t |V  qd S )N)rj   Zisnan)r[   r  r   r   r   re  
  s    z:TestStringMethods.test_split_nan_expand.<locals>.<genexpr>r<   )
r   r   rq   r>   r	   r   r   allilocrt   )ru   r   r   r   r   r   r   test_split_nan_expand
  s
    z'TestStringMethods.test_split_nan_expandc             C   s   t ddgdd}|jd}t ddgdd	ggdd}t|| |jjdd
d}tddgdd	gg}t|| tddgdd}|jd}tddgdd	ggdd}|jdkst	t
|| |jjdd
d}tddg}|jdkst	t
|| d S )Nza,bzc,dri  )r   r   r   r   rc   r   T)r%   r<   )r   r   )rc   r   rD   )r   rq   r>   r   r   r	   r   r
   r  rt   r   r   rZ  )ru   r   r#  r   rC  r   r   r   test_split_with_name
  s     z&TestStringMethods.test_split_with_namec             C   s  t ddtdd g}|jjddd}t ddtd	d g}t|| |jjddd}t d
dtdd g}t|| t ddtdd g}|jjddd}t ddtdd g}t|| |jjddd}t ddtdd g}t|| t ddtdd g}|jjdd}t ddtdd g}t|| |jjdd}t ddtdd g}t|| t d d!td"d g}|jjddd}t d#d$td%d g}t|| |jjddd}t d&d'td(d g}t|| t ddtdg}|jjddd}t ddtd	g}t|| |jjddd}t d
dtdg}t|| t d)d*d+d,g}|jjddd }|d-d. |D ksXt|jjddd }|d/d. |D kstd S )0Nr  r  r  rZ   F)r%   )r   rZ   b_c)rc   rZ   d_e)r\   rZ   g_h)r  rZ   rc   )r  rZ   r   )r  rZ   r   r  r  r  r  )r   r  Zb__c)rc   r  Zd__e)r\   r  Zg__h)Za__br  rc   )Zc__dr  r   )Zf__gr  r   za b czc d ezf g h)r   r2   zb c)rc   r2   zd e)r\   r2   zg h)za br2   rc   )zc dr2   r   )zf gr2   r   r  r  fgh)r  r+   r+   )r  r+   r+   )r  r+   r+   )r+   r+   r  )r+   r+   r  )r+   r+   r  ZA_B_CZB_C_DZE_F_Gr  c             S   s   g | ]}| d qS )rZ   )r1   )r[   r   r   r   r   r   
  s    z;TestStringMethods.test_partition_series.<locals>.<listcomp>c             S   s   g | ]}| d qS )rZ   )r:   )r[   r   r   r   r   r   
  s    )	r   r   rq   r1   r   r   r:   r   rt   )ru   rn   r   r   r   r   r   test_partition_series
  sd    









z'TestStringMethods.test_partition_seriesc             C   sH  t dddtjd g}|jjddd}t tddd	tjd g}t|| |jd
ksXt	|jj
ddd}t tdddtjd g}t|| |jd
kst	|jd}t ddd	tjtjtjfdg}t|| t|tst	|jdkst	|j
d}t dddtjtjtjfdg}t|| t|ts4t	|jdksDt	d S )Nr  r  r  rZ   F)r%   )r   rZ   r  )rc   rZ   r  )r\   rZ   r  r<   )r  rZ   rc   )r  rZ   r   )r  rZ   r   )NNNr4   )r
   rj   r   rq   r1   rk   r   r   r  rt   r:   r   r   )ru   rn   r   r   r   r   r   test_partition_index
  s2    

z&TestStringMethods.test_partition_indexc             C   s`  t ddtdd g}|jd}tddtjdd gddtjdd gdd	tjd
d gd}t|| |j	d}tddtjdd gddtjdd gddtjdd gd}t|| t ddtdd g}|jjddd}tddtjdd gddtjdd gdd	tjd
d gd}t|| |jj	ddd}tddtjdd gddtjdd gddtjdd gd}t|| d S )Nr  r  r  rZ   r   rc   r\   r  r  r  )r   r<   rD   r  r  r  r   r   T)r%   )
r   r   rq   r1   r	   rj   r   r   r   r:   )ru   rn   r   r   r   r   r   test_partition_to_dataframe  s,    z-TestStringMethods.test_partition_to_dataframec             C   s   t ddgdd}|jd}tddgddgdd	gd
}t|| |jjddd}t ddgdd}t|| tddgdd}|jd}t	ddg}|j
dkstt|| |jjddd}ttddgdd}|j
dkstt|| d S )Nza,bzc,dri  )r   r   r   rc   r   r   )r   r<   rD   F)r%   )r   r   r   )rc   r   r   r4   r<   )r   rq   r1   r	   r   r   r   r
   r   rZ  r  rt   r   rj   rk   )ru   r   r#  r   rC  r   r   r   test_partition_with_name;  s     z*TestStringMethods.test_partition_with_namec          	   C   s   t ddtdg}|jjdd}tt  |jjdd}t|| W d Q R X |jjdd}tt  |jjdd}t|| W d Q R X d S )Nr  r  r  rZ   )r   )r   )	r   r   rq   r1   r   r   r   r   r:   )ru   rn   r   r   r   r   r   test_partition_deprecationT  s    z,TestStringMethods.test_partition_deprecationc             C   sZ   t dg}|jd}t dddgg}t|| |jdd}t dg}t|| d S )NzA|B|Cr   r   r   r   r2   zA B C)r   rq   r>   r   r   r5   )ru   r   r   r   r   r   r   test_pipe_failuresf  s    

z$TestStringMethods.test_pipe_failuresc          	      s  t ddtdg}|jdd}t ddtdg}t|| xvd	D ]n\ y:|j }t  fd
d|D }t|| W q@ tk
r   td f   Y q@X q@W t dtddt	 d ddg}t |jdd}t dtdtttttg}t
|t stt|| t |jddd}t dtdtttttg}t tdtdttdg}|jdd}t tdtdttdg}t|| |jddd}t tdtdttdg}t|| d S )NZaafootwoZaabartwoZaabazquxrD   r  r   r   r  ))r   r4   r  )NNr  )r4   r   rD   )r4   r   r  c                s&   g | ]}t |s|  ntqS r   )r   r   )r[   r   )startr  r~  r   r   r     s   z0TestStringMethods.test_slice.<locals>.<listcomp>zfailed on %s:%s:%sTr<   g       @r  ZoofZrabr   ZafowZabrwZabzu)r   r   rq   r;   r   r   
IndexErrorprintr   r   r   rt   r   r   )ru   rn   r   r   r   r}   r   r   r   )r  r  r~  r   
test_slicet  s8    
zTestStringMethods.test_slicec             C   s  t ddddtg}t ddddtg}|jdd	}t|| t d
dddtg}|jdd	d}t|| t ddddtg}|jddd}t|| t ddddtg}|jddd}t|| t ddddtg}|jdd d}t|| t ddddtg}|jd dd}t|| t ddddtg}|jddd}t|| t ddddtg}|jd d	d}t|| d S )!NZshortza bit longerZevenlongerthanthatr+   Zshrtza it longerZevnlongerthanthatrD   r4   Zshzrtza zit longerZevznlongerthanthatr6   Zshzortza zbit longerZevzenlongerthanthatr<   Zshorzza bit longezZevenlongerthanthazr  ZzrtZzerZzatZshortzza bit zngerZevenlozerthanthatr  r  Zevenlongzerthanthati)r   r   rq   r=   r   r   )ru   rn   r   r   r   r   r   test_slice_replace  s2    z$TestStringMethods.test_slice_replacec             C   s   t ddtdg}|j }t ddtdg}t|| |j }t ddtdg}t|| |j }t d	d
tdg}t|| d S )Nz  aa   z bb 
zcc  r   r   cczaa   zbb 
z  aaz bb)r   r   rq   rV   r   r   rS   rU   )ru   rn   r   r   r   r   r   test_strip_lstrip_rstrip  s    


z*TestStringMethods.test_strip_lstrip_rstripc          	   C   s   t dtddt d ddg}t |j }t dtdtttttg}t|t sPtt	|| t |j
 }t dtd	tttttg}t|t stt	|| t |j }t d
tdtttttg}t|t stt	|| d S )Nz  aa  z bb 	
Tr<   g       @r   r   zaa  zbb 	
z  aaz bb)r   r   r   r   rq   rV   r   rt   r   r   rS   rU   )ru   r}   r   r   r   r   r   test_strip_lstrip_rstrip_mixed  s    
z0TestStringMethods.test_strip_lstrip_rstrip_mixedc             C   s   t tdtdttdg}|j }t tdtdttdg}t|| |j }t tdtdttdg}t|| |j }t td	td
ttdg}t|| d S )Nz  aa   z bb 
zcc  r   r   r  zaa   zbb 
z  aaz bb)	r   r   r   rq   rV   r   r   rS   rU   )ru   rn   r   r   r   r   r    test_strip_lstrip_rstrip_unicode  s    


z2TestStringMethods.test_strip_lstrip_rstrip_unicodec             C   s~   t dddg}|jd}t dddg}t|| |jd}t dddg}t|| |jd}t d	ddg}t|| d S )
NxxABCxxzxx BNSDzLDFJH xxr  ABCz BNSDzLDFJH ABCxxxxABC)r   rq   rV   r   rS   rU   )ru   rn   r   r   r   r   r   test_strip_lstrip_rstrip_args  s    

z/TestStringMethods.test_strip_lstrip_rstrip_argsc             C   s   t tdtdtdg}|jtd}t dddg}t|| |jtd}t dddg}t|| |jtd}t d	ddg}t|| d S )
Nr  zxx BNSDzLDFJH xxr  r  z BNSDzLDFJH r   r  )r   r   rq   rV   r   rS   rU   )ru   rn   r   r   r   r   r   %test_strip_lstrip_rstrip_args_unicode	  s    

z7TestStringMethods.test_strip_lstrip_rstrip_args_unicodec             C   s   t tdtdtdtdtdtdtdtdtd	g	}t tdtdtd
tdtdtdtdtdtdg	}|jjddd}t|| t dtjtdg}t dttdg}|jd}t|| d S )Nzhello worldzhello world!zhello world!!ZabcdefabcdeZabcdefabcdefZabcdefabcdefazab ab ab ab zab ab ab ab a	zhello
world!!zabcdefabcdef
azab ab ab abzab ab ab ab
ar+      T)Zbreak_long_wordsz  pre  u   ¬€耀 abadcafez  preu   ¬€耀 ab
adcafer  )r   r   rq   rC   r   rj   r   r   )ru   rn   r   r   r   r   r   	test_wrap  s    

zTestStringMethods.test_wrapc          	   C   sx  t ddtjdg}|jdjd}t ddtjdg}t|| t dtdd	t	
 d dd
g}t |jdjd}t dtdtttttg}t|t stt|| t tdtdtjtdg}|jdjd}t tdtdtjtdg}t|| t dddg}|jdjd}t ddtjg}t|| |jdjd}t ddtjg}t|| d S )Nr  r  r  rZ   r<   r   r   r  Tg       @Z	1_2_3_4_5Z
6_7_8_9_10Z11_12rD   r   8)r   rj   r   rq   r>   r)   r   r   r   r   r   r   rt   r   r   )ru   rn   r   r   r}   r   r   r   r   r   test_get2  s*    zTestStringMethods.test_getc             C   s~   t ddddgdddhddddg}|jd}t ddtjdg}t|| |jd}t ddtjtjg}t|| d S )	N)r<   rD   r4   r<   rD   r4   r   r   rc   r  )r   rq   r)   rj   r   r   r   )ru   rn   r   r   r   r   r   test_get_complexW  s    z"TestStringMethods.test_get_complexto_typec             C   sj   t ||ddggg}|jd}t |ddgg}t|| |jd}t tjg}t|| d S )Nr<   rD   r   )r   rq   r)   r   r   rj   r   )ru   r  rn   r   r   r   r   r   test_get_complex_nestedd  s    z)TestStringMethods.test_get_complex_nestedc             C   s,  t ddddddtddd	g
}|jd
}t ddddddtjdddg
}t|| |jjd
dd}t ddddddtjdddg
}t|| |jd}t ddddddtjdddg
}t|| |jd}t ddddddtjdddg
}t|| |jjddd}t ddddddtjdddg
}t|| d S )Nr   r   r   AabaBacar+   CABAdogr   r   FT)r   ZAar  )r   r   rq   r   rj   r   r   )ru   r   r   r   r   r   r   test_contains_moarp  s,    




z$TestStringMethods.test_contains_moarc             C   s   t tjtjtjgtjd}|jjddd}t dddgtjd}t|| |jjddd}t dddgtjd}t|| |jjddd}t dddgtjd}t|| |jd}t tjtjtjgtjd}t|| d S )N)ri   r   F)r   T)r   rj   r   r   rq   r   r   r   )ru   r   r   r   r   r   r   test_contains_nan  s    


z#TestStringMethods.test_contains_nanc             C   s   t ddddddtddd	g
}|jdd
}t d
dddddtddd	g
}t|| |jjdd
dd}t d
dddddtdddg
}t|| |jjdddd}t ddddddtdddg
}t|| d S )Nr   r   r   r  r  r+   r  r  r   YYYZYYYabaCYYYBYYYF)r   
YYYYYYbYYYBYYYcYYYcYYYtz^.a|dogzXX-XX zXX-XX bazXX-XX cazXX-XX BAzXX-XX t)r   r   rq   r5   r   )ru   r   r   r   r   r   r   test_replace_moar  s    


z#TestStringMethods.test_replace_moarc          
   C   s   t dddddtdddg	}|jd	 }|jd	}t|| |jd d
 }|jjd
d}t|| |jdd d }|jjddd}t|| d S )Nr  r   r   r  r  r  r  r  r   r4   )r~  rD   r  )r  r  )r   r   rq   r)   r   r;   )ru   r   r   r   r   r   r   test_string_slice_get_syntax  s    



z.TestStringMethods.test_string_slice_get_syntaxc             C   sh   t dddg}|jd }t dtjdg}t|| t ddd	g}|jd }t d
tjdg}t|| d S )N)r<   rD   )r<   )r4   r   r  r<   rD   r   r   r   r  r   r   )r   rq   rj   r   r   )ru   r   r   r   r   r   r   test_string_slice_out_of_bounds  s    


z1TestStringMethods.test_string_slice_out_of_boundsc          	   C   s   dddt jd}t|}d}|jj|tjdd}|jd  d	d
dgksLt	|jj
|tjd}|d sjt	|jj|tjd}|d d dkst	|jj|tjd}|d dkst	tt |jj|tjd}W d Q R X |d st	d S )Nzdave@google.comzsteve@gmail.comzrob@gmail.com)rQ  ZSteveZRobZWesz,([A-Z0-9._%+-]+)@([A-Z0-9.-]+)\.([A-Z]{2,4})T)r  r%   r   rL  r   rM  )r  )rL  r   rM  r<   )rj   r   r   rq   r$   r
  r  r  r   rt   r-   r(   r    r   r   UserWarningr   )ru   r  r   r   r   r   r   test_match_findall_flags  s"    
z*TestStringMethods.test_match_findall_flagsc             C   sT   t tdtdtdg}|jd}dd }|jd}||}t|| d S )Nr   r   u   aäzutf-8c             S   s
   |  dS )Nzutf-8)r!   )r  r   r   r   r    s    z6TestStringMethods.test_encode_decode.<locals>.<lambda>)r   r   rq   r"   r!   r  r   r   )ru   baseZseriesr\   r   r   r   r   r   test_encode_decode  s    
z$TestStringMethods.test_encode_decodec             C   s   t tdtdtdg}tt|jjd dd }|jdd}||}t	|| t dd	d
g}tt
|jjd dd }|jdd}||}t	|| d S )Nr   r   u   acp1252c             S   s   |  ddS )Nr  ignore)r"   )r  r   r   r   r    s    z=TestStringMethods.test_encode_decode_errors.<locals>.<lambda>r   rf      bs   ac             S   s   |  ddS )Nr  r   )r!   )r  r   r   r   r    s    )r   r   r~   r   UnicodeEncodeErrorrq   r"   r  r   r   UnicodeDecodeErrorr!   )ru   Z
encodeBaser\   r   r   Z
decodeBaser   r   r   test_encode_decode_errors  s    

z+TestStringMethods.test_encode_decode_errorsc          	   C   s   dddt jdg}t|ddddd	gd
}dddt jdg}t|ddddd	gd
}|jd}t|| tdddt jdgddddd	gd
}|jd}t|| tjt	dd |jd W d Q R X t
dddg}t
dddg}|jd}t|| d S )Nr  u	   ＡＢＣu	   １２３u	   ｱｲｴr   r   rc   r   r   )r*   Z123u	   アイエZNFKCr/   zinvalid normalization form)r-   ri  )rj   r   r   rq   r.   r   r   r~   r   r   r
   r   )ru   rn   r   Znormedr   r   r   r   r   test_normalize
  s     z TestStringMethods.test_normalizec             C   sj  ddl m} tjszddgdfdtdgdftdtdgdfdddgd	fddd
gdfddd
dgd	fdtdddgdfg}nfddgdfdtdgdftdtdgdfdddgd	fddd
gdfddd
dgd	fdtdddgdfg}xN|D ]F\}}t|}tt|j	|st
t|j	|st
|j|kst
qW xR|D ]J\}}t|}tt|j	|s\t
t|j	|snt
|j|ks6t
q6W dtjgdftdddgdftdgdfg}xr|D ]j\}}t|}d}tjt|d t|j	 W d Q R X tjt|d |j	 W d Q R X |j|kst
qW tddg}|jdksBt
d}tjt|d |j	 W d Q R X d S )Nr   )rs   r   r   rb   r}   rd   r<   zmixed-integerg?r   i  ZfloatingZ
datetime64Ztimedelta64z-Can only use .str accessor with string values)r-   )r   r   z5Can only use .str accessor with Index, not MultiIndex)pandas.core.stringsrs   r   r   r   r   r
   r   r   rq   rt   Zinferred_typerj   r   r   r~   r   r   r   rZ  )ru   rs   Zcasesrn   tprC  r   r   r   r   "test_index_str_accessor_visibility"  sP    z4TestStringMethods.test_index_str_accessor_visibilityc          	   C   s2   t td}tjtdd d|j_W d Q R X d S )NZaabbcdez You cannot add any new attribute)r-   r   )r   r   r~   r   r   rq   Zxlabel)ru   r   r   r   r   #test_str_accessor_no_new_attributesR  s    
z5TestStringMethods.test_str_accessor_no_new_attributesc             C   s   t ttddt}t ttddt}tjrNt	t
|jj| n4|j|}t tdddgdt}t|| d S )Nr  ZS1defr	  ZbeZcfZS2)r   rj   rk   r   r   rl   r   r   r~   r   r   rq   r   r   r   )ru   ZlhsZrhsr   r   r   r   r   test_method_on_bytesY  s    z&TestStringMethods.test_method_on_bytes){__name__
__module____qualname__rv   r~   ZmarkZparametrizerl   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$  r%  r&  rF  rG  rI  rJ  rK  r^  r`  ra  rh  rm  rn  rp  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  r  r  r  r  r  r  r  r  r  r  r  r  r	  r
  rd  r   rj   rk   r  r  r  r  r  r  r  r  r$  r%  r(  r)  r+  r   r   r   r   rp      s   '7	+
 x,$>	,%>" +49	i&!K'.=: 	'4/.1	 $G!*&%
0rp   )1r   r   r
  Znumpyrj   r   r   Znumpy.randomr   r~   Zpandas.compatr   r   r   r   Zpandasr	   r
   r   r   r   r   r   r&  Zcorerr   Zpandas.util.testingutilZtestingr   r   r   r   r   zipZ_any_string_methodr^   rZ   dirrs   r   Zmissing_methodsrt   Zfixturera   Z"_any_allowed_skipna_inferred_dtypero   rl   rp   r   r   r   r   <module>   s   $



  %