o
    d                  
   @   s>  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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g d"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g d"d'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zejd1dd2d3d4igejd5g d6g d7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gd\d] Z-d^d_ Z.d`da Z/dbdc Z0ddde Z1dfdg Z2dhdi Z3djdk Z4dldm Z5dndo Z6dpdq Z7drds Z8dtdu Z9dvdw Z:dxdy Z;dzd{ Z<dS )}    )datetimeN)PerformanceWarning)Series_testingc                 C   s  t jdt jdddgt jd}t|| d}d}|j|}| dkr"d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g dt	d| d}|j|}| dkrvt j
nd}tt g d|d}t|| tt jg dt	d| d}tt| dk |jjdd	d}W d    n1 sw   Y  tt g d|d}t|| |jjdd	d	d}tt g d|d}t|| tt jdt jddgt jd| d}d}|j|}| dkrdnd}tt jd	t jd
d
gt jd|d}t|| |jj|d	d}| dkr*t j
nd}tt g d|d}t|| tt jg dt jd| d}|j|}tt g d|d}t|| d S )Nfoofooommm__foommm_zfoommm[_]+bardtypezmmm[_]+objectbooleanFTregex)r   Zxyzr   r   )FFTT)ZFooZxYzZfOOomMm__fOoZMMM_string[pyarrow]zFOO|mmmcase)TFTT)r   r   )TFTFna)nparraynanobject_r   strcontainstmassert_series_equalr   bool_maybe_produces_warningr   )any_string_dtypevaluespatresultexpected_dtypeexpected r$   Z/app/.heroku/python/lib/python3.10/site-packages/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_mixed`   s    r/   c                  C   s   t ddddtjgdd} | jjddd}t g d}t|| | jjdd	d}t g d
}t|| t ddddtjg} | jjddd}t g d}t|| | jjdd	d}t g d
}t|| d S )Nr'   r(   ccategoryr	   Tr   )TFFTTF)TFFTFr   r   r   r   r   r   r   )r   r!   r#   r$   r$   r%   *test_contains_na_kwarg_for_object_categoryq   s   r3   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(   r0   r	   )r   r   TFr   r2   )nullable_string_dtyper   r#   r   r   r!   r$   r$   r%   0test_contains_na_kwarg_for_nullable_string_dtype   s   r6   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|| tt| dk |jjddd}W d    n1 sQw   Y  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|| tt| dk |jjddd}W d    n1 sw   Y  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   r   ZAaba)	r   r   r   r   r   r   r   r   r   r   sr!   r"   r#   r$   r$   r%   test_contains_moar   sV   rC   c                 C   s  t tjtjtjg| d}|jjddd}| dkrtjnd}t g d|d}t|| |jjddd}t g d	|d}t|| |jjddd}| dkrWt g d
tjd}nt g d	dd}t|| |jd}| dkrqdnd}t tjtjtjg|d}t|| d S )Nr	   r   Fr   r   r   )FFFT)TTT)r   r   r   )	r   r   r   r   r   r   r   r   r   rA   r$   r$   r%   test_contains_nan   s"   rD   r    r   )r   Zbazr
   r1   
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
   rE   r   r   r!   expr.   rsZxpr$   r$   r%   test_startswith   s"   &rP   )NTFc              
   C   s   t g d| 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 	N)	rG   NrH   rI   rJ   Nr   r   rege.r	   r   r   FTr   rR   )r   r   rL   r   r   r5   r   r   r!   rN   r$   r$   r%   %test_startswith_nullable_string_dtype     rT   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 rF   )r   r   endswithr   r   r   r   r   r   r,   r   rM   r$   r$   r%   test_endswith&  s"   &rW   c              
   C   s   t g d| 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 rQ   )r   r   rV   r   r   rS   r$   r$   r%   #test_endswith_nullable_string_dtypeC  rU   rX   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[_]*r<   Tr   foobarr   r   r   r   replacer   r   r   serr!   r#   r$   r$   r%   test_replace[  s   r`   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 )NrY   r	   	foobarBADrZ   r<   r)   Tnr   Zfoo__barBADBADFr\   r   r_   r#   r!   r$   r$   r%   test_replace_max_replacementsc  s   rf   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*   rZ   r<   r   r'   r(   r   )	r   r   r   r   r,   r   r]   r   r   r_   r!   r#   r$   r$   r%   test_replace_mixed_objecto  s   &rk   c                 C   s~   t ddg| d}t ddg| d}tt| dk |jjddtjdd	}W d    n1 s2w   Y  t	|| d S )
N   abcd,àutf-8r	      abcd, àr   (?<=\w),(?=\w), Tflagsr   )
r   decoder   r   r   r   r]   reUNICODEr   re   r$   r$   r%   test_replace_unicodex  s   rv   replr4   r'   r(   data)r'   r(   N)r'   r(   r0   adc                 C   sR   d}||| d}t jt|d |jd| W d    d S 1 s"w   Y  d S )Nz!repl must be a string or callabler	   matchr'   )pytestraises	TypeErrorr   r]   )r   index_or_seriesrw   rx   msgobjr$   r$   r%   #test_replace_wrong_repl_type_raises  s
   "r   c                 C   s   t dtjg| d}dd }tt| dk |jjd|ddd	}W d    n1 s*w   Y  t d
tjg| d}t|| d S )NrY   r	   c                 S      |  d S Nr   groupswapcasemr$   r$   r%   <lambda>      z'test_replace_callable.<locals>.<lambda>r   [a-z][A-Z]{2}   Trb   foObaD__baRbaD	r   r   r   r   r   r   r   r]   r   )r   r_   rw   r!   r#   r$   r$   r%   test_replace_callable  s   r   c                   C      d S Nr$   r$   r$   r$   r%   r         r   c                 C   r   r   r$   )r   xr$   r$   r%   r     r   c                 C   r   r   r$   )r   r   yr$   r$   r%   r     r   c              	   C   s   t dtjg| d}d}tjt|d2 tt| dk |j	j
d|dd W d    n1 s/w   Y  W d    d S W d    d S 1 sGw   Y  d S )	NrY   r	   zO((takes)|(missing)) (?(2)from \d+ to )?\d+ (?(3)required )positional arguments?rz   r   r'   Tr   )r   r   r   r|   r}   r~   r   r   r   r   r]   )r   rw   r   r   r$   r$   r%   test_replace_callable_raises  s   "r   c                 C   s   t dtjg| d}d}dd }tt| dk |jj||dd}W d    n1 s+w   Y  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   r   )Nmiddler   r   r$   r$   r%   r     r   z4test_replace_callable_named_groups.<locals>.<lambda>r   Tr   ZbARr   )r   r_   r    rw   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 d    n1 s*w   Y  t dtjg| d}t
|| tt| dk |jj	|dd	dd
}W d    n1 s[w   Y  t dtjg| d}t
|| d S )NrY   r	   BAD_*r   r<   Tr   r[   r)   rb   ra   r   r   r   rt   compiler   r   r   r   r]   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   rg   rh   Tri   r)   r*   r<   r   r'   r(   r   )rt   r   r   r   r   r   r,   r   r]   r   r   )r    r_   r!   r#   r$   r$   r%   (test_replace_compiled_regex_mixed_object  s   
&r   c                 C   s   t ddg| d}t ddg| d}tjdtjd}tt| dk |jj	|dd	d
}W d    n1 s8w   Y  t
|| d S )Nrl   rm   r	   rn   ro   rr   r   rp   Tr   )r   rs   rt   r   ru   r   r   r   r   r]   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d W d    n1 s-w   Y  tjt|d |jj	|dd	dd
 W d    n1 sNw   Y  tjt|d |jj	|dddd
 W d    d S 1 spw   Y  d S )NZfooBAD__barBAD__badr	   r   z9case and flags cannot be set when pat is a compiled regexrz   r<   Trq   Fr   r   )r   r   r   rt   r   r|   r}   
ValueErrorr   r]   
IGNORECASEr   r_   r    r   r$   r$   r%   "test_replace_compiled_regex_raises  s   
"r   c                 C   s   t dtjg| d}dd }td}tt| dk |jj	||ddd	}W d    n1 s/w   Y  t d
tjg| d}t
|| d S )NrY   r	   c                 S   r   r   r   r   r$   r$   r%   r     r   z6test_replace_compiled_regex_callable.<locals>.<lambda>r   r   r   Trb   r   r   )r   r_   rw   r    r!   r#   r$   r$   r%   $test_replace_compiled_regex_callable  s   
r   zregex,expectedZbaoc                 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   r\   )r   r#   r   r_   r!   r$   r$   r%   test_replace_literal  s   r   c                 C   s^   t g | d}dd }d}tjt|d |jjd|dd W d    d S 1 s(w   Y  d S )	Nr	   c                 S   r   r   r   r   r$   r$   r%   r     r   z6test_replace_literal_callable_raises.<locals>.<lambda>z2Cannot use a callable replacement when regex=Falserz   abcFr   )r   r|   r}   r   r   r]   )r   r_   rw   r   r$   r$   r%   $test_replace_literal_callable_raises  s   "r   c                 C   s`   t g | d}td}d}tjt|d |jj|ddd W d    d S 1 s)w   Y  d S )Nr	   r   zCCannot use a compiled regex as replacement pattern with regex=Falserz   r<   Fr   )r   rt   r   r|   r}   r   r   r]   r   r$   r$   r%   $test_replace_literal_compiled_raises  s   
"r   c                 C   sD  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|| tt| dk |jjdddd}W d    n1 sKw   Y  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 d    n1 sw   Y  t ddddddtjdddg
| d
}t|| d S )Nr7   r8   r9   r:   r;   r<   r=   r>   r?   r	   ZYYYZYYYabaZCYYYBYYYr   Fr   Z
YYYYYYbYYYZBYYYcYYYZcYYYtz^.a|dogzXX-XX Tr   zXX-XX bazXX-XX cazXX-XX BAzXX-XX t)	r   r   r   r   r]   r   r   r   r   r^   r$   r$   r%   test_replace_moar   sd   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 d    n1 s)w   Y  t ddddtjg| d}t|| tt| dk |jjddd	d	d
}W d    n1 s]w   Y  t ddddtjg| d}t|| d S )NzA.za.ZAbabr	   r   r'   r0   Fr   zc.cbr   r^   r$   r$   r%   )test_replace_not_case_sensitive_not_regexY  s   r   c                 C   sR   t dddtjdg| d}|jjdddd}t dddtjdg| d}t|| d S )	Nr'   r(   acr<   r	   z^.$Tr   r\   )r   rB   r!   r#   r$   r$   r%   test_replace_regexl  s   r   c                 C   sp   t dddtjdg|d}|jjdd| d}| r$t dddtjdg|d}nt d	ddtjdg|d}t|| d S )
Nza.b.r(   r<   r	   r'   r   ZaaaZaabr\   )r   r   rB   r!   r#   r$   r$   r%   #test_replace_regex_single_charactert  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   rY   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   r"   r   r!   r#   r$   r$   r%   
test_match  s.   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 s2J t	|| d S )	NZaBAD_BADZ	BAD_b_BADTr   r)   r*   r   F)
r   r   r   r   r,   r   r{   
isinstancer   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rtjnd}t g d|d}t|| |jd}| dkr5dnd}t d	dtjg|d}t|| d S )
Nr'   r(   r	   Fr   r   r   )TFFT)r   r   r   r   r{   r   r   r   rA   r$   r$   r%   test_match_na_kwarg  s   r   c                 C   s   t g d| d}tt| dk |jjddd}W d    n1 s#w   Y  | dkr/tjnd}t g d	|d}t|| d S )
Nr   ZABr   ABCr	   r   r   Fr   r   r   )TTTT)	r   r   r   r   r   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 )
NrY   r   r   r	   r   r   r   TF)r   r   r   r   	fullmatchr   r   r   r_   r!   r"   r#   r$   r$   r%   test_fullmatch  s   r   c                 C   sX   t ddtjdg| d}|jjddd}| dkrtjnd	}t g d
|d}t|| d S )NrY   r   r   r	   r   Fr   r   r   TFFF)r   r   r   r   r   r   r   r   r   r$   r$   r%   test_fullmatch_na_kwarg  s   r   c                 C   s   t g d| d}| dkrtjnd}t g d|d}|jjddd}t|| t g d	|d}tt| d
k |jjddd}W d    n1 sJw   Y  t|| tt| d
k |jjdt	j
d}W d    n1 sqw   Y  t|| d S )Nr   r	   r   r   r   r   Tr   )TTFFr   Fr   )r   r   r   r   r   r   r   r   r   rt   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 )NrY   r   rd   r	   rZ   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 )	NrY   r   Trd   r)   r*   rZ   r   )	r   r   r   r   r,   r   r   r   r   rj   r$   r$   r%   test_findall_mixed_object  s4   r   c                 C   sr  t g d| d}| dkrtjnd}|jd}t g d|d}t|| tjdd t|D tjd}ttj|tjd| |j	d}t g d	|d}t|| tjd
d t|D tjd}ttj|tjd| |jdd}t g d|d}t|| tjdd t|D tjd}ttj|tjd| |j	dd}t g d	|d}t|| tjdd t|D tjd}ttj|tjd| |jddd}t g d|d}t|| tjdd t|D tjd}ttj|tjd| |j	ddd}t g d|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)   r4   r)   r   c                 S      g | ]}| d qS r   find.0vr$   r$   r%   
<listcomp>D      ztest_find.<locals>.<listcomp>)r         r   r   c                 S   r   r   rfindr   r$   r$   r%   r   J  r   r4   )r   r4   r   r   r   c                 S      g | ]}| d dqS r   r4   r   r   r$   r$   r%   r   P      c                 S   r   r   r   r   r$   r$   r%   r   V  r      )r   r4   r   r   r   c                 S      g | ]	}| d ddqS r   r4   r   r   r   r$   r$   r%   r   \      c                 S   r   r   r   r   r$   r$   r%   r   b  r   )
r   r   Zint64r   r   r   r   r   Zassert_numpy_array_equalr   r   r_   r"   r!   r#   r$   r$   r%   	test_find;  sD         r   c                 C   s   t g | d}tjtdd |jd W d    n1 sw   Y  tjtdd |jd W d    d S 1 s<w   Y  d S )Nr	   z!expected a string object, not intrz   r   )r   r|   r}   r~   r   r   r   )r   r_   r$   r$   r%   test_find_bad_arg_raisesf  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   r4   r   )	r   r   r   Zfloat64r   r   r   r   r   r   r$   r$   r%   test_find_nano  s,   r   c                 C   sH   | g d|d}t dd}|j |}| g d|d}t|| d S )N)ZabcdefgZabccZcdddfgZcdefgggr	   r   cde)ZcdedefgZcdeeZedddfgZedefggg)r   	maketrans	translater   Zassert_equal)r   r   r   tabler!   r#   r$   r$   r%   test_translate  s   r   c                  C   sF   t g d} tdd}t dddtjg}| j|}t|| d S )N)r'   r(   r0   g333333?r   r   r0   de)r   r   r   r   r   r   r   r   )rB   r   r#   r!   r$   r$   r%   test_translate_mixed_object  s
   r   c                 C   s  dddt jd}t|| d}d}| dk}|jj|tjdd	}|jd
  g dks+J t	
t| |jj|tjd}W d    n1 sEw   Y  |d
 sPJ t	
t| |jj|tjd}W d    n1 sjw   Y  |d
 suJ |jj|tjd}|d
 d
 dksJ |jj|tjd}|d
 dksJ d}t	jt|| d |jj|tjd}W d    n1 sw   Y  |d
 sJ 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)rr   expandr   )ZdaveZgooglecomr   r)   zhas match groups)r{   Zraise_on_extra_warnings)r   r   r   r   extractrt   r   Ziloctolistr   r   r   r{   r   r   countZassert_produces_warningUserWarningr   )r   rx   r    Zusing_pyarrowr!   r   r$   r$   r%   test_flags_kwarg  s:   r   r   )=r   rt   numpyr   r|   Zpandas.errorsr   Zpandaspdr   r   r   r&   r/   r3   markZparametrizeZNAr   r6   rC   rD   rP   rT   rW   rX   r`   rf   rk   rv   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    
L
2

	


 
		9
 
&+	$