U
    +ifn~                  
   @   s  d dl m Z  d dlZd dlZd dl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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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*d+ Zejd,dd-d.d/igejd0d.d/dgd.d/d1d2ggd3d4 Zd5d6 Zejd,d7d8 d9d8 dxd:d8gd;d< Zd=d> Zd?d@ Z dAdB Z!dCdD Z"dEdF Z#dGdH Z$ejdIddJdJejgfddJdKejgfgdLdM Z%dNdO Z&dPdQ Z'dRdS Z(dTdU Z)dVdW Z*ejddddgdXdY Z+dZd[ Z,d\d] Z-d^d_ Z.d`da Z/dbdc Z0ddde Z1dfdg Z2dhdi Z3djdk Z4dldm Z5dndo Z6dpdq Z7drds Z8dtdu Z9dvdw Z:dS )y    )datetimeN)Series_testingc                 C   s  t jdt jdddgt jd}t|| d}d}|j|}| 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}|j|}| dkrt j
nd}tt d	d	d
d
g|d}t|| tt jddddgt	d| d}|jjdd	d}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}|j|}| dkrdnd}tt jd	t jd
d
gt jd|d}t|| |jj|d	d}| dkr8t j
nd}tt d	d	d
d
g|d}t|| tt jddddgt jd| d}|j|}tt d	d	d
d
g|d}t|| d S )NfooZfooommm__fooZmmm_zfoommm[_]+bardtypezmmm[_]+objectbooleanFTregexZxyzZFooZxYzZfOOomMm__fOoZMMM_zFOO|mmmcase)r   r   na)nparraynanobject_r   strcontainstmassert_series_equalr   bool_)any_string_dtypevaluespatresultexpected_dtypeexpected r   Y/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/strings/test_find_replace.pytest_contains   sx      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_mixed[   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_categoryl   s    r.   zna, expected)TT)FF)r   F)   Tr   TFc                 C   sP   t ddddtjg| d}|jjd||d}t dddd|gdd}t|| d S )	Nr"   r#   r+   r   )r   r   TFr	   r-   )nullable_string_dtyper   r   r   r   r   r   r   r    0test_contains_na_kwarg_for_nullable_string_dtype   s    r1   c                 C   s`  t ddddddtjddd	g
| d
}|jd}| dkr:dnd}t ddddddtjdddg
|d
}t|| |jjddd}t ddddddtjdddg
|d
}t|| |jd}t ddddddtjdddg
|d
}t|| |jd}t ddddddtjdddg
|d
}t|| |jjddd}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	   FTr   ZAabar-   r   sr   r   r   r   r   r    test_contains_moar   sF    r>   c                 C   s  t tjtjtjg| d}|jjddd}| dkr6tjnd}t dddg|d}t|| |jjddd}t dddg|d}t|| |jjddd}| dkrt dddgtjd}nt dddgdd}t|| |jd}| dkrdnd}t tjtjtjg|d}t|| d S )Nr   r   Fr   r   r	   T)	r   r   r   r   r   r   r   r   r   r<   r   r   r    test_contains_nan   s"    r?   r   r,   
null_valuer   c           	   
   C   s   t d|ddd|dg| d}|jd}t dtjdddtjdg}t|| |jjd|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@   r   r   r   expr)   rsZxpr   r   r    test_startswith   s"    &rK   c              
   C   s   t dd dddd dddg	| d}|jjd|d	}t d
|dd
d
|dd
d
g	dd}t|| |jjd|d	}t d
|d
d
d
|d
d
dg	dd}t|| d S NrB   rC   rD   rE   r   r   zrege.r   r   FTr	   )r   r   rG   r   r   r0   r   r   r   rI   r   r   r    %test_startswith_nullable_string_dtype  s       rN   c           	   
   C   s   t d|ddd|dg| d}|jd}t dtjdddtjdg}t|| |jjd|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 rA   )r   r   endswithr   r   r   r   r   r   r'   r   rH   r   r   r    test_endswith  s"    &rP   c              
   C   s   t dd dddd dddg	| d}|jjd|d	}t d
|d
d
d|dd
d
g	dd}t|| |jjd|d	}t d
|d
d
d
|d
d
dg	dd}t|| d S rL   )r   r   rO   r   r   rM   r   r   r    #test_endswith_nullable_string_dtype6  s       rQ   c                 C   sF   t dtjg| d}|jjdddd}t dtjg| d}t|| d S )NfooBAD__barBADr   BAD[_]*r7   Tr
   foobarr   r   r   r   replacer   r   r   serr   r   r   r   r    test_replaceN  s    rY   c                 C   sz   t dtjg| d}t dtjg| d}|jjddddd}t|| t d	tjg| d}|jjd
dddd}t|| d S )NrR   r   	foobarBADrS   r7   r$   Tnr   Zfoo__barBADBADFrU   r   rX   r   r   r   r   r    test_replace_max_replacementsV  s    r_   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%   rS   r7   r
   r"   r#   r   )	r   r   r   r   r'   r   rV   r   r   rX   r   r   r   r   r    test_replace_mixed_objectb  s    &rd   c                 C   sN   t ddg| d}t ddg| d}|jjddtjdd}t|| d S )	N   abcd,àutf-8r      abcd, à(?<=\w),(?=\w), T)flagsr   )r   decoder   rV   reUNICODEr   r   r^   r   r   r    test_replace_unicodek  s    rn   replr/   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   rV   )r   index_or_seriesro   rp   msgobjr   r   r    #test_replace_wrong_repl_type_raisesr  s    rz   c                 C   sP   t dtjg| d}dd }|jjd|ddd}t d	tjg| d}t|| d S )
NrR   r   c                 S   s   |  d S Nr   groupswapcasemr   r   r    <lambda>      z'test_replace_callable.<locals>.<lambda>[a-z][A-Z]{2}   Tr[   foObaD__baRbaDrU   )r   rX   ro   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   sB   t dtjg| d}d}tjt|d |jd| W 5 Q R X d S )NrR   r   zO((takes)|(missing)) (?(2)from \d+ to )?\d+ (?(3)required )positional arguments?rr   r"   )r   r   r   rt   ru   rv   r   rV   )r   ro   r   rx   r   r   r    test_replace_callable_raises  s
    r   c                 C   sR   t dtjg| d}d}dd }|jj||dd}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 )Nmiddler|   r   r   r   r    r     r   z4test_replace_callable_named_groups.<locals>.<lambda>Tr
   ZbARrU   )r   rX   r   ro   r   r   r   r   r    "test_replace_callable_named_groups  s    r   c                 C   s   t dtjg| d}td}|jj|ddd}t dtjg| d}t|| |jj|dddd	}t d
tjg| d}t|| d S )NrR   r   BAD_*r7   Tr
   rT   r$   r[   rZ   	r   r   r   rl   compiler   rV   r   r   )r   rX   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   r`   ra   Trb   r$   r%   r7   r
   r"   r#   r   )rl   r   r   r   r   r   r'   r   rV   r   r   )r   rX   r   r   r   r   r    (test_replace_compiled_regex_mixed_object  s    
&r   c                 C   sV   t ddg| d}t ddg| d}tjdtjd}|j|d}t|| d S )Nre   rf   r   rg   rh   rj   ri   )	r   rk   rl   r   rm   r   rV   r   r   )r   rX   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 regexrr   r7   r   Fr   T)r   r   r   rl   r   rt   ru   
ValueErrorr   rV   
IGNORECASEr   rX   r   rx   r   r   r    "test_replace_compiled_regex_raises  s    
r   c                 C   sX   t dtjg| d}dd }td}|jj||dd}t dtjg| d}t|| d S )	NrR   r   c                 S   s   |  d S r{   r|   r   r   r   r    r     r   z6test_replace_compiled_regex_callable.<locals>.<lambda>r   r   )r\   r   r   )r   rX   ro   r   r   r   r   r   r    $test_replace_compiled_regex_callable  s    
r   zregex,expectedZbaor   c                 C   sB   t ddtjg|d}t ||d}|jjdd| d}t|| d S )Nzf.or   r   zf.r;   r
   rU   )r   r   r   rX   r   r   r   r    test_replace_literal  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     r   z6test_replace_literal_callable_raises.<locals>.<lambda>z2Cannot use a callable replacement when regex=Falserr   abcFr
   )r   rt   ru   r   r   rV   )r   rX   ro   rx   r   r   r    $test_replace_literal_callable_raises  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=Falserr   r7   Fr
   )r   rl   r   rt   ru   r   r   rV   r   r   r   r    $test_replace_literal_compiled_raises  s
    
r   c                 C   s   t ddddddtjddd	g
| d
}|jdd}t ddddddtjddd	g
| d
}t|| |jjdddd}t ddddddtjdddg
| d
}t|| |jjddddd}t ddddddtjdddg
| d
}t|| d S )Nr2   r3   r4   r5   r6   r7   r8   r9   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 trU   rW   r   r   r    test_replace_moar  sT    r   c                 C   s   t ddddtjg| d}|jjddddd	}t d
d
ddtjg| d}t|| |jjdd
ddd	}t d
d
ddtjg| d}t|| d S )NzA.za.ZAbabr   r"   r+   Fr   zc.cbrU   rW   r   r   r    )test_replace_not_case_sensitive_not_regex.  s    r   c              	   C   sl   t dddtjdg| d}d}tjt|d |jdd}W 5 Q R X t dddtjdg| d}t|| d S )	Nr"   r#   acr7   r   zPThe default value of regex will change from True to False in a future version\.$rr   z^.$)	r   r   r   r   assert_produces_warningFutureWarningr   rV   r   )r   r=   rx   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rXtd}tjt|d |jj	dd| d	}W 5 Q R X n|jj	dd| d	}t d
ddtjdg|d}t
|| d S )Nza.b.r#   r7   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.rr   r"   r
   Zaab)r   r   r   rl   escaper   r   r   r   rV   r   )r   r   r=   rx   r   r   r   r   r    #test_replace_regex_single_characterH  s    r   c                 C   s8  | dkrdnd}t dtjdg| d}|jd}t dtjdg|d}t|| t dd	tjdg| d}|jd
}t ddtjdg|d}t|| |jd}t ddtjdg|d}t|| t ddtjdg| d}|jd}t ddtjdg|d}t|| |jd}t ddtjdg|d}t|| d S )Nr   r	   rR   r   r   .*(BAD[_]+).*(BAD)TFBAD_BADleroybrown.*BAD[_]+.*BADzBAD[_]+.*BADz^BAD_BADleroybrownz^BAD[_]+.*BADz\^BAD[_]+.*BAD)r   r   r   r   rs   r   r   )r   r   r   r   r   r   r   r    
test_matche  s2      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   rs   
isinstanceAssertionErrorr   r   r(   r   r   r    test_match_mixed_object  s$     r   c                 C   s   t ddtjg| d}|jjddd}| dkr2tjnd}t dddg|d}t|| |jd}| dkrldnd}t ddtjg|d}t|| d S )	Nr"   r#   r   Fr   r   r	   T)r   r   r   r   rs   r   r   r   r<   r   r   r    test_match_na_kwarg  s    r   c                 C   sZ   t ddddg| d}|jjddd}| dkr2tjnd	}t d
d
d
d
g|d}t|| d S )Nr   ABr   ABCr   Fr   r   r	   T)r   r   rs   r   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}|jd}| dkr.dnd}t dd	tjd	g|d}t|| d S )
NrR   r   r   r   r   r   r	   TF)r   r   r   r   	fullmatchr   r   r   rX   r   r   r   r   r   r    test_fullmatch  s     r   c                 C   s\   t ddtjdg| d}|jjddd}| dkr4tjnd	}t d
dddg|d}t|| d S )NrR   r   r   r   r   Fr   r   r	   T)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}|jjddd
}t|| t ddd	d	g|d}|jjdd	d
}t|| |jjdtjd}t|| d S )Nr   r   r   r   r   r   r	   TFr   r   )	r   r   r   r   r   r   r   rl   r   )r   rX   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 )NrR   r   r]   r   rS   BAD__)r   r   r   r   findallr   r   rW   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 )	NrR   r   Tr]   r$   r%   rS   r   )	r   r   r   r   r'   r   r   r   r   rc   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   r/   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   r/   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   r/   r   r   r   r   r   r    r   1  s     c                 S   s   g | ]}| d ddqS r   r   r   r   r   r    r   7  s     )
r   r   Zint64r   r   r   r   r   Zassert_numpy_array_equalr   r   rX   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 intrr   r   )r   rt   ru   rv   r   r   r   )r   rX   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   r/   r   )	r   r   r   Zfloat64r   r   r   r   r   r   r   r   r    test_find_nanD  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)rw   r   ry   tabler   r   r   r   r    test_translateh  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   )r=   r   r   r   r   r   r    test_translate_mixed_objectt  s
    r   c              	   C   s  dddt jd}t|| d}d}|jj|tjdd}|jd	  d
ddgksPt	|jj
|tjd}|d	 snt	|jj|tjd}|d	 st	|jj|tjd}|d	 d	 dkst	|jj|tjd}|d	 dkst	d}tjt|d |jj|tjd}W 5 Q R X |d	 st	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})T)rj   expandr   davegooglecomr   )r   r   r   r$   zhas match groupsrr   )r   r   r   r   extractrl   r   Ziloctolistr   rs   r   r   countr   r   UserWarningr   )r   rp   r   r   rx   r   r   r    test_flags_kwarg  s*    r   )N);r   rl   numpyr   rt   Zpandaspdr   r   r   r!   r*   r.   markZparametrizeZNAr   r1   r>   r?   rK   rN   rP   rQ   rY   r_   rd   rn   rz   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   
I
,

	 



 
		3
 
&+	$