
    Mh_g                     
   S SK J r   S SKrS SKrS SKrS SKJr  S SKJrJ	r	J
r
JrJr  S rS rS rS rS	 rS
 rS rS rS rS rS rS rS r\R6                  R9                  SSS/5      S 5       rS rS rS r S r!\R6                  R9                  SSSS/4SS S/4/5      S 5       r"S r#S  r$\R6                  R9                  S!/ S"4/ S#4/ S$4/ S%4/ S&QS"4/ S&QS%4/ S&QS$4/ S&QS%4/5      S' 5       r%S( r&S) r'S* r(S+ r)S, r*S- r+g).    )datetimeN)
ArrowDtype)	DataFrameIndex
MultiIndexSeries_testingc                     [        S[        R                  S/U S9n[        R                  " [
        SS9   UR                  R                  SS S9  S S S 5        g ! , (       d  f       g = f)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valuess     S/var/www/html/env/lib/python3.13/site-packages/pandas/tests/strings/test_extract.py+test_extract_expand_kwarg_wrong_type_raisesr      sO    %rvvu5=MNF	z)G	H

/= 
I	H	Hs   A
A'c                 D   [        S[        R                  S/U S9n[        S[        R                  [        R                  /U S9nUR                  R                  S5      n[        R                  " X25        UR                  R                  SSS9n[        R                  " X25        [        SS/[        R                  [        R                  /[        R                  [        R                  //U S9nUR                  R                  S	S
S9n[        R                  " X25        g )Nr   r   r   BAD__z.*(BAD[_]+).*Tr   BADr   F)r   r   r   r   r   r   tmassert_frame_equal)r   sexpectedresults       r   test_extract_expand_kwargr'      s     "&&%08HIA'2662662:JKHUU]]?+F&+UU]]?4]8F&+
5	BFFBFF+bffbff-=>FVH UU]]/]>F&+    c                  t   [        S[        R                  SS[        R                  " 5       SS SS/	5      n U R
                  R                  SSS	9n[        R                  [        R                  /n[        S
S/US
S/X"X"X"/	[        S9n[        R                  " X5        U R
                  R                  SSS	9n[        S
[        R                  S
[        R                  [        R                  [        R                  S [        R                  [        R                  /	[        S9n[        R                  " X5        g )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%   s       r   &test_extract_expand_False_mixed_objectr4   *   s    
	RVV[$0@%qRUVC
 WW__1%_@F
&&"&&	B
%"vuorrrFfH &+ WW__/_>F	rvvrvvNH 6,r(   c                      [        / SQ5      n Sn[        R                  " [        US9   U R                  R                  SSS9  S S S 5        g ! , (       d  f       g = f)N)A1A2A3A4B5z,only one regex group is supported with Indexr   ([AB])([123])Fr   )r   r   r   r   r   r   )idxmsgs     r    test_extract_expand_index_raisesr>   @   sB     .
/C
8C	z	-6 
.	-	-s   A
Ac                 N   U " / SQUS9nSn[         R                  " [        US9   UR                  R	                  SSS9  S S S 5        [         R                  " [        US9   UR                  R	                  SSS9  S S S 5        g ! , (       d  f       NK= f! , (       d  f       g = f)	Nr6   B2C3r   "pattern contains no capture groupsr   
[ABC][123]Fr   
(?:[AB]).*r   r   r   r   r   index_or_seriesr   s_or_idxr=   s       r   ,test_extract_expand_no_capture_groups_raisesrJ   J   s    19IJH
.C 
z	-\%8 
. 
z	-\%8 
.	-	 
.	- 
.	-   B!B
B
B$c                     U " SS/US9nUR                   R                  SSS9nU " SS/SUS	9nU [        :X  a  [        R                  " X45        g [        R
                  " X45        g )
Nr6   r7   r   (?P<uno>A)\dFr   Aunonamer   )r   r   r   r"   r1   assert_index_equalrH   r   rI   r&   r%   s        r   (test_extract_expand_single_capture_grouprT   W   sc    d|3CDH\\!!/%!@FSz=MNH& 
v0
f/r(   c                 x   [        / SQU S9nUR                  R                  SSS9n[        [        R                  [        R                  [        R                  /U S9n[
        R                  " X#5        UR                  R                  SSS9n[        [        R                  [        R                  /[        R                  [        R                  /[        R                  [        R                  //U S9n[
        R                  " X#5        UR                  R                  SSS9n[        SS	[        R                  /U S9n[
        R                  " X#5        UR                  R                  S
SS9n[        SS/S	S/[        R                  [        R                  //U S9n[
        R                  " X#5        UR                  R                  SSS9n[        SS	[        R                  /SU S9n[
        R                  " X#5        UR                  R                  SSS9n[        SS/S	S/[        R                  [        R                  //SS/U S9n[
        R                  " X#5        UR                  R                  SSS9n[        SS/S	S/[        R                  [        R                  //SS/U S9n[
        R                  " X#5        UR                  R                  SSS9n[        SS	[        R                  /U S9n[
        R                  " X#5        [        / SQU S9nUR                  R                  SSS9n[        SS/S	S/[        R                  [        R                  //U S9n[
        R                  " X#5        [        / SQU S9nUR                  R                  SSS9n[        SS/S	S/[        R                  S//SS/U S9n[
        R                  " X#5        [        / SQU S9nUR                  R                  SSS9n[        SS/S	S/S[        R                  //SS/U S9n[
        R                  " X#5        g )Nr@   r   (_)Fr   (_)(_)([AB])[123]rN   Br;   12(?P<letter>[AB])letterrP   !(?P<letter>[AB])(?P<number>[123])numbercolumnsr   ([AB])(?P<number>[123])r   ([AB])(?:[123])A11B22C33([AB])([123])(?:[123])r6   rA   3"(?P<letter>[AB])?(?P<number>[123])rj   r6   rA   C#(?P<letter>[ABC])(?P<number>[123])?rm   )	r   r   r   r   r   r"   r1   r   r#   r   r$   r&   r%   s       r   "test_extract_expand_capture_groupsrp   c   s   !)9:AUU]]5]/Frvvrvvrvv.6FGH6, UU]]8E]2F
&&"&&	BFFBFF+bffbff-=>FVH &+ UU]]=]7FsC(0@AH6, UU]]?5]9F
sc3Z"&&"&&!12:JH &+ UU]]-e]<FsC(x?OPH6, UU]]>u]MF
sc3Z"&&"&&!128$H
 &+ UU]]4U]CF
sc3Z"&&"&&!12HH
 &+ UU]],U];FsC(0@AH6, 	$,<=AUU]]3E]BF
sc3Z"&&"&&!12:JH &+ 	 (89AUU]]?]NF
sc3Z"&&#/8$H
 &+ 	 (89AUU]]@]OF
sc3Z#rvv/8$H
 &+r(   c                 L   / SQn[        U 5      S:X  a  [        R                  " S5        [        U 5      [        U5      :  a+  U R                  S5      n [        U 5      [        U5      :  a  M+  U S [        U5       n [	        X US9nUR
                  R                  SSS9n[	        S	S
[        R                  /XS9n[        R                  " XE5        UR
                  R                  SSS9n[        SS	/SS
/S[        R                  //SS/U US9n[        R                  " XE5        g )Nrl   r   zTest requires len(index) > 0   indexr   (\d)Fr   rZ   r[   (?P<letter>\D)(?P<number>\d)?rN   rY   rm   r]   r_   ra   rt   r   )lenr   skiprepeatr   r   r   r   r   r"   r1   r   r#   )rt   r   datar2   r&   r%   s         r   (test_extract_expand_capture_groups_indexr|      s    D
5zQ23
e*s4y
 Q e*s4y
  +CIE
*:
;CWW__WU_3FsC(NH6,WW__=e_LF
sc3Z#rvv/8$	H &+r(   c                     [        / SQSU S9nUR                  R                  SSS9n[        / SQSU S9n[        R                  " X#5        g )	Na3b3c2bobrP   z(?P<sue>[a-z])Fr   abcsue)r   r   r   r"   r1   ro   s       r   ,test_extract_single_series_name_is_preservedr      sF    !5EFAUU]],U];FoE9IJH6,r(   c                 0   [        S[        R                  S/U S9nUR                  R	                  SSS9n[        SS/[        R                  [        R                  /[        R                  [        R                  //U S9n[        R                  " X#5        g )	Nr   r   r   r   Tr   r    r!   )r   r   r   r   r   r   r"   r#   ro   s       r   test_extract_expand_Truer      sx     "&&%08HIAUU]]/]=F
5	BFFBFF+bffbff-=>FVH &+r(   c                  >   [         R                  [         R                  /n [        S[         R                  SS[        R                  " 5       SS SS/	5      nUR
                  R                  SSS9n[        S	S
/U S	S
/X X X /	[        S9n[        R                  " X#5        g )Nr*   r+   Tr   r,   r-   r   r   r.   r!   r   )r   r   r   r   r/   r   r   r   r0   r"   r#   )r3   mixedr&   r%   s       r   %test_extract_expand_True_mixed_objectr      s    
&&"&&	BFFNN
	
E YY3DAF
%"vuorrrFfH &+r(   c                 N   U " / SQUS9nSn[         R                  " [        US9   UR                  R	                  SSS9  S S S 5        [         R                  " [        US9   UR                  R	                  SSS9  S S S 5        g ! , (       d  f       NK= f! , (       d  f       g = f)	Nr@   r   rC   r   rD   Tr   rE   rF   rG   s       r   4test_extract_expand_True_single_capture_group_raisesr      s    
 19IJH
.C	z	-\$7 
. 
z	-\$7 
.	-	 
.	- 
.	-rK   c                     U " SS/US9nUR                   R                  SSS9n[        SSS/0US9n[        R                  " X45        g )	Nr6   r7   r   rM   Tr   rO   rN   )r   r   r   r"   r#   rS   s        r   -test_extract_expand_True_single_capture_groupr   	  sP    d|3CDH\\!!/$!?F%#s,4DEH&+r(   rQ   series_namec                 $   [        / SQXS9nUR                  R                  SSS9n[        [        R
                  [        R
                  [        R
                  /US9n[        R                  " X45        UR                  R                  SSS9n[        [        R
                  [        R
                  /[        R
                  [        R
                  /[        R
                  [        R
                  //US9n[        R                  " X45        UR                  R                  SSS9n[        S	S
[        R
                  /US9n[        R                  " X45        UR                  R                  SSS9n[        S	S/S
S/[        R
                  [        R
                  //US9n[        R                  " X45        UR                  R                  SSS9n[        SS	S
[        R
                  /0US9n[        R                  " X45        UR                  R                  SSS9n[        S	S/S
S/[        R
                  [        R
                  //SS/US9n[        R                  " X45        UR                  R                  SSS9n[        S	S/S
S/[        R
                  [        R
                  //SS/US9n[        R                  " X45        UR                  R                  SSS9n[        S	S
[        R
                  /US9n[        R                  " X45        g )Nr@   rP   rV   Tr   r   rW   rX   rN   rY   r;   rZ   r[   r\   r]   r^   r_   r`   rb   r   rc   r   r   r   r   r   r   r"   r#   )rQ   r   r$   r&   r%   s        r   test_extract_seriesr     s    	!EA UU]]5].F"&&"&&"&&19IJH&+ UU]]8D]1F
&&"&&	BFFBFF+bffbff-=>FVH &+ UU]]=]6F#sBFF+3CDH&+ UU]]?4]8F
sc3Z"&&"&&!12:JH &+ UU]]-d];F(S#rvv$67?OPH&+ UU]]>t]LF
sc3Z"&&"&&!128$H
 &+ UU]]4T]BF
sc3Z"&&"&&!12HH
 &+ UU]],T]:F#sBFF+3CDH&+r(   c                 Z   [        / SQU S9nUR                  R                  SSS9n[        SS/SS	/[        R
                  [        R
                  //U S9n[        R                  " X#5        [        / S
QU S9nUR                  R                  SSS9n[        SS/SS	/[        R
                  S//SS/U S9n[        R                  " X#5        [        / SQU S9nUR                  R                  SSS9n[        SS/SS	/S[        R
                  //SS/U S9n[        R                  " X#5        g )Nrd   r   rh   Tr   rN   rZ   rY   r[   ri   rk   rj   r]   r_   r`   rl   rn   rm   r   ro   s       r   test_extract_optional_groupsr   K  s/   $,<=AUU]]3D]AF
sc3Z"&&"&&!12:JH &+ 	 (89AUU]]?]MF
sc3Z"&&#/8$H
 &+ 	 (89AUU]]@]NF
sc3Z#rvv/8$H
 &+r(   c                    / SQn[        U 5      [        U5      :  a#  [        R                  " S[        U5       S35        U S [        U5       n [        X US9nUR                  R                  SSS9n[        SS	[        R                  /XS9n[        R                  " XE5        UR                  R                  S
SS9n[        SS/SS	/S[        R                  //SS/U US9n[        R                  " XE5        g )Nrl   zIndex needs more than z valuesrs   ru   Tr   rZ   r[   rv   rN   rY   rm   r]   r_   rw   )rx   r   ry   r   r   r   r   r   r   r"   r#   )rt   r   r{   r$   r&   r%   s         r   +test_extract_dataframe_capture_groups_indexr   i  s     D
5zCI,SYKw?@+CIEt(89AUU]]74]0F#sBFF+5QH&+UU]];D]IF
sc3Z#rvv/8$	H &+r(   c                     [        / SQSU S9nUR                  R                  SSS9n[        S/ SQ0U S	9n[        R
                  " X#5        g )
Nr~   r   rP   (?P<letter>[a-z])Tr   r]   r   r   )r   r   r   r   r"   r#   ro   s       r   'test_extract_single_group_returns_framer     sK     	!=MNAUU]]/]=F(O4<LMH&+r(   c                    SSSSS[         R                  S/n/ SQnSn/ S	Qn[        XS
9n[        R                  " / SQSS9n[        X&X@S
9nUR                  R                  U[        R                  S9n[        R                  " X5        [        R                  " / SQ5      n	[        XU S9n[        R                  " / SQSS9n[        X&X@S
9nUR                  R                  U[        R                  S9n[        R                  " X5        [        XU S9nSUR                  l        SUl        [        X&X@S
9nUR                  R                  U[        R                  S9n[        R                  " X5        g )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   )r   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   rr   r   )   r   )r   r,   )   r   )r   r,   )r   rr   Nr   names)flags))singleDave)r   Toby)r   Maude)multiplerobAndSteve)r   abcdef)nonemissing)r   emptyrs   ))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r,   )r   r   r   )r   r   r,   )r   r   rr   )NNr   )matchesdescription)r   r   r   )r   r   r   r   from_tuplesr   r   
extractallreVERBOSEr"   r#   rt   r   )
r   r{   expected_tuplespatexpected_columnsr$   expected_indexr%   r&   mis
             r   test_extractallr     sw   #1/

D	OC 1t,A  ++HN )9H UUc4F&+ 
			


B 	t%56A++		
 $N )9H UUc4F&+ 	t%56A.AGGM>N)9H UUc4F&+r(   zpat,expected_namesrk   r]   r_   z([AB])?(?P<number>[123])c                    [        / SQUS9nUR                  R                  U 5      n[        S[        R
                  S4[        R
                  S4/[        R                  " / SQSS9UUS	9n[        R                  " XE5        g )
N)r   r6   32r   )rN   rZ   rj   r[   )r   r   rr   r,   r   r   )rt   ra   r   )
r   r   r   r   r   r   r   r   r"   r#   )r   expected_namesr   r$   r&   r%   s         r   test_extractall_column_namesr     sq     	'78AUUc"F	bffc]RVVSM2$$%=_U	H &+r(   c                 D   [        / SQSU S9n[        R                  " / SQSS9nUR                  R	                  S5      n[        S/ S	Q0X S
9n[        R                  " X45        UR                  R	                  S5      n[        / S	QX S
9n[        R                  " X45        g )Nr   r   d4c2r   rP   r   r   r   r   r   r   r   r]   )r   r   r   r   rs   ([a-z]))r   r   r   r   r   r   r"   r#   )r   r$   r   r&   r%   s        r   test_extractall_single_groupr     s    #-?OPA++(N
 UU23F	'(H &+ UUj)FNH &+r(   c                     [        / SQSU S9nUR                  R                  S5      n[        / SQ[        R
                  " / SQSS9U S	9n[        R                  " X#5        g )
N)ab3abc3d4cd2r   rP   z([a-z]+))ababcr   cdr   r   r   rs   )r   r   r   r   r   r   r"   r#   ro   s       r   ,test_extractall_single_group_with_quantifierr     s]     	'mCSTAUUk*F $$,O
 H &+r(   zdata, names)N)i1)Ni2)r   r   r   c                 ^  ^	 [        U 5      m	[        U5      S:X  a  [        [        T	5      US   S9nO)U	4S j[        T	5       5       n[        R                  " XAS9n[        U SX2S9n[        R                  " / US-   S9nUR                  R                  S	5      n[        S/XbS
9n[        R                  " Xx5        UR                  R                  S5      n[        SS/XbS
9n[        R                  " Xx5        UR                  R                  S5      n[        S/XbS
9n[        R                  " Xx5        UR                  R                  S5      n[        SS/XbS
9n[        R                  " Xx5        UR                  R                  S5      n[        SS/XbS
9n[        R                  " Xx5        g )Nr,   r   rQ   c              3   H   >#    U  H  n[        U/TS -
  -  5      v   M     g7f)r,   N)tuple).0ins     r   	<genexpr>-test_extractall_no_matches.<locals>.<genexpr>0  s#     91%q1u&&s   "r   r   rQ   rt   r   r   z(z)rw   z(z)(z)z(?P<first>z)firstz(?P<first>z)(?P<second>z)secondz(z)(?P<second>z))rx   r   ranger   r   r   r   r   r   r"   r#   )
r{   r   r   rt   tuplesr$   r   r&   r%   r   s
            @r   test_extractall_no_matchesr     s    	D	A
5zQeAhU1X.9a9&&v;t-uMA++Buz7IKN UUe$F!NSH&+ UUh'F!Q~VH&+ UUn-F	H &+ UU9:F(#>H &+ UU01FH^H &+r(   c           	      h   [        / SQSU S9nUR                  R                  S5      n[        S/ SQ0[        R
                  " / SQS S/S	9U S
9n[        R                  " X#5        U S:X  aY  [        / SQ[        S9[        / SQS[        S94 H4  nUR                  R                  S5      n[        R                  " X#5        M6     [        / SQS[        / SQSS9U S9nUR                  R                  S5      n[        S/ SQ0[        R
                  " / SQSS/S	9U S
9n[        R                  " X#5        g )N)a1a2b1c1xxxrP   z[ab](?P<digit>\d)digit)rZ   r[   rZ   )r   )r   r,   r   r   r   rs   r0   r   s_name)XXyyzzidx_namer   r   ))r   r   )r   r,   )r   r   )
r   r   r   r   r   r   r"   r#   r   r0   )r   r$   r&   r%   r<   s        r   test_extractall_stringindexr   U  s*   #%7GHAUU23F	/"$$%=dG_UH
 &+ 8#&f5&U&A
C WW''(<=F!!&3
 	&Z8		A UU23F	/"$$-j'5J
 H &+r(   c                     [        / SQSU S9n[        R                  " [        SS9   UR                  R                  S5        S S S 5        g ! , (       d  f       g = f)Nr   r   rP   zno capture groupsr   z[a-z])r   r   r   r   r   r   )r   r$   s     r   (test_extractall_no_capture_groups_raisesr   z  sA     	#-?OPA	z)<	=	" 
>	=	=s   A
Ac                  D   [        / SQ/ SQSS9n U R                  R                  R                  SSS9n[	        / SQ5      n[
        R                  " X5        U R                  R                  R                  S	SS9n/ S
Qn[	        USS/S9n[
        R                  " X5        g )Nr   )r8   B3D4r   )rt   rQ   z([A-Z])Tr   )rN   rY   Dz!(?P<letter>[A-Z])(?P<digit>[0-9])))rN   rj   )rY   rj   )r  4r]   r   )ra   )r   rt   r   r   r   r"   r#   )r$   rr   e_lists       r   !test_extract_index_one_two_groupsr    s    #+=MRA	Jt4A/"A!
 	
@NA1F&8W"56A!r(   c                    [        / SQSU S9nSnUR                  R                  USS9nUR                  R                  U5      nUR	                  SSS	9n[
        R                  " X55        S
nUR                  R                  USS9nUR                  R                  U5      nUR	                  SSS	9n[
        R                  " Xu5        SnUR                  R                  USS9n	UR                  R                  U5      nUR	                  SSS	9n[
        R                  " X5        Sn
UR                  R                  U
SS9nUR                  R                  U
5      nUR	                  SSS	9n[
        R                  " X5        g )Nr~   r   rP   ([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_nonames               r   test_extractall_same_as_extractr    sn   !=MNA*'9$Gee&&'9:O$'''9N,=<&7Eee&&'89O$'''9N+<0&7Eee&&'89O$'''9N+<#'9$Gee&&'9:O$'''9N,=r(   c                 6   [         R                  " / SQSS9n[        / SQUSU S9nSnUR                  R	                  USS	9nUR                  R                  U5      nUR                  S
SS9n[        R                  " XF5        SnUR                  R	                  USS	9nUR                  R                  U5      nUR                  S
SS9n[        R                  " X5        Sn	UR                  R	                  U	SS	9n
UR                  R                  U	5      nUR                  S
SS9n[        R                  " X5        SnUR                  R	                  USS	9nUR                  R                  U5      nUR                  S
SS9n[        R                  " X5        g )N))rN   r   )rY   r   )rm   third)capitalordinalr   r~   r   )rt   rQ   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  s                r   -test_extractall_same_as_extract_subject_indexr    s   			9$
B 	!-GWXA*'9$Gee&&'9:O$'''9N,=<&7Eee&&'89O$'''9N+<0&7Eee&&'89O$'''9N+<#'9$Gee&&'9:O$'''9N,=r(   c                      [         R                  " S5      n [        SS/[        U R	                  5       5      S9R
                  R                  S5      nUR                  S   S:X  d   eg )Npyarrowr   r   r   z(ab)r   zstring[pyarrow])r   importorskipr   r   stringr   r   dtypes)par&   s     r   test_extractall_preserves_dtyper%    sY     
		Y	'BUDMBIIK)@AEEPPQWXF==0000r(   ),r   r   numpyr   r   pandas.core.dtypes.dtypesr   pandasr   r   r   r   r	   r"   r   r'   r4   r>   rJ   rT   rp   r|   r   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r  r  r  r%   r(   r   <module>r,     s|    	   0 >,"-,7
9	0P,f,6-,,.8, $!676, 86,r,<,4,R,j  
.(/CD	#a]3	
,
,,*,  	W	W	\	\	w'	|,	|,	|,	(,(,V",J# >8>B1r(   