o
    vh                  
   @   s  d dl m Z  d dlZd dlZd dlZd dlm  mZ d dl	Z
d dl	mZm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dd Zejd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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/d0 Z"d1d2 Z#d3d4 Z$ejd5dd6d7d8igejd9g d:g d;gd<d= Z%d>d? Z&ejd5d@dA dBdA ddCdAgdDdE Z'dFdG Z(dHdI Z)dJdK Z*dLdM Z+dNdO Z,dPdQ Z-ejdRddSdSejgfddSdejgfgdTdU Z.dVdW Z/dXdY Z0dZd[ Z1d\d] Z2d^d_ Z3ejdddgd`da Z4dbdc Z5ddde Z6dfdg Z7dhdi Z8djdk Z9dldm Z:dndo Z;dpdq Z<drds Z=dtdu Z>dvdw Z?dxdy Z@dzd{ ZAejd|dejBdeCd}d~gdd ZDdd ZEdd ZFdS )    )datetimeN)Series_testing)_convert_na_valueis_object_or_nan_string_dtypec                 C   s  t jdt jdddgt jd}t|| d}d}|j|}| dkr)tg dtd}nt| r/d	nd
}tt jdt jdddgt jd|d}t	
|| |jj|dd}| dkr^tg dtd}ntt jdt jdddgt jd|d}t	
|| tt jg dtd| d}|j|}t| rt jnd
}tt g d|d}t	
|| tt jg dtd| d}|jjddd}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
tg dtd}nt| rd	nd
}tt jdt jddgt jd|d}t	
|| |jj|dd}t| 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[_]+str)FFTTFobjectbooleanFTregex)FFFFT)r   xyzr   r	   )FFTT)FooxYzfOOomMm__fOoMMM_zFOO|mmmcase)TFTT)r   r   )TFTFna)nparraynanobject_r   r   containsboolr   tmassert_series_equalr   bool_)any_string_dtypevaluespatresultexpectedexpected_dtype r)   d/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/pandas/tests/strings/test_find_replace.pytest_contains   s   
r+   c                  C   sv   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d 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_mixedv   s   r4   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_category   s   r7   zna, expected)TT)FF)r   F)   Tr   TFc                 C   s   t ddddtjg| d}d}d }t|st|tst}tj	||d |j
jd||d}W d    n1 s7w   Y  t dd	d	d|gd
d}t|| d S )Nr,   r-   r5   r
   ]Allowing a non-bool 'na' in obj.str.contains is deprecated and will raise in a future versionmatch)r   r   TFr   )r   r   r   pdisna
isinstancer   FutureWarningr    assert_produces_warningr   r   r!   )nullable_string_dtyper   r'   r   r$   msgwarnr&   r)   r)   r*   0test_contains_na_kwarg_for_nullable_string_dtype   s   rD   c                 C   sn  t ddddddtjddd	g
| d
}|jd}| dkr t}d}nt| r&dnd}tj}t dddddd|dddg
|d
}t|| |jjddd}t dddddd|dddg
|d
}t|| |jd}t dddddd|dddg
|d
}t|| |jd}t dddddd|dddg
|d
}t|| |jjddd}t dddddd|dddg
|d
}t|| d S )NABCAabaBaca CABAdogcatr
   r,   r   Fr   r   Tr   Aaba)	r   r   r   r   r   r   r   r    r!   )r#   sr&   r(   na_valuer'   r)   r)   r*   test_contains_moar   sP   rR   c                 C   s  t tjtjtjg| d}|jjddd}t| rtjnd}t g d|d}t|| |jjddd}t g d|d}t|| t	| d	rQ| j
d
krQ| jtju sd}tjt|d |jjddd}W d    n1 smw   Y  | dkrt g dtjd}n| jtju rt g dtjd}nt g ddd}t|| |jd}| dkrt g dtd}nt| rdnd}t tjtjtjg|d}t|| d S )Nr
   r   Fr   r   )FFFT)TTTstoragepythonr9   r:   r   )r   r   r   r   )r   r   r   r   r   r   r"   r    r!   hasattrrS   rQ   r@   r?   r   r   )r#   rP   r&   r(   r'   rB   r)   r)   r*   test_contains_nan   s>   
rV   c                 C   s   |dkr|j tju r|jdkr| tjjdd tdtjdddtjd	g|d
}d}t	j
t|d |jjddd W d    n1 sDw   Y  d}t	j
t|d |jjddd W d    d S 1 sfw   Y  d S )NstringrT   zTODO(infer_string))reasonomfoo_nomnombar_foor   r
   z<Allowing a non-bool 'na' in obj.str.startswith is deprecatedr:   kapowbazr   z:Allowing a non-bool 'na' in obj.str.endswith is deprecatedbar)rQ   r   r   rS   applymarkerpytestmarkxfailr   r    r@   r?   r   
startswithendswith)requestr#   serrB   r)   r)   r*   $test_startswith_endswith_validate_na*  s    
"rh   z4ignore:Downcasting object dtype arrays:FutureWarningr%   r   )r   r^   r   r   r6   
null_valuer   c              
   C   sB  t d|ddd|dg|d}|j| }t dtjdddtjdg}|d	kr/|tju r/||}n|d	kr>|d u r>d || < n|rL|d
krL|d	t
}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d tjtjg	}
t|	|
 d S NrY   rZ   r[   r\   r   r
   FTr   r6   r   r,   r-   r.   r/   f)r   r   rd   r   r   r<   NAfillnar=   astyper   r    r!   r   r   r1   r   r%   r   ri   r   using_infer_stringr$   r&   expr3   rsxpr)   r)   r*   test_startswith?  s.   $rt   )NTFc              
   C   s   t g d| d}|jjd|d}t| r|d u rtntnd}| dkr*t}|d u r*d}t d|ddd|dddg	|d}t|| |jjd	|d}t d|ddd|dddg	|d}t|| d S 
N)	rY   NrZ   r[   r\   Nr   r   rege.r
   r   r   r   r   FTrv   )r   r   rd   r   r   r   r    r!   r#   r   r$   r&   r(   rq   r)   r)   r*   test_startswith_string_dtyped  s,   rx   c              
   C   s@  t d|ddd|dg|d}|j| }t dtjdddtjdg}|d	kr/|tju r/||}n|d	kr>|d u r>d || < n|rL|d
krL|d	t
}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d tjtjg	}
t|	|
 d S rj   )r   r   re   r   r   r<   rl   rm   r=   rn   r   r    r!   r   r   r1   r   ro   r)   r)   r*   test_endswith  s.   $ry   c              
   C   s   t g d| d}|jjd|d}t| r|d u rtntnd}| dkr*t}|d u r*d}t d|ddd|dddg	|d}t|| |jjd	|d}t d|ddd|dddg	|d}t|| d S ru   )r   r   re   r   r   r   r    r!   rw   r)   r)   r*   test_endswith_string_dtype  s,   rz   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[_]*rJ   Tr   foobarr   r   r   r   replacer    r!   r#   rg   r&   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 )Nr{   r
   	foobarBADr|   rJ   r.   Tnr   foo__barBADBADFr~   r#   rg   r'   r&   r)   r)   r*   test_replace_max_replacements  s   r   c               
   C   sn   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d tjtjg	td}t	|| d S )NaBADbBADTfooBADr.   r/   r|   rJ   r   r,   r-   r   r
   )
r   r   r   r   r1   r   r   r   r    r!   rg   r&   r'   r)   r)   r*   test_replace_mixed_object  s    r   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   r   reUNICODEr    r!   r   r)   r)   r*   test_replace_unicode  s   r   replr8   r,   r-   data)r,   r-   N)r,   r-   r5   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
   r:   r,   )ra   raises	TypeErrorr   r   )r#   index_or_seriesr   r   rB   objr)   r)   r*   #test_replace_wrong_repl_type_raises  s
   "r   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 )
Nr{   r
   c                 S      |  d S Nr   groupswapcasemr)   r)   r*   <lambda>      z'test_replace_callable.<locals>.<lambda>[a-z][A-Z]{2}   Tr   foObaD__baRbaDr~   )r#   rg   r   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 |jjd|dd W d    d S 1 s'w   Y  d S )Nr{   r
   zO((takes)|(missing)) (?(2)from \d+ to )?\d+ (?(3)required )positional arguments?r:   r,   Tr   )r   r   r   ra   r   r   r   r   )r#   r   r$   rB   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   r   )Nmiddler   r   r)   r)   r*   r     r   z4test_replace_callable_named_groups.<locals>.<lambda>Tr   bARr~   )r#   rg   r%   r   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 )Nr{   r
   BAD_*rJ   Tr   r}   r.   r   r   	r   r   r   r   compiler   r   r    r!   )r#   rg   r%   r&   r'   r)   r)   r*   test_replace_compiled_regex#  s   
r   c               
   C   sx   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d tjtjg	t	d}t
|| d S )Nr   r   r   Tr   r.   r/   rJ   r   r,   r-   r   r
   )r   r   r   r   r   r   r1   r   r   r   r    r!   )r%   rg   r&   r'   r)   r)   r*   (test_replace_compiled_regex_mixed_object2  s   
 r   c                 C   sZ   t ddg| d}t ddg| d}tjdtjd}|jj|ddd	}t|| d S )
Nr   r   r
   r   r   r   r   Tr   )	r   r   r   r   r   r   r   r    r!   )r#   rg   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 )NfooBAD__barBAD__badr
   r   z9case and flags cannot be set when pat is a compiled regexr:   rJ   Tr   Fr   r   )r   r   r   r   r   ra   r   
ValueErrorr   r   
IGNORECASEr#   rg   r%   rB   r)   r)   r*   "test_replace_compiled_regex_raisesF  s   
"r   c                 C   sZ   t dtjg| d}dd }td}|jj||ddd}t d	tjg| d}t|| d S )
Nr{   r
   c                 S   r   r   r   r   r)   r)   r*   r   [  r   z6test_replace_compiled_regex_callable.<locals>.<lambda>r   r   Tr   r   r   )r#   rg   r   r%   r&   r'   r)   r)   r*   $test_replace_compiled_regex_callableX  s   
r   zregex,expected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.rO   r   r~   )r   r'   r#   rg   r&   r)   r)   r*   test_replace_literalb  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   o  r   z6test_replace_literal_callable_raises.<locals>.<lambda>z2Cannot use a callable replacement when regex=Falser:   abcFr   )r   ra   r   r   r   r   )r#   rg   r   rB   r)   r)   r*   $test_replace_literal_callable_raisesm  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=Falser:   rJ   Fr   )r   r   r   ra   r   r   r   r   r   r)   r)   r*   $test_replace_literal_compiled_raisesv  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 )NrE   rF   rG   rH   rI   rJ   rK   rL   rM   r
   YYYYYYabaCYYYBYYYFr   
YYYYYYbYYYBYYYcYYYcYYYtz^.a|dogzXX-XX Tr   zXX-XX bazXX-XX cazXX-XX BAzXX-XX tr~   r   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.Ababr
   r,   r5   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}|jjdddd}t dddtjdg| d}t|| d S )	Nr,   r-   acrJ   r
   z^.$Tr   r~   )r#   rP   r&   r'   r)   r)   r*   test_replace_regex  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-   rJ   r
   r,   r   aaaaabr~   )r   r#   rP   r&   r'   r)   r)   r*   #test_replace_regex_single_character  s   r   c                 C   sF  | dkr	t }d}nt| rdnd}tj}tdtjdg| d}|jd}td	|dg|d}t|| tdd
tjdg| d}|jd}td	d	|dg|d}t|| |jd}tdd	|dg|d}t|| tddtjdg| d}|jd}tdd|dg|d}t|| |jd}tdd	|dg|d}t|| d S )Nr   Fr   r   r{   r   r
   .*(BAD[_]+).*(BAD)TBAD_BADleroybrown.*BAD[_]+.*BADzBAD[_]+.*BADz^BAD_BADleroybrownz^BAD[_]+.*BADz\^BAD[_]+.*BAD)	r   r   r   r   r   r   r;   r    r!   )r#   r(   rQ   r$   r&   r'   r)   r)   r*   
test_match  s8   r   c               
   C   sr   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d tjtjg	}t|t s1J t	|| d S )	NaBAD_BAD	BAD_b_BADTr   r.   r/   r   F)
r   r   r   r   r1   r   r;   r>   r    r!   r2   r)   r)   r*   test_match_mixed_object  s    $r   c                 C   s   t ddtjg| d}|jjddd}t| rtjnd}t g d|d}t|| |jd}| dkr8t	}d}nt| r>d	nd}tj}t d
d|g|d}t|| d S )Nr,   r-   r
   Fr   r   )TFFr   r   T)
r   r   r   r   r;   r   r"   r    r!   r   )r#   rP   r&   r(   r'   rQ   r)   r)   r*   test_match_na_kwarg  s   r   c                 C   sR   t g d| d}|jjddd}t| rtjnd}t g d|d}t|| d S )Nr   ABr   ABCr
   r   Fr   r   )TTTT)r   r   r;   r   r   r"   r    r!   )r#   r$   r&   r(   r'   r)   r)   r*   test_match_case_kwarg/  s   r   c                 C   sr   t ddtjdg| d}|jd}| dkrt g dtd}nt| r$dnd	}t d
dtjdg|d}t|| d S )Nr{   r   r   r
   r   r   TFFFr   r   TF	r   r   r   r   	fullmatchr   r   r    r!   r#   rg   r&   r'   r(   r)   r)   r*   test_fullmatch>  s   r   c                 C   sr   t ddtjdg| d}|jd}| dkrt g dtd}nt| r$dnd	}t d
d
tjdg|d}t|| d S )Nr   zfoo$foozfoo$r
   zfoo\$r   )FFFTr   r   FTr   r   r)   r)   r*   test_fullmatch_dollar_literalO  s   r   c                 C   sX   t ddtjdg| d}|jjddd}t| rtjnd}t g d	|d}t|| d S )
Nr{   r   r   r
   r   Fr   r   r   )	r   r   r   r   r   r   r"   r    r!   )r#   rg   r&   r(   r'   r)   r)   r*   test_fullmatch_na_kwarg^  s   r   c                 C   s   t g d| d}t| rtjnd}t g d|d}|jjddd}t|| t g d|d}|jjdd	d}t|| |jjdtj	d
}t|| d S )Nr   r
   r   r   r   Tr   )TTFFFr   )
r   r   r   r"   r   r   r    r!   r   r   )r#   rg   r(   r'   r&   r)   r)   r*   test_fullmatch_case_kwargj  s   r   c                 C   sT   t dtjddg| d}|jd}t ddgtjg dgg}t||}t|| d S )Nr{   r   r   r
   r|   BAD__)r   r   r   r   findallr   r    r!   r   r)   r)   r*   test_findall  s
   
r   c               
   C   sf   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d tjtjg	}t|| d S )	Nr{   r   Tr   r.   r/   r|   r   )	r   r   r   r   r1   r   r   r    r!   r   r)   r)   r*   test_findall_mixed_object  s4   r   c                 C   sr  t g d| d}t| 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)ABCDEFGBCDEFEF	DEFGHIJEFEFGHEFXXXXr
   Int64EF)   r8   r.   r   c                 S      g | ]}| d qS r   find.0vr)   r)   r*   
<listcomp>      ztest_find.<locals>.<listcomp>)r         r   r   c                 S   r   r   rfindr   r)   r)   r*   r    r  r8   )r   r8   r  r   r   c                 S      g | ]}| d dqS r   r8   r   r   r)   r)   r*   r        c                 S   r	  r
  r  r   r)   r)   r*   r    r     )r   r8   r   r   r   c                 S      g | ]	}| d ddqS r   r8   r  r   r   r)   r)   r*   r        c                 S   r  r  r  r   r)   r)   r*   r    r  )r   r   r   int64r   r   r    r!   r   assert_numpy_array_equalr  r#   rg   r(   r&   r'   r)   r)   r*   	test_find  sF         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 intr:   r   )r   ra   r   r   r   r   r  )r#   rg   r)   r)   r*   test_find_bad_arg_raises  s   "r  c                 C   sh  t dtjdtjdg| d}t| 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  r8   r  )
r   r   r   r   float64r   r   r    r!   r  r  r)   r)   r*   test_find_nan  s.   r  infer_stringpyarrow)marksc                 C   sH   | g d|d}t dd}|j |}| g d|d}t|| d S )N)abcdefgabcccdddfgcdefgggr
   r   cde)cdedefgcdeeedddfgedefggg)r   	maketrans	translater    assert_equal)r   r#   r  r   tabler&   r'   r)   r)   r*   test_translate  s   r'  c                  C   sJ   t g d} tdd}t dddtjgtd}| j|}t|| d S )N)r,   r-   r5   g333333?r   r  r5   der
   )	r   r   r#  r   r   r   r$  r    r!   )rP   r&  r'   r&   r)   r)   r*   test_translate_mixed_object  s
   r*  c                 C   s0  dddt jd}t|| d}d}|jj|tjdd}|jd	  g d
ks'J |jj	|tjd}|jd	 s7J |jj
|tjd}|jd	 sGJ |jj|tjd}|jd	 d	 d
ks[J |jj|tjd}|jd	 dksmJ d}tjt|d |jj|tjd}W d    n1 sw   Y  |jd	 sJ d S )Nzdave@google.comzsteve@gmail.comzrob@gmail.com)DaveSteveRobWesr
   z,([A-Z0-9._%+-]+)@([A-Z0-9.-]+)\.([A-Z]{2,4})T)r   expandr   )davegooglecomr   r.   zhas match groupsr:   )r   r   r   r   extractr   r   iloctolistr;   r   r   countr    r@   UserWarningr   )r#   r   r%   r&   rB   r)   r)   r*   test_flags_kwarg(  s,   r8  r   )Gr   r   numpyr   ra   pandas.util._test_decoratorsutil_test_decoratorstdpandasr<   r   r   r    pandas.tests.stringsr   r   r+   r4   r7   rb   parametrizerl   r   rD   rR   rV   rh   filterwarningsrt   rx   ry   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  param
skip_if_nor'  r*  r8  r)   r)   r)   r*   <module>   s    
^
47
 

" 
!


 
		3
'&-	&
