U
    sVc?                  
   @   sV  d dl m Z  d dl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mZ dd Zdd	 Zd
d Zejdde
jfddddeje
jfgejddd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eje
jgejd ddgd!d" Zejd dddgd#d$ Zejdddgejdddgejddeje
jgejd ddgd%d& Zejd dddgd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zejd1dd2d3d4igejd5d3d4dgd3d4d6d7ggd8d9 Z d:d; Z!ejd1d<d= d>d= d|d?d=gd@dA Z"dBdC Z#dDdE Z$dFdG Z%dHdI Z&dJdK Z'dLdM Z(ejdNddOdOejgfddOdejgfgdPdQ Z)dRdS Z*dTdU Z+dVdW Z,dXdY Z-dZd[ Z.ejddddgd\d] Z/d^d_ Z0d`da Z1dbdc Z2ddde Z3dfdg Z4dhdi Z5djdk Z6dldm Z7dndo Z8dpdq Z9drds Z:dtdu Z;dvdw Z<dxdy Z=dzd{ Z>dS )}    )datetimeN)pa_version_under4p0)PerformanceWarning)Series_testingc              	   C   s~  t jdt jdddgt jd}t|| d}d}tt| dko<t |j	
|}W 5 Q R X | dkrddnd	}tt jd
t jddd
gt jd|d}t|| |j	j
|d
d}tt jd
t jd
d
dgt jd|d}t|| tt jddddgtd| d}tt| dkot |j	
|}W 5 Q R X | dkr4t jnd	}tt d
d
ddg|d}t|| tt jddddgtd| d}tt| dk |j	j
dd
d}W 5 Q R X tt dd
ddg|d}t|| |j	j
dd
d
d}tt dd
dd
g|d}t|| tt jdt jddgt jd| d}d}tt| dko>t |j	
|}W 5 Q R X | dkrhdnd	}tt jd
t jddgt jd|d}t|| tt| dkot |j	j
|d
d}W 5 Q R X | dkrt jnd	}tt d
d
ddg|d}t|| tt jddddgt jd| d}tt| dko8t |j	
|}W 5 Q R X tt d
d
ddg|d}t|| d S )NfooZfooommm__fooZmmm_zfoommm[_]+bardtypezmmm[_]+string[pyarrow]objectbooleanFTregexZxyzZFooZxYzZfOOomMm__fOoZMMM_zFOO|mmmcase)r   r   na)nparraynanobject_r   tmmaybe_produces_warningr   r   strcontainsassert_series_equalr   bool_)any_string_dtypevaluespatresultexpected_dtypeexpected r#   J/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/strings/test_find_replace.pytest_contains   s     
  r%   c                  C   sx   t tjdtjddt dd ddg	td} | jd}t tjd	tjd	tjtjdtjtjtjg	tj	d}t
|| d S )
NabTr             @r   oF)r   r   r   r   r   todayr   r   r   r   r   r   mixedr    r"   r#   r#   r$   test_contains_object_mixedu   s     r.   c                  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'   ccategoryr   Tr   F)r   r   r   r   r   r   r   )r   r    r"   r#   r#   r$   *test_contains_na_kwarg_for_object_category   s    r1   zna, expected)TT)FF)r   F)   Tr   TFc              	   C   st   t ddddtjg| d}tt| dko,to,| |jjd||d}W 5 Q R X t dddd|gd	d}t	|| d S )
Nr&   r'   r/   r   r
   )r   r   TFr   
r   r   r   r   r   r   r   r   r   r   )nullable_string_dtyper   r"   r   r   r    r#   r#   r$   0test_contains_na_kwarg_for_nullable_string_dtype   s    r5   c                 C   s  t ddddddtjddd	g
| d
}tt| dko2t |jd}W 5 Q R X | dkrZdnd}t ddddddtjdddg
|d
}t	|| tt| dk |jjddd}W 5 Q R X t ddddddtjdddg
|d
}t	|| tt| dkot |jd}W 5 Q R X t ddddddtjdddg
|d
}t	|| tt| dkoRt |jd}W 5 Q R X t ddddddtjdddg
|d
}t	|| tt| dk |jjddd}W 5 Q R X t ddddddtjdddg
|d
}t	|| d S )NABCAabaBaca CABAdogcatr   r
   r&   r   r   FTr   ZAabar3   r   sr    r!   r"   r#   r#   r$   test_contains_moar   sn    
 
 rB   c              	   C   s  t tjtjtjg| d}tt| dko(t |jjddd}W 5 Q R X | dkrVtj	nd}t dddg|d}t
|| tt| dkot |jjddd}W 5 Q R X t dddg|d}t
|| tt| dkot |jjddd}W 5 Q R X | dkrt dddgtjd}nt dddgdd}t
|| tt| dkoFt |jd}W 5 Q R X | dkrpdnd}t tjtjtjg|d}t
|| d S )	Nr   r
   r   Fr   r   r   T)r   r   r   r   r   r   r   r   r   r   r   r   r@   r#   r#   r$   test_contains_nan   sB    



rC   r   r   )r   Zbazr	   r0   
null_valuer   c           
   
   C   s   t d|ddd|dg|d}|j| }t dtjdddtjdg}t|| |jj| |d	}t d|ddd|dg}t|| tjd
tjddt	 dd ddg	tj
d}t |jd}t dtjdtjtjdtjtjtjg	}	t||	 d S Nomfoo_nomnombar_foor   r   FTr   r&   r'   r(   r)   f)r   r   
startswithr   r   r   r   r   r   r+   r   
r   r	   rD   r   r   r    expr-   rsZxpr#   r#   r$   test_startswith&  s"    &rO   c              
   C   s   t dd dddd dddg	| d}tt| d	ko.t |jjd|d
}W 5 Q R X t d|ddd|dddg	dd}t|| tt| d	kot |jjd|d
}W 5 Q R X t d|ddd|dddg	dd}t|| d S NrF   rG   rH   rI   r   r   zrege.r   r
   r   FTr   )r   r   r   r   r   r   rK   r   r4   r   r   r    rM   r#   r#   r$   %test_startswith_nullable_string_dtypeC  s0    
 
 rR   c           
   
   C   s   t d|ddd|dg|d}|j| }t dtjdddtjdg}t|| |jj| |d	}t d|ddd|dg}t|| tjd
tjddt	 dd ddg	t
d}t |jd}t dtjdtjtjdtjtjtjg	}	t||	 d S rE   )r   r   endswithr   r   r   r   r   r   r+   r   rL   r#   r#   r$   test_endswithc  s"    &rT   c              
   C   s   t dd dddd dddg	| d}tt| d	ko.t |jjd|d
}W 5 Q R X t d|ddd|dddg	dd}t|| tt| d	kot |jjd|d
}W 5 Q R X t d|ddd|dddg	dd}t|| d S rP   )r   r   r   r   r   r   rS   r   rQ   r#   r#   r$   #test_endswith_nullable_string_dtype  s0    
 
 rU   c              	   C   sf   t dtjg| d}tt| dko"t |jjdddd}W 5 Q R X t dtjg| d}t	|| d S )	NfooBAD__barBADr   r
   BAD[_]*r;   Tr   foobar
r   r   r   r   r   r   r   r   replacer   r   serr    r"   r#   r#   r$   test_replace  s    
r]   c              	   C   s   t dtjg| d}t dtjg| d}tt| dko4t |jjddddd	}W 5 Q R X t	|| t d
tjg| d}tt| dkot |jjddddd	}W 5 Q R X t	|| d S )NrV   r   	foobarBADr
   rW   r;   r(   Tnr   Zfoo__barBADBADFrY   r   r\   r"   r    r#   r#   r$   test_replace_max_replacements  s    

rc   c               
   C   sl   t dtjddt dd ddg	} t | jjdddd	}t d
tjdtjtjdtjtjtjg	}t|| d S )NaBADbBADTfooBADr(   r)   rW   r;   r   r&   r'   r   )	r   r   r   r   r+   r   rZ   r   r   r\   r    r"   r#   r#   r$   test_replace_mixed_object  s    &rh   c              	   C   sj   t ddg| d}t ddg| d}tt| dk |jjddtjdd	}W 5 Q R X t	|| d S )
N   abcd,àutf-8r      abcd, àr
   (?<=\w),(?=\w), T)flagsr   )
r   decoder   r   r   r   rZ   reUNICODEr   rb   r#   r#   r$   test_replace_unicode  s      rr   replr2   r&   r'   datar/   adc              	   C   s<   d}||| d}t jt|d |jd| W 5 Q R X d S )Nz!repl must be a string or callabler   matchr&   )pytestraises	TypeErrorr   rZ   )r   index_or_seriesrs   rt   msgobjr#   r#   r$   #test_replace_wrong_repl_type_raises  s    r~   c              	   C   sl   t dtjg| d}dd }tt| dk |jjd|ddd	}W 5 Q R X t d
tjg| d}t|| d S )NrV   r   c                 S   s   |  d S Nr   groupswapcasemr#   r#   r$   <lambda>      z'test_replace_callable.<locals>.<lambda>r
   [a-z][A-Z]{2}   Tr_   foObaD__baRbaD	r   r   r   r   r   r   r   rZ   r   )r   r\   rs   r    r"   r#   r#   r$   test_replace_callable  s     r   c                   C   s   d S Nr#   r#   r#   r#   r$   r     r   r   c                 C   s   d S r   r#   )r   xr#   r#   r$   r     r   c                 C   s   d S r   r#   )r   r   yr#   r#   r$   r     r   c              
   C   s^   t dtjg| d}d}tjt|d0 tt| dk |j	
d| W 5 Q R X W 5 Q R X d S )NrV   r   zO((takes)|(missing)) (?(2)from \d+ to )?\d+ (?(3)required )positional arguments?rv   r
   r&   )r   r   r   rx   ry   rz   r   r   r   r   rZ   )r   rs   r   r|   r#   r#   r$   test_replace_callable_raises  s     r   c              	   C   sn   t dtjg| d}d}dd }tt| dk |jj||dd}W 5 Q R X t d	tjg| d}t|| d S )
NzFoo Bar Bazr   z,(?P<first>\w+) (?P<middle>\w+) (?P<last>\w+)c                 S   s   |  d S )NZmiddler   r   r#   r#   r$   r     r   z4test_replace_callable_named_groups.<locals>.<lambda>r
   Tr   ZbARr   )r   r\   r   rs   r    r"   r#   r#   r$   "test_replace_callable_named_groups  s     r   c              	   C   s   t dtjg| d}td}tt| dk |jj	|ddd}W 5 Q R X t dtjg| d}t
|| tt| dk |jj	|dd	dd
}W 5 Q R X t dtjg| d}t
|| d S )NrV   r   BAD_*r
   r;   Tr   rX   r(   r_   r^   r   r   r   rp   compiler   r   r   r   rZ   r   )r   r\   r   r    r"   r#   r#   r$   test_replace_compiled_regex  s     
  r   c               
   C   sv   t d} tdtjddt dd ddg	}t|jj| ddd	}td
tjdtjtjdtjtjtjg	}t	
|| d S )Nr   rd   re   Trf   r(   r)   r;   r   r&   r'   r   )rp   r   r   r   r   r   r+   r   rZ   r   r   )r   r\   r    r"   r#   r#   r$   (test_replace_compiled_regex_mixed_object   s    
&r   c              	   C   sr   t ddg| d}t ddg| d}tjdtjd}tt| dk |j	|d}W 5 Q R X t
|| d S )	Nri   rj   r   rk   rl   rn   r
   rm   )r   ro   rp   r   rq   r   r   r   r   rZ   r   )r   r\   r"   r   r    r#   r#   r$   #test_replace_compiled_regex_unicode*  s     r   c              	   C   s   t dtjg| d}td}d}tjt|d |jj	|dtj
d W 5 Q R X tjt|d |jj	|ddd	 W 5 Q R X tjt|d |jj	|dd
d	 W 5 Q R X d S )NZfooBAD__barBAD__badr   r   z9case and flags cannot be set when pat is a compiled regexrv   r;   r   Fr   T)r   r   r   rp   r   rx   ry   
ValueErrorr   rZ   
IGNORECASEr   r\   r   r|   r#   r#   r$   "test_replace_compiled_regex_raises5  s    
r   c              	   C   st   t dtjg| d}dd }td}tt| dk |jj	||dd}W 5 Q R X t d	tjg| d}t
|| d S )
NrV   r   c                 S   s   |  d S r   r   r   r#   r#   r$   r   J  r   z6test_replace_compiled_regex_callable.<locals>.<lambda>r   r
   r   )r`   r   r   )r   r\   rs   r   r    r"   r#   r#   r$   $test_replace_compiled_regex_callableG  s    
 r   zregex,expectedZbaoc              	   C   sb   t ddtjg|d}t ||d}tt|dko0t |jjdd| d}W 5 Q R X t	|| d S )Nzf.or   r   r
   zf.r?   r   rY   )r   r"   r   r\   r    r#   r#   r$   test_replace_literalT  s    
r   c              	   C   sH   t g | d}dd }d}tjt|d |jjd|dd W 5 Q R X d S )	Nr   c                 S   s   |  d S r   r   r   r#   r#   r$   r   e  r   z6test_replace_literal_callable_raises.<locals>.<lambda>z2Cannot use a callable replacement when regex=Falserv   abcFr   )r   rx   ry   r   r   rZ   )r   r\   rs   r|   r#   r#   r$   $test_replace_literal_callable_raisesc  s
    r   c              	   C   sJ   t g | d}td}d}tjt|d |jj|ddd W 5 Q R X d S )Nr   r   zCCannot use a compiled regex as replacement pattern with regex=Falserv   r;   Fr   )r   rp   r   rx   ry   r   r   rZ   r   r#   r#   r$   $test_replace_literal_compiled_raisesl  s
    
r   c                 C   s<  t ddddddtjddd	g
| d
}tt| dko2t |jdd}W 5 Q R X t ddddddtjddd	g
| d
}t	|| tt| dk |jjdddd}W 5 Q R X t ddddddtjdddg
| d
}t	|| tt| dk |jjddddd}W 5 Q R X t ddddddtjdddg
| d
}t	|| d S )Nr6   r7   r8   r9   r:   r;   r<   r=   r>   r   r
   ZYYYZYYYabaZCYYYBYYYFr   Z
YYYYYYbYYYZBYYYcYYYZcYYYtz^.a|dogzXX-XX Tr   r   zXX-XX bazXX-XX cazXX-XX BAzXX-XX trY   r[   r#   r#   r$   test_replace_moaru  sl    
  r   c              	   C   s   t ddddtjg| d}tt| dk |jjddd	d	d
}W 5 Q R X t ddddtjg| d}t|| tt| dk |jjddd	d	d
}W 5 Q R X t ddddtjg| d}t|| d S )NzA.za.ZAbabr   r
   r&   r/   Fr   zc.cbr   r[   r#   r#   r$   )test_replace_not_case_sensitive_not_regex  s      r   c              	   C   sr   t dddtjdg| d}d}tjt|| dkd |jd	d}W 5 Q R X t dddtjdg| d}t|| d S )
Nr&   r'   acr;   r   zPThe default value of regex will change from True to False in a future version\.$r
   rw   Zraise_on_extra_warningsz^.$)	r   r   r   r   assert_produces_warningFutureWarningr   rZ   r   )r   rA   r|   r    r"   r#   r#   r$   "test_replace_regex_default_warning  s    r   c              	   C   s   t dddtjdg|d}| d krhtd}|dko4t}tjt|| d |j	j
dd	| d
}W 5 Q R X n2tt|dkoxt |j	j
dd	| d
}W 5 Q R X t dd	dtjdg|d}t|| d S )Nza.b.r'   r;   r   zThe default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.r
   r   r&   r   Zaab)r   r   r   rp   escaper   r   r   r   r   rZ   r   r   r   )r   r   rA   r|   Zpyarrow_warnr    r"   r#   r#   r$   #test_replace_regex_single_character  s&      
r   c              	   C   s  | dkrdnd}t dtjdg| d}tt| dko4t |jd}W 5 Q R X t dtjd	g|d}t	|| t dd
tjdg| d}tt| dkot |jd}W 5 Q R X t ddtjd	g|d}t	|| tt| dkot |jd}W 5 Q R X t d	dtjd	g|d}t	|| t ddtjdg| d}tt| dkoJt |jd}W 5 Q R X t d	d	tjd	g|d}t	|| tt| dkot |jd}W 5 Q R X t d	dtjd	g|d}t	|| d S )Nr   r   rV   r   r   r
   .*(BAD[_]+).*(BAD)TFBAD_BADleroybrown.*BAD[_]+.*BADzBAD[_]+.*BADz^BAD_BADleroybrownz^BAD[_]+.*BADz\^BAD[_]+.*BAD)
r   r   r   r   r   r   r   r   rw   r   )r   r!   r   r    r"   r#   r#   r$   
test_match  sZ    
 

 r   c               
   C   st   t dtjddt dd ddg	} t | jd}t dtjdtjtjdtjtjtjg	}t|t sdtt	
|| d S )	NZaBAD_BADZ	BAD_b_BADTr   r(   r)   r   F)r   r   r   r   r+   r   rw   
isinstanceAssertionErrorr   r   r,   r#   r#   r$   test_match_mixed_object/  s$     r   c              	   C   s   t ddtjg| d}tt| dko$t |jjddd}W 5 Q R X | dkrRtj	nd}t d	ddg|d}t
|| tt| dkot |jd}W 5 Q R X | dkrdnd}t d	dtjg|d}t
|| d S )
Nr&   r'   r   r
   Fr   r   r   T)r   r   r   r   r   r   r   r   rw   r   r   r@   r#   r#   r$   test_match_na_kwargE  s"    

r   c              	   C   sv   t ddddg| d}tt| dk |jjddd}W 5 Q R X | d	krNtjnd
}t ddddg|d}t|| d S )Nr   ABr   ABCr   r
   Fr   r   r   T)	r   r   r   r   r   rw   r   r   r   )r   r   r    r!   r"   r#   r#   r$   test_match_case_kwarg\  s     r   c              	   C   sx   t ddtjdg| d}tt| dko&t |jd}W 5 Q R X | dkrNdnd}t d	d
tjd
g|d}t	|| d S )NrV   r   r   r   r
   r   r   r   TF)
r   r   r   r   r   r   r   r   	fullmatchr   r   r\   r    r!   r"   r#   r#   r$   test_fullmatchl  s     
r   c              	   C   s|   t ddtjdg| d}tt| dko&t |jjddd}W 5 Q R X | d	krTtj	nd
}t ddddg|d}t
|| d S )NrV   r   r   r   r
   r   Fr   r   r   T)r   r   r   r   r   r   r   r   r   r   r   r   r#   r#   r$   test_fullmatch_na_kwarg{  s     
r   c              	   C   s   t ddddg| d}| dkr"tjnd}t dd	d	d	g|d}tt| d
koJt |jjddd}W 5 Q R X t	|| t ddd	d	g|d}tt| d
k |jjdd	d}W 5 Q R X t	|| tt| d
k |jjdt
jd}W 5 Q R X t	|| d S )Nr   r   r   r   r   r   r   TFr
   r   r   )r   r   r   r   r   r   r   r   r   r   rp   r   )r   r\   r!   r"   r    r#   r#   r$   test_fullmatch_case_kwarg  s,    
  r   c                 C   sJ   t dtjddg| d}|jd}t ddgtjg dgg}t|| d S )NrV   r   ra   r   rW   BAD__)r   r   r   r   findallr   r   r[   r#   r#   r$   test_findall  s    r   c               
   C   sh   t dtjddt dd ddg	} | jd}t ddgtjg tjtjdgtjtjtjg	}t|| d S )	NrV   r   Tra   r(   r)   rW   r   )	r   r   r   r   r+   r   r   r   r   rg   r#   r#   r$   test_findall_mixed_object  s4    r   c                 C   s  t dddddg| d}| dkr$tjnd}|jd	}t d
ddddg|d}t|| tjdd t|D tjd}ttj|tjd| |j	d	}t d
ddd
dg|d}t|| tjdd t|D tjd}ttj|tjd| |jd	d}t d
ddd
dg|d}t|| tjdd t|D tjd}ttj|tjd| |j	d	d}t d
ddd
dg|d}t|| tjdd t|D tjd}ttj|tjd| |jd	dd}t d
ddd
dg|d}t|| tjdd t|D tjd}ttj|tjd| |j	d	dd}t d
ddd
dg|d}t|| tjdd t|D tjd}ttj|tjd| d S )NABCDEFGZBCDEFEF	DEFGHIJEFZEFGHEFXXXXr   r   Int64EF   r2   r(   r   c                 S   s   g | ]}| d qS r   find.0vr#   r#   r$   
<listcomp>  s     ztest_find.<locals>.<listcomp>      c                 S   s   g | ]}| d qS r   rfindr   r#   r#   r$   r     s     c                 S   s   g | ]}| d dqS r   r2   r   r   r#   r#   r$   r     s     c                 S   s   g | ]}| d dqS r   r   r   r#   r#   r$   r     s        c                 S   s   g | ]}| d ddqS r   r2   r   r   r   r#   r#   r$   r     s     c                 S   s   g | ]}| d ddqS r   r   r   r#   r#   r$   r     s     )
r   r   Zint64r   r   r   r   r   Zassert_numpy_array_equalr   r   r\   r!   r    r"   r#   r#   r$   	test_find  sF           r   c              	   C   s\   t g | d}tjtdd |jd W 5 Q R X tjtdd |jd W 5 Q R X d S )Nr   z!expected a string object, not intrv   r   )r   rx   ry   rz   r   r   r   )r   r\   r#   r#   r$   test_find_bad_arg_raises  s
    r   c                 C   sh  t dtjdtjdg| d}| dkr(tjnd}|jd}t dtjd	tjd
g|d}t|| |jd}t dtjdtjd
g|d}t|| |jdd}t dtjdtjd
g|d}t|| |jdd}t dtjdtjd
g|d}t|| |jddd}t dtjd
tjd
g|d}t|| |jddd}t dtjd
tjd
g|d}t|| d S )Nr   r   r   r   r   r   r   r   r(   r   r   r2   r   )	r   r   r   Zfloat64r   r   r   r   r   r   r#   r#   r$   test_find_nan  s.     r   c                 C   sP   | ddddg|d}t dd}|j |}| dd	d
dg|d}t|| d S )NZabcdefgZabccZcdddfgZcdefgggr   r   cdeZcdedefgZcdeeZedddfgZedefggg)r   	maketrans	translater   Zassert_equal)r{   r   r}   tabler    r"   r#   r#   r$   test_translate/  s    
 
 r   c                  C   sJ   t ddddg} tdd}t dddtjg}| j|}t|| d S )	Nr&   r'   r/   g333333?r   r   de)r   r   r   r   r   r   r   r   )rA   r   r"   r    r#   r#   r$   test_translate_mixed_object;  s
    r   c              	   C   sT  dddt jd}t|| d}d}| dk}|jj|tjdd	}|jd
  dddgksXt	t
t| |jj|tjd}W 5 Q R X |d
 st	t
t| |jj|tjd}W 5 Q R X |d
 st	|jj|tjd}|d
 d
 dkst	|jj|tjd}|d
 dkst	d}t
jt|| d |jj|tjd}W 5 Q R X |d
 sPt	d S )Nzdave@google.comzsteve@gmail.comzrob@gmail.com)ZDaveZSteveZRobZWesr   z,([A-Z0-9._%+-]+)@([A-Z0-9.-]+)\.([A-Z]{2,4})r
   T)rn   expandr   davegooglecomr   )r   r   r   r(   zhas match groupsr   )r   r   r   r   extractrp   r   Ziloctolistr   r   r   r   rw   r   r   countr   UserWarningr   )r   rt   r   Zusing_pyarrowr    r|   r#   r#   r$   test_flags_kwargG  s8      r   )N)?r   rp   Znumpyr   rx   Zpandas.compatr   Zpandas.errorsr   Zpandaspdr   r   r   r%   r.   r1   markZparametrizeZNAr   r5   rB   rC   rO   rR   rT   rU   r]   rc   rh   rr   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$   <module>   s   
`
>/

	
 

 
		=
#4!&+	$