U
    -e                  
   @   sH  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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.d/ Zejd0dd1d2d3igejd4d2d3dgd2d3d5d6ggd7d8 Zd9d: Zejd0d;d< d=d< d{d>d<gd?d@ Z dAdB Z!dCdD Z"dEdF Z#dGdH Z$dIdJ Z%dKdL Z&ejdMddNdNejgfddNdejgfgdOdP Z'dQdR Z(dSdT Z)dUdV Z*dWdX Z+dYdZ Z,ejdddgd[d\ Z-d]d^ Z.d_d` Z/dadb Z0dcdd Z1dedf Z2dgdh Z3didj Z4dkdl Z5dmdn Z6dodp Z7dqdr Z8dsdt Z9dudv Z:dwdx Z;dydz 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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}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}|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rTt 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_string[pyarrow]zFOO|mmmcase)r   r   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"   g/var/www/html/Darija-Ai-Train/env/lib/python3.8/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 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_categoryq   s    r1   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
   r0   )nullable_string_dtyper   r!   r   r   r   r"   r"   r#   0test_contains_na_kwarg_for_nullable_string_dtype   s    r4   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 5 Q R X 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 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
   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      rA   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"    rB   r   r   )r   Zbazr   r/   
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   rC   r   r   r   expr,   rsZxpr"   r"   r#   test_startswith   s"    &rN   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 NrE   rF   rG   rH   r   r   zrege.r   r   FTr
   )r   r   rJ   r   r   r3   r   r   r   rL   r"   r"   r#   %test_startswith_nullable_string_dtype  s       rQ   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 rD   )r   r   endswithr   r   r   r   r   r   r*   r	   rK   r"   r"   r#   test_endswith&  s"    &rS   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 rO   )r   r   rR   r   r   rP   r"   r"   r#   #test_endswith_nullable_string_dtypeC  s       rT   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 )NrU   r   	foobarBADrV   r:   r'   Tnr   Zfoo__barBADBADFrX   r   r[   r!   r   r"   r"   r#   test_replace_max_replacementsc  s    rb   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(   rV   r:   r   r%   r&   r   )	r   r   r   r   r*   r   rY   r   r   r[   r   r!   r"   r"   r#   test_replace_mixed_objecto  s    &rg   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   rY   reUNICODEr   ra   r"   r"   r#   test_replace_unicodex  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   rY   )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 )NrU   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   rY   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   sb   t dtjg| d}d}tjt|d4 tt| dk |j	j
d|dd W 5 Q R X W 5 Q R X d S )	NrU   r   zO((takes)|(missing)) (?(2)from \d+ to )?\d+ (?(3)required )positional arguments?rv   r   r%   Tr   )r   r   r   rx   ry   rz   r   r   r   r   rY   )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 )N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 )NrU   r   BAD_*r   r:   Tr   rW   r'   r^   r]   r   r   r   rp   compiler   r   r   r   rY   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   rc   rd   Tre   r'   r(   r:   r   r%   r&   r   )rp   r   r   r   r   r   r*   r   rY   r   r   )r   r[   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}tt| dk |jj	|dd	d
}W 5 Q R X t
|| d S )Nrh   ri   r   rj   rk   rn   r   rl   Tr   )r   ro   rp   r   rq   r   r   r   r   rY   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 5 Q R X tjt|d |jj	|dd	dd
 W 5 Q R X tjt|d |jj	|d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:   Trm   Fr   r   )r   r   r   rp   r   rx   ry   
ValueErrorr   rY   
IGNORECASEr   r[   r   r|   r"   r"   r#   "test_replace_compiled_regex_raises  s    
 r   c              	   C   sv   t dtjg| d}dd }td}tt| dk |jj	||ddd	}W 5 Q R X t d
tjg| d}t
|| d S )NrU   r   c                 S   s   |  d S r   r   r   r"   r"   r#   r     r   z6test_replace_compiled_regex_callable.<locals>.<lambda>r   r   r   Tr^   r   r   )r   r[   rs   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   rX   )r   r!   r   r[   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=Falserv   abcFr   )r   rx   ry   r   r   rY   )r   r[   rs   r|   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=Falserv   r:   Fr   )r   rp   r   rx   ry   r   r   rY   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|| 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 )Nr5   r6   r7   r8   r9   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   rY   r   r   r   r   rZ   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 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   rZ   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   rX   )r   r@   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}| rHt 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aabrX   )r   r   r@   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
   rU   r   r   .*(BAD[_]+).*(BAD)TFBAD_BADleroybrown.*BAD[_]+.*BADzBAD[_]+.*BADz^BAD_BADleroybrownz^BAD[_]+.*BADz\^BAD[_]+.*BAD)r   r   r   r   rw   r   r   )r   r    r   r   r!   r"   r"   r#   
test_match  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   rw   
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   rw   r   r   r   r?   r"   r"   r#   test_match_na_kwarg  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}|jd}| dkr.dnd}t dd	tjd	g|d}t|| d S )
NrU   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   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 )NrU   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}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   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 )NrU   r   r`   r   rV   BAD__)r   r   r   r   findallr   r   rZ   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 )	NrU   r   Tr`   r'   r(   rV   r   )	r   r   r   r   r*   r   r   r   r   rf   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>D  s     ztest_find.<locals>.<listcomp>      c                 S   s   g | ]}| d qS r   rfindr   r"   r"   r#   r   J  s     c                 S   s   g | ]}| d dqS r   r2   r   r   r"   r"   r#   r   P  s     c                 S   s   g | ]}| d dqS r   r   r   r"   r"   r#   r   V  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   b  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_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   r2   r   )	r   r   r   Zfloat64r   r   r   r   r   r   r"   r"   r#   test_find_nano  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   )r@   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 groups)rw   Zraise_on_extra_warnings)r   r   r   r   extractrp   r   Ziloctolistr   r   r   r   rw   r   r   countZassert_produces_warningUserWarningr   )r   rt   r   Zusing_pyarrowr   r|   r"   r"   r#   test_flags_kwarg  s8      r   )N)=r   rp   numpyr   rx   Zpandas.errorsr   Zpandaspdr   r   r   r$   r-   r1   markZparametrizeZNAr   r4   rA   rB   rN   rQ   rS   rT   r\   rb   rg   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   
L
2

	
 

 
		9
 
&+	$