
    dafw                       d dl mZmZmZmZmZmZmZmZm	Z	m
Z
 d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ 	 d dlZd dlZ G d de      Z G d de      Z G d	 d
ej8                        Zd Ze G d dej8                               Z G d dej8                        Z  G d dej8                        Z! G d dej8                        Z"e#dk(  r ejH                          yy# e$ r dZY w xY w)    )

gc_collect
bigmemtest_2Gcpython_onlycaptured_stdoutcheck_disallow_instantiationis_emscriptenis_wasiSHORT_TIMEOUTrequires_resourceN)Scanner)proxyc                        e Zd Z fdZ xZS )Sc                 4    t        t        | 	  |            S N)r   super__getitem__selfindex	__class__s     '/root/Python-3.12.4/Lib/test/test_re.pyr   zS.__getitem__       $U+,,    __name__
__module____qualname__r   __classcell__r   s   @r   r   r          - -r   r   c                        e Zd Z fdZ xZS )Bc                 4    t        t        | 	  |            S r   )r$   r   r   r   s     r   r   zB.__getitem__"   r   r   r   r!   s   @r   r$   r$   !   r"   r   r$   c                      e Zd ZddZddZddZd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%d% Z&d& Z'd' Z(d( Z)d) Z*d* Z+d+ Z,d, Z-d- Z.d. Z/d/ Z0d0 Z1d1 Z2d2 Z3d3 Z4d4 Z5d5 Z6d6 Z7d7 Z8dde9jt                  fd8Z;e<jz                  e<j|                  z   d9z   Z?d: Z@d; ZAd< ZBd= ZCd> ZDd? ZEd@ ZFdA ZGdB ZHdC ZIdD ZJdE ZKdF ZLdG ZMdH ZNdI ZOdJ ZPdK ZQdL ZRdM ZSdN ZTdO ZUdP ZVdQ ZWdR ZXdS ZYdT ZZdU Z[dV Z\dW Z]dX Z^dY Z_dZ Z`d[ Zad\ Zbd] Zcd^ Zdd_ Zed` Zfda Zgdb Zhdc Zidd Zjde Zk elemdfg      dh        Zn elemdig      dj        Zodk Zpdl Zqdm Zrdn Zsdo Ztdp Zudq Zvdr Zwds Zxdt Zydu Zz e{j                  e}xs e~dv      dw        Zdx Zdy Z e{j                  e}xs e~dv      dz        Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ed      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Z e{j                  edu d      d        Zy)ReTestsNc                 P      j                  ||        fd ||       y )Nc                     t        |t        t        f      rt        | |      D ]  \  }} ||        y j	                  t        |       t        |             y r   )
isinstancetuplelistzipassertIstype)actualexpectxymsgrecurser   s       r   r5   z)ReTests.assertTypedEqual.<locals>.recurse)   sN    &5$-0/ "DAqAqM" d6lDL#>r   )assertEqual)r   r0   r1   r4   r5   s   `  `@r   assertTypedEqualzReTests.assertTypedEqual'   s&    -	? 	r   c                 p   | j                  t        j                        5 }t        j                  |       d d d        | j	                  |      5  j
                  }| j                  |j                  |       || j                  |j                  |       d d d        y # 1 sw Y   kxY w# 1 sw Y   y xY w)N)pattern)	assertRaisesreerrorcompilesubTest	exceptionr6   r4   pos)r   r9   errmsgr@   cmerrs         r   checkPatternErrorzReTests.checkPatternError1   s    rxx( 	 BJJw	 \\'\* 	/,,CSWWf-  #.		/ 	/	  	 	/ 	/s   B AB, B),B5c                 v   | j                  t        j                        5 }t        j                  |||       d d d        | j	                  ||      5  j
                  }| j                  |j                  |       || j                  |j                  |       d d d        y # 1 sw Y   lxY w# 1 sw Y   y xY w)N)r9   repl)	r:   r;   r<   subr>   r?   r6   r4   r@   )r   r9   rF   stringrA   r@   rB   rC   s           r   checkTemplateErrorzReTests.checkTemplateError:   s    rxx( 	*BFF7D&)	*\\'\5 	/,,CSWWf-  #.		/ 	/	* 	*	/ 	/s   B#AB/#B,/B8c                 
   t        d      }t        j                  d|      }| j                  t              5  |j                  d       d d d        t        |       ~t                |j                  d       y # 1 sw Y   1xY w)N   x   as  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)	bytearrayr;   finditerr:   BufferErrorextendr,   r   )r   bits      r   test_keep_bufferzReTests.test_keep_bufferC   se    dO[[q!{+ 	HHX	R		 	s   A99Bc                     d}t        j                  d      }t        |      }| j                  |j	                  d      |j	                  d             y )NQabbbcRzab+c)r;   r=   r   r6   findall)r   sr2   r3   s       r   test_weakrefzReTests.test_weakrefN   s@    JJv!H9-qyy/CDr   c                    | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                         d       | j	                  t        j                  dd             | j                  t        j
                  d	d
      j                  d      d       | j                  t        j
                  d	d
      j                         d       | j                  t        j
                  dd      j                  d      d       | j                  t        j
                  dd      j                         d       | j	                  t        j
                  dd
             y )Nx*axxr   r   r   zx+      r2   aaaza*xxxxxxar   r_   a+)r6   r;   searchspanassertIsNonematchr   s    r   test_search_star_pluszReTests.test_search_star_plusT   s\   4/44Q7@4/446?4/44Q7@4/446?"))C/0$.33A6?$.335v>$/44Q7@$/446?"((4/0r   c                    | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd	      j                         d       | j                  t        j                  dd
      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       y)zDTest Branching
        Test expressions using the OR ('|') operator.z(ab|ba)abr      baz(abc|bac|ca|cb)abcrc   baccacbz((a)|(b)|(c))ar   r^   rQ   cNr6   r;   rh   rf   ri   s    r   test_branchingzReTests.test_branching`   sX    	)T27796B)T27796B"3U;@@B	!"3U;@@B	!"3T:??A	!"3T:??A	!/37<<>G/37<<>G/37<<>Gr   c                 R    t        |j                  d            }t        |dz         S )Nr   r^   )intgroupstr)r   matchobj	int_values      r   bump_numzReTests.bump_numq   s$    q)*	9q=!!r   c           
      t
   | j                  t        j                  ddd      d       | j                  t        j                  dt        d      t        d            d       | j                  t        j                  ddd      d       | j                  t        j                  dt	        d      t	        d            d       | j                  t        j                  dt        d      t        d            d       | j                  t        j                  dt        d      t        d            d       d	D ],  }| j                  t        j                  |dd
|z        d       . | j                  t        j                  ddd      d       | j                  t        j                  d| j                  d      d       | j                  t        j                  d| j                  dd      d       | j                  t        j                  d| j                  dd      d       | j                  t        j                  dd d      d       | j                  t        j                  ddd      d       d| j                  t        j                  dd      d       | j                  t        j                  dj                  dd      d             | j                  t        j                  dfdd             | j                  t        j                  dd d      d!       | j                  t        j                  dd"d      d!       | j                  t        j                  d#d$d      d!       | j                  t        j                  d#d%d      d!       | j                  t        j                  d&d'd      d!       | j                  t        j                  dd(d      d)       | j                  t        j                  dd)d      d)       | j                  t        j                  dd)d      t        d*      t        d+      z   t        d,      z   t        d-      z   t        d.      z   t        d/      z   t        d0      z          d1D ]q  }| j                  |      5  | j                  t        j                        5  | j                  t        j                  dd|z   d      d|z          d d d        d d d        s | j                  t        j                  d2d3d4      d5       y # 1 sw Y   ;xY w# 1 sw Y   xY w)6Nr3   rt   xyzxaz   yrL      xyzs   xaz   àu   аu   𝒜zx%sz(?i)b+r2   	bbbb BBBBx x\d+z08.2 -2 23x99yz9.3 -3 24x100yr_   z9.3 -3 23x99ycount.c                      y)N\n ms    r   <lambda>z+ReTests.test_basic_re_sub.<locals>.<lambda>       r   r   
z\1\1z(.)xx\\\c                     S r   r   )r   rW   s    r   r   z+ReTests.test_basic_re_sub.<locals>.<lambda>   s     r   (?P<a>x)z
\g<a>\g<a>xxxxz
\g<a>\g<1>
(?P<unk>x)z\g<unk>\g<unk>z
\g<1>\g<1>z()xz
\g<0>\g<0>z\t\n\v\r\f\a\bz	
	   
                  ,cdehijklmopqsuwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz^\s*XtestXtest)r7   r;   rG   r   r$   rM   
memoryviewr6   r   replacechrr>   r:   r<   )r   r3   rv   rW   s      @r   test_basic_re_subzReTests.test_basic_re_subu   s   bffS#u5u=bffS!C&!E(;UCbffT48&AbffT1T7AfI>GbffT9T?If<MNPVWbffT:d+;Z=OPRXY1 	@ARVVAsFQJ7?	@ 	#{;UC7GH)	+7GK(	*7GqQ(	* 	_c:EBUC0$7q#.5qyyu'=sCQG{C8!<
M4@&I
M4@&I.?FOmTBFK}d;VD%6<>NO%5s;=MN%5s;a&R.R0R8R@QGAN	Q? 	KAa K&&rxx0 K$$RVVC3%?JKK K	K
 	f5w?K KK Ks$    T.:.T"(T."T+'T..T7	c                 R    | j                  t        j                  ddd      d       y )Nr   z\g<1>\g<1>\br   zxxxxr6   r;   rG   ri   s    r   test_bug_449964zReTests.test_bug_449964   s"    E#	%r   c                 <   | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       y )Nz\r\nr   z
abc
def
zabc
def
z
r   r   ri   s    r   test_bug_449000zReTests.test_bug_449000   s    0@A%	'/?@%	'/?@%	'.>?%	'r   c                    t        j                  d      }| j                  t        t         j                  |dt         j
                         | j                  t        t         j                  |dt         j
                         | j                  t        t         j                  |dt         j
                         | j                  t        t         j                  |t         j
                         y )Nr   A)r;   r=   r:   
ValueErrorrh   Ire   rV   r   r9   s     r   test_bug_1661zReTests.test_bug_1661   s    **S/*bhhbddC*bii#rttD*bjj'3E*bjj'244@r   c                 .    t        j                  d       y )Nz(?P<quote>)(?(quote)))r;   r=   ri   s    r   test_bug_3629zReTests.test_bug_3629   s    


*+r   c                    | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  dd	d      d
       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d
       | j                  t        j                  ddd      d       | j                  ddddd       | j                  ddddd       | j                  dddd d!       | j                  dd"dd#d!       | j                  dd$dd%d!       | j                  dd&dd'd!       | j                  dd(dd)d!       | j                  dd*dd d!       | j                  dd+dd,d!       | j                  dd-dd.d!       | j                  dd/dd'd!       | j                  dd0dd'd!       | j                  dd1dd)d!       | j                  dd2dd3d!       | j                  dd"d4d#d!       | j                  t        j                  d5d&d      d       | j                  t        j                  d6d/d7      d8       | j                  t        j                  d6d0d7      d9       y ):Nr2   \0 z\000z\001z\008 8z\009z 9z\111r   z\117Oz\377   ÿz\1111I1z\00z\07\08z\09z\0az az\400z0octal escape value \400 outside of range 0-0o377r   z\777z0octal escape value \777 outside of range 0-0o377z\1zinvalid group reference 1r^   z\8zinvalid group reference 8z\9zinvalid group reference 9z\11zinvalid group reference 11z\18zinvalid group reference 18z\1az\90zinvalid group reference 90z\99zinvalid group reference 99z\118z\11az\181z\800zinvalid group reference 80 z(((((((((((x)))))))))))z((((((((((y))))))))))(.)r   xz8xza)r6   r;   rG   rI   ri   s    r    test_sub_template_numeric_escapez(ReTests.test_sub_template_numeric_escape   s   UC0$7Wc2F;Wc2F;Wc2J?Wc2J?Wc2F;Wc2F;Wc2F;Xs3W=Xs3\BVS16:VS16:VS1:>VS1:>VS1:>Wc!123	5 	Wc!123	5 	UC1LaPUC1LaPUC1LaPVS2NPQRVS2NPQRVS2MqQVS2NPQRVS2NPQRWc3OQRSWc3OQRSWc3OQRSWc3OQRSUB0KQO 	 963GM :GUK	  :GUK	 r   c                     | j                  t        j                  ddd      d       | j                  t        j                  dddd      d       | j                  t        j                  dddd      d       y )Nrt   rQ   aaaaabbbbbr^   baaaar   r   ri   s    r   test_qualified_re_subzReTests.test_qualified_re_sub   s]    S'2G<S'15w?S';WEr   c                 R    | j                  t        j                  ddd      d       y )Nz(\S)\s+(\S)z\1 \2zhello  therezhello therer   ri   s    r   test_bug_114660zReTests.test_bug_114660   s"    .I&	(r   c                    t        j                  d       t        j                  d       t        j                  d       t        j                  d       t        j                  d       t        j                  d       dj                  d t        d	d
      D              }d|z  }| j	                  t        j
                  |d      j                         d       y )Nz(?P<a>x)(?P=a)(?(a)y)z(?P<a1>x)(?P=a1)(?(a1)y)z(?P<a1>x)\1(?(1)y)s   (?P<a1>x)(?P=a1)(?(a1)y)u   (?P<µ>x)(?P=µ)(?(µ)y)uf   (?P<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>x)(?P=𝔘𝔫𝔦𝔠𝔬𝔡𝔢)(?(𝔘𝔫𝔦𝔠𝔬𝔡𝔢)y)|c              3   *   K   | ]  }d ||fz    ywzx(?P<a%d>%x)yNr   .0is     r   	<genexpr>z/ReTests.test_symbolic_groups.<locals>.<genexpr>        KA!Q/K   r^      z(?:%s)(?(200)z|t)xc8yzr      )r;   r=   joinranger6   rh   rf   r   pats     r   test_symbolic_groupszReTests.test_symbolic_groups   s    


+,


./


()


./


-.


{|hhKq'9JKK!C'#w/446?r   c                 $   | j                  dd       | j                  ddd       | j                  dd       | j                  dd	d
       | j                  ddd       | j                  ddd       | j                  ddd       | j                  dd       | j                  dd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  d dd       | j                  d!dd       | j                  d"d#d       | j                  d$d%d       | j                  d&dd       | j                  d'd(d       | j                  d)d(d       | j                  d*d(d       | j                  d+d,d       | j                  d-d,d       | j                  d.d,d       y )/Nz(?P<a>)(?P<a>)z6redefinition of group name 'a' as group 2; was group 1z(?P<a>(?P=a))cannot refer to an open groupr   z(?Pxy)zunknown extension ?Pxz(?P<a>)(?P=amissing ), unterminated namer   z(?P=missing group name   z(?P=)z(?P=1)zbad character in group name '1'z(?P=a)zunknown group name 'a'z(?P=a1)zunknown group name 'a1'z(?P=a.)z bad character in group name 'a.'z(?P<)missing >, unterminated namez(?P<az(?P<z(?P<>)z(?P<1>)z(?P<a.>)z(?(r_   z(?())z(?(a))z(?(-1)) bad character in group name '-1'z(?(1a))z bad character in group name '1a'z(?(a.))u	   (?P<©>x)    bad character in group name '©'u   (?P=©)u   (?(©)y)s	   (?P<µ>x)&bad character in group name '\xc2\xb5's   (?P=µ)s   (?(µ)y)rD   ri   s    r   test_symbolic_groups_errorsz#ReTests.test_symbolic_groups_errors  s(   0 -	. 	/>	Dy*AB0NPRSw(<a@x)=qAy*KQOy*BCz+DEz+MqQx)GKx)GKw(<a@y*>Bz+LaP{,NPQRv';Q?x)=qAy*BAFz+MqQz+MqQz+MqQ{,NPQRy*LaPz+MqQ1H!	M/H!	M0H!	Mr   c                    | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  d	d
d      d       | j                  t        j                  ddd      d       dj                  d t	        dd      D              }| j                  t        j                  |dd      d       y )Nz(?P<a>x)|(?P<b>y)z\g<b>r   r   \2s	   (?P<a1>x)s   \g<a1>   xxu	   (?P<µ>x)u   \g<µ>u#   (?P<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>x)u    \g<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>r   c              3   *   K   | ]  }d ||fz    ywr   r   r   s     r   r   z-ReTests.test_symbolic_refs.<locals>.<genexpr>.  r   r   r^   r   z\g<200>	xc8yzxc8yc8zc8)r6   r;   rG   r   r   r   s     r   test_symbolic_refszReTests.test_symbolic_refs&  s     3XtDbI 3UDA2Fj%@%HY=tD EGjlpqswxhhKq'9JKKZ=wGr   c                 R   | j                  ddddd       | j                  ddddd       | j                  dddd	d
       | j                  ddddd       | j                  ddddd       | j                  ddddd       | j                  ddddd       | j                  ddddd       | j                  t        d      5  t        j                  ddd       d d d        | j                  ddddd       | j                  ddddd       | j                  ddddd       | j                  ddddd       | j                  dddd d       | j                  d!d"d#d$d       | j                  dd%dd&d       | j                  dd'dd(d       | j                  dd)dd*d       y # 1 sw Y   xY w)+Nr   z\g<ar   r   r_   z\g<r   z\gz	missing <rn   z\g<a a>z!bad character in group name 'a a'z\g<>z\g<1a1>z!bad character in group name '1a1'z\g<2>invalid group reference 2r   r^   zunknown group name 'ab'z\g<ab>z\g<-1>r   z\g<+1> bad character in group name '+1'z()()()()()()()()()()z\g<1_0>!bad character in group name '1_0'z\g< 1 >!bad character in group name ' 1 'u   \g<©>r   s   (?P<a>x)s   \g<µ>r   r   u   \g<㊀>!   bad character in group name '㊀'u   \g<¹>    bad character in group name '¹'u   \g<१>!   bad character in group name '१')rI   assertRaisesRegex
IndexErrorr;   rG   ri   s    r   test_symbolic_refs_errorsz!ReTests.test_symbolic_refs_errors1  s   
GT >	C
FD 4a	9
E4aH
J CQ	H
GT 4a	9
J CQ	H
Hd ;Q	@
E4 ;Q	@##J0IJ 	0FF:y$/	0
It BA	G
It BA	GT CQ	H
J CQ	H
It BA	G-=u I1	N
J CQ	H
It BA	G
J CQ	H%	0 	0s   ?FF&c                    | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  d	dd      d
       | j                  t        j                  d	ddd      d       | j                  t        j                  d	ddd      d       y )Nr   r2   r   )r   rn   zb+)zx BBBBr^   r   )r   r   zb*)xxxyxzxr   rn   )xxxyzrn   r   )r6   r;   subnri   s    r   test_re_subnzReTests.test_re_subnV  s    3<jIsK8-HsE2J?sE2NCsE15|DsE;\Jr   c                    dt        d      fD ]z  }| j                  t        j                  d|      g d       | j                  t        j                  d|      g d       | j                  t        j                  d|      g d       | dt	        d      t        d      t        d      fD ]z  }| j                  t        j                  d	|      g d
       | j                  t        j                  d|      g d       | j                  t        j                  d|      g d       | dD ]  \  }}}d|d|d|}| j                  t        j                  d|      d||d|g       | j                  t        j                  d|      d|||g       | j                  t        j                  d|      dd|d|d|g        | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       dg dfdg dfdg dfd g d!ffD ]F  \  }}| j                  |"      5  | j                  t        j                  |d      |       d d d        H dg d#fd$g d%fd&g d'fd(g d)ffD ]F  \  }}| j                  |"      5  | j                  t        j                  |d      |       d d d        H y # 1 sw Y   xY w# 1 sw Y   _xY w)*N:a:b::c:)r   rt   rQ   r   rv   :+)r   rt   rQ   rv   (:+))r   r  rt   r  rQ   ::rv   s   :a:b::c   :)r   rL      br      c   :+)r   rL   r
  r     (:+))r   r	  rL   r	  r
     ::r  )u   àßçu   абвu   𝒜𝒞𝒵r  r   z(?::+)z(:)+)r   r  rt   r  rQ   r  rv   z([b:]+))r   r  rt   z:b::rv   z(b)|(:+))r   Nr  rt   Nr  r   rQ   Nr   Nr  rv   z(?:b)|(?::+))r   rt   r   r   rv   z:*)r   r   rt   r   rQ   r   rv   r   z(?::*)(:*))r   r  r   r   rt   r  r   r   rQ   r  r   r   rv   r   r   z(:)*)r   r  r   Nrt   r  r   NrQ   r  r   Nrv   Nr   )sep)	r   r  rt   r  rQ   r  r  rv   r   \b)r  rt   r  rQ   r  rv   r   z(?=:))r   z:az:br  z:cz(?<=:))r  a:zb:r  rv   )	r   r7   r;   splitr$   rM   r   r6   r>   )r   rH   rt   rQ   rv   r  expecteds          r   test_re_splitzReTests.test_re_split^  sA   9- 	GF!!"((3"7"9;!!"((4"8"57!!"((66":"EG	G "1Z=)J2G!*-/ 	NF!!"((4"8">@!!"((5&"9"9;!!"((7F";"LN	N: 	<GAq!%&1-FRXXc62RAr14EFRXXdF3b!Q]CRXXff5 #q#q$:<	< 	(I68KL&)4;	=)Y74	6*i8+	, 	.)</	1 67:;XY_`	
 	JMC #& J%%bhhsI&>IJ J	J <=782334	
 	JMC #& J%%bhhsI&>IJ J	JJ JJ Js   7'M'MM	M	c                    | j                  t        j                  ddd      g d       | j                  t        j                  ddd      g d       | j                  t        j                  ddd      g d       | j                  t        j                  ddd      g d	       | j                  t        j                  d
dd      g d	       | j                  t        j                  ddd      g d       y )Nr  r  rn   )r   rt   b::c)maxsplitza:b:c:d)rt   rQ   zc:dz(:))r   r  rt   r  r  r  r  )r   r  r   r   za:b::c)r6   r;   r  ri   s    r   test_qualified_re_splitzReTests.test_qualified_re_split  s    #y!46GH#y1=?PQ#y1=?PQ%Q?4	6&)a@4	6&)a@4	6r   c           
         | j                  t        j                  dd      g        dt        d      fD ]z  }| j	                  t        j                  d|      g d       | j	                  t        j                  d|      g d       | j	                  t        j                  d|      g d       | dt        d      t        d      t        d      fD ]z  }| j	                  t        j                  d	|      g d
       | j	                  t        j                  d|      g d
       | j	                  t        j                  d|      g d       | dD ]  }|dz  }|dz  }d|d|d|d}| j                  t        j                  d|z  |      |||g       | j                  t        j                  d|z  |      |||g       | j                  t        j                  d|d|d|      |df||f||fg        y )Nr  rp   
a:b::c:::dr  r  z:::r  z(:)(:*)))r  r   )r  r  )r  r  s
   a:b::c:::dr  )r	  r  s   :::r  s   (:)(:*)))r	  r   )r	  r	  )r	  r  r   rn   r_   rt   rQ   rv   dz%s+z(%s+)(z)(z*)r   )r6   r;   rV   r   r7   r$   rM   r   )r   rH   r2   r   ra   s        r   test_re_findallzReTests.test_re_findall  s   D%0"5"AlO3 	HF!!"**T6":"46!!"**VV"<"46!!"**Y"?"FH	H %a&6	-8P!-02 	NF!!"**UF";"79!!"**Wf"="79!!"**Z"@"LN	N 2 	9AQBa%C%&C0FRZZ	6:QCLIRZZ!V<q"clKRZZq!(<fE "g1v2w79	9r   c                 T    | j                  t        j                  dd      g d       y )Nz(a|(b))aba)rt   r   )rQ   rQ   r"  r6   r;   rV   ri   s    r   test_bug_117612zReTests.test_bug_117612  s     J69	;r   c                 4
   dt        d      fD ]  }| j                  t        j                  d|      j	                         d       | j                  t        j                  d|      j	                         d       | j                  t        j                  d|      j                  d      d       | j                  t        j                  d|      j                  d      d       | j                  t        j                  d|      j                  dd      d        dt        d      t        d      t        d      fD ]  }| j                  t        j                  d|      j	                         d       | j                  t        j                  d	|      j	                         d
       | j                  t        j                  d	|      j                  d      d       | j                  t        j                  d	|      j                  d      d       | j                  t        j                  d	|      j                  dd      d        dD ]  }| j                  t        j                  ||      j	                         d       | j                  t        j                  d|z  |      j	                         |f       | j                  t        j                  d|z  |      j                  d      |       | j                  t        j                  d|z  |      j                  d      |       | j                  t        j                  d|z  |      j                  dd      ||f        t        j                  d      }| j                  |j                  d      j	                         d       | j                  |j                  d      j	                         d       | j                  |j                  d      j	                         d       | j                  |j                  d      j	                         d       | j                  |j                  d      j	                  d      d       t        j                  d      }| j                  |j                  d      j                  ddd      d       | j                  |j                  d      j                  ddd      d       | j                  |j                  d      j                  ddd      d        y )!Nrt   r   (a)rt   r   r^   rt   rt   rL   s   (a))rL   )rL   rL   r   z(%s)z((a)|(b))(c)?)rt   rt   NNrQ   )rQ   NrQ   Nac)rt   rt   Nrv   bc)rQ   NrQ   rv   r   )rQ   r   rQ   rv   !(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?rn   r_   rt   NNa1b2c3)NrQ   N)rt   Nrv   )
r   r6   r;   rh   groupsr{   r$   rM   r   r=   )r   rH   rt   r   s       r   test_re_matchzReTests.test_re_match  s   1S6k 	NFRXXc6299;R@RXXeV4;;=vFRXXeV4::1=sCRXXeV4::1=sCRXXeV4::1a@*M	N AdGYt_j6FF 	QFRXXdF3::<bARXXff5<<>HRXXff5;;A>ERXXff5;;A>ERXXff5;;AqA<P	Q 2 	JARXXa^224b9RXXfqj!4;;=tDRXXfqj!4::1=qARXXfqj!4::1=qARXXfqj!4::1a@1a&I	J jj)3..02HI3..02HI4//13HI4//13HI4//35HIjj<=3--aA68IJ3--dD$?*	,4..q$:<LMr   c                 X    G d d      }t        j                  dd      }| j                  |j                         d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                   |d            d       | j	                  t
        |j                  d       | j	                  t
        |j                  d	       | j	                  t
        |j                  dd
z         | j	                  t
        |j                   |dd
z               | j	                  t
        |j                  d       | j                  |j                  dd      d       | j                  |j                   |d       |d            d       y )Nc                       e Zd Zd Zd Zy)!ReTests.test_group.<locals>.Indexc                     || _         y r   value)r   r7  s     r   __init__z*ReTests.test_group.<locals>.Index.__init__  s	    "
r   c                     | j                   S r   r6  ri   s    r   	__index__z+ReTests.test_group.<locals>.Index.__index__  s    zz!r   N)r   r   r   r8  r:  r   r   r   Indexr4    s    #"r   r;  z(a)(b)rl   r   r^   rt   r_     r2   rn   rQ   rt   )r;   rh   r6   r{   r:   r   )r   r;  r   s      r   
test_groupzReTests.test_group  s8   	" 	" HHXt$D)T*S)q*C0*aggr2*aggq1*aggq$w7*agguQW~>*aggs3A
3q584jAr   c                    t        j                  d      }|j                  d      }| j                  |d   d       | j                  |d   d        | j                  |d   d        | j                  dj	                  |      d       | j                  |d   d       | j                  |d	   d       | j                  |d
   d        | j                  |d   d        | j                  t        d      5  |d    d d d        | j                  t        d      5  |d    d d d        | j                  t        d      5  |d    d d d        | j                  t        d      5  |d    d d d        | j                  t        d      5  |d    d d d        | j                  t        d      5  |d    d d d        | j                  t        d      5  dj	                  |       d d d        |j                  d      }| j                  |d   d       | j                  |d   d        | j                  |d   d       | j                  dj	                  |      d       | j                  |d   d       | j                  |d	   d       | j                  |d
   d        | j                  |d   d       | j                  t              5  d	|d<   d d d        | j                  t        t        |       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   \xY w# 1 sw Y   xY w)Nr+  rt   r-  r.  r/  za1={a1} b2={b2} c3={c3}za1=a b2=None c3=Noner   r^   rn   r_   zno such groupr   r<  r   ru   )r   za1={a2}r)  rv   za1=a b2=None c3=c)
r;   r=   rh   r6   
format_mapr   r   r:   	TypeErrorlen)r   r   r   s      r   test_match_getitemzReTests.test_match_getitem  s   jj<=IIcN4#&4$'4$'2==a@BXY1s#1s#1t$1t$##J@ 	cF	##J@ 	bE	##J@ 	aD	##J@ 	dG	##J@ 	dG	##J@ 	fI	##J@ 	$  #	$ IIdO4#&4$'4#&2==a@BUV1t$1s#1t$1s# y) 	AaD	 	)S!,=	 		 		 		 		 		 		$ 	$	 	s`   1K'K49LLL%L(	L5=M'K14K>LLL%(L25L?Mc                 H   | j                  t        j                  dd      j                         d       dt	        d      fD ]6  }| j                  t        j                  d|      j                         d       8 dt        d      t        d      t        d      fD ]6  }| j                  t        j                  d|      j                         d       8 dD ]F  \  }}|d	||z   }| j                  t        j                  |||z         j                         d       H | j                  t        j                  d
d      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  d      j                  ddd      j                         d       | j                  t        j                  d
      j                  ddd      j                         d       | j                  t        j                  d      j                  ddd      j                         d       y ) Nrt   ru   rl   za|abrm   s   abs   a|ab)u   àßu   абu   𝒜𝒞r   z.*?$rp   rc   z.*?za.*?babbaxxbr   r   rd   zabc$zabc
zabc\Zz(?m)abc$z	ab(?=c)cdabcdz
ab(?<=b)cdz
(?=a|ab)abr*  r^   r_   r@   endposr]   )
r6   r;   	fullmatchrf   r   r$   rM   r   rg   r=   )r   rH   rt   rQ   rs        r   test_re_fullmatchzReTests.test_re_fullmatch  s(   dC0557@AdGm 	KFR\\'6:??A6J	KQuXy'7E9JJ 	LFR\\(F;@@BFK	LF 	DDAqq1u%AR\\!QU388:FC	D 	gu5::<fEfe499;VDh5::<fEh6;;=vFh7<<>G",,ud34",,w89",,x9:",,{G<=lF;@@BFKmV<AACVLmT:??A6JJJu''Aa'@EEG	QJJw))&a)BGGI6	SJJv((Qq(AFFH&	Rr   c                 $   | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j	                  t        j                  dd             | j	                  t        j                  dd             | j                  t        j                  dd	      j                         d
       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       t        j
                  d      }| j                  |j                  d      j                         d       | j                  |j                  d      j                         d       | j	                  |j                  d             | j	                  |j                  d             dj                  d t        dd      D              }d|z  }| j                  t        j                  |d      j                         d       y )Nz^(\()?([^()]+)(?(1)\))$r&  )r  rt   rt   Nrt   za)z(az^(?:(a)|c)((?(1)b|d))$rl   rt   rQ   cd)Nr  z^(?:(a)|c)((?(1)|d))$r"  z(?P<g1>a)(?P<g2>b)?((?(g2)c|d))rp   rt   rQ   rv   ad)rt   Nr  abdr)  r   c              3   *   K   | ]  }d ||fz    ywr   r   r   s     r   r   z2ReTests.test_re_groupref_exists.<locals>.<genexpr>V  r   r   r^   r   z(?:%s)(?(200)z)r   r   )	r6   r;   rh   r0  rg   r=   r   r   rf   )r   pr   s      r   test_re_groupref_existszReTests.test_re_groupref_exists<  s   "<eDKKM#	%"<cBIIK$	&"((#=tDE"((#=tDE":DAHHJ#	%";TBIIK$	&":DAHHJ$	&":C@GGI"	$ JJ89..0(	*--/)	+!''%.)!''$-( hhKq'9JKK#%#w/446?r   c                    | j                  ddd       | j                  ddd       | j                  ddd       | j                  d	d
d       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       y )Nz(?P<a>)(?(0)a|b)zbad group numberr   z()(?(-1)a|b)r   r   z()(?(+1)a|b)r   z()()()()()()()()()()(?(1_0)a|b)r      z()(?( 1 )a|b)r   u   ()(?(㊀)a|b)r   u   ()(?(¹)a|b)r   u   ()(?(१)a|b)r   z()(?(1r   z()(?(1)a"missing ), unterminated subpatternrn   z
()(?(1)a|bz()(?(1)a|b|cz/conditional backref with more than two branchesz()(?(1)a|b|c)z	()(?(2)a)r   r   ri   s    r   test_re_groupref_exists_errorsz&ReTests.test_re_groupref_exists_errorsZ  s@   24FKA1	FA1	F8BB	H/BA	G/BA	GA1	F/BA	Gy=q	B{CQ	H}CQ	H ./1	3 	/ ./1	3 	|:A	?r   c                     t        d      D ]5  }| j                  |      5  t        j                  d|z         d d d        7 y # 1 sw Y   BxY w)N   )codez()(?(1)\x%02x?))r   r>   r;   r=   r   r   s     r   &test_re_groupref_exists_validation_bugz.ReTests.test_re_groupref_exists_validation_bugy  sO    s 	3A1% 3

-123 3	33 3s   AA	c                 x    ddl m} | j                  dd|z  dd|z  d       | j                  d|z  d|z  d	       y )
Nr   )	MAXGROUPSz()z\g<%s>r   zinvalid group reference %dr_   z(?P<a>)(?(%d))r   )re._constantsrc  rI   rD   )r   rc  s     r   test_re_groupref_overflowz!ReTests.test_re_groupref_overflow~  sJ    +i)&;T <y H!	M09<;iG	Mr   c                 ^   | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j	                  t        j                  dd             | j	                  t        j                  dd             | j                  t        j                  d	d
      j                         d       | j                  t        j                  dd      j                         d       | j                  ddd       y )Nz^(\|)?([^()]+)\1$z|a|)r   rt   z^(\|)?([^()]+)\1?$rt   rP  za|z|az^(?:(a)|c)(\1)$aar(  z^(?:(a)|c)(\1)?$rv   NNz(abc\1)r   r   )r6   r;   rh   r0  rg   rD   ri   s    r   test_re_grouprefzReTests.test_re_groupref  s    "6>EEG#	%"7=DDF$	&"((#7>?"((#7>?"4d;BBD#	%"5s;BBD%	' 	z+JANr   c                 r    | j                  t        j                  dd      j                         ddd       y )N#(?P<first>first) (?P<second>second)first secondfirstsecond)rm  rn  )r6   r;   rh   	groupdictri   s    r   test_groupdictzReTests.test_groupdict  s0    "G"022;)+")H=	?r   c                     | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                  d      d       y )	Nrk  rl  z\2 \1 \g<second> \g<first>zsecond first second firstz#(?P<first>first)|(?P<second>second)rm  z\2 \g<second> )r6   r;   rh   expandri   s    r   test_expandzReTests.test_expand  s^    "G"02#)6*G#H4	6 	"G")+#)6*:#;	r   c                    | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd      j	                  d      d       | j                  t        j                  d	d      j	                  d      d       | j                  t        j                  d
d      j	                  d      d       | j                  t        j                  dd      j	                  d      d       | j                  t        j                  dd      j	                  d      d       | j                  t        j                  dd      j	                  d      d       | j                  t        j                  dd      j	                  d      d       | j                  t        j                  dd      j	                  d      d       | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  ddd        y )!Nz	^(\w){1}$rp   z
^(\w){1}?$z^(\w){1,2}$z^(\w){1,2}?$z	^(\w){3}$r^   rv   z^(\w){1,3}$z^(\w){1,4}$z^(\w){3,4}?$z
^(\w){3}?$z^(\w){1,3}?$z^(\w){1,4}?$z^x{1}$ra   z^x{1}?$z^x{1,2}$z	^x{1,2}?$z^x{3}$z^x{1,3}$z^x{3,3}$z^x{1,4}$z	^x{3,4}?$z^x{3}?$z	^x{1,3}?$z	^x{1,4}?$z^x{}$x{}zx{2,1}z"min repeat greater than max repeatrn   )rg   r;   rh   r6   r{   
assertTruerD   ri   s    r   test_repeat_minmaxzReTests.test_repeat_minmax  s   "((<78"((=%89"((>59:"((?E:;,6<<Q?E.%8>>qA3G.%8>>qA3G/59??BCH-7==a@#F/59??BCH/59??BCH/59??BCH"((9e45"((:u56"((;67"((<78E23e45e45e45u56U34u56u56u56"((8U34512yCQ	Hr   c                 b   | j                  t        j                  d      j                  d       | j                  t        j                  d      j                  t        j
                  t        j                  z         | j                  t        j                  d      j                  d       | j                  t        j                  d      j                  i        | j                  t        j                  d      j                  ddd       | j                  t        j                  dd      j                  d       | j                  t        j                  dd      j                  d       | j                  t        j                  dd      j                  d       | j                  t        j                  dd      j                  d	       | j                  t        j                  dd      j                         t        j                  d      }| j                  t        |j                        d
dg       | j                  |j                  d   d       | j!                  t"              5  d|j                  d<   d d d        | j                  |j                  d   d       y # 1 sw Y   )xY w)Nz
(?i)(a)(b)rn   z(?i)(?P<first>a)(?P<other>b)r^   )rm  otherr&  rt   r   )ru   ru   rm  rz  )r6   r;   r=   r9   flagsr   Ur0  
groupindexrh   r@   rK  rH   regsrw  sortedr:   rB  )r   rW  s     r   test_getattrzReTests.test_getattr  s   L199<HL177EL188!<L1<<bA$BCNN#$q1	3 	%-1115%-44a8%-44c:%-224DE,//0 JJ67-/ABg.2y) 	&$%ALL!	&g.2	& 	&s   -J%%J.c                    | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                  d      d       | j                  t        j                  ddt        j                        j                  d      d       | j                  t        j                  ddt        j                        j                  d      d       | j                  t        j                  ddt        j
                        j                  d	      d
       | j                  t        j                  dd
t        j
                        j                  d	      d
       | j                  t        j                  ddt        j
                               | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                  d      d       | j                  t        j                  ddt        j                        j                  d      d       | j                  t        j                  ddt        j                        j                  d      d       | j                  t        j                  ddt        j
                        j                  d	      d       | j                  t        j                  ddt        j
                        j                  d	      d       | j                  t        j                  ddt        j
                               | j                  t        j                  dd      j                  d	      d       | j                  t        j                  dd      j                  d	      d       | j                  t        j                  ddt        j                        j                  d	      d       | j                  t        j                  ddt        j                        j                  d	      d       y )Nz\b(b.)\bzabcd abc bcd bxr^   bxz\B(b.)\Bzabc bcd bc abxdz^abc$z
abc
r   rp   z	^\Aabc\Z$s   \b(b.)\bs   abcd abc bcd bxs   bxs   \B(b.)\Bs   abc bcd bc abxds   ^abc$s   
abc
   abcs	   ^\Aabc\Z$z\d\D\w\W\s\Sz1aa! as   \d\D\w\W\s\Ss   1aa! a)r6   r;   re   r{   ASCIIMrg   LOCALEri   s    r   test_special_escapeszReTests.test_special_escapes  s   ;#466;eAh	F;#466;eAh	F;#4bhh@@Ea$	P;#4bhh@@Ea$	P8Y=CCAFN<=CCAFN"))L)RTTBC<#577<uQx	H<#577<uQx	H<#5ryyBBG%(E	S<#5ryyBBG%(E	S9j"$$?EEaH&Q=&"$$?EEaH&Q"))M:rttDE?#+--2U1Xx	A#3#,..3eAh		C?#+RXX77<uQx	K#3#,bii99>q9	Nr   c                    | j                  ddd       | j                  t        j                  dd      j	                         d       | j                  t        j                  dd             | j                  t        j                  dd      j	                         d       | j                  t        j                  dd	      j	                         d	       | j                  t        j                  dd
             | j                  t        j                  dd      j	                         d       | j                  t        j                  dd             | j                  t        j                  dd      j	                         d       | j                  t        j                  dd             t        j                          dD ]N  }| j                  |      5  | j                  t        j                  t        j                  d|z         d d d        P dD ]N  }| j                  |      5  | j                  t        j                  t        j                  d|z         d d d        P y # 1 sw Y   xY w# 1 sw Y   gxY w)Nr   zbad escape (end of pattern)r   z\(r  )r   z[\]]][z[a\-c]-rQ   z[\^a]+za^!ceghijklmopqyzCEFGHIJKLMNOPQRTVXYz\%c$ceghijklmopqyzABCEFGHIJKLMNOPQRTVXYZz[\%c])rD   r6   r;   rh   r{   rg   purger>   r:   r<   r=   )r   rv   s     r   test_other_escapeszReTests.test_other_escapes  s   t%BAF%-335s;"((5#./%.446='3/557="((7C01)S17793?"((9c23)T288:DA"((9c23

4 	DAa D!!"((BJJ
CD D	D 8 	FAa F!!"((BJJ1EF F	FD DF Fs   3I')3I3'I0	3I<	c                    | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  d	d
             | j                  t        j                  d	d             | j	                  ddd       | j	                  ddd       | j	                  ddd       | j	                  ddd       | j	                  ddd       | j	                  ddd       | j	                  ddd       | j	                  ddd       | j	                  ddd       | j	                  ddd       | j	                  ddd       | j	                  dd d!       | j	                  d"d d       | j	                  d#d$d!       | j	                  d%d$d       | j	                  d&d'd!       | j	                  d(d'd       y ))Nz\N{LESS-THAN SIGN}<z\N{less-than sign}>z	\N{SNAKE}u   🐍zW\N{ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM}u   ﯹz*[\N{LESS-THAN SIGN}-\N{GREATER-THAN SIGN}]=;z\Nz	missing {rn   z[\N]r_   z\N{zmissing character namez[\N{r   z\N{}z[\N{}]z\NSNAKE}z
[\NSNAKE}]z\N{SNAKEzmissing }, unterminated namez
[\N{SNAKE]z[\N{SNAKE]}z!undefined character name 'SNAKE]'r^   z\N{SPAM}zundefined character name 'SPAM'r   z
[\N{SPAM}]z\N{KEYCAP NUMBER SIGN}z-undefined character name 'KEYCAP NUMBER SIGN'z[\N{KEYCAP NUMBER SIGN}]s   \N{LESS-THAN SIGN}zbad escape \Ns   [\N{LESS-THAN SIGN}])rw  r;   rh   rg   rD   ri   s    r   test_named_unicode_escapesz"ReTests.test_named_unicode_escapes  s   !6<=!6<="((#8#>?|<= "Q!)+ 	, 	!N!$& 	'"((#P#&( 	) 	uk15wQ7v'?Cw(@!Dw(@!Dy*BAF{K;}k1={=q	B}=q	B~BA	G{@!	E}@!	E8KQ	P:KQ	P57GK79I1Mr   c                    | j                  t        j                  dd      j                  d      d       | j	                  t        j
                  dd             | j	                  t        j                  dd             | j                  t        j
                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d	       | j                  t        t        j                  dd
            d	       | j                  t        t        j                  dd            d	       | j                  t        t        j                  dd
            d       y )Nz	\b(abc)\brp   r^   r  \Br   rt   rn   r   rr  z   )
r6   r;   re   r{   rw  rh   assertFalserg   rC  rV   ri   s    r   test_string_boundarieszReTests.test_string_boundaries7  sL   <7==a@	  	./		%/0%/0 	"))E2./ 	"))E2./ 	RZZs34a8RZZs34a8RZZs34a8RZZu56:RZZs34a8r   c                 0   | j                  t        j                  dd      j                  d      d       ddj	                  t        t        t        ddd                  z  }| j                  t        j                  |d	      j                         d	       y )
Nu
   ([∢∣])u   ∢r^   z[%s]r   r^        u   ！)r6   r;   rh   r{   r   mapr   r   r   rM  s     r   test_bigcharsetzReTests.test_bigcharsetQ  st    "4"*,,1E!Hh	@RWWSeC&<=>>!X.446Ar   c                     t        j                  dj                  d t        d      D                    }| j	                  |j                  d             | j	                  |j                  d             y )Nr   c              3   &   K   | ]	  }d |z    yw)z%dNr   )r   r2   s     r   r   z,ReTests.test_big_codesize.<locals>.<genexpr>Y  s      >Aa >s   '  10009999)r;   r=   r   r   rw  rh   r  s     r   test_big_codesizezReTests.test_big_codesizeW  sK    JJsxx >u >?@((r   c                    | j                  t        j                  ddt        j                        j	                  d      d       | j                  t        j                  ddt        j                        j	                  d      d       y )Nza.bza
br   za.*bza

b)r6   r;   rh   DOTALLr{   ri   s    r   test_anyallzReTests.test_anyall]  s`    %;AA!D	!&(BII>DDQG!	#r   c                 v   | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                  d      d       | j                  t        j                  d	d
      j                  d      d       | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd
      j                  d      d       | j                  t        j                  dd
      j                  d      d       | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                  d      d       | j	                  t        j                  dd             | j                  t        j                  dd             | j	                  t        j                  dd             | j                  t        j                  dd             | j	                  t        j                  dd             | j                  t        j                  dd             | j	                  t        j                  dd             | j	                  t        j                  dd             | j                  t        j                  dd             | j	                  t        j                  dd             y )Nz(a(?=\s[^a]))a br^   rt   z(a(?=\s[^a]*))z(a(?=\s[abc]))z(a(?=\s[abc]*))a bcz(a)(?=\s\1)a az(a)(?=\s\1*)a aaz(a)(?=\s(abc|a))z(a(?!\s[^a]))z(a(?!\s[abc]))za dz(a)(?!\s\1)z(a)(?!\s(abc|a))z(a)b(?=\1)ar!  z(a)b(?=\1)cabacz(?:(a)|(x))b(?=(?(2)x|c))crp   z(?:(a)|(x))b(?=(?(2)c|x))cz(?:(a)|(x))b(?=(?(1)b|x))cz(?:(a)|(x))b(?=(?(1)c|x))cz(a)b(?=(?(2)x|c))(c)z(a)b(?=(?(2)b|x))(c)z(a)b(?=(?(1)c|x))(c))r6   r;   rh   r{   rw  rg   ri   s    r   test_lookaheadzReTests.test_lookaheadc  s   "2E:@@CSI"3U;AA!DcJ"3U;AA!DcJ"4f=CCAFL.%8>>qA3G/6:@@CSI"5u=CCAFL"2E:@@CSI"3U;AA!DcJ.%8>>qA3G"5u=CCAFL 	78"((>6:;!>FG"((#@%HI!>FG"((#@%HI!>FG!8%@A"((#:EBC!8%@Ar   c                 0   | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd	             | j                  t        j                  d
d             | j                  t        j                  dd	             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j	                  t        j
                  t        j                  d       | j                  t        j                  dd             | j                  t        j                  dd             | j	                  t        j
                  t        j                  d       | j	                  t        j
                  t        j                  d       | j	                  t        j
                  t        j                  d       | j	                  t        j
                  t        j                  d       y )Nz	ab(?<=b)crp   z	ab(?<=c)cz	ab(?<!b)cz	ab(?<!c)cz(a)a(?<=\1)caacz(a)b(?<=\1)aabaaz(a)a(?<!\1)cz(a)b(?<!\1)az(?:(a)|(x))b(?<=(?(2)x|c))cz(?:(a)|(x))b(?<=(?(2)b|x))cz(?:(a)|(x))b(?<=(?(2)x|b))cz(?:(a)|(x))b(?<=(?(1)c|x))cz(?:(a)|(x))b(?<=(?(1)b|x))cz(a)b(?<=(?(2)b|x))(c)z(a)b(?<=(?(1)c|x))(c)z(a)b(?<=(?(1)b|x))(c)z(a)b(?<=(.)\2)(c)z(a)b(?<=(?P<a>.)(?P=a))(c)z(a)b(?<=(a)(?(2)b|x))(c)z(a)b(?<=(.)(?<=\2))(c))rw  r;   rh   rg   r:   r<   r=   ri   s    r   test_lookbehindzReTests.test_lookbehind  s   u56"((<78"((<78u56%89"((?F;<"((?E:;&9:"((#A5IJ"((#A5IJ!?GH"((#A5IJ!?GH"((BJJ0HI"((#;UCD!95AB"((BJJ0DE"((BJJ0MN"((BJJ0KL"((BJJ0IJr   c                 4   | j                  t        j                  ddt        j                        j	                  d      d       | j                  t        j                  ddt        j                        j	                  d      d       | j                  t        j                  ddt        j                        j	                  d      d       | j                  t        j                  d	d
t        j                        j	                  d      d
       | j                  t        j                  ddt        j                        j	                  d      d       | j                  t        j                  dd
t        j                        j	                  d      d
       | j                  t        j                  ddt        j                        j	                  d      d       | j                  t        j                  ddt        j                        j	                  d      d       | j                  t        j                  ddt        j                        j	                  d      d       | j                  t        j                  ddt        j                        j	                  d      d       dj                         dj                         cxk(  rdk(  sJ  J | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               dj                         dj                         cxk(  rdk(  sJ  J | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               dj                         dj                         cxk(  rdk(  sJ  J | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  d dt        j                               | j                  t        j                  d dt        j                               d!j                         d"j                         cxk(  rd#k(  sJ  J | j                  t        j                  d$d"t        j                               | j                  t        j                  d%d!t        j                               y )&Nrp   ABCr   r  s   ABCz	(a\s[^a])r  r^   z
(a\s[^a]*)za bbz
(a\s[abc])z(a\s[abc]*)z	((a)\s\2)r  z
((a)\s\2*)r  z((a)\s(abc|a))z((a)\s(abc|a)*)K   Kkz\u212arW      ſr   z\u017f   в   ᲀ   Вz\u0412z\u0432z\u1c80   ﬅ   ﬆSTz\ufb05z\ufb06)r6   r;   rh   r   r{   lowerrw  upperri   s    r   test_ignore_casezReTests.test_ignore_case  s.   %5;;A>F&&"$$7==a@&I,rtt<BB1EuM->DDQGP-=CCAFN.&"$$?EEaH&Q,rtt<BB1EuM->DDQGP"3UBDDAGGJER"4fbddCII!LfU yy{hnn.5#55555x67x67C67C67 yy{hnn.5#55555x67x67C67C67 ~~8>>#3?x?????Hbdd;<Hbdd;<Hbdd;<Hbdd;<Hbdd;<Hbdd;< ~~8>>#3;t;;;;;Hbdd;<Hbdd;<r   c                 $   | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               d	j	                         d
j	                         cxk(  rdk(  sJ  J | j                  t        j                  dd
t        j                               | j                  t        j                  dd
t        j                               | j                  t        j                  dd	t        j                               | j                  t        j                  ddt        j                               dj                         dj                         cxk(  rdk(  sJ  J | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               dj                         dj                         cxk(  rdk(  sJ  J | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               dj                         dj                         cxk(  rdk(  sJ  J | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               y ) Nz[19A]r   z[19a]rt   s   [19A]   As   [19a]rL   r  r  r  z[19K]z[19k]z
[19\u212a]rW   r  r   z[19S]z[19s]z
[19\u017f]r  r  r  z
[19\u0412]z
[19\u0432]z
[19\u1c80]r  r  r  z
[19\ufb05]z
[19\ufb06])rw  r;   rh   r   r  r  ri   s    r   test_ignore_case_setzReTests.test_ignore_case_set  s\   356356356356D"$$78D"$$78D"$$78D"$$78 yy{hnn.5#555558RTT:;8RTT:;RTT:;RTT:; yy{hnn.5#555558RTT:;8RTT:;RTT:;RTT:; ~~8>>#3?x?????"$$?@"$$?@"$$?@"$$?@"$$?@"$$?@ ~~8>>#3;t;;;;;"$$?@"$$?@r   c                 d   | j                  t        j                  ddt        j                               | j	                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j	                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j	                  t        j                  dd	t        j                               | j                  t        j                  d
d	t        j                               | j	                  t        j                  d
dt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               dj                         dj                         cxk(  rdk(  sJ  J | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               dj                         dj                         cxk(  rdk(  sJ  J | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               dj                         d j                         cxk(  rd!k(  sJ  J | j                  t        j                  d"dt        j                               | j                  t        j                  d"d t        j                               | j                  t        j                  d#d!t        j                               | j                  t        j                  d#d t        j                               | j                  t        j                  d$d!t        j                               | j                  t        j                  d$dt        j                               d%j                         d&j                         cxk(  rd'k(  sJ  J | j                  t        j                  d(d&t        j                               | j                  t        j                  d)d%t        j                               y )*Nz[9-a]_z[9-A]s   [9-a]   _s   [9-A]z[\xc0-\xde]   ×   ÷z[\xe0-\xfe]z[\u0430-\u045f]u   ѐu   Ѐz[\u0400-\u042f]z[\U00010428-\U0001044f]u   𐐨u   𐐀z[\U00010400-\U00010427]r  r  r  z[J-M]z[j-m]z[\u2129-\u212b]rW   r  r   z[R-T]z[r-t]z[\u017e-\u0180]r  r  r  z[\u0411-\u0413]z[\u0431-\u0433]z[\u1c80-\u1c82]r  r  r  z[\ufb04-\ufb05]z[\ufb06-\ufb07])rw  r;   rh   r   rg   r  r  ri   s    r   test_ignore_case_rangezReTests.test_ignore_case_range  s`   356"((8S"$$78D"$$78"((9dBDD9:>?"((>6244@A>?"((>6244@A!3XrttDE!3XrttDE!3XrttDE!3XrttDE!;\244PQ!;\244PQ!;\244PQ!;\244PQ yy{hnn.5#555558RTT:;8RTT:;!3S"$$?@!3S"$$?@ yy{hnn.5#555558RTT:;8RTT:;!3S"$$?@!3S"$$?@ ~~8>>#3?x?????!3XrttDE!3XrttDE!3XrttDE!3XrttDE!3XrttDE!3XrttDE ~~8>>#3;t;;;;;!3XrttDE!3XrttDEr   c                 n    | j                  t        j                  dd      j                  d      d       y )Nz(\s)rr  r^   r6   r;   rh   r{   ri   s    r   test_categoryzReTests.test_category  s(    '3/55a8#>r   c                     | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                  d      d       y )Nz\s([^a]) br^   rQ   z	\s([^a]*)z bbbbr6   r;   re   r{   ri   s    r   test_not_literalzReTests.test_not_literal  sN    ;5;;A>D<7==a@$Gr   c                 
   t        t        d            j                         }| j                  t              5  t        j                  d      }d d d        | j                  j                  |      t        d             | j                  t        j                  d|      t        d             | j                  t              5  t        j                  d      }d d d        | j                  |j                  |      t        d             | j                  t              5  t        j                  d      }d d d        | j                  |j                  |      t        d	             | j                  t              5  t        j                  d
      }d d d        | j                  |j                  |      t        d             | j                  t              5  t        j                  d      }d d d        | j                  |j                  |      t        d             | j                  t        j                  d|      t        d             | j                  t              5  t        j                  d      }d d d        | j                  |j                  |      t        d             | j                  t              5  t        j                  d      }d d d        | j                  |j                  |      t        d             | j                  t        j                  d|      t        d             | j                  t              5  t        j                  d      }d d d        | j                  |j                  |      t        d             | j                  t              5  t        j                  d      }d d d        | j                  |j                  |      t        d             | j                  t        j                  d|      t        d             | j                  t              5  t        j                  d      }d d d        | j                  |j                  |      t        d             | j                  t              5  t        j                  d      }d d d        | j                  |j                  |      t        d             y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   UxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)N   z[0-9--1]z-./0123456789z[--1]z-./01z[%--1]z
%&'()*+,-1z[%--]z	%&'()*+,-z[0-9&&1]z&0123456789z[\d&&1]z[&&1]z&1z[0-9||a]z0123456789a|z[\d||a]z[||1]z1|z[0-9~~1]z0123456789~z[\d~~1]z[~~1]z1~z[[0-9]|]z0123456789[]z[[:digit:]|]z:[]dgit)
bytesr   decodeassertWarnsFutureWarningr;   r=   r6   rV   r,   )r   rW   rW  s      r   test_possible_set_operationsz$ReTests.test_possible_set_operations  s   %*$$&m, 	(

;'A	(1tO'<=Ha0$w-@m, 	&

9%A	&1tL'9:m, 	%

8$A	%1tK'89m, 	(

;'A	(1tM':;m, 	'

:&A	'1tM':;Ha0$t*=m, 	(

;'A	(1tN';<m, 	'

:&A	'1tN';<Ha0$t*=m, 	(

;'A	(1tM':;m, 	'

:&A	'1tM':;Ha0$t*=m, 	(

;'A	(1tN';<m, 	,

?+A	,1tI7S	( 	(	& 	&	% 	%	( 	(	' 	'
	( 	(	' 	'
	( 	(	' 	'
	( 	(	, 	,s   SS,!S9>TT'T T-T:-U9UU!S),S69TTT T*-T7:UUU!U*c                     | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                  d      d       y )Nz\s(b)r  r^   rQ   za\sza r   r  ri   s    r   test_search_coveragezReTests.test_search_coverageJ  sN    8T288;SA64066q94@r   c                     |||}dt        |      f}n||t        d       |||      }| j                  |       | j                  |j	                         |       | j                  |j                         |       y )Nr   z@If match is not None, span should be specified (and vice versa).)rC  r   rw  r6   r{   rf   )r   r9   textrh   rf   matcherr   s          r   assertMatchzReTests.assertMatchN  s|    =T\Es4y>D]dl 1 2 2GT"E*4(r   z!"%',/:;<=>@_`c                 N   dj                  d t        d      D              }|D ]z  }| j                  t        j                  |      |       | j                  dt        j                  |      z   dz   |       | j                  dt        j                  |      z   |       | | j                  t        j                  |      |       dD ]*  }| j                  t        j                  |      d d d	       , | j                  }| j                  t        j                  |      |       y )
Nr   c              3   2   K   | ]  }t        |        y wr   )r   r   s     r   r   z)ReTests.test_re_escape.<locals>.<genexpr>_  s     /qCF/s   r^  r  r  z(?x)z-.]{}r^   r   )r   r   r  r;   escaper6   LITERAL_CHARS)r   rW  rv   literal_charss       r   test_re_escapezReTests.test_re_escape^  s    GG/E#J// 	7ARYYq\1-S299Q</#5q9Vbiil2A6	7 	1q) 	5ARYYq\"1-t4	5**=1=Ar   c                    t        t        d            }|D ]  }t        |g      }| j                  t        j                  |      |       | j                  dt        j                  |      z   dz   |       | j                  dt        j                  |      z   |        | j                  t        j                  |      |       dD ]6  }t        |g      }| j                  t        j                  |      d d d       8 | j                  j                  d      }| j                  t        j                  |      |       y )	Nr^     [   ]s   (?x)s   -.]{}r^      \ascii)r  r   r  r;   r  r6   r  encode)r   rW  r   rQ   r  s        r   test_re_escape_byteszReTests.test_re_escape_bytesj  s   %* 	8Aqc
ARYYq\1-TBIIaL047;Wryy|3Q7		8
 	1q) 	6Aqc
ARYYq\"1-u5	6 **11':=1=Ar   c                     d}t        j                  |      }| j                  ||       | j                  ||       | j                  dt        j                  d      z  |ddt         j                         y )Nu   xxx☠☠☠xxxz.%s+.   ☠u   x☠☠☠x)rn   r   )r;   r  r6   r  re   )r   rW   	s_escapeds      r   test_re_escape_non_asciiz ReTests.test_re_escape_non_asciix  s`    &IIaL	A&A&299X#66/	Dr   c                 >   dj                  d      }t        j                  |      }| j                  ||       | j	                  ||       t        j
                  t        j                  dj                  d            |      }| j                  t        |      d       y )Nu	   y☠y☠yzutf-8r  rn   )r  r;   r  r6   r  rV   rC  )r   rQ   	b_escapedress       r   test_re_escape_non_ascii_bytesz&ReTests.test_re_escape_non_ascii_bytes  su    $$W-IIaL	A&A&jj8??7#;<a@S1%r   c                    dd l }t        j                  dt        j                        }t	        |j
                  dz         D ]7  }|j                  ||      }|j                  |      }| j                  ||       9 ddlm	} y )Nr   za(?:b|(c|e){1,2}?|d)+?(.)r^   )_compile)
pickler;   r=   UNICODEr   HIGHEST_PROTOCOLdumpsloadsr6   r  )r   r  oldpatprotopicklednewpatr  s          r   test_picklingzReTests.test_pickling  sl    7D622Q67 	-Ell651G\\'*FVV,	-
 	 r   c                 `   dd l }t        j                  d      }| j                  |j                  |      |       | j                  |j	                  |      |       |j                  d      }| j                  |j                  |      |       | j                  |j	                  |      |       y )Nr   z (?P<int>\d+)(?:\.(?P<frac>\d*))?z12.34)copyr;   r=   r.   deepcopyrh   )r   r  rW  r   s       r   test_copyingzReTests.test_copying  s|    JJ:;diilA&dmmA&*GGGdiilA&dmmA&*r   c                    | j                  t        j                  t        j                         | j                  t        j                  t        j
                         | j                  t        j                  t        j                         | j                  t        j                  t        j                         | j                  t        j                  t        j                         y r   )r6   r;   r   
IGNORECASELr  r  	MULTILINEr   r  r   VERBOSEri   s    r   test_constantszReTests.test_constants  sz    r}}-ryy)r||,ryy)rzz*r   c                    t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  fD ]'  }| j                  t        j                  d|             ) t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  fD ]'  }| j                  t        j                  d|             ) y )Nz	^pattern$s	   ^pattern$)
r;   r   r  r   r   r   r|  rw  r=   r	  )r   flags     r   
test_flagszReTests.test_flags  s    TT244rttRTT2448 	;DOOBJJ{D9:	;TT244rttRTT2448 	<DOOBJJ|T:;	<r   c           	      r   dD ]r  }|dk  r2| j                  t        j                  d|z  t        |                   | j                  t        j                  d|z  t        |      dz                | j                  t        j                  d|z  t        |      dz                | j                  t        j                  d|z  t        |                   | j                  t        j                  d	|z  t        |      dz                | j                  t        j                  d
|z  t        |      dz                |dk  r| j                  t        j                  d|z  t        |                   | j                  t        j                  d|z  t        |      dz                | j                  t        j                  d|z  t        |      dz                | j                  t        j                  d|z  t        |                   | j                  t        j                  d|z  t        |      dz                | j                  t        j                  d|z  t        |      dz                u | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j	                  ddd       | j	                  ddd        | j	                  d!d"d       | j	                  d#d"d       | j	                  d$d%d       | j	                  d&d%d       | j	                  d'd(d       | j	                  d)d(d       | j	                  d*d+d       y ),Nr   r          @      r  r  r^    r  i r^  \%03o\%03o00\%03o88\x%02x\x%02x0\x%02xzzr  z\u%04xz\u%04x0z\u%04xzz\U%08xz\U%08x0z\U%08xzr   r   r   r   z\01r   z\018z8z\5670octal escape value \567 outside of range 0-0o377r   z\911invalid group reference 91r^   z\x1incomplete escape \x1z\x1zz\u123incomplete escape \u123z\u123zz	\U0001234incomplete escape \U0001234z
\U0001234zz
\U00110000bad escape \U00110000rw  r;   rh   r   rD   r`  s     r   test_sre_character_literalsz#ReTests.test_sre_character_literals  s   R 	BA3wAs1v >?QAs
 CDQAs
 CDQA ?@aQ DEaQ DE7{QA ?@aQ DEaQ DEOOBHHY]CF;<OOBHHZ!^SVCZ@AOOBHHZ!^SVCZ@A	B 	/01201'23w 012	4 	w(DaHv'?Cw(@!Dx)CQGy*DaH|-KQO}.LaP}.FJr   c           	         dD ]  }|dk  r| j                  t        j                  d|z  t        |                   | j                  t        j                  d|z  t        |                   | j                  t        j                  d|z  t        |                   | j                  t        j                  d|z  t        |                   | j                  t        j                  d|z  t        |                   | j                  t        j                  d|z  t        |                   | j                  t        j                  d	|z  t        |                   | j                  t        j                  d
|z  t        |                   |dk  r| j                  t        j                  d|z  t        |                   | j                  t        j                  d|z  t        |                   | j                  t        j                  d|z  t        |                   | j                  t        j                  d|z  t        |                   | j                  t        j                  d|z  t        |      dz                | j                  t        j                  d|z  t        |      dz                 | j	                  ddd       | j	                  ddd       | j	                  ddd       | j	                  ddd       | j	                  ddd       | j	                  dd d       | j                  t        j                  d!d"             y )#Nr  r^  [\%o][\%o8][\%03o][\%03o0][\%03o8][\x%02x]	[\x%02x0]	[\x%02xz]r  z[\u%04x]z	[\u%04x0]z	[\u%04xz]z[\U%08x]z	[\U%08x0]r  z	[\U%08xz]r  z[\567]r   r^   z[\911]bad escape \9z[\x1z]r"  z[\u123z]r#  z[\U0001234z]r$  z[\U00110000]r%  z[\U0001d49c-\U0001d4b5]u   𝒞r&  r`  s     r   !test_sre_character_class_literalsz)ReTests.test_sre_character_class_literals  su   R 	DA3wAs1v >?QA ?@aQ @Aq#a& ABq#a& ABq#a& AB)93q6 BC)93q6 BC7{q#a& AB)93q6 BC)93q6 BCOOBHH[1_c!f=>OOBHH\A%5s1vczBCOOBHH\A%5s1vczBC!	D" 	y 012	4 	y*:A>y*BAF{,FJ0NPQR0H!L!;\JKr   c           	         dD ]  }| j                  t        j                  d|z  j                         t	        |g                   | j                  t        j                  d|z  j                         t	        |g      dz                | j                  t        j                  d|z  j                         t	        |g      dz                | j                  t        j                  d|z  j                         t	        |g                   | j                  t        j                  d|z  j                         t	        |g      dz                | j                  t        j                  d	|z  j                         t	        |g      d
z                 | j                  t        j                  t        j                  d       | j                  t        j                  t        j                  d       | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       y )Nr   r   r  r  r  r  r  r  r  r     0r     8r  r  r     zs   \u1234s
   \U00012345s   \0    s   \08s    8s   \01   s   \018s   8s   \567r   r   s   \911r!  r^   s   \x1r"  s   \x1z	rw  r;   rh   r  r  r:   r<   r=   rD   r`  s     r   test_sre_byte_literalszReTests.test_sre_byte_literals  s   2 	RAOOBHHhl%:%:%<eQCjIJOOBHHi!m%;%;%=uaSz$OPOOBHHi!m%;%;%=uaSz$OPOOBHHi!m%;%;%=uaSzJKOOBHHj1n%<%<%>qc
4PQOOBHHj1n%<%<%>qc
4PQ	R 	"((BJJ
;"((BJJ?12(34'23845x 012	4 	x)EqIw(@!Dx)A1Er   c           	      D   dD ]  }| j                  t        j                  d|z  j                         t	        |g                   | j                  t        j                  d|z  j                         t	        |g                   | j                  t        j                  d|z  j                         t	        |g                   | j                  t        j                  d|z  j                         t	        |g                   | j                  t        j                  d|z  j                         t	        |g                   | j                  t        j                  d|z  j                         t	        |g                   | j                  t        j                  d|z  j                         t	        |g                   | j                  t        j                  d	|z  j                         t	        |g                    | j                  t        j                  t        j                  d
       | j                  t        j                  t        j                  d       | j                  ddd       | j                  ddd       | j                  ddd       y )Nr4  r)  r*  r+  r,  r-  r.  r/  r0  s   [\u1234]s   [\U00012345]s   [\567]r   r^   s   [\911]r1  s   [\x1z]r"  r:  r`  s     r   test_sre_byte_class_literalsz$ReTests.test_sre_byte_class_literals  s   2 	OAOOBHHhl%:%:%<eQCjIJOOBHHi!m%;%;%=uaSzJKOOBHHj1n%<%<%>qc
KLOOBHHkAo%=%=%?sLMOOBHHkAo%=%=%?sLMOOBHHkAo%=%=%?sLMOOBHHlQ&6%>%>%@%*MNOOBHHlQ&6%>%>%@%*MN	O 	"((BJJ="((BJJ0@Az 012	4 	z+;Q?z+CQGr   c                    | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd	       | j                  d
dd	       | j                  ddd	       y )Nr  zunterminated character setr   z[^z[az[a-z[\w-b]zbad character range \w-br^   z[a-\w]zbad character range a-\wz[b-a]zbad character range b-ar   ri   s    r   test_character_set_errorsz!ReTests.test_character_set_errors  s    t%A1Eu&BAFu&BAF 	v'CQGy*EqIy*EqIx)BAFr   c                 B   | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j	                  d      d       | j                  t        j                  dd      j                  d      d       y )Nz(a)|(b)rQ   r^   r<  )r<  r<  )r6   r;   rh   startendrf   ri   s    r   test_bug_113254zReTests.test_bug_113254  st    *c288;R@*c266q92>*c277:HEr   c                    | j                  t        j                  dd      j                         | j	                  t        j                  dd      j                  d       | j	                  t        j                  dd      j
                  d       | j	                  t        j                  dd      j
                  d       | j	                  t        j                  dd      j                  d       y )	Nz(a)?art   z(a)(b)?brl   r^   z(?P<a>a)(?P<b>b)?bz(?P<a>a(b))z((a)))rg   r;   rh   	lastindexr6   	lastgroupri   s    r   test_bug_527371zReTests.test_bug_527371  s    "((8C0::;+d3==qA"7=GGM.$7AA3G(C0::A>r   c                    | j                  t        j                  dddz  dz         j                  d      d       | j                  t        j                  dddz  d	z   ddz  z   d
z         j                  d      d       | j                  t        j                  dddz  dz         j                  d      d       | j                  t        j                  dddz  dz         j                  d      d       y )Nz.*?cr  rl   rR  r   i!N  z.*?cdi  rv   cdei#N  i N  rp   deia  z(a|b)*?c)r6   r;   rh   rB  re   ri   s    r   test_bug_418626zReTests.test_bug_418626#  s     	&%*T/:>>qA5I'49S=d+B5+HIMMaP	 '5;t+;<@@CUK 	:uTz$?CCAFNr   c                     dt        j                  d      z   dz   }| j                  t        j                  |      xr dd       y )Nr  u   ‹r  r^   )r;   r  r6   r=   r   s     r   test_bug_612074zReTests.test_bug_612074/  s7    		(##C'C.Q2r   c                 `   | j                  t        j                  dddz        j                  d      d       | j                  t        j                  dddz  dz         j                  d      d       | j                  t        j                  dddz  dz         j                  d      d       y )Nz(x)*iP  r2   r^   z(x)*yr3   z(x)*?yr  ri   s    r   test_stack_overflowzReTests.test_stack_overflow3  s     	&%)4::1=sC'59S=9??BCH(E#IcM:@@CSIr   c                     dD ]9  }dD ]2  }| j                  ||dd       | j                  d||ddd       4 ; y )N*+?z{1,2}r   rT  znothing to repeatr   z(?:r  r_   r   )r   repsmods      r   test_nothing_to_repeatzReTests.test_nothing_to_repeat:  sT    * 	?D ?&&s';':A?&&T3'?':A??	?r   c                     dD ]M  }dD ]F  }||z   }dD ]:  }dD ]3  }||z   dv r||z   }| j                  d||ddt        |      z          5 < H O y )NrQ  )r   rT  rS  )rT  rS  r2   zmultiple repeatr^   )rD   rC  )r   
outer_reps	outer_modouter_op
inner_reps	inner_modinner_ops          r   test_multiple_repeatzReTests.test_multiple_repeatB  s    0 		FJ) F	%	1"8 FJ%1 F	$z1Z?$#-	#9..8X/N 11s8}3DF	FFF		Fr   c                    | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             y )Nz(?:a?)*yr  z(?:a?)+yz(?:a?){2,}yz	(?:a?)*?yz	(?:a?)+?yz(?:a?){2,}?y)rg   r;   rh   ri   s    r    test_unlimited_zero_width_repeatz(ReTests.test_unlimited_zero_width_repeatN  s    "((;45"((;45"((>378"((<56"((<56"((?C89r   c                     d }d }d }d }t        d|fd|fd|fd|fd	g      }| j                  |j                  j                  d
      j                         | j	                  |j                  d      g dd
f       y )Nc                     |S r   r   scannertokens     r   s_identz%ReTests.test_scanner.<locals>.s_identX  s    E\r   c                     d|z  S )Nzop%sr   re  s     r   
s_operatorz(ReTests.test_scanner.<locals>.s_operatorY  s    v~(=r   c                     t        |      S r   )floatre  s     r   s_floatz%ReTests.test_scanner.<locals>.s_floatZ  s    E%L%8r   c                     t        |      S r   )rz   re  s     r   s_intz#ReTests.test_scanner.<locals>.s_int[  s    #e*#4r   z[a-zA-Z_]\w*z\d+\.\d*r   z=|\+|-|\*|/)z\s+Nr   zsum = 3*foo + 312.50 + bar)	sumzop=r_   zop*fooop+g     s@rr  bar)r   rw  rf  r9   r6   scan)r   rh  rj  rm  ro  rf  s         r   test_scannerzReTests.test_scannerW  s    1=84g&'"UOZ(  	//3;;<&BC)*,.	/r   c                     dD ]p  }| j                  t        j                  d|z  d      j                         d       | j                  t        j                  d|z  d      j                         d       r y )N)r   rT  rR  z
((.%s):)?zr  rh  za:z)r  rt   r6   r;   rh   r0  )r   ops     r   test_bug_448951zReTests.test_bug_448951k  sk      	*BRXXmB&6<CCE)+RXXmB&6>EEG(*	*r   c                 D   | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  d	d      j                         d       | j                  t        j                  d
d      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       y )Nz	^((a)|b)*rp   r>  z^(([ab])|c)*)rv   rQ   z^((d)|[ab])*rQ   Nz^((a)c|[ab])*z^((a)|b)*?cz^(([ab])|c)*?drI  z^((d)|[ab])*?cz^((a)c|[ab])*?crw  ri   s    r   test_bug_725106zReTests.test_bug_725106t  s=   +u5<<>#	%.%8??A#	%.%8??A$	&/59@@B$	&-7>>@#	%"2F;BBD#	%"2E:AAC$	&"3U;BBD$	&r   c                     | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       y )Nz(a)(?:(?=(b)*)c)*rF  )rt   Nz(a)((?!(b)*))*r,  rw  ri   s    r   test_bug_725149zReTests.test_bug_725149  sR    "5u=DDF$	&"2E:AAC*	,r   c                      G d dt               }t        j                   |d            }| j                  |j	                  d             y )Nc                       e Zd Zy)+ReTests.test_bug_764548.<locals>.my_unicodeN)r   r   r   r   r   r   
my_unicoder    s    r   r  rp   r   )r|   r;   r=   rg   rh   )r   r  r   s      r   test_bug_764548zReTests.test_bug_764548  s4    ##jjE*+#))E*+r   c                    t        j                  dd      }| j                  |D cg c]  }|j                  d       c}g d       t        j                  d      }|j                  ddd      }| j                  |D cg c]  }|j                  d       c}g d       t        j                  d      }|j                  ddd      }| j                  |D cg c]  }|j                  d       c}g d       t        j                  d      }|j                  ddd      }| j                  |D cg c]  }|j                  d       c}g d       t        j                  d      }|j                  dd	d
      }| j                  |D cg c]  }|j                  d       c}ddg       y c c}w c c}w c c}w c c}w c c}w )Nr  r  r   r  r^   r   rJ  )rK  r@   r_   r   r  )r;   rN   r6   r{   r=   )r   iteritemr   s       r   test_finditerzReTests.test_finditer  s{   {{5,/D9D$**Q-9+	- jj||L!R0D9D$**Q-9+	- jj||La|;D9D$**Q-9+	- jj||L|;D9D$**Q-9+	- jj||La|:D9D$**Q-9	') :
 :
 :
 :
 :s   F0?F5F:3F?Gc                 t    | j                  t        j                  d      t        j                  d             y )N
bug_926075s
   bug_926075)assertIsNotr;   r=   ri   s    r   test_bug_926075zReTests.test_bug_926075  s'    L1M2	4r   c                 t    d}| j                  t        j                  |      j                  d      g d       y )Nu   [.。．｡]za.b.crS  )r6   r;   r=   r  r   s     r   test_bug_931848zReTests.test_bug_931848  s.    .G,227;&	(r   c                    t        j                  dd      }| j                  t        |      j	                         d       | j                  t        t        |       t        j                  d      j                  d      }| j                  |j                         j	                         d       | j                  |j                                y )Nz\sr  )r^   rn   )r;   rN   r6   nextrf   r:   StopIterationr=   rf  re   rg   )r   r  rf  s      r   test_bug_581080zReTests.test_bug_581080  s    {{5%(d*E2-t4**U#++E2)..0&9'..*+r   c                 
   t        j                  dd      }| j                  t        |      j	                         d       | j                  t        |      j	                         d       | j                  t        t        |       y )Nz.*asdfrH  )r   r   )r;   rN   r6   r  rf   r:   r  )r   r  s     r   test_bug_817234zReTests.test_bug_817234  sZ    {{5&)d*F3d*F3-t4r   c                     g d}|D ]7  }| j                  t        j                  d|      j                  d      |       9 g d}|D ]'  }| j	                  t        j                  d|             ) y )N)7u   ๘u   ０z^\d$r   )u   Ⅵu   〹u   ₂u   ㊴)r6   r;   rh   r{   rg   )r   decimal_digitsr2   not_decimal_digitss       r   test_bug_6561zReTests.test_bug_6561  sr    
   	?ARXXgq177:A>	? $ 	4Abhhw23	4r   c                 &   dd l }dD ]  }|j                  |      }| j                  t        j                  d      j	                  |             | j                  t        j                  d      j	                  |      j                         d        y )Nr   bBuhHiIlLfds   blar   r   )arrayrg   r;   r=   rh   r6   r0  )r   r  typecodert   s       r   test_empty_arrayzReTests.test_empty_array  sr    % 	DHH%Abjj066q9:RZZ_2215<<>C	Dr   c                    d}d}t        j                  d|z   t         j                  t         j                  z        }|j	                  d|z         }| j                  |       t        j                  d|z   t         j                  t         j                  z        }|j	                  d|z         }| j                  |       t        j                  d|z   t         j                        }|j	                  d|z         }| j                  |       t        j                  d|z   t         j                        }|j	                  d|z         }| j                  |       t        j                  d|z         }|j	                  d|z         }| j                  |       t        j                  d|z         }|j	                  d|z         }| j                  |       t        j                  d|z         }|j	                  d|z         }| j                  |       t        j                  d|z         }|j	                  d|z         }| j                  |       | j                  t        j                  d|z   |             | j                  t        j                  d|z   |             | j                  t        j                  d	|z   |t         j                               | j                  t        j                  d
|z   |             | j                  t        j                  d|z   |t         j                               d}| j                  |dz   |d       t        j                         5  t        j                  dt               | j                  d|d       d d d        | j                  d|z   |d       | j                  d|z   dz   |d       | j                  d|z   |d       | j                  d|z   |d       | j                  d|z   |d       | j                  d|z   dz   |d       | j                  d|z   dz   |d       | j                  d|z   dz   |d       y # 1 sw Y   xY w) Nu   Ạu   ạr   r   z(?i).z(?is).z	(?s)(?i).z(?ix) z (?i) z
(?x) (?i) z (?x) (?i) z/global flags not at the start of the expressionz(?i)r^   r<   s   A(?i)z	(?s).(?i)r   z(?i) z (?x)r   z^(?i)z$|(?i)rn   z(?:(?i)r  r_   z(^)?(?(1)(?i)r   z($)?(?(1)|(?i)r   )r;   r=   r   r   rh   rw  r   rD   warningscatch_warningssimplefilterBytesWarning)r   
upper_char
lower_charrW  qr4   s         r   test_inline_flagszReTests.test_inline_flags  s   

JJsZ'5GGD:%&JJsZ'5GGD:%&JJw+RTT2GGD:%&JJw+RTT2GGD:%&JJx*,-GGD:%&JJx*,-GGD:%&JJ{Z/0GGD:%&JJ{Z/0GGD:%&J!6
CDJ!6
CDJ!6
BDDIJ
!:JGH!;ZNO?zF2C; $$& 	5!!'<8""8S!4	5 	{Z7a@w3g=sAF}z93Bw3S!<x*4c1=y:5;S!D;cA3J/*<sBCL	5 	5s   .QQc                    t        j                  d      }| j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       t        j                  dt         j                        }| j                  |j                  dd      d	       | j                  |j                  dd      d
       | j                  |j                  dd      d       y)zgTest that $ does not include \n
        $ matches the end of string, and just before the terminating \n$#za
b
za
b#
#za
b
cza
b
c#r   z#
#za#
b#
#za#
b#
c#N)r;   r=   r6   rG   r
  r   s     r   test_dollar_matches_twicez!ReTests.test_dollar_matches_twice  s     **S/S(3Z@S)4jAS$/8**S",,/S(4kCS)4lCS$/8r   c                 t   t        j                  d      }t        j                  d      }| j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j
                  dd       | j                  t        |j
                  dd       | j                  t        |j
                  dd       | j                  t        |j
                  dd       | j                  t        |j
                  dd       | j                  t        |j
                  dd       y )Nr      .r
  rQ   rv   r  )r;   r=   r:   rB  rh   rG   )r   r   bpats      r   test_bytes_str_mixingzReTests.test_bytes_str_mixing,  s    jjozz$)SYY5)TZZ5)SWWdC8)SWWc48)SWWdD9)TXXtS9)TXXsD9)TXXsC8r   c                    dt         j                  fD ]  }t        j                  d|t         j                  z        }| j	                  |j                  d             t        j                  d|      }| j	                  |j                  d              t        j                  dt         j                  t         j                  z        }| j                  |j                  d             t        j                  dt         j                        }| j                  |j                  d             t        j                  dt         j                        }| j                  |j                  d             t        j                  d      }| j                  |j                  d             dt         j                  fD ]  }t        j                  d|t         j                  z        }| j                  |j                  d             t        j                  d	|      }| j                  |j                  d              | j                  t        t         j                  d	t         j                         | j                  t         j                  t         j                  d
       | j                  t        t         j                  dt         j                  t         j                  z         | j                  t        t         j                  dt         j                         | j                  t        t         j                  dt         j                         | j                  t         j                  t         j                  d       y )Nr      Àr   z\wu   (?a)Àz(?a)\w         \ws   (?u)\wz(?u)\wz(?au)\w)r;   r  r=   r  rw  rh   r  rg   r:   r   r<   )r   r{  r   s      r   test_ascii_and_unicode_flagz#ReTests.test_ascii_and_unicode_flag9  s:   _ 	/E**VUR]]%:;COOCIIf-.**UE*COOCIIf-.		/
 jjBMM!9:#))F+,jjR]]3#))F+,jj)#))F+,jj##))F+,] 	2E**Webmm&;<Ccii01**VU+Ccii01		2 	*bjj&"**E"((BJJ
;*bjj%bhh9NO*bjj)RXXF*bjj)RZZH"((BJJ
;r   c                 B   t        j                         }t        dd      D ]  }	 t        |g      j	                  |      }|j                         }||k(  r5|j                  |      }t        |      dk7  rU|j	                  |      |k7  rjt        j                  t        |g            } n d }d}t        j                  |t        j                  t        j                  z        }|r | j                  |j!                  |             t        j                  d|z   t        j                        }|r | j                  |j!                  |             t        j                  |t        j                        }|r | j#                  |j!                  |             t        j                  dt        j                        }|r | j                  |j!                  |             t        j                  d      }|r | j                  |j!                  |             t        j                  d      }|r | j#                  |j!                  |             | j%                  t&        t        j                  dt        j                         | j%                  t        j(                  t        j                  d	       | j%                  t&        t        j                  d
t        j                  t        j*                  z         | j%                  t&        t        j                  dt        j*                         | j%                  t&        t        j                  dt        j                         | j%                  t        j(                  t        j                  d       y # t        t        f$ r Y |w xY w)Nr  r^  r^   r  s   (?L)r  s   (?L)\wr   z(?L)r   s   (?a)s   (?aL))localegetpreferredencodingr   r  r  r  r  rC  r;   r  UnicodeErrorrB  r=   r  r  rw  rh   rg   r:   r   r<   r  )r   encr   rv   sletterbletterr  r   s           r   test_locale_flagzReTests.test_locale_flagV  sy   ))+sC 	A
1#J%%c*'')a<!..-w<1$h>>#&'18yys,	 GDjjryy2==89OOCIIg./jj47OOCIIg./jjr}}-cii01jj+OOCIIg./jj$OOCIIg./jj cii01*bjj"bii@"((BJJ7*bjj#ryy2887KL*bjj'288D*bjj'299E"((BJJ9= !), s#   0NN6NNNNc                 2   | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  d	dt        j
                               | j                  d
dd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  dd d!       | j                  d"d#d       | j                  d$d#d       | j                  d%dd       y )&Nz(?i:a)bAbaBz(?-i:a)bz(?i:(?-i:a)b)z\w(?a:\W)\wu   àààz(?a:\W(?u:\w)\W)z\W(?u:\w)\Wz(?a)(?-a:\w)z8bad inline flags: cannot turn off flags 'a', 'u' and 'L'r   z(?i-i:a)z(bad inline flags: flag turned on and offr   z(?au:a)z9bad inline flags: flags 'a', 'u' and 'L' are incompatibler   s   (?aL:a)z(?-zmissing flagr_   z(?-+z(?-zunknown flagz(?-iz	missing :z(?-i)z(?-i+z(?-izz(?i:r[  r   (?imissing -, : or )z(?i+z(?iz)rw  r;   rh   rg   r  r  rD   ri   s    r   test_scoped_flagszReTests.test_scoped_flags  s   T23"((:t45"((;bmmDEdBMMBC"((#3T:;!1489@A!4nEFJKJA	O{:A	?zKQ	P{KQ	P 	v~q9w:w:wQ7xa8xa8x;w(LaPv':A>w(;Q?w:r   c                    dD ]9  }| j                  t        j                  |dz   dt        j                               ; dD ]9  }| j                  t        j                  |dz   dt        j                               ; | j                  t        j                  dd             | j                  t        j                  ddt        j                               | j                  t        j                  dd             | j                  t        j                  dd	             | j                  t        j                  d
dt        j                               | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             y )Nz 	
rt   )       	   
         rL   z(?x) az (?x) az(?x) (?x) az a(?x: b) cz ab cz a(?-x: b) cr  z(?x) a(?-x: b) cz	(?x) a| brQ   rw  r;   rL  r  )r   spaces     r   test_ignore_spaceszReTests.test_ignore_spaces  s+   " 	HEOOBLLc2::FG	H< 	JEOOBLLtRZZHI	JXs34YRZZ@A]C89]G<=^VRZZHI%7@A[#67[#67r   c                 `   | j                  t        j                  ddt        j                               | j                  t        j                  ddt        j                               | j                  t        j                  dd             | j                  t        j                  ddt        j                               | j                  t        j                  dd             | j                  t        j                  dd	             | j                  t        j                  d
dt        j                               | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             y )Nz#x
art   s   #x
arL   z(?x)#x
az#x
(?x)#y
az(?x)#x
(?x)#y
az#x
a(?x:#y
b)#z
cz	#x
ab#z
cz#x
a(?-x:#y
b)#z
cza#y
bcz(?x)#x
a(?-x:#y
b)#z
cz(?x)#x
a|#y
brQ   r  ri   s    r   test_commentszReTests.test_comments  s   Wc2::>?XtRZZ@A[#67_c2::FG%8#>?%;]KL%<i%'ZZ1 	2%@)LM%6<=%6<=r   c                    t        j                  d      }| j                  |j                  dd      d       t        j                  d      }| j                  |j                  dd      d       t        j                  d      }| j                  |j                  d	 d
      d       t        j                  d      }| j                  |j                  dd      d       t        j                  d      }| j                  |j                  dd      d       t        j                  d      }| j                  |j                  d d      d       y )Nza(\w)zb\1r)  r*  za(.)u   aሴu   bሴz..c                      y)Nr|   r   r   s    r   r   z'ReTests.test_bug_6509.<locals>.<lambda>  r   r   a5r|   s   a(\w)s   b\1s   acs   bcs   a(.)s   as   bs   ..c                      y)N   bytesr   r   s    r   r   z'ReTests.test_bug_6509.<locals>.<lambda>  r   r   s   a5r  )r;   r=   r6   rG   r   s     r   test_bug_6509zReTests.test_bug_6509  s     jj".5jj 3Y?jj$7? jj#%0%8jj!(3X>jj!3U;XFr   c                 v   | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             y )Nz123.*-z123abc-u   123é-u   123€-u   123􏿿-u   123é€􏿿-)rw  r;   re   ri   s    r   test_search_dot_unicodezReTests.test_search_dot_unicode  sw    		(I67		(J78		(L9:		(,<=>		(,FGHr   c                 F   t        j                  d      }| j                  |t         j                         t        j                  |      }| j                  |t         j                         | j	                  ||       | j                  t        t         j                  d       y )Nrandom patternr   )r;   r=   assertIsInstancePatternr.   r:   rB  )r   r9   same_patterns      r   test_compilezReTests.test_compile  sk    **-.grzz2zz'*lBJJ7lG,)RZZ3r   r^   )sizememusec                     d|z  }t        j                  d|      }| j                  |       | j                  |j	                         |       | j                  |j                         |       y )Nrt   r  )r;   re   assertIsNotNoner6   rA  rB  )r   r  rW   r   s       r   test_large_searchzReTests.test_large_search  sW     $JIIc1QD)$'r      c                     d|z  }t        j                  dd|      \  }}| j                  ||       | j                  ||dz          y )Nrt   r   r^   )r;   r  r6   )r   r  rW   rM  ns        r   test_large_subnzReTests.test_large_subn  sG     $Jwwr2q!1AD1H%r   c                     | j                  t        j                  dd      dg       | j                  t        j                  dd      j	                         d       y )Nz	(?i)(a)\1u   aa Ārt   z
(?s).{1,3}u   ĀĀrm   )r6   r;   rV   rh   rf   ri   s    r   test_bug_16688zReTests.test_bug_16688  sE     	L+>F-@EEGPr   c                    ddz  }| j                  t        j                  d|      j                         d       | j                  t        j                  d|      j                         d       | j                  t        j                  d|      j                         d       | j                  t        j                  d|      j                         d       | j                  t        j                  d	|      j                         d       | j                  t        j                  d
|      j                         d       | j	                  t
        t        j                  dddz  z         | j	                  t
        t        j                  dddz  z         | j	                  t
        t        j                  dddz  z         | j	                  t
        t        j                  dddz  ddz  fz         y )Nr2   順 z.{65535})r   r  z	.{,65535}z
.{65535,}?z.{65536})r   r  z	.{,65536}z
.{65536,}?.{%d}rn   r  .{,%d}.{%d,}?z.{%d,%d}   )r6   r;   rh   rf   r:   OverflowErrorr=   )r   rH   s     r   test_repeat_minmax_overflowz#ReTests.test_repeat_minmax_overflow  sh   v+v6;;=zJ,7<<>
K-8==?L+v6;;=zJ,7<<>
K-8==?L-X35FG-YC5GH-Z!S&5HI-[AsFAsFCS5STr   c                    ddz  }d}d}| j                  t        j                  |dz  |      j                         d       | j                  t        j                  |dz  |      j                         d       t        j                  |dz         t        j                  |d	z         t        j                  |d
z         t        j                  |dz         t        j                  |d	z         t        j                  |d
z         d}| j                  t        j                  |t        j                  |dz         | j                  t        j                  |t        j                  |dz         y )Nr2   i%& z(?<=((.{%d}){%d}){%d})z(?<!((.{%d}){%d}){%d}))r  r  r  )    r  r\   )  @ r^   r^   )r^   r  r^   )r^   r^   r  zlooks too much behind)r  r  r  )r6   r;   re   rf   r=   r   r<   )r   rH   p1p2rA   s        r   test_look_behind_overflowz!ReTests.test_look_behind_overflow
  s"   y&& 	2(:#:FCHHJ'	)2(:#:FCHHJ	! 	

2%&


2%&


2%&


2%&


2%&


2%&(rxxRBW=WXrxxRBW=WXr   c                 *    | j                  ddd       y )Nz
(?P=<foo>)z#bad character in group name '<foo>'r   r   ri   s    r   $test_backref_group_name_in_exceptionz,ReTests.test_backref_group_name_in_exception!  s    |Da	Ir   c                 *    | j                  ddd       y )Nz
(?P<?foo>)z"bad character in group name '?foo'r   r   ri   s    r   test_group_name_in_exceptionz$ReTests.test_group_name_in_exception&  s    |CQ	Hr   c                 n   dD ]  }dD ]  }d|z   |z   dz   }| j                  t        j                  |t        j                        j	                  d      dg|       |j                         }| j                  t        j                  |t        j                        j	                  d      dg|         y )N)rR  rS  rT  z{1}rU  r   yzr   )r4   r   )r6   r;   r=   r   rV   r  )r   rV  rW  r9   s       r   test_issue17998zReTests.test_issue17998+  s    ( 	8D 8*s*T1  GRTT!:!B!B5!I"'g ! 7!..*  GRTT!:!B!B6!J"(w ! 88	8r   c                 `   dt        d      fD ]b  }t        j                  d|      }dt        |      j                  dt        |      j
                  d}| j                  t        |      |       d dt        d      t        d      t        d      fD ]b  }t        j                  d|      }dt        |      j                  dt        |      j
                  d}| j                  t        |      |       d t        t        j                  d	d
            \  }}dt        |      j                  dt        |      j
                  d}| j                  t        |      |       dt        |      j                  dt        |      j
                  d}| j                  t        |      |       y )Nz[abracadabra]z(.+)(.*?)\1z<(z\.)?z- object; span=\(1, 12\), match='abracadabra'>s   [abracadabra]s   (.+)(.*?)\1z. object; span=\(1, 12\), match=b'abracadabra'>z	(aa)|(bb)zaa bbz# object; span=\(0, 2\), match='aa'>z# object; span=\(3, 5\), match='bb'>)r   r;   re   r/   r   r   assertRegexreprr$   rM   r   r,   rN   )r   rH   r   r9   rm  rn  s         r   test_match_reprzReTests.test_match_repr5  s`   %q'99 	/F		.&1AQ""DG$8$8G T!Wg.	/ (+;)< !12!"235 	/F 		/62AQ""DG$8$8G T!Wg.	/ R[[g>?vL##T&\%>%>
 	eg.L##T&\%>%>
 	fw/r   c                    | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d	       | j                  t        j                  dd
d      d       | j                  t        j                  dd
d      d       | j                  t        j                  ddd      d       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j
                  dd      D cg c]  }|j                          c}g d       | j                  t        j
                  dd      D cg c]  }|j                          c}g d       y c c}w c c}w )Nr  za::bc)r   rt   r  r*  r   z\b|:+)r   rt   r   r   r*  r   z(?<!\w)(?=\w)|:+)r   rt   r   r*  z(?<=\w)(?!\w)|:+)rt   r   r*  r   r  z	-a-::-bc-z-a---bc-z(\b|:+)z[\1]z[]a[][::][]bc[])r   r   r  r   r   z\b|\w+)r\   r^   r^   r]   r_   r_   r   r   )r\   ru   r  r  )r_   r   r  )r6   r;   r  rG   rV   rN   rf   r   r   s     r   test_zerowidthzReTests.test_zerowidthO  sq   %13LM(G46QR"5w?ATU"5w?ATUsG4kB#w7D
GW=?PQHg68NOIw74	6 	BKK',JKq!&&(KA	CBKK	7,KLq!&&(LI	K LLs   	G/G4c                 >   dD ]  }dD ]  }t        j                  d|d|      }|j                  d      }| j                  |j	                  d      d       | j                  |j	                  d      d	       | j                  |j	                  d
      d         y )N){0,}rR  rS  z{1,187})r
  rR  rT  z^((x|y)r  xyyzyr   xyyr^   r   rn   r3   )r;   r=   rh   r6   r{   )r   r\  r_  rM  r   s        r   test_bug_2537zReTests.test_bug_2537c  s    5 	2H. 2JJ8DEGGG$  U3  R0  S12	2r   c                 n   t        j                  d      }| j                  |j                  ddd      j	                         d       | j                  |j                  ddd      j	                         d       | j                  |j                  ddd      j	                         d       | j                  |j                  ddd      d	g       | j                  |j                  dd
      g d       | j                  |j                  ddd      j                         j	                         d       y )Nz(ab)abracadabrar   r   )rH   r@   rK  )r   r   r   r_   rl   r^   )rH   r  )r   rl   	racadabra)
r;   r=   r6   rh   rf   rL  re   rV   r  rf  r   s     r   test_keyword_parameterszReTests.test_keyword_parametersm  s   jj!II]"I=BBDf	NMMAaM@EEG	QJJm2J>CCEv	OKK}!BK?$	III]QI7#	% 	KK}!BK?FFHMMO	r   c                     | j                  t        j                  ddt        j                        j	                         d       y )Nz[a-c]+r  rc   )r6   r;   rL  r   rf   ri   s    r   test_bug_20998zReTests.test_bug_20998  s.     	hrtt<AACVLr   z-musl libc issue on Emscripten/WASI, bpo-46390c                 *   t        j                  t         j                        }| j                  t         j                  t         j                  |       dD ]'  }	 t        j                  t         j                  |       ) t        j                          | j                          | j                          t        j                          | j                          | j                          y # t         j                  $ r | j                  d|z         Y w xY w)Nen_US.iso88591
en_US.utf8test needs %s locale)
r  	setlocaleLC_CTYPE
addCleanupErrorskipTestr;   r  check_en_US_iso88591check_en_US_utf8)r   	oldlocalelocs      r   test_locale_cachingzReTests.test_locale_caching  s     $$V__5	((&//9E1 	<C<  #6	< 	
!!#

!!# << <4s:;<s   $C(('DDc                    t        j                  t         j                  d       | j                  t	        j
                  ddt        j                  t        j                  z               | j                  t	        j
                  ddt        j                  t        j                  z               | j                  t	        j
                  ddt        j                  t        j                  z               | j                  t	        j
                  dd             | j                  t	        j
                  dd             | j                  t	        j
                  dd             y )Nr              (?Li)   (?Li)   (?Li))r  r  r  rw  r;   rh   r	  r   ri   s    r   r  zReTests.check_en_US_iso88591  s    *:;k2449EF'2449=>'2449=>!1;?@w78w78r   c                    t        j                  t         j                  d       | j                  t	        j
                  ddt        j                  t        j                  z               | j                  t	        j
                  ddt        j                  t        j                  z               | j                  t	        j
                  ddt        j                  t        j                  z               | j                  t	        j
                  dd             | j                  t	        j
                  dd             | j                  t	        j
                  dd             y )Nr  r$  r%  r&  r'  r(  r)  )	r  r  r  rw  r;   rh   r	  r   rg   ri   s    r   r  zReTests.check_en_US_utf8  s    ,7k2449EF"((7GRTT"$$Y?@"((7GRTT"$$Y?@!1;?@"((<9:"((<9:r   c                    t        j                  t         j                        }| j                  t         j                  t         j                  |       dD ]'  }	 t        j                  t         j                  |       ) t        j                  t         j                  d       t        j                  dt        j                  t        j                  z        }t        j                  dt        j                  t        j                  z        }t        j                  dt        j                  t        j                  z        }t        j                  dt        j                  t        j                  z        }|||fD ]b  }| j                  |j                  d             | j                  |j                  d             | j                  |j                  d	             d | j                  |j                  d
             | j                  |j                  d             | j                  |j                  d	             t        j                  t         j                  d       |||fD ]b  }| j                  |j                  d             | j                  |j                  d             | j                  |j                  d	             d | j                  |j                  d
             | j                  |j                  d             | j                  |j                  d	             y # t         j                  $ r | j                  d|z         Y w xY w)Nr  r  r  r$  s   [a][a]s
   [az][az]s   [^][^]s   s   s   r  )r  r  r  r  r  r  r;   r=   r	  r   rw  rh   rg   )r   r   r!  r  r  p3p4rW  s           r   test_locale_compiledzReTests.test_locale_compiled  sW   
 $$V__5	((&//9E1 	<C<  #6	< 	*:;ZZRTT"$$Y/ZZ)24495ZZ+RTT"$$Y7ZZ)24495R 	2AOOAGGK01OOAGGK01OOAGGK01	2 	"((;/0"((;/0"((;/0,7R 	4AOOAGGK01aggk23aggk23	4 	-."((;/0"((;/01 << <4s:;<s   $L00'MMc                 
   | j                  t        j                        5 }t        j                  d       d d d        j                  }| j                  |j                  t               | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  t        |             | j                  dt        |             | j                  d|j                         | j                  t        j                        5 }t        j                  d       d d d        |j                  }| j                  |j                  t               | j                  |j                  d       | j                  |j                  d       | j                  t        j                        5 }t        j                  dt        j                          d d d        |j                  }| j                  |j                  d       | j                  |j                  d	       | j                  |j                  d
       | j                  |j                  t        |             | j                  dt        |             | j                  dt        |             y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nu   (€))r_   r^   r   z at position 3s   ())zq
                (
                    abc
                )
                )
                (
                M   r      z at position 77z(line 5, column 17))r:   r;   r<   r=   r?   r  r9   r|   r6   r@   linenocolnoassertInr4   assertNotInr  r  )r   rB   rC   s      r   
test_errorzReTests.test_error  s#   rxx( 	$BJJ{#	$llckk3/k2!$Q'A&cggs3x(&C1)3773rxx( 	#BJJz"	#llckk51j1!$rxx( 	!BJJ  ZZ!	! ll"%Q'B'cggs3x('S2+SX6C	$ 	$	# 	#	! 	!s#   KK,6%K9K),K69Lc                    | j                  ddd       | j                  ddd       | j                  ddd       | j                  dd	d
       | j                  ddd       | j                  ddd
       | j                  ddd
       | j                  ddd       | j                  dd	d
       | j                  ddd       | j                  dd	d       y )Nr  r[  r   z((a|b)z(a|b))zunbalanced parenthesisr   z(?Pzunexpected end of patternr_   z(?z)zunknown extension ?zr^   z(?iz)r  r  r  z(?#abczmissing ), unterminated commentz(?<z(?<>)zunknown extension ?<>z(?rn   r   ri   s    r   test_misc_errorszReTests.test_misc_errors  s    t%I1My*NPQRy*BAFv'BAFw(>Bx;v':A>y*KQOv'BAFx)@!Du&A1Er   c                     | j                  dt        t        j                               | j                  dt        t        j                               y )Nr  r  )r4  r|   r;   r   r   ri   s    r   	test_enumzReTests.test_enum  s0     	gs244y)hBDD	*r   c                    t        j                  dt         j                        }| j                  ||       | j	                  ||k7         t        j
                          t        j                  dt         j                        }| j                  t        |      t        |             | j                  ||       t        j
                          t        j                  dt         j                        }| j                  ||       t        j
                          t        j                  d      }| j                  ||       | j                  t              5  ||k   d d d        y # 1 sw Y   y xY w)Nrp   XYZ)
r;   r=   r  r6   r  r  hashassertNotEqualr:   rB  )r   pattern1pattern2pattern3pattern4s        r   test_pattern_comparezReTests.test_pattern_compare  s	   ::eR]]3 	8,X-. 	
::eR]]3hh88, 	
::eR]]3 	Hh/ 	
::e$Hh/ y) 	 x	  	  	 s   E""E+c                    t        j                  d      }t        j                          t        j                  d      }| j                  t	        |      t	        |             | j                  ||       t        j                          t        j                  d      }t        j                         5  t        j                  dt               | j                  ||       d d d        y # 1 sw Y   y xY w)Nr  rp   r<   )
r;   r=   r  r6   r=  r  r  r  r  r>  )r   r?  r@  rA  s       r   test_pattern_compare_bytesz"ReTests.test_pattern_compare_bytes$  s    ::f% 	
::f%hh88, 	
::e$$$& 	4!!'<8(3	4 	4 	4s   2-C((C1c                 |   t        d      }t        j                  d|      }t        j                  d|      }| j                  |j	                         d       | j                  |j	                         d       d|d d  | j                  |j	                         d       | j                  |j	                         d       y )Ns   abcdefghs   [a-h]+s   [e-h]+s   efghr   r   )rM   r;   re   r6   r{   )r   rW   r   m2s       r   test_bug_29444zReTests.test_bug_294445  s    k"IIi#YYy!$K0W-!F+S)r   c                    d}d}| j                  t        j                  ||      j                         d       d}d}| j                  t        j                  ||      ddg       | j                  t        j
                  ||      D cg c]  }|j                          c}ddg       d	}d
}| j                  t        j                  ||      ddg       | j                  t        j
                  ||      D cg c]  }|j                          c}ddddd dg       d}| j                  t        j
                  ||      D cg c]  }|j                          c}ddddd dg       d}| j                  t        j
                  ||      D cg c]  }|j                          c}ddddd ddd dg       y c c}w c c}w c c}w c c}w )Nza	xz\b(?=(\t)|(x))x)Nr2   rl   z(?=(.)(.)?)rQ  )rQ   r   r{  z1(?=<(?P<tag>\w+)/?>(?:(?P<text>.+?)</(?P=tag)>)?)z<test><foo2/></test>)r   <foo2/>)foo2r   r   rJ  )tagr  rK  z<test>Hello</test><foo/>Hellorq  z<test>Hello</test><foo/><foo/>)r6   r;   re   r0  rV   rN   ro  r   rW   rW  r   s       r   test_bug_34294zReTests.test_bug_34294?  s    1a//1;? Aq)$i0	2bkk!Q.?@!((*@$k2	4 A"Aq)-|<	>Q1BCA!++-C"()<"($79	: 'Q1BCA!++-C"(':"'68	9 -Q1BCA!++-C"(':"'6"'68	9! A D D Ds   F<8GGGc                    | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       y )Nz	(ab|a)*?brl   r'  z	(ab|a)+?bz(ab|a){0,2}?bz	(.b|a)*?brw  ri   s    r   test_MARK_PUSH_macro_bugz ReTests.test_MARK_PUSH_macro_buga  s     	,5<<>G,5<<>G"2D9@@BFK,5<<>Gr   c                 j   d}d}| j                  t        j                  ||      j                         d       d}d}t        j                  ||      }| j                  |j	                         d       | j                  |j	                  d      d       | j                  |j                         d	       y )
Naxxzbczz(?:(?:a|bc)*?(xx)??z)*r   xtcxyzxcz((x|yz)+?(t)??c)*)r   r   rn   )   r   )xyzxcr2   tr6   r;   rh   r0  rf   rN  s       r   test_MIN_UNTIL_mark_bugzReTests.test_MIN_UNTIL_mark_bugi  s     %!Q..0':  HHQN6*F+%89r   c                 X   d}d}t        j                  ||      }| j                  |j                         d       | j                  |j                  d      d       | j                  |j	                         d       d}d}t        j                  ||      }| j                  |j                         d	       | j                  |j                  d      d
       | j                  |j	                         d       | j                  t        j                  dd      j	                         d       y )Naabaabz(?:[^b]*a(?=(b)|(a))ab)*)r   rV  rn   )r   r   rP  ababz(?:[^b]*(?=(b)|(a))ab)*rH  )rn   r_   z(ab?)*?brl   r'  r;   rh   r6   rf   r0  rN  s       r   test_REPEAT_ONE_mark_bugz ReTests.test_REPEAT_ONE_mark_bugx  s     'HHQN6*F+[1 &HHQN6*F+[1+t4;;=vFr   c                 j   d}d}t        j                  ||      }| j                  |j                         d       | j                  |j                  d      d       | j                  |j	                         d       d}d}| j                  t        j                  ||      j	                         d	       y )
Nr]  z(?:.*?(?=(a)|(b))b)*rH  rn   r_   r   )NrQ   axxzazz(?:a*?(xx)??z)*rT  r^  rN  s       r   test_MIN_REPEAT_ONE_mark_bugz$ReTests.test_MIN_REPEAT_ONE_mark_bug  s     #HHQN6*F+[1!Q..0':r   c                    | j                  t        j                  dd      j                         d       t        j                  dd      }| j                  |j	                         d       | j                  |j	                  d      d       | j                  |j	                  d	      d       | j                  |j                         d
       y )Nz	(?!(..)c)rl   r   z((?!(ab)c)(.))*r]  rH  r^   ra  r_   )rQ   NrQ   rY  r  s     r   test_ASSERT_NOT_mark_bugz ReTests.test_ASSERT_NOT_mark_bug  s     	,5<<>H HH'06*F+F+%56r   c                    | j                  t        d      5  t        j                  dd       d d d        | j                  t        d      5  t        j                  dt               d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Nz	got 'int'rZ   r   z
got 'type')r   rB  r;   re   r/   ri   s    r   test_bug_40736zReTests.test_bug_40736  sm    ##I{; 	IIdA	##I|< 	"IIdD!	" 	"	 		" 	"s   A0A<0A9<Bcpuc           	      &   ddz  }t        j                         }dD ]  }| j                  t        j                  ||             | j                  t        j                  ||      |g       | j                  t        j                  ||      g        | j                  t        t        j                  ||            g        | j                  t        j                  |d|      |        t        j                         |z
  }| j                  |d       y )Nr2   i )z\Ayz^yr   g?)timeperf_counterrg   r;   re   r6   r  rV   r,   rN   rG   
assertLess)r   rW   rA  rW  rX  s        r   test_search_anchor_at_beginningz'ReTests.test_search_anchor_at_beginning  s    I!!# 	2Abii1o.RXXa^aS1RZZ1-r2T"++a"34b9RVVAr1-q1	2 %' 	3r   c                 8	   | j                  t        j                  dd             | j                  t        j                  dd      j	                  d      d       | j                  t        j                  dd      j	                  d      d       | j                  t        j                  dd      j	                  d      d       | j                  t        j                  d	d
             | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  d d      j	                  d!      d"       | j                  t        j                  d#d      j	                  d!      d"       | j                  t        j                  d$d      j	                  d!      d"       | j                  t        j                  d%d             | j                  t        j                  d&d             | j                  t        j                  d'd             | j                  t        j                  d(d             | j                  t        j                  d)d             | j                  t        j                  d*d             | j                  t        j                  d*d+             y,)-a  Test Possessive Quantifiers
        Test quantifiers of the form @+ for some repetition operator @,
        e.g. x{3,5}+ meaning match from 3 to 5 greadily and proceed
        without creating a stack frame for rolling the stack back and
        trying 1 or more fewer matches.ze*+eeeeeze++aeeear   ze?+aeaze{2,4}+az(.)++.eez(ae)*+aaea)aez([ae][ae])?+az(e?){2,4}+a)r   z()*+art   zx*+r[   r\   zx++r]   a*+ra   rb   rc   a++z
^(\w){1}+$rp   z^(\w){1,2}+$z
^(\w){3}+$r^   rv   z^(\w){1,3}+$z^(\w){1,4}+$z^x{1}+$z	^x{1,2}+$z^x{3}+$z	^x{1,3}+$z	^x{1,4}+$z^x{}+$rv  N)	rg   r;   rh   r6   r{   r0  re   rf   rw  ri   s    r   test_possessive_quantifiersz#ReTests.test_possessive_quantifiers  s2    	"((6623&&177:FC&$/55a8$?*f5;;A>G"((8T23)U3::<gF/59@@B 	"-8??A	 '3/668%@5%0557@5%0557@%/446?%0557@"((5%01"((=%89"((?E:;-7==a@#F/59??BCH/59??BCH"((9e45"((;67E23e45e45"((8U34512r   c                    | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  d	d             | j                  t        j                  d
d             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             y )Nrv  rt   ru  a?+a{1,3}+rl   za++bza*+bza?+bza{1,3}+b(?:ab)++(?:ab)*+(?:ab)?+(?:ab){1,3}+rp   z	(?:ab)++cz	(?:ab)*+cz	(?:ab)?+cz(?:ab){1,3}+crw  r;   rL  rg   ri   s    r   %test_fullmatch_possessive_quantifiersz-ReTests.test_fullmatch_possessive_quantifiers  s;   VS12VS12VS12Z56",,vt45",,vt45",,vt45",,z489Wd34Wd34Wd34[$78[$78[$78[$78_d;<",,{E:;",,{E:;",,{E:;",,>?\59:\59:\59:%5u=>r   c                 |   | j                  t        j                  dd      dg       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      dg       | j                  t        j                  d	d
      dg       | j                  t        j                  dd
      g d       | j                  t        j                  dd
      g d       | j                  t        j                  dd
      dg       y )Nrv  aabrg  ru  rg  r   r   ry  rt   rt   r   r   rz  r{  ababcr]  r|  r]  r   r   r}  rl   rl   r   r   r~  r#  ri   s    r   #test_findall_possessive_quantifiersz+ReTests.test_findall_possessive_quantifiers  s    FE2TF;FE2NCFE24FGJ6?K9F8DK9;KLK9;OPOW=xHr   c                     t        j                  d      }| j                  |j                  d             | j	                  |j                  d             | j                  t        j                  dd             | j	                  t        j                  dd             | j	                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  d	d             y
)zTest Atomic Grouping
        Test non-capturing groups of the form (?>...), which does
        not maintain any stack point created within the group once the
        group is finished being evaluated.z
a(?>bc|b)crp   abccz(?>.*).z(?>x)++ra   z(?>x++)z(?>x)++xz(?>x++)xN)r;   r=   rg   rh   rw  )r   r?  s     r   test_atomic_groupingzReTests.test_atomic_grouping
	  s    
 ::m,(../0v./"((:u56U34U34"((;67"((;67r   c                    | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  d	d             | j                  t        j                  d
d             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             y )N(?>a+)rt   (?>a*)(?>a?)
(?>a{1,3})rl   z(?>a+)bz(?>a*)bz(?>a?)bz(?>a{1,3})b(?>(?:ab)+)(?>(?:ab)*)(?>(?:ab)?)(?>(?:ab){1,3})rp   z(?>(?:ab)+)cz(?>(?:ab)*)cz(?>(?:ab)?)cz(?>(?:ab){1,3})cr  ri   s    r   test_fullmatch_atomic_groupingz&ReTests.test_fullmatch_atomic_grouping	  s=   Y45Y45Y45]C89",,y$78",,y$78",,y$78",,}d;<Z67Z67Z67^T:;^T:;^T:;^T:;%7>?",,~u=>",,~u=>",,~u=>",,'95AB_e<=_e<=_e<=%8%@Ar   c                 |   | j                  t        j                  dd      dg       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      dg       | j                  t        j                  d	d
      dg       | j                  t        j                  dd
      g d       | j                  t        j                  dd
      g d       | j                  t        j                  dd
      dg       y )Nr  r  rg  r  r  r  r  r  r  r  r]  r  r  r  r  r  r#  ri   s    r   test_findall_atomic_groupingz$ReTests.test_findall_atomic_grouping3	  s    Iu5v>Iu5~FIu57IJM59D6BNG<vhGNG<>NONG<>RS$6@6(Kr   c                     | j                  t        j                  dd             | j                  t        j                  dd             y )Nz(?s:(?>.*?\.).*)\Zza.txtz!(?s:(?=(?P<g0>.*?\.))(?P=g0).*)\Z)rw  r;   rL  ri   s    r   test_bug_gh91616zReTests.test_bug_gh91616>	  s2    %:GDE%I7STr   c                 8   | j                  t              5 }t        j                  d      }d d d        | j	                  dt        j                               | j	                  dt        |j                               | j	                  dt        |j                               | j                  dt        |j                               | j                  t              5 }t        j                  dt        j                  t        j                  z        }d d d        | j	                  dt        |j                               | j	                  dt        |j                               | j	                  dt        |j                               | j                  dt        |j                               | j                         | j                  |j                  d             | j                  |j                  d	             y # 1 sw Y   xY w# 1 sw Y   xY w)
Nrt   zre.template()zis deprecatedfunctionr  )r{  zre.TEMPLATEahoynope)r  DeprecationWarningr;   templater4  r|   warningr5  r=   TEMPLATEr  r6   rw  rh   r  )r   rB   template_re1template_re2s       r   -test_template_function_and_flag_is_deprecatedz5ReTests.test_template_function_and_flag_is_deprecatedB	  sw   01 	-R;;t,L	-os2::7os2::7j#bjj/2RZZ101 	JR
 ::d"++bjj2HIL	J 	mS_5os2::7fc"**o.S_5 	|4**623++F34+	- 	-	J 	Js   H7HHHc                    | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d	       | j                  t        j                  d
d      j                         d	       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d	       | j                  t        j                  dd      j                         d	       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       y )Nz(?>(?:.(?!D))+)ABCDErm   z(?:.(?!D))++z(?>(?:.(?!D))*)z(?:.(?!D))*+z(?>(?:.(?!D))?)CDEr\   z(?:.(?!D))?+z(?>(?:.(?!D)){1,3})z(?:.(?!D)){1,3}+z(?>(?:ab?c)+)acaz
(?:ab?c)++z(?>(?:ab?c)*)z
(?:ab?c)*+z(?>(?:ab?c)?)rt   z
(?:ab?c)?+z(?>(?:ab?c){1,3})z(?:ab?c){1,3}+rw   ri   s    r   test_bug_gh106052zReTests.test_bug_gh106052Z	  sI   "3W=BBDfM.':??A6J"3W=BBDfM.':??A6J"3U;@@BFK.%8==?H"7AFFH&Q"4g>CCEvN/59>>@&I,6;;=vF/59>>@&I,6;;=vF/37<<>G,499;VD"5u=BBDfM"2E:??A6Jr   ztest requires multiprocessingc                    t        j                  d      }d}t        j                  |j                  d|f      }|j                          |j                  t               	 | j                  |j                         d       |j                         r!|j                          |j                          y y # |j                         r!|j                          |j                          w w xY w)Nz(?<=[({}])(((//[^\n]*)?[\n])([\000-\040])*)*((/[^/\[\n]*(([^\n]|(\[\n]*(]*)*\]))[^/\[]*)*/))((((//[^\n]*)?[\n])([\000-\040]|(/\*[^*]*\*+([^/*]\*+)*/))*)+(?=[^\000-\040);\]}]))zja(function() {
            ///////////////////////////////////////////////////////////////////
        });r   )targetargszpattern.sub() timed out)r;   r=   multiprocessingProcessrG   rA  r   r   r  is_alive	terminate)r   r9   input_jsrW  s       r   test_regression_gh94675zReTests.test_regression_gh94675n	  s    ** H I
 ##7;;b(^L			}	QZZ\+DEzz| qzz| s   ! B3 33C&r   )r   r   r   r7   rD   rI   rS   rX   rj   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r$  r1  r?  rD  rN  rX  r\  ra  re  ri  rp  rt  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r;   rL  r  rH   ascii_lettersdigitsr  r  r  r  r  r  r  r  r  r'  r2  r;  r=  r?  rC  rG  rK  rM  rO  rX  r`  rb  ru  ry  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  r  unittestskipIfr	   r
   r"  r  r  r.  r6  r8  r:  rC  rE  rH  rO  rQ  rZ  r_  rc  re  rg  r   rm  rw  r  r  r  r  r  r  r  r  r  r  r   r   r   r'   r'   %   s    //	E
1H"")@V%
	'A,. `F
(@"MH	H#HJK3Jj	694;NBB**-XR<@<?>3
MO?
"HH3,N@F&&NP94B)#B8K4&=P$AL-F^?H+8ZA 04$LL) ((6==8;LLM
BBD& ++<K@L8F*H$	GF
?
O3J?
F:/(*&&,,'24(
,54*D:Mz99<:+:Z;B8>G$I4 S#( $( S(& )&QUY.I
H
804K(2$M
 X__ 7$	$$9; X__ 71	1@"7HF+ :4"* 9DH:G(;
7" u   %3N?6	I8B6	LU50K( X___,.MN Or   r'   c                     t               5 }t        j                  | t        j                         d d d        |j	                         S # 1 sw Y   j	                         S xY wr   )r   r;   r=   DEBUGgetvalue)r   outs     r   get_debug_outr  	  sD    		 "c


3!"<<>"<<>s   %AA c                   (    e Zd ZdZd Zd Zd Zd Zy)
DebugTestsNc                 x    d}d}| j                  t        |      |       | j                  t        |      |       y )Nz(\.)(?:[ch]|py)(?(1)$|: )a  SUBPATTERN 1 0 0
  LITERAL 46
BRANCH
  IN
    LITERAL 99
    LITERAL 104
OR
  LITERAL 112
  LITERAL 121
GROUPREF_EXISTS 1
  AT AT_END
ELSE
  LITERAL 58
  LITERAL 32

 0. INFO 8 0b1 2 5 (to 9)
      prefix_skip 0
      prefix [0x2e] ('.')
      overlap [0]
 9: MARK 0
11. LITERAL 0x2e ('.')
13. MARK 1
15. BRANCH 10 (to 26)
17.   IN 6 (to 24)
19.     LITERAL 0x63 ('c')
21.     LITERAL 0x68 ('h')
23.     FAILURE
24:   JUMP 9 (to 34)
26: branch 7 (to 33)
27.   LITERAL 0x70 ('p')
29.   LITERAL 0x79 ('y')
31.   JUMP 2 (to 34)
33: FAILURE
34: GROUPREF_EXISTS 0 6 (to 41)
37. AT END
39. JUMP 5 (to 45)
41: LITERAL 0x3a (':')
43. LITERAL 0x20 (' ')
45: SUCCESS
r6   r  )r   r   dumps      r   test_debug_flagzDebugTests.test_debug_flag	  s=    *(R 	s+T2 	s+T2r   c                 :    | j                  t        d      d       y )Nz(?>ab?)zATOMIC_GROUP
  LITERAL 97
  MAX_REPEAT 0 1
    LITERAL 98

 0. INFO 4 0b0 1 2 (to 5)
 5: ATOMIC_GROUP 11 (to 17)
 7.   LITERAL 0x61 ('a')
 9.   REPEAT_ONE 6 0 1 (to 16)
13.     LITERAL 0x62 ('b')
15.     SUCCESS
16:   SUCCESS
17: SUCCESS
r  ri   s    r   test_atomic_groupzDebugTests.test_atomic_group	  s    z2 5 	r   c                 :    | j                  t        d      d       y )Nry  zPOSSESSIVE_REPEAT 0 1
  LITERAL 97

 0. INFO 4 0b0 0 1 (to 5)
 5: POSSESSIVE_REPEAT_ONE 6 0 1 (to 12)
 9.   LITERAL 0x61 ('a')
11.   SUCCESS
12: SUCCESS
r  ri   s    r   test_possesive_repeat_onez$DebugTests.test_possesive_repeat_one	  s    v. 	1 		r   c                 :    | j                  t        d      d       y )Nr}  zPOSSESSIVE_REPEAT 0 1
  LITERAL 97
  LITERAL 98

 0. INFO 4 0b0 0 2 (to 5)
 5: POSSESSIVE_REPEAT 7 0 1 (to 13)
 9.   LITERAL 0x61 ('a')
11.   LITERAL 0x62 ('b')
13: SUCCESS
14. SUCCESS
r  ri   s    r   test_possesive_repeatz DebugTests.test_possesive_repeat	  s    {3 6 	r   )r   r   r   maxDiffr  r  r  r  r   r   r   r  r  	  s    G.3`"
r   r  c                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)PatternReprTestsc                 `    | j                  t        t        j                  |            |       y r   r6   r  r;   r=   )r   r9   r  s      r   checkzPatternReprTests.check	  s     bjj12H=r   c                 b    | j                  t        t        j                  ||            |       y r   r  )r   r9   r{  r  s       r   check_flagszPatternReprTests.check_flags	  s"    bjj%898Dr   c                 (    | j                  dd       y )Nr  re.compile('random pattern')r  ri   s    r   test_without_flagsz#PatternReprTests.test_without_flags	  s    

#1	3r   c                 F    | j                  dt        j                  d       y )Nr  z+re.compile('random pattern', re.IGNORECASE))r  r;   r  ri   s    r   test_single_flagz!PatternReprTests.test_single_flag	  s    )2==9	;r   c                     | j                  dt        j                  t        j                  z  t        j                  z  d       y )Nr  z@re.compile('random pattern', re.IGNORECASE|re.DOTALL|re.VERBOSE))r  r;   r   r   r   ri   s    r   test_multiple_flagsz$PatternReprTests.test_multiple_flags	  s.    )2449RTT>2	3r   c                     | j                  dt        j                  d       | j                  dt        j                  t        j                  z  t        j                  z  d       y )Nr  r  z5re.compile('random pattern', re.IGNORECASE|re.DOTALL))r  r;   r|  r   r   ri   s    r   test_unicode_flagz"PatternReprTests.test_unicode_flag	  sH    )2447	9)2449RTT>4	5r   c                 (    | j                  dd       y )Nz(?i)patternz(re.compile('(?i)pattern', re.IGNORECASE)r  ri   s    r   r  z"PatternReprTests.test_inline_flags
  s    

==	?r   c                 r    | j                  ddd       | j                  ddt        j                  z  d       y )Nr  i 0 z&re.compile('random pattern', 0x123000)z4re.compile('random pattern', re.IGNORECASE|0x123000))r  r;   r   ri   s    r   test_unknown_flagsz#PatternReprTests.test_unknown_flags
  s8    )8A	C)8BDD=B	Dr   c                 j    | j                  dd       | j                  dt        j                  d       y )N   bytes patternzre.compile(b'bytes pattern')z&re.compile(b'bytes pattern', re.ASCII))r  r  r;   r   ri   s    r   
test_byteszPatternReprTests.test_bytes
  s/    

#1	3)244A	Cr   c                 F    | j                  dt        j                  d       y )Nr  z're.compile(b'bytes pattern', re.LOCALE))r  r;   r	  ri   s    r   test_localezPatternReprTests.test_locale
  s    )244B	Dr   c                 p    | j                  dd       | j                  dd       | j                  dd       y )Nzrandom "double quoted" patternz,re.compile('random "double quoted" pattern')zrandom 'single quoted' patternz,re.compile("random 'single quoted' pattern")z!both 'single' and "double" quotesz1re.compile('both \'single\' and "double" quotes')r  ri   s    r   test_quoteszPatternReprTests.test_quotes
  s;    

3>	@

3>	@

:E	Gr   c                    dddz  z  }t        t        j                  |            }| j                  t	        |      d       | j                  |d d d       t        t        j                  |t        j                              }| j                  t	        |      d       | j                  |d d d       | j                  |dd  d       y )	NzVery %spatternzlong r=  i,     zre.compile('Very long long loniz, re.IGNORECASE))r  r;   r=   rl  rC  r6   r   )r   r9   rM  s      r   test_long_patternz"PatternReprTests.test_long_pattern 
  s    "gn5G$%A$3B!ABGRTT*+A$3B!AB34"45r   c                    | j                  t        t        j                        d       | j                  t        t        j                  t        j                  z  t        j
                  z        d       | j                  t        t        j                  t        j                  z  t        j
                  z  dz        d       | j                  t        t        j                         d       | j                  t        t        j                  t        j                  z  t        j
                  z         d       | j                  t        t        j                  t        j                  z  t        j
                  z  dz         d       y )Nzre.IGNORECASEz"re.IGNORECASE|re.DOTALL|re.VERBOSEi   z+re.IGNORECASE|re.DOTALL|re.VERBOSE|0x100000zTre.ASCII|re.LOCALE|re.UNICODE|re.MULTILINE|re.DOTALL|re.VERBOSE|re.TEMPLATE|re.DEBUGz?re.ASCII|re.LOCALE|re.UNICODE|re.MULTILINE|re.TEMPLATE|re.DEBUGzGre.ASCII|re.LOCALE|re.UNICODE|re.MULTILINE|re.TEMPLATE|re.DEBUG|0xffe00)r6   r  r;   r   r   r   ri   s    r   test_flags_reprz PatternReprTests.test_flags_repr*
  s    bdd_5bdd244in-=	?bdd244ine45F	HbddUf	h 	RTT	"$$/0Z	\RTT	"$$ 678b	dr   N)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r  	  sI    >E3;3
5?DCDG6dr   r  c                       e Zd ZdZed        Zd Zd Zed        Zd Z	ed        Z
ed        Zed	        Zed
        Zy)ImplementationTestz7
    Test implementation details of the re module.
    c                    | j                  t              5  dt        j                  _        d d d        | j                  t              5  dt        j
                  _        d d d        | j                  t              5  t        j                  d      }t        |j                  d            }d|_        d d d        y # 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   y xY w)Nr^   r   )	r:   rB  r;   Matchrq  r  r=   r/   rf  )r   r   tps      r   test_immutablez!ImplementationTest.test_immutable>
  s     y) 	BHHL	y) 	BJJN	y) 	**R.Cckk"o&BBF	 			 		 		 	s#   B<	C<7C<CCCc                 j   t         j                  j                  }| j                   |d      g        | j                   |d      dg       | j                   |d      g d       | j                   |d      g d       | j                   |d      g d	       | j                   |d
      g d       y )Nr   rt   r   rI  )r   r   r   r   aaaa)r   r^   rn   r_   ababba)r   r   r^   rn   r   r^   abcabdac)r   r   r   r^   rn   r   r^   r   )r;   	_compiler_generate_overlap_tabler6   )r   fs     r   test_overlap_tablez%ImplementationTest.test_overlap_tableJ
  s    LL002#3!%6L16L18&89:(@Ar   c                     | j                  t        j                  j                  d       | j                  t        j                  j                  d       y )Nr   )assertGreaterEqualr;   r  	MAXREPEATrc  ri   s    r   test_signednessz"ImplementationTest.test_signednessS
  s6     6 6: 6 6:r   c                     t        | t        j                         t        | t        j                         t        j                  d      }t        | t        |j                  d                   y )Nr   )r   r;   r  r  r=   r/   rf  r   s     r   test_disallow_instantiationz.ImplementationTest.test_disallow_instantiationW
  sD     	%T2884$T2::6jjn$T4B+@Ar   c           	         g dg dg dd}|D ]Q  }| j                  |      5  t        j                  j                  |d        | j	                  t
              5 }t        |       d d d        | j                  t        j                        d|d       | j                  |j                  t               | j                  |t        j                         t        j                  |   }| j                  |j                  |       | j                  |j                  d       ||   D ]  }| j                  t!        ||              t        j                  |= d d d        T y # 1 sw Y   xY w# 1 sw Y   lxY w)	N)r=   r<   SRE_FLAG_IGNORECASE
SUBPATTERN_compile_info)r<   r  r  _NamedIntConstant)
SubPatternparser  r  
_parse_sub)sre_compilesre_constants	sre_parse)modulezmodule z is deprecatedr   )r>   sysmodulespopr  r  
__import__r6   r|   r  filename__file__r4  r   __package__rw  hasattr)r   
deprecatednamewrW  attrs         r   test_deprecated_modulesz*ImplementationTest.test_deprecated_modules_
  sE   -3(	

  	&DT* &d+%%&89 %Qt$%  QYY#*4(.!AC  X6dCKK0kk$'  t4  "5&t, 8DOOGC$678KK%& &	&% %& &s$   6E1E%'C2E1%E.*E11E;	c                    dd l }t        d      D ]  }t        |      }t        |j	                               }| j                  |j                  |      |       | j                  |j                  |      |       |t        j                  v }| j                  |j                  |      |       | j                  |j                  |      |        t        t        dd            ddgz   D ]  }t        |      }| j                  |j                  |      |       |dk7  r8| j                  |j                  |      t        |j	                                      ||j	                         k7  xs ||j                         k7  }| j                  |j                  |             | j                  |j                  |      ||j	                         k7  xs ||j                         k7          | j                  |j                  d      d       | j                  |j                  d      t        d             | j                  |j                  d             | j                  |j                  d             y )Nr   r  i   i  i( i0  r   )_srer   r   ordr  r6   ascii_tolowerunicode_tolowerrH   r  ascii_iscasedunicode_iscasedr,   r  r  rw  )r   r  r   rv   loiscaseds         r   test_case_helpersz$ImplementationTest.test_case_helpersz
  s   s 	?AAAQWWYBT//2B7T11!4b96///GT//2G<T11!4g>	? eC()Wg,>> 	?AAAT//2A6F{  !5!5a!8#aggi.I1779n6QWWYGT//23T11!4!'')^=qAGGI~?	? 	++F3V<--f5s3x@++F34,,V45r   c           	         dd l }ddz  }| j                  t        t        j                  di        | j                  t
              5  |j                  dd|gdi d       d d d        | j                  t              5  |j                  i dg dg g        d d d        | j                  t              5  |j                  dddgdi d       d d d        y # 1 sw Y   sxY w# 1 sw Y   KxY w# 1 sw Y   y xY w)Nr   rn   r  rt   rp   r   r   )r  r:   rB  r;   rN   r  r=   )r   r  long_overflows      r   test_dealloczImplementationTest.test_dealloc
  s     	
 3)R[[#r:}- 	?LLM?Ar2>	?y) 	/LLQAr2.	/ y) 	4LLQB3	4 	4	? 	?	/ 	/	4 	4s$   C:C.C'CC$'C0c                 n   	 ddl m} ddz  }| j	                  t        j                  ddz
  z  |             | j                  t        j                  d|dz
  z  |      j                         d	       | j	                  t        j                  d
|dz
  z  |             | j                  t        t
        j                  d|z         | j                  t        t
        j                  d|z         | j                  t        t
        j                  d
|z         y # t        $ r | j                  d       Y +w xY w)Nr   )r  z requires _sre.MAXREPEAT constantr2   r  r  r^   r  )r   r  r  )r  r  ImportErrorr  rg   r;   rh   r6   rf   r:   r  r=   )r   r  rH   s      r   %test_repeat_minmax_overflow_maxrepeatz8ImplementationTest.test_repeat_minmax_overflow_maxrepeat
  s    	>& v"((8y1}#=vFG)y1}"=vFKKM$	&"((:Q#?HI-X	5IJ-Y5JK-Z)5KL  	>MM<=	>s   D D43D4c                    dd l }| j                  t              5 }|j                  dg d       d d d        | j	                  dt        j                               | j                  t              5 }|j                  dg d       d d d        | j	                  dt        |j                               y # 1 sw Y   xY w# 1 sw Y   ;xY w)Nr   r   )r   r<  r   zinvalid template)r   r   r   zan integer is required)r  r:   rB  r  r4  r|   r?   )r   r  rB   s      r   %test_sre_template_invalid_group_indexz8ImplementationTest.test_sre_template_invalid_group_index
  s     	y) 	,RMM"l+	,(#bll*;<y) 	,RMM"l+	,.BLL0AB	, 	,	, 	,s   B41C 4B= C	N)r   r   r   __doc__r   r  r  r  r  r  r  r"  r%  r'  r   r   r   r  r  9
  s     	 	B; B B&6 6 64 4 4" M M C Cr   r  c                       e Zd Zd Zd Zy)ExternalTestsc                    ddl m} |D ]B  \  }}| j                  ||      5  t        j                  |      }| j                  |j                  |             | j                  |j                  |             | j                  |j                  |             ddz  |z   ddz  z   }| j                  |j                  |             | j                  |j                  |d             | j                  |j                  |ddt        |      z                | j                  |j                  |ddt        |      z                ddd       E y# 1 sw Y   QxY w)zre_tests benchmarksr   )
benchmarksr9   rH   rr  r  N)
test.re_testsr,  r>   r;   r=   rw  re   rh   rL  rC  )r   r,  r9   rW   rW  s2s         r   test_re_benchmarksz ExternalTests.test_re_benchmarks
  s   ,$ 
	HJGQga8 	HJJw',
+A/Y]SY.-E 23E53q6> BCBus1v~ FG	H 	H
	H	H 	Hs   D!EE	c                 	   ddl m}m}m} |D ]  }dx}x}x}x}}	t	        |      dk(  r	|\  }}}}}	n!t	        |      dk(  r|\  }}}nt        d|      | j                  ||      5  ||k(  rG| j                  t        j                        5  t        j                  |       ddd       	 ddd       t        j                  |      }
|
j                  |      }||k(  r| j                  |d       	 ddd       | j                         5  | j                  |d	       |j                  d      \  }}|j                  d      |j                         |j                  j                   d
}t#        dd      D ]   }	 |j                  |      }|d}||d|z  <   " |j                  j&                  j)                         D ]  }	 |j                  |      }|d}|||<    | j+                  t-        ||      |	d       ddd       	 t/        |d      }t/        |d      }| j                  d      5  t        j                  |      }
| j                  |
j                  |             ddd       | j                  d      5  t        j                  |t        j0                        }
|
j                  |      }|t3        d|       ddd       |dd dk7  r^|dd dk7  rV|T| j                  d      5  t        j                  |      }
| j                  |
j                  |dz                ddd       | j                  d      5  t        j                  |t        j6                        }
| j                  |
j                  |             ddd       | j                  d      5  t        j                  |t        j8                        }
| j                  |
j                  |             ddd       ddd        y# 1 sw Y   TxY w# t$        $ r d}Y w xY w# t$        $ r d}Y Lw xY w# 1 sw Y   .xY w# 1 sw Y   xY w# 1 sw Y   xY w# t4        $ r Y w xY w# 1 sw Y   :xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   }xY w)zre_tests test suiter   )testsFAILSYNTAX_ERRORNr   r_   z%Test tuples should have 3 or 5 fieldsr-  zSucceeded incorrectlyzFailed incorrectly)foundr0  r{  r^   d   Noner  zg%dzgrouping errorr  zbytes pattern matchzlocale-sensitive matchz#=== Fails on locale-sensitive matchrn   r  zrange-limited matchzcase-insensitive matchzunicode-sensitive match)r.  r2  r3  r4  rC  r   r>   r:   r;   r<   r=   re   rg   rw  rf   r{   r{  r   r   r}  keysr6   evalr  r  printUnicodeEncodeErrorr  r  )r   r2  r3  r4  rX  r9   rW   outcomerF   r  objresultrA  rB  vardictr   gir  bss                      r   test_re_testszExternalTests.test_re_tests
  sL   ;; Z	3A6::G:a:':D81v{673GT8Q1&'#G !H!LLga8 Q3l***2884 ,

7+,	Q3 Q3 jj)Ad?%%f.EFQ3 Q3 \\^ 7OOF,@A "(QJE3(.Q)/(.		9G #1c] 0)!'aB!z%+ .0	*0 $YY11668 ()!'aB!z%+ &(
( $$T$%8(%5737<L '2Dq'*B
 &;< 8 jj.

278 &>? L jjryy9!$B!>!"GK	L BQK5(WRS\U-B & 2&;< G jj1

1eS1W(EFG \\":; 3**Wbmm<COOCJJqM23 \\";< 3**Wbjj9COOCJJqM23_Q3 Q3Z	3, ,0  * )!(B)  * )!(B)-7 7J8 8L L * ,G G3 33 3_Q3 Q3s0  &%R O3!	R 3>R :R 
A-P$8P 1P$?P$P$8R QR *6P1 R 9AP>=+R (;Q#R <AQ(R AQ4R 3O=8R  PP$PP$P!P$ P!!P$$P.)R 1P;6R >QR 	QR QR Q% R (Q1-R 4Q=9R  R
	N)r   r   r   r0  rC  r   r   r   r*  r*  
  s    H]3r   r*  __main__)%test.supportr   r   r   r   r   r   r	   r
   r   r   r  r;   rH   r	  rj  r  r  r   weakrefr   _multiprocessingr  r$  r|   r   r  r$   TestCaser'   r  r  r  r  r*  r   mainr   r   r   <module>rJ     s  < < <  	  
      - -- -[%h [%|J \"" \ \~Mdx(( Md`FC** FCRn3H%% n3b zHMMO CY  Os   C) )C32C3