o
    _~#g_g                     @   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mZm	Z	m
Z
mZmZ dd Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zej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.gfd/d d.gfgd0d1 Z"d2d3 Z#d4d5 Z$ejd6g d7fg d8fg d9fg d:fg d;d7fg d;d:fg d;d9fg d;d:fgd<d= Z%d>d? Z&d@dA Z'dBdC Z(dDdE Z)dFdG Z*dHdI Z+dS )J    )datetimeN)
ArrowDtype)	DataFrameIndex
MultiIndexSeries_testingc                 C   sX   t dtjdg| d}tjtdd |jjdd d W d    d S 1 s%w   Y  d S )NfooBAD__barBADfoodtypezexpand must be True or Falsematch.*(BAD[_]+).*(BAD)expand)r   npnanpytestraises
ValueErrorstrextract)any_string_dtypevalues r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/strings/test_extract.py+test_extract_expand_kwarg_wrong_type_raises   s   "r   c                 C   s   t dtjdg| d}tdtjtjg| d}|jd}t|| |jjddd}t|| tddgtjtjgtjtjgg| d}|jjd	d
d}t|| d S )Nr	   r
   r   BAD__z.*(BAD[_]+).*Tr   BADr   F)r   r   r   r   r   r   tmassert_frame_equal)r   sexpectedresultr   r   r   test_extract_expand_kwarg   s   r%   c               
   C   s   t dtjddt dd ddg	} | jjddd	}tjtjg}td
dg|d
dg||||||g	td}t	
|| | jjddd	}t d
tjd
tjtjtjd tjtjg	td}t	|| d S )NaBAD_BAD	BAD_b_BADTr
             @r   Fr   BAD_r   r   z.*(BAD[_]+).*BAD)r   r   r   r   todayr   r   r   objectr    r!   assert_series_equal)serr$   err#   r   r   r   &test_extract_expand_False_mixed_object*   s    r0   c                  C   sT   t g d} d}tjt|d | jjddd W d    d S 1 s#w   Y  d S )N)A1A2A3A4B5z,only one regex group is supported with Indexr   ([AB])([123])Fr   )r   r   r   r   r   r   )idxmsgr   r   r    test_extract_expand_index_raises@   s
   "r9   c                 C      | g d|d}d}t jt|d |jjddd W d    n1 s$w   Y  t jt|d |jjddd W d    d S 1 sDw   Y  d S )	Nr1   B2C3r   "pattern contains no capture groupsr   
[ABC][123]Fr   
(?:[AB]).*r   r   r   r   r   index_or_seriesr   s_or_idxr8   r   r   r   ,test_extract_expand_no_capture_groups_raisesJ   s   "rE   c                 C   sZ   | ddg|d}|j jddd}| ddgd|d	}| tkr%t|| d S t|| d S )
Nr1   r2   r   (?P<uno>A)\dFr   Aunonamer   )r   r   r   r    r-   assert_index_equalrC   r   rD   r$   r#   r   r   r   (test_extract_expand_single_capture_groupW   s   rM   c                 C   s  t g d| d}|jjddd}t tjtjtjg| d}t|| |jjddd}ttjtjgtjtjgtjtjgg| d}t|| |jjddd}t dd	tjg| d}t|| |jjd
dd}tddgd	dgtjtjgg| d}t|| |jjddd}t dd	tjgd| d}t|| |jjddd}tddgd	dgtjtjggddg| d}t|| |jjddd}tddgd	dgtjtjggddg| d}t|| |jjddd}t dd	tjg| d}t|| t g d| d}|jjddd}tddgd	dgtjtjgg| d}t|| t g d| d}|jjddd}tddgd	dgtjdggddg| d}t|| t g d| d}|jjddd}tddgd	dgdtjggddg| d}t|| d S )Nr;   r   (_)Fr   (_)(_)([AB])[123]rG   Br6   12(?P<letter>[AB])letterrI   !(?P<letter>[AB])(?P<number>[123])numbercolumnsr   ([AB])(?P<number>[123])r   ([AB])(?:[123])A11B22C33([AB])([123])(?:[123])r1   r<   3"(?P<letter>[AB])?(?P<number>[123])rb   r1   r<   C#(?P<letter>[ABC])(?P<number>[123])?re   )	r   r   r   r   r   r    r-   r   r!   r   r"   r$   r#   r   r   r   "test_extract_expand_capture_groupsc   sv   "rh   c                 C   s   g d}t | dkrtd t | t |k r$| d} t | t |k s| d t | } t|| |d}|jjddd}td	d
tjg| |d}t	
|| |jjddd}tdd	gdd
gdtjggddg| |d}t	|| d S )Nrd   r   zTest requires len(index) > 0   indexr   (\d)Fr   rR   rS   (?P<letter>\D)(?P<number>\d)?rG   rQ   re   rU   rW   rY   rk   r   )lenr   skiprepeatr   r   r   r   r   r    r-   r   r!   )rk   r   datar.   r$   r#   r   r   r   (test_extract_expand_capture_groups_index   s&   

rs   c                 C   sD   t g dd| d}|jjddd}t g dd| d}t|| d S )	Na3b3c2bobrI   z(?P<sue>[a-z])Fr   abcsue)r   r   r   r    r-   rg   r   r   r   ,test_extract_single_series_name_is_preserved   s   r~   c                 C   sZ   t dtjdg| d}|jjddd}tddgtjtjgtjtjgg| d}t|| d S )	Nr	   r
   r   r   Tr   r   r   )r   r   r   r   r   r   r    r!   rg   r   r   r   test_extract_expand_True   s   r   c               
   C   sr   t jt jg} tdt jddt dd ddg	}|jjddd}td	d
g| d	d
g| | | | | | g	td}t	
|| d S )Nr&   r'   Tr
   r(   r)   r   r   r*   r   r   )r   r   r   r   r+   r   r   r   r,   r    r!   )r/   mixedr$   r#   r   r   r   %test_extract_expand_True_mixed_object   s$   r   c                 C   r:   )	Nr;   r   r>   r   r?   Tr   r@   rA   rB   r   r   r   4test_extract_expand_True_single_capture_group_raises   s   "r   c                 C   sD   | ddg|d}|j jddd}tdddgi|d}t|| d S )	Nr1   r2   r   rF   Tr   rH   rG   )r   r   r   r    r!   rL   r   r   r   -test_extract_expand_True_single_capture_group	  s   r   rJ   series_namec                 C   s  t g d| |d}|jjddd}ttjtjtjg|d}t|| |jjddd}ttjtjgtjtjgtjtjgg|d}t|| |jjddd}td	d
tjg|d}t|| |jjddd}td	dgd
dgtjtjgg|d}t|| |jjddd}tdd	d
tjgi|d}t|| |jjddd}td	dgd
dgtjtjggddg|d}t|| |jjddd}td	dgd
dgtjtjggddg|d}t|| |jjddd}td	d
tjg|d}t|| d S )Nr;   rI   rN   Tr   r   rO   rP   rG   rQ   r6   rR   rS   rT   rU   rV   rW   rX   rZ   r   r[   r   r   r   r   r   r   r    r!   )rJ   r   r"   r$   r#   r   r   r   test_extract_series  sJ   "r   c                 C   s   t g d| d}|jjddd}tddgdd	gtjtjgg| d}t|| t g d
| d}|jjddd}tddgdd	gtjdggddg| d}t|| t g d| d}|jjddd}tddgdd	gdtjggddg| d}t|| d S )Nr\   r   r`   Tr   rG   rR   rQ   rS   ra   rc   rb   rU   rW   rX   rd   rf   re   r   rg   r   r   r   test_extract_optional_groupsK  s,   r   c                 C   s   g d}t | t |k rtdt | d | d t | } t|| |d}|jjddd}tdd	tjg| |d}t	
|| |jjd
dd}tddgdd	gdtjggddg| |d}t	
|| d S )Nrd   zIndex needs more than z valuesrj   rl   Tr   rR   rS   rm   rG   rQ   re   rU   rW   rn   )ro   r   rp   r   r   r   r   r   r   r    r!   )rk   r   rr   r"   r$   r#   r   r   r   +test_extract_dataframe_capture_groups_indexi  s    r   c                 C   sF   t g dd| d}|jjddd}tdg di| d	}t|| d S )
Nrt   r   rI   (?P<letter>[a-z])Tr   rU   ry   r   )r   r   r   r   r    r!   rg   r   r   r   'test_extract_single_group_returns_frame  s   r   c           
      C   s  dddddt jdg}g d}d}g d	}t|| d
}tjg ddd}t|||| d
}|jj|tj	d}t
|| tg d}	t||	| d}tjg ddd}t|||| d
}|jj|tj	d}t
|| t||	| d}d|j_d|_t|||| d
}|jj|tj	d}t
|| d S )Nzdave@google.comztdhock5@gmail.comzmaudelaperriere@gmail.comz'rob@gmail.com some text steve@gmail.comz%a@b.com some text c@d.com and e@f.com ))davegooglecom)tdhock5gmailr   )maudelaperrierer   r   )robr   r   )stever   r   )rz   r{   r   )r|   dr   )efr   zY
    (?P<user>[a-z0-9]+)
    @
    (?P<domain>[a-z]+)
    \.
    (?P<tld>[a-z]{2,4})
    )userdomaintldr   )r   r   r(   r   ri   r   )   r   )r   r(   )   r   )r   r(   )r   ri   Nr   names)flags))singleDave)r   Toby)r   Maude)multiplerobAndSteve)r   abcdef)nonemissing)r   emptyrj   ))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r(   )r   r   r   )r   r   r(   )r   r   ri   )NNr   )matchesdescription)r   r   r   )r   r   r   r   from_tuplesr   r   
extractallreVERBOSEr    r!   rk   r   )
r   rr   expected_tuplespatexpected_columnsr"   expected_indexr#   r$   mir   r   r   test_extractall  sT   	

r   zpat,expected_namesrc   rU   rW   z([AB])?(?P<number>[123])c                 C   s\   t g d|d}|j| }tdtjdftjdfgtjg ddd||d	}t	|| d S )
N)r   r1   32r   )rG   rR   rb   rS   )r   r   ri   r(   r   r   )rk   rY   r   )
r   r   r   r   r   r   r   r   r    r!   )r   expected_namesr   r"   r$   r#   r   r   r   test_extractall_column_names  s   
r   c                 C   s   t g dd| d}tjg ddd}|jd}tdg d	i|| d
}t|| |jd}tg d	|| d
}t|| d S )Nru   rv   d4c2r   rI   r   r   r   r   r   r   r   rU   )rz   r{   r   r|   rj   ([a-z]))r   r   r   r   r   r   r    r!   )r   r"   r   r$   r#   r   r   r   test_extractall_single_group  s   
r   c                 C   sN   t g dd| d}|jd}tg dtjg ddd| d	}t|| d S )
N)ab3abc3d4cd2r   rI   z([a-z]+))ababcr   cdr   r   r   rj   )r   r   r   r   r   r   r    r!   rg   r   r   r   ,test_extractall_single_group_with_quantifier  s   r   zdata, names)N)i1)Ni2)r   r   r   c           	         sB  t |  t |dkrtt |d d}n fddt D }tj||d}t| d||d}tjg |d	 d}|jd
}tdg||d}t	
|| |jd}tddg||d}t	
|| |jd}tdg||d}t	
|| |jd}tddg||d}t	
|| |jd}tddg||d}t	
|| d S )Nr(   r   rJ   c                 3   s"    | ]}t |g d   V  qdS )r(   N)tuple).0inr   r   	<genexpr>0  s     z-test_extractall_no_matches.<locals>.<genexpr>r   r   rJ   rk   r   r   z(z)rn   z(z)(z)z(?P<first>z)firstz(?P<first>z)(?P<second>z)secondz(z)(?P<second>z))ro   r   ranger   r   r   r   r   r   r    r!   )	rr   r   r   rk   tuplesr"   r   r$   r#   r   r   r   test_extractall_no_matches  s8   

r   c                 C   s   t g dd| d}|jd}tdg ditjg dd dgd	| d
}t|| | dkrMtg dt	dtg ddt	dfD ]}|jd}t|| q>t g ddtg ddd| d}|jd}tdg ditjg dddgd	| d
}t|| d S )N)a1a2b1c1xxxrI   z[ab](?P<digit>\d)digit)rR   rS   rR   )r   )r   r(   r   r   r   rj   r,   r   s_name)XXyyzzidx_namer   r   ))r   r   )r   r(   )r   r   )
r   r   r   r   r   r   r    r!   r   r,   )r   r"   r$   r#   r7   r   r   r   test_extractall_stringindexU  s:   

r   c                 C   sR   t g dd| d}tjtdd |jd W d    d S 1 s"w   Y  d S )Nr   r   rI   zno capture groupsr   z[a-z])r   r   r   r   r   r   )r   r"   r   r   r   (test_extractall_no_capture_groups_raisesz  s   "r   c                  C   sz   t g dg ddd} | jjjddd}tg d}t|| | jjjd	dd}g d
}t|ddgd}t|| d S )Nr   )r3   B3D4r   )rk   rJ   z([A-Z])Tr   )rG   rQ   Dz!(?P<letter>[A-Z])(?P<digit>[0-9])))rG   rb   )rQ   rb   )r   4rU   r   )rY   )r   rk   r   r   r   r    r!   )r"   rr   e_listr   r   r   !test_extract_index_one_two_groups  s   r   c                 C   s   t g dd| d}d}|jj|dd}|j|}|jddd	}t|| d
}|jj|dd}|j|}|jddd	}t|| d}|jj|dd}	|j|}|jddd	}t|	| d}
|jj|
dd}|j|
}|jddd	}t|| d S )Nrt   r   rI   ([a-z])([0-9])Tr   r   r   level!(?P<letter>[a-z])(?P<digit>[0-9])(?P<group_name>[a-z])r   )r   r   r   r   xsr    r!   )r   r"   pattern_two_nonameextract_two_nonamehas_multi_indexno_multi_indexpattern_two_namedextract_two_namedpattern_one_namedextract_one_namedpattern_one_nonameextract_one_nonamer   r   r   test_extractall_same_as_extract  s*   r   c                 C   s  t jg ddd}tg d|d| d}d}|jj|dd	}|j|}|jd
dd}t|| d}|jj|dd	}|j|}|jd
dd}t|| d}	|jj|	dd	}
|j|	}|jd
dd}t|
| d}|jj|dd	}|j|}|jd
dd}t|| d S )N))rG   r   )rQ   r   )re   third)capitalordinalr   rt   r   )rk   rJ   r   r   Tr   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r    r!   )r   r   r"   r   r   has_match_indexno_match_indexr   r   r   r   r   r   r   r   r   -test_extractall_same_as_extract_subject_index  s2   r  c                  C   s@   t d} tddgt|  djd}|jd dksJ d S )Npyarrowr   r   r   z(ab)r   zstring[pyarrow])r   importorskipr   r   stringr   r   dtypes)par$   r   r   r   test_extractall_preserves_dtype  s   
 r  ),r   r   numpyr   r   pandas.core.dtypes.dtypesr   pandasr   r   r   r   r   r    r   r%   r0   r9   rE   rM   rh   rs   r~   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r   r   <module>   sj    	
S
9
U


	




+%!