
    7bh%C                       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     6/opt/python-3.12.12/usr/lib/python3.12/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 Zd Z e{j                  edu d      d        Zd Zd Zd Zd Z e{jD                   ee9jH                  d      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)   sI    &5$-0/DAqAqM 0 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   r:   errmsgrA   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)r:   repl)	r;   r<   r=   subr?   r@   r6   r4   rA   )r   r:   rG   stringrB   rA   rC   rD   s           r   checkTemplateErrorzReTests.checkTemplateError:   s    rxx(BFF7D&) )\\'\5,,CSWWf-  #.	 65 )(55s   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   s^    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 )Nz(ab|ba)abr      baz(abc|bac|ca|cb)abcrd   baccacbz((a)|(b)|(c))ar   r_   rR   cr6   r<   ri   rg   rj   s    r   test_branchingzReTests.test_branching`   s[   	9)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   ru   xyzxaz   yrM      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>   s    ur   r   
z\1\1z(.)xx\\\c                     S r   r   )r   rX   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<   rH   r   r$   rN   
memoryviewr6   r   replacechrr?   r;   r=   )r   r3   rw   rX   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1ARVVAsFQJ7? 2 	#{;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?Aa&&rxx0$$RVVC3%?J 1 ! @
 	f5w? 10 !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<   rH   rj   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   rj   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;   
ValueErrorri   Irf   rW   r   r:   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>   rj   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<   rH   rJ   rj   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 )Nru   rR   aaaaabbbbbr_   baaaar   r   rj   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   rj   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>        K9JA!Q/9J   r_      z(?:%s)(?(200)z|t)xc8yzr      )r<   r>   joinranger6   ri   rg   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)rE   rj   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<   rH   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 <ro   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 '१')rJ   assertRaisesRegex
IndexErrorr<   rH   rj   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FF:y$/ K
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% KJs   ?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   ro   zb+)zx BBBBr_   r   )r   r   zb*)xxxyxzxr   ro   )xxxyzro   r   )r6   r<   subnrj   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   ru   rR   r   rw   :+)r   ru   rR   rw   (:+))r   r  ru   r  rR   ::rw   s   :a:b::c   :)r   rM      br      c   :+)r   rM   r
  r     (:+))r   r	  rM   r	  r
     ::r  )u   àßçu   абвu   𝒜𝒞𝒵r  r   z(?::+)z(:)+)r   r  ru   r  rR   r  rw   z([b:]+))r   r  ru   z:b::rw   z(b)|(:+))r   Nr  ru   Nr  r   rR   Nr   Nr  rw   z(?:b)|(?::+))r   ru   r   r   rw   z:*)r   r   ru   r   rR   r   rw   r   z(?::*)(:*))r   r  r   r   ru   r  r   r   rR   r  r   r   rw   r   r   z(:)*)r   r  r   Nru   r  r   NrR   r  r   Nrw   Nr   )sep)	r   r  ru   r  rR   r  r  rw   r   \b)r  ru   r  rR   r  rw   r   z(?=:))r   z:az:br  z:cz(?<=:))r  a:zb:r  rw   )	r   r7   r<   splitr$   rN   r   r6   r?   )r   rI   ru   rR   rw   r  expecteds          r   test_re_splitzReTests.test_re_split^  s   9-F!!"((3"7"9;!!"((4"8"57!!"((66":"EG . "1Z=)J2G!*-/F!!"((4"8">@!!"((5&"9"9;!!"((7F";"L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_`	
MC #&%%bhhsI&>I '&
 <=782334	
MC #&%%bhhsI&>I '&
 '& '&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  ro   )r   ru   b::c)maxsplitza:b:c:d)ru   rR   zc:dz(:))r   r  ru   r  r  r  r  )r   r  r   r   za:b::c)r6   r<   r  rj   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  rq   
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   ro   r`   ru   rR   rw   dz%s+z(%s+)(z)(z*)r   )r6   r<   rW   r   r7   r$   rN   r   )r   rI   r2   r   rb   s        r   test_re_findallzReTests.test_re_findall  s   D%0"5"AlO3F!!"**T6":"46!!"**VV"<"46!!"**Y"?"FH 4 %a&6	-8P!-02F!!"**UF";"79!!"**Wf"="79!!"**Z"@"LN2 2AQBa%C%&C0FRZZ	6:QCLIRZZ!V<q"clKRZZq!(<fE "g1v2w79 2r   c                 T    | j                  t        j                  dd      g d       y )Nz(a|(b))aba)ru   r   )rR   rR   r"  r6   r<   rW   rj   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 )!Nru   r   (a)ru   r   r_   ru   ru   rM   s   (a))rM   )rM   rM   r   z(%s)z((a)|(b))(c)?)ru   ru   NNrR   )rR   NrR   Nac)ru   ru   Nrw   bc)rR   NrR   rw   r   )rR   r   rR   rw   !(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?ro   r`   ru   NNa1b2c3)NrR   N)ru   Nrw   )
r   r6   r<   ri   groupsr|   r$   rN   r   r>   )r   rI   ru   r   s       r   test_re_matchzReTests.test_re_match  s   1S6kFRXXc6299;R@RXXeV4;;=vFRXXeV4::1=sCRXXeV4::1=sCRXXeV4::1a@*M " AdGYt_j6FFFRXXdF3::<bARXXff5<<>HRXXff5;;A>ERXXff5;;A>ERXXff5;;AqA<P G 2ARXXa^224b9RXXfqj!4;;=tDRXXfqj!4::1=qARXXfqj!4::1=qARXXfqj!4::1a@1a&I 2 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  rj   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)rm   r   r_   ru   r`     r2   ro   rR   ru   )r<   ri   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+  ru   r-  r.  r/  za1={a1} b2={b2} c3={c3}za1=a b2=None c3=Noner   r_   ro   r`   zno such groupr   r<  r   rv   )r   za1={a2}r)  rw   za1=a b2=None c3=c)
r<   r>   ri   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 A##J@bE A##J@aD A##J@dG A##J@dG A##J@fI A##J@  # A IIdO4#&4$'4#&2==a@BUV1t$1s#1t$1s# y)AaD * 	)S!,= A@@@@@@@@@@@@@ *)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 ) Nru   rv   rm   za|abrn      abs   a|ab)u   àßu   абu   𝒜𝒞r   z.*?$rq   rd   z.*?za.*?babbaxxbr   r   re   zabc$zabc
zabc\Zz(?m)abc$z	ab(?=c)cdabcdz
ab(?<=b)cdz
(?=a|ab)abr*  r_   r`   rA   endposr^   )
r6   r<   	fullmatchrg   r   r$   rN   r   rh   r>   )r   rI   ru   rR   rs        r   test_re_fullmatchzReTests.test_re_fullmatch  s   dC0557@AdGmFR\\'6:??A6J $QuXy'7E9JJFR\\(F;@@BFK KFDAqq1u%AR\\!QU388:FC G 	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  ru   ru   Nru   za)z(az^(?:(a)|c)((?(1)b|d))$rm   ru   rR   cd)Nr  z^(?:(a)|c)((?(1)|d))$r"  z(?P<g1>a)(?P<g2>b)?((?(g2)c|d))rq   ru   rR   rw   ad)ru   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<   ri   r0  rh   r>   r   r   rg   )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 subpatternro   z
()(?(1)a|bz()(?(1)a|b|cz/conditional backref with more than two branchesz()(?(1)a|b|c)z	()(?(2)a)r   r   rj   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  s?    sA1%

-12 &% %%s   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._constantsrd  rJ   rE   )r   rd  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   ru   z^(\|)?([^()]+)\1?$ru   rQ  za|z|az^(?:(a)|c)(\1)$aar(  z^(?:(a)|c)(\1)?$rw   NNz(abc\1)r   r   )r6   r<   ri   r0  rh   rE   rj   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)rn  ro  )r6   r<   ri   	groupdictrj   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 )	Nrl  rm  z\2 \1 \g<second> \g<first>zsecond first second firstz#(?P<first>first)|(?P<second>second)rn  z\2 \g<second> )r6   r<   ri   expandrj   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}$rq   z
^(\w){1}?$z^(\w){1,2}$z^(\w){1,2}?$z	^(\w){3}$r_   rw   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}$rb   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 repeatro   )rh   r<   ri   r6   r|   
assertTruerE   rj   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)ro   z(?i)(?P<first>a)(?P<other>b)r_   )rn  otherr&  ru   r   )rv   rv   rn  r{  )r6   r<   r>   r:   flagsr   Ur0  
groupindexri   rA   rL  rI   regsrx  sortedr;   rB  )r   rX  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   rq   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<   rf   r|   ASCIIMrh   LOCALErj   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]-rR   z[\^a]+za^!ceghijklmopqyzCEFGHIJKLMNOPQRTVXYz\%c$ceghijklmopqyzABCEFGHIJKLMNOPQRTVXYZz[\%c])rE   r6   r<   ri   r|   rh   purger?   r;   r=   r>   )r   rw   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

4Aa!!"((BJJ
C ! 5 8Aa!!"((BJJ1E ! 8 ! !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 {ro   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}])rx  r<   ri   rh   rE   rj   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           	      t(   | j                  t        j                  dd      j                  d      d       | j                  t        j                  ddt        j                        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      j                  d      d       | 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t        j
                               | j                  t        j                  dd             | 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t        j
                               | j                  t        j                  dd             | 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t        j
                               | j                  t        j                  dd             | 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t        j
                               | j                  t        j                  dd	             | 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t        j                               | j                  t        j                  dd             | 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t        j                               | j                  t        j                  dd             | 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t        j                               | j                  t        j                  dd             | 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t        j                               | j                  t        j                  dd             | 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t        j                               | j                  t        j                  dd             | 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                         d       | j                  t        j                  ddt        j                        j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  ddt        j
                        j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  ddt        j                        j                         d       | j                  t        j                  dd             | 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t        j                               | j                  t        j                  dd             | 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t        j                               | j                  t        j                  dd!             | 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!t        j                               | j                  t        j                  dd"             | j                  t        j                  dd"t        j
                               | j                  t        t        j                  dd#            d$       | j                  t        t        j                  dd#t        j                              d$       | j                  t        t        j                  dd%            d$       | j                  t        t        j                  dd%t        j
                              d$       | j                  t        t        j                  dd#            d&       | j                  t        t        j                  dd#t        j                              d&       | j                  t        t        j                  dd%            d&       | j                  t        t        j                  dd%t        j
                              d&       | j                  t        t        j                  dd'            d&       | j                  t        t        j                  dd't        j                              d&       | j                  t        t        j                  dd(            d&       | j                  t        t        j                  dd(t        j
                              d&       | j                  t        t        j                  dd)            d&       | j                  t        t        j                  dd)t        j                              d&       | j                  t        t        j                  dd*            d&       | j                  t        t        j                  dd*t        j
                              d&       | j                  t        t        j                  dd'            d$       | j                  t        t        j                  dd't        j                              d$       | j                  t        t        j                  dd(            d$       | j                  t        t        j                  dd(t        j
                              d$       y )+Nz	\b(abc)\brq   r_   s	   \b(abc)\br  u   \b(ьюя)\bu   ьюяz.\bza=s   .\bs   a=u   я=z=as   =au   =яrm   rF  u   юяz=-s   =-z.\Bs   .\Br  s   \bz.+\bs   .+\b\Br_   r_   s   \Br]   z.+\Bs   .+\Br   r   ru   ro   rM   r   rs      z   s      )r6   r<   rf   r|   r  r  rh   rx  ri   rM  rg   rC  rW   rj   s    r   test_word_boundarieszReTests.test_word_boundaries7  s   <7==a@%H<AGGJER=&9??BFK=&"))DJJ1MvV?H=CCAFQ"))OXrxxHI./rxx89%01%;</0"((65"((;<./rxx89%01%;</0"((65"((;<"((6401"((64:;"((7E23"((7E299=>"((6623"((66288<="((6401"((64:;"((7E23"((7E299=>"((6401"((64:;"((7E23"((7E299=>"((65129:"((6401"((64:;"((7E23"((7E299=>"((65129:./rxx89%01%;<01:;./rxx89%01%;<./rxx8901;<12"((5(BHH=>We45WeRXX>?Xv67XvryyABWh78"))E8RXX>?5%0557@5%:??A6J6627796B66299=BBDfM5(388:FC5(BHH=BBDfM"((5%01"((5%:;"((6623"((66299=>"((5(34"((;<",,w67",,wrxx@A",,x89",,xCD",,w9:WhAB 	"))E2./"))E2rxx89"))FC01"))FC;< 	"))E2./"))E2rxx89"))FC01"))FC;< 	RZZs34a8RZZsBHH=>BRZZ56:RZZbii@A1ERZZs34a8RZZsBHH=>BRZZ56:RZZbii@A1ERZZs34a8RZZsBHH=>BRZZ56:RZZbii@A1ERZZu56:RZZubhh?@!DRZZ78!<RZZ		BCQGRZZs34a8RZZsBHH=>BRZZ56:RZZbii@A1Er   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<   ri   r|   r   mapr   r   r   rN  s     r   test_bigcharsetzReTests.test_bigcharset  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>  s      >Aas   '  10009999)r<   r>   r   r   rx  ri   r  s     r   test_big_codesizezReTests.test_big_codesize  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<   ri   DOTALLr|   rj   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_   ru   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))crq   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<   ri   r|   rx  rh   rj   s    r   test_lookaheadzReTests.test_lookahead  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)crq   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))rx  r<   ri   rh   r;   r=   r>   rj   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                    | 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       | 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                               y )%Nrq   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\u212ar      ſrX   z\u017fz\u0412   в   ᲀz\u0432   Вz\u1c80z\ufb05   ﬆz\ufb06   ﬅ)r6   r<   ri   r   r|   rx  rj   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 	x67x67C67C67 	x67x67C67C67 	Hbdd;<Hbdd;<Hbdd;<Hbdd;<Hbdd;<Hbdd;< 	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                               | 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                               | 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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
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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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t        j                  t        j                  z               | 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                               y )+Nz[19A]r   z[19a]ru   s   [19A]   As   [19a]rM   z[19\xc7]   Ç   çz[19\xe7]z
[19\u0400]   Ѐ   ѐz
[19\u0450]z[19\U00010400]   𐐀   𐐨z[19\U00010428]z[19K]r  z[19k]z
[19\u212a]r  r  z[19S]r  z[19s]z
[19\u017f]r   rX   z
[19\u0412]r  r  z
[19\u0432]r  z
[19\u1c80]z
[19\ufb05]r  z
[19\ufb06]r  )rx  r<   ri   r   r   rh   rj   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fbdd;<fbdd;<fbdd;<fbdd;<"$$?@"$$?@"$$?@"$$?@!2L"$$GH!2L"$$GH!2L"$$GH!2L"$$GHD"$$78D"$$78D"$$78D"$$783RTT	:;3RTT	:;3RTT	:;3RTT	:;fbdd244i@A"((;RTT	BC"((;RTT	BCfbdd244i@A"$$rtt)DE"((=(BDDIFG"((=(BDDIFG"$$rtt)DE!2L"$$rtt)LM"((#4lBDDINO"((#4lBDDINO!2L"$$rtt)LM 	8RTT:;8RTT:;RTT:;RTT:; 	8RTT:;8RTT:;RTT:;RTT:; 	"$$?@"$$?@"$$?@"$$?@"$$?@"$$?@ 	"$$?@"$$?@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                               | 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                  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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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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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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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/d0t        j                               | j                  t        j                  d1d2t        j                               y )3Nz[9-a]_z[9-A]s   [9-a]   _s   [9-A]z[\xc0-\xde]   ×r     ÷z[\xe0-\xfe]r  z[\u0430-\u045f]r  r  z[\u0400-\u042f]z[\U00010428-\U0001044f]r  r  z[\U00010400-\U00010427]z[N-\x7f]r   z[n-\x7f]Zz
[N-\uffff]z
[n-\uffff]z[N-\U00010000]z[n-\U00010000]z[J-M]r  z[j-m]z[\u2129-\u212b]r  r  z[R-T]r  z[r-t]z[\u017e-\u0180]r   rX   z[\u0411-\u0413]r  r  z[\u0431-\u0433]r  z[\u1c80-\u1c82]z[\ufb04-\ufb05]r  z[\ufb06-\ufb07]r  )rx  r<   ri   r   rh   r   rj   s    r   test_ignore_case_rangezReTests.test_ignore_case_ranger  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bddCD"((>62449EFbddCD"((>62449EF!3XrttBDDyIJ"((#5xbddKL"((#5xbddKL!3XrttBDDyIJ!;\244PRPTPT9UV"((#=|RTTRTRVRVYWX"((#=|RTTRTRVRVYWX!;\244PRPTPT9UVc2449=>c2449=>RTT"$$Y?@RTT"$$Y?@!2CbddCD!2CbddCD 	8RTT:;8RTT:;!3S"$$?@!3S"$$?@ 	8RTT:;8RTT:;!3S"$$?@!3S"$$?@ 	!3XrttDE!3XrttDE!3XrttDE!3XrttDE!3XrttDE!3XrttDE 	!3XrttDE!3XrttDEr   c                 n    | j                  t        j                  dd      j                  d      d       y )Nz(\s)rs  r_   r6   r<   ri   r|   rj   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_   rR   z	\s([^a]*)z bbbbr6   r<   rf   r|   rj   s    r   test_not_literalzReTests.test_not_literal  sN    ;5;;A>D<7==a@$Gr   c                    t        t        d            j                         }| j                  t        d      5 }t        j                  d      }d d d        | j                  j                  t               | j                  j                  |      t        d             | j                  t        d      5 }| j                  t        j                  d|      t        d             d d d        | j                  |j                  t               | j                  t        j                  d|      t        d             | j                  t        d      5 }t        j                  d      }d d d        | j                  |j                  t               | j                  |j                  |      t        d	             | j                  t        d
      5 }t        j                  d      }d d d        | j                  |j                  t               | j                  |j                  |      t        d             | j                  t        d      5 }t        j                  d      }d d d        | j                  |j                  t               | j                  |j                  |      t        d             | j                  t        d      5 }| j                  t        j                  d|      t        d             d d d        | j                  |j                  t               | j                  t        d      5 }t        j                  d      }d d d        | j                  |j                  t               | j                  |j                  |      t        d             | j                  t        j                  d|      t        d             | j                  t        d      5 }t        j                  d      }d d d        | j                  |j                  t               | j                  |j                  |      t        d             | j                  t        d      5 }t        j                  d      }d d d        | j                  |j                  t               | j                  |j                  |      t        d             | j                  t        j                  d|      t        d             | j                  t        d      5 }t        j                  d      }d d d        | j                  |j                  t               | j                  |j                  |      t        d             | j                  t        d      5 }t        j                  d      }d d d        | j                  |j                  t               | j                  |j                  |      t        d             | j                  t        j                  d|      t        d              | j                  t        d!      5 }t        j                  d"      }d d d        | j                  |j                  t               | j                  |j                  |      t        d#             | j                  t        d!      5 }| j                  t        j                  d$|      t        d%             d d d        | j                  |j                  t               | j                  t        d!      5 }t        j                  d&      }d d d        | j                  |j                  t               | j                  |j                  |      t        d'             y # 1 sw Y   GxY w# 1 sw Y   xY w# 1 sw Y   FxY w# 1 sw Y   xY w# 1 sw Y   dx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   pxY w# 1 sw Y   xY w# 1 sw Y   ExY w# 1 sw Y   xY w)(N   zPossible set differencez[0-9--1]z-./0123456789z[0-9--2]z[--1]z-./01z[%--1]z
%&'()*+,-1zPossible set difference z[%--]z	%&'()*+,-zPossible set intersection z[0-9&&1]z&0123456789z[0-8&&1]z
&012345678z[\d&&1]z[&&1]z&1zPossible set union z[0-9||a]z0123456789a|z[\d||a]z[||1]z1|z"Possible set symmetric difference z[0-9~~1]z0123456789~z[\d~~1]z[~~1]z1~zPossible nested set z[[0-9]|]z0123456789[]z[[0-8]|]z012345678[]z[[:digit:]|]z:[]dgit)bytesr   decodeassertWarnsRegexFutureWarningr<   r>   r6   filename__file__rW   r,   )r   rX   wrX  s       r   test_possible_set_operationsz$ReTests.test_possible_set_operations  s   %*$$&""=2KLPQ

;'A MX.1tO'<=""=2KLPQRZZQ7o9NO MX.Ha0$w-@""=2KLPQ

9%A MX.1tL'9:""=2LMQR

8$A NX.1tK'89""=2NOST

;'A PX.1tM':;""=2NOSTRZZQ7l9KL PX.""=2NOST

:&A PX.1tM':;Ha0$t*=""=2GHA

;'A IX.1tN';<""=2GHA

:&A IX.1tN';<Ha0$t*=""=2VW[\

;'A XX.1tM':;""=2VW[\

:&A XX.1tM':;Ha0$t*=""=2HIQ

;'A JX.1tN';<""=2HIQRZZQ7m9LM JX.""=2HIQ

?+A JX.1tI7M ML ML ML
 NM
 PO PO PO IH
 IH XW
 XW JI JI JIs   ^70^!^.^;_0_<_")_/'_<`	`?`#=0`0+`=^!^+.^8;___"_,/_9<`	`` #`-0`:=ac                     | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                  d      d       y )Nz\s(b)r  r_   rR   za\sza r   r  rj   s    r   test_search_coveragezReTests.test_search_coverage  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   rx  r6   r|   rg   )r   r:   textri   rg   matcherr   s          r   assertMatchzReTests.assertMatch  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     /JqCFJs   r_  r  r  z(?x)z-.]{}r_   r   )r   r   r  r<   escaper6   LITERAL_CHARS)r   rX  rw   literal_charss       r   test_re_escapezReTests.test_re_escape  s    GG/E#J//ARYYq\1-S299Q</#5q9Vbiil2A6  	1q)ARYYq\"1-t4 **=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   rX  r   rR   r  s        r   test_re_escape_byteszReTests.test_re_escape_bytes(  s    %*Aqc
ARYYq\1-TBIIaL047;Wryy|3Q7	 
 	1q)Aqc
ARYYq\"1-u5  **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)ro   r   )r<   r  r6   r  rf   )r   rX   	s_escapeds      r   test_re_escape_non_asciiz ReTests.test_re_escape_non_ascii6  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  ro   )r  r<   r  r6   r  rW   rC  )r   rR   	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_picklingF  sg    7D622Q67Ell651G\\'*FVV, 8
 	 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.   deepcopyri   )r   r  rX  r   s       r   test_copyingzReTests.test_copyingP  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   VERBOSErj   s    r   test_constantszReTests.test_constantsY  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}  rx  r>   r  )r   flags     r   
test_flagszReTests.test_flags`  s    TT244rttRTT2448DOOBJJ{D9: 9TT244rttRTT2448DOOBJJ|T:; 9r   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rx  r<   ri   r   rE   ra  s     r   test_sre_character_literalsz#ReTests.test_sre_character_literalsf  s   RA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 S 	/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/  ra  s     r   !test_sre_character_class_literalsz)ReTests.test_sre_character_class_literals  so   RA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! S" 	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	rx  r<   ri   r  r  r;   r=   r>   rE   ra  s     r   test_sre_byte_literalszReTests.test_sre_byte_literals  s   2A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 3 	"((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 )Nr=  r2  r3  r4  r5  r6  r7  r8  r9  s   [\u1234]s   [\U00012345]s   [\567]r)  r_   s   [\911]r:  s   [\x1z]r+  rC  ra  s     r   test_sre_byte_class_literalsz$ReTests.test_sre_byte_class_literals  s   2A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 3 	"((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   rj   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)rR   r_   r<  )r<  r<  )r6   r<   ri   startendrg   rj   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)?aru   z(a)(b)?brm   r_   z(?P<a>a)(?P<b>b)?bz(?P<a>a(b))z((a)))rh   r<   ri   	lastindexr6   	lastgrouprj   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  rm   rS  r   i!N  z.*?cdi  rw   cdei#N  i N  rq   deia  z(a|b)*?c)r6   r<   ri   rK  rf   rj   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  rj   s    r   test_stack_overflowzReTests.test_stack_overflow  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   r]  znothing to repeatr   (?:r  r`   r   )r   repsmods      r   test_nothing_to_repeatzReTests.test_nothing_to_repeat  sJ    *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 )NrZ  )r   r]  r\  )r]  r\  r2   zmultiple repeatr_   )rE   rC  )r   
outer_reps	outer_modouter_op
inner_reps	inner_modinner_ops          r   test_multiple_repeatzReTests.test_multiple_repeat   sr    0J)	%	1"8J%1	$z1Z?$#-	#9..8X/N 11s8}3DF	 &2 #9 * 1r   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)rh   r<   ri   rj   s    r    test_unlimited_zero_width_repeatz(ReTests.test_unlimited_zero_width_repeat  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_ident  s    E\r   c                     d|z  S )Nzop%sr   ro  s     r   
s_operatorz(ReTests.test_scanner.<locals>.s_operator  s    v~(=r   c                     t        |      S r   )floatro  s     r   s_floatz%ReTests.test_scanner.<locals>.s_float  s    E%L%8r   c                     t        |      S r   )r{   ro  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@r|  bar)r   rx  rp  r:   r6   scan)r   rr  rt  rw  ry  rp  s         r   test_scannerzReTests.test_scanner  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   r]  r[  z
((.%s):)?zr(  ri  za:z)r  ru   r6   r<   ri   r0  )r   ops     r   test_bug_448951zReTests.test_bug_448951)  sf     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)*rq   r>  z^(([ab])|c)*)rw   rR   z^((d)|[ab])*rR   Nz^((a)c|[ab])*z^((a)|b)*?cz^(([ab])|c)*?drJ  z^((d)|[ab])*?cz^((a)c|[ab])*?cr  rj   s    r   test_bug_725106zReTests.test_bug_7251062  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)*rG  )ru   Nz(a)((?!(b)*))*r,  r  rj   s    r   test_bug_725149zReTests.test_bug_725149E  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  N  s    r   r  rq   r   )r}   r<   r>   rh   ri   )r   r  r   s      r   test_bug_764548zReTests.test_bug_764548L  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   rK  )rL  rA   r`   r   r  )r<   rO   r6   r|   r>   )r   iteritemr   s       r   test_finditerzReTests.test_finditerR  s   {{5,/D9DD$**Q-D9+	- jj||L!R0D9DD$**Q-D9+	- jj||La|;D9DD$**Q-D9+	- jj||L|;D9DD$**Q-D9+	- jj||La|:D9DD$**Q-D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>   rj   s    r   test_bug_926075zReTests.test_bug_926075k  s'    L1M2	4r   c                 t    d}| j                  t        j                  |      j                  d      g d       y )Nu   [.。．｡]za.b.crT  )r6   r<   r>   r  r   s     r   test_bug_931848zReTests.test_bug_931848o  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_   ro   )r<   rO   r6   nextrg   r;   StopIterationr>   rp  rf   rh   )r   r  rp  s      r   test_bug_581080zReTests.test_bug_581080t  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.*asdfrI  )r   r   )r<   rO   r6   r  rg   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<   ri   r|   rh   )r   decimal_digitsr2   not_decimal_digitss       r   test_bug_6561zReTests.test_bug_6561  sh    
  ARXXgq177:A>   $Abhhw23 $r   c                 &   dd l }dD ]  }|j                  |      }| j                  t        j                  d      j	                  |             | j                  t        j                  d      j	                  |      j                         d        y )Nr   bBuhHiIlLfds   blar   r   )arrayrh   r<   r>   ri   r6   r0  )r   r  typecoderu   s       r   test_empty_arrayzReTests.test_empty_array  sk    %HH%Abjj066q9:RZZ_2215<<>C &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)ro   z(?:(?i)r  r`   z(^)?(?(1)(?i)r   z($)?(?(1)|(?i)r   )r<   r>   r   r   ri   rx  r   rE   warningscatch_warningssimplefilterBytesWarning)r   
upper_char
lower_charrX  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; $$&!!'<8""8S!4 ' 	{Z7a@w3g=sAF}z93Bw3S!<x*4c1=y:5;S!D;cA3J/*<sBCL '&s   .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 )N$#za
b
za
b#
#za
b
cza
b
c#r   z#
#za#
b#
#za#
b#
c#)r<   r>   r6   rH   r  r   s     r   test_dollar_matches_twicez!ReTests.test_dollar_matches_twice  s    	K**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
  rR   rw   r  )r<   r>   r;   rB  ri   rH   )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  rx  ri   r  rh   r;   r   r=   )r   r|  r   s      r   test_ascii_and_unicode_flagz#ReTests.test_ascii_and_unicode_flag  s0   _E**VUR]]%:;COOCIIf-.**UE*COOCIIf-.	 %
 jjBMM!9:#))F+,jjR]]3#))F+,jj)#))F+,jj##))F+,]E**Webmm&;<Ccii01**VU+Ccii01	 # 	*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  lowerr  rC  r<   r  UnicodeErrorrB  r>   r  r  rx  ri   rh   r;   r   r=   r  )r   encr   rw   sletterbletterr  r   s           r   test_locale_flagzReTests.test_locale_flag  st   ))+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)rx  r<   ri   rh   r  r  rE   rj   s    r   test_scoped_flagszReTests.test_scoped_flagsA  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 	
ru   )r     	   
         rM   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| brR   rx  r<   rM  r  )r   spaces     r   test_ignore_spaceszReTests.test_ignore_spacesb  s   "EOOBLLc2::FG #<EOOBLLtRZZHI =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
aru   s   #x
arM   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
brR   r  rj   s    r   test_commentszReTests.test_commentsp  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>  s    5r   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>  s    8r   s   a5r  )r<   r>   r6   rH   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é€􏿿-)rx  r<   rf   rj   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   r:   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 )Nru   r  )r<   rf   assertIsNotNoner6   rJ  rK  )r   r  rX   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 )Nru   r   r_   )r<   r  r6   )r   r  rX   rN  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 Āru   z
(?s).{1,3}u   ĀĀrn   )r6   r<   rW   ri   rg   rj   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}ro   r  .{,%d}.{%d,}?z.{%d,%d}   )r6   r<   ri   rg   r;   OverflowErrorr>   )r   rI   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<   rf   rg   r>   r   r=   )r   rI   p1p2rB   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   rj   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   rj   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)r[  r\  r]  z{1}r^  r   yzr   )r4   r   )r6   r<   r>   r   rW   r  )r   r`  ra  r:   s       r   test_issue17998zReTests.test_issue17998  s    (D*s*T1  GRTT!:!B!B5!I"'g ! 7!..*  GRTT!:!B!B6!J"(w ! 8  )r   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<   rf   r/   r   r   assertRegexreprr$   rN   r   r,   rO   )r   rI   r   r:   rn  ro  s         r   test_match_reprzReTests.test_match_repr  sV   %q'99F		.&1AQ""DG$8$8G T!Wg. : (+;)< !12!"235F 		/62AQ""DG$8$8G T!Wg.5 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   ru   r  r*  r   z\b|:+)r   ru   r   r   r*  r   z(?<!\w)(?=\w)|:+)r   ru   r   r*  z(?<=\w)(?!\w)|:+)ru   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]   rv   r  r  )r`   r   r  )r6   r<   r  rH   rW   rO   rg   r   r   s     r   test_zerowidthzReTests.test_zerowidth  s}   %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K,Jq!&&(,JKA	CBKK	7,KL,Kq!&&(,K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,}r[  r\  z{1,187})r  r[  r]  z^((x|y)r  xyyzyr   xyyr_   r   ro   r3   )r<   r>   ri   r6   r|   )r   rf  ri  rN  r   s        r   test_bug_2537zReTests.test_bug_2537!  s    5H.JJ8DEGGG$  U3  R0  S1 / 6r   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   )rI   rA   rL  )r   r   r   r`   rm   r_   )rI   r  )r   rm   	racadabra)
r<   r>   r6   ri   rg   rM  rf   rW   r  rp  r   s     r   test_keyword_parameterszReTests.test_keyword_parameters+  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  rd   )r6   r<   rM  r   rg   rj   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_cachingB  s     $$V__5	((&//9E1C<  #6 2 	
!!#

!!# << <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$  rx  r<   ri   r  r   rj   s    r   r(  zReTests.check_en_US_iso88591X  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/  r0  r1  r2  r3  )	r  r#  r$  rx  r<   ri   r  r   rh   rj   s    r   r)  zReTests.check_en_US_utf8a  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   rx  ri   rh   )r   r*  r+  r   r  p3p4rX  s           r   test_locale_compiledzReTests.test_locale_compiledj  sH   
 $$V__5	((&//9E1C<  #6 2 	*:;ZZRTT"$$Y/ZZ)24495ZZ+RTT"$$Y7ZZ)24495RAOOAGGK01OOAGGK01OOAGGK01  	"((;/0"((;/0"((;/0,7RAOOAGGK01aggk23aggk23  	-."((;/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  r:   r}   r6   rA   linenocolnoassertInr4   assertNotInr  r  )r   rC   rD   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(?ro   r   rj   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  )r>  r}   r<   r   r   rj   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)Nrq   XYZ)
r<   r>   r  r6   assertFalser  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  rq   r=   )
r<   r>   r  r6   rH  r  r  r  r  rI  )r   rJ  rK  rL  s       r   test_pattern_compare_bytesz"ReTests.test_pattern_compare_bytes  s    ::f% 	
::f%hh88, 	
::e$$$&!!'<8(3 '&&s   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   )rN   r<   rf   r6   r|   )r   rX   r   m2s       r   test_bug_29444zReTests.test_bug_29444  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   rm   z(?=(.)(.)?)rR  )rR   r   r  z1(?=<(?P<tag>\w+)/?>(?:(?P<text>.+?)</(?P=tag)>)?)z<test><foo2/></test>)r   <foo2/>)foo2r   r   rU  )tagr  rV  z<test>Hello</test><foo/>Hellor{  z<test>Hello</test><foo/><foo/>)r6   r<   rf   r0  rW   rO   rp  r   rX   rX  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C1BA!++-1BC"()<"($79	: 'Q1BC1BA!++-1BC"(':"'68	9 -Q1BC1BA!++-1B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)*?brm   r'  z	(ab|a)+?bz(ab|a){0,2}?bz	(.b|a)*?br  rj   s    r   test_MARK_PUSH_macro_bugz ReTests.test_MARK_PUSH_macro_bug	  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   ro   )   r   )xyzxcr2   tr6   r<   ri   r0  rg   rY  s       r   test_MIN_UNTIL_mark_bugzReTests.test_MIN_UNTIL_mark_bug'	  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   ra  ro   )r   r   rQ  ababz(?:[^b]*(?=(b)|(a))ab)*rI  )ro   r`   z(ab?)*?brm   r'  r<   ri   r6   rg   r0  rY  s       r   test_REPEAT_ONE_mark_bugz ReTests.test_REPEAT_ONE_mark_bug6	  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 )
Nrh  z(?:.*?(?=(a)|(b))b)*rI  ro   r`   r   )NrR   axxzazz(?:a*?(xx)??z)*r_  ri  rY  s       r   test_MIN_REPEAT_ONE_mark_bugz$ReTests.test_MIN_REPEAT_ONE_mark_bugJ	  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)rm   r   z((?!(ab)c)(.))*rh  rI  r_   rl  r`   )rR   NrR   rd  r  s     r   test_ASSERT_NOT_mark_bugz ReTests.test_ASSERT_NOT_mark_bugX	  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'r[   r   z
got 'type')r   rB  r<   rf   r/   rj   s    r   test_bug_40736zReTests.test_bug_40736d	  s[    ##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_counterrh   r<   rf   r6   r  rW   r,   rO   rH   
assertLess)r   rX   rJ  rX  rc  s        r   test_search_anchor_at_beginningz'ReTests.test_search_anchor_at_beginningl	  s    I!!#Abii1o.RXXa^aS1RZZ1-r2T"++a"34b9RVVAr1-q1  %' 	3r   c                 :	   	 | 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 ),Nz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()*+aru   zx*+r\   r]   zx++r^   a*+rb   rc   rd   a++z
^(\w){1}+$rq   z^(\w){1,2}+$z
^(\w){3}+$r_   rw   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{}+$rw  )	rh   r<   ri   r6   r|   r0  rf   rg   rx  rj   s    r   test_possessive_quantifiersz#ReTests.test_possessive_quantifiers{	  s7   	+
 	"((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 )Nr  ru   r  a?+a{1,3}+rm   za++bza*+bza?+bza{1,3}+b(?:ab)++(?:ab)*+(?:ab)?+(?:ab){1,3}+rq   z	(?:ab)++cz	(?:ab)*+cz	(?:ab)?+cz(?:ab){1,3}+crx  r<   rM  rh   rj   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 )Nr  aabrh  r  rh  r   r   r  ru   ru   r   r   r  r  ababcrh  r  rh  r   r   r  rm   rm   r   r   r  r#  rj   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 )
Nz
a(?>bc|b)crq   abccz(?>.*).z(?>x)++rb   z(?>x++)z(?>x)++xz(?>x++)x)r<   r>   rh   ri   rx  )r   rJ  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+)ru   (?>a*)(?>a?)
(?>a{1,3})rm   z(?>a+)bz(?>a*)bz(?>a?)bz(?>a{1,3})b(?>(?:ab)+)(?>(?:ab)*)(?>(?:ab)?)(?>(?:ab){1,3})rq   z(?>(?:ab)+)cz(?>(?:ab)*)cz(?>(?:ab)?)cz(?>(?:ab){1,3})cr  rj   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  rh  r  r  r  r  r  r  r  rh  r  r  r  r  r  r#  rj   s    r   test_findall_atomic_groupingz$ReTests.test_findall_atomic_grouping	  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)rx  r<   rM  rj   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)
Nru   zre.template()zis deprecatedfunctionr  )r|  zre.TEMPLATEahoynope)assertWarnsDeprecationWarningr<   templater>  r}   warningr?  r>   TEMPLATEr  r6   rx  ri   rG  )r   rC   template_re1template_re2s       r   -test_template_function_and_flag_is_deprecatedz5ReTests.test_template_function_and_flag_is_deprecated 
  se   01R;;t,L 2os2::7os2::7j#bjj/2RZZ101R
 ::d"++bjj2HIL 2 	mS_5os2::7fc"**o.S_5 	|4**623++F34+ 21 21s   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))+)ABCDErn   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)?)ru   z
(?:ab?c)?+z(?>(?:ab?c){1,3})z(?:ab?c){1,3}+rx   rj   s    r   test_bug_gh106052zReTests.test_bug_gh106052
  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   c                 <   | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       y )Nz((x)|y|z)*+r   )r(  r2   z((x)|y|z){3}+z((x)|y|z){3,}+r  rj   s    r   test_bug_gh101955zReTests.test_bug_gh101955,
  so    -7>>@*M/59@@BJO"2E:AACZPr   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ProcessrH   rJ  r   r   rG  is_alive	terminate)r   r:   input_jsrX  s       r   test_regression_gh94675zReTests.test_regression_gh946752
  s    ** H I
 ##7;;b(^L			}	QZZ\+DEzz| qzz| s   ! B3 33C&c                 V    | j                  t        j                  dd      d   d       y )Nz12(?!)|3123r   3)r6   r<   rf   rj   s    r   	test_failzReTests.test_failF
  s"    ;6q93?r   c                 6   d}dD ]  }| j                  |      5  | j                  t        j                  ||      t	        |             | j                  t        j
                  d|z   dz   |      j                         |       d d d         y # 1 sw Y   xY w)N1x
)z[\s\S]z[\d\D]z[\w\W]z[\S\s]z\s|\Sr9   r_  z)+)r?   r6   r<   rW   r,   rM  r|   r   rX   rX  s      r   test_character_set_anyzReTests.test_character_set_anyI
  s}     EAa(  Aq!147;  eai$.>!B!H!H!JAN )( F((s   A*BB	c                     d}dD ]j  }| j                  |      5  | j                  t        j                  ||             | j                  t        j                  d|z   |             d d d        l y # 1 sw Y   wxY w)Nr  )z[^\s\S]z[^\d\D]z[^\w\W]z[^\S\s]r9   z(?s:.))r?   rh   r<   rf   r  s      r   test_character_set_nonezReTests.test_character_set_noneR
  sf     ?Aa(!!"))Aq/2!!"))HqL!"<= )( @((s   AA33A<	c                 J    G d dt               }t        j                  |      }t        |      D ];  }	 |j	                  ||       |j                  |       ||j	                  dd        c S  y # |$ r Y nw xY w	 |j	                  dd        ^# |j	                  dd        w xY w)Nc                       e Zd Zy)*ReTests.check_interrupt.<locals>.InterruptNr  r   r   r   	Interruptr  \
  s    r   r  r<  )	Exceptionr<   r>   r   _fail_afterri   )r   r:   rI   maxcountr  rX  r  s          r   check_interruptzReTests.check_interrupt[
  s    		 	JJwxA(a+ b$' !
  b$'b$'s#   $A//A74B6A77BB"r  zrequires debug buildc                     | 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(.)*:zabc:d   z	([^:])*?:z	([^:])*+:z	(.){2,4}:z([^:]){2,4}?:z([^:]){2,4}+:)r  rj   s    r   test_memory_leakszReTests.test_memory_leaksi
  sp    Xvs3\637\637\637-vs;-vs;r   r   )r   r   r   r7   rE   rJ   rT   rY   rk   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r$  r1  r?  rD  rO  rY  r]  rb  rf  rj  rq  ru  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r<   rM  r  rI   ascii_lettersdigitsr  r  r  r  r  r  r  r  r  r0  r;  rD  rF  rH  rL  rP  rT  rV  rX  rb  rj  rl  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  r  r  unittestskipIfr	   r
   r,  r(  r)  r8  r@  rB  rD  rN  rP  rS  rZ  r\  re  rj  rn  rp  rr  r   rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  
skipUnlesshasattrr  r  r   r   r   r'   r'   %   s8    //	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BFHB)#B8K4&=PEANCFJ?HH8T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(Q X___,.MN O&@O>( X];=ST< U<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  s
  s?    		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  rj   s    r   test_atomic_groupzDebugTests.test_atomic_group
  s    z2 5 	r   c                 :    | j                  t        d      d       y )Nr  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  rj   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  rj   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  y
  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   r:   r  s      r   checkzPatternReprTests.check
  s     bjj12H=r   c                 b    | j                  t        t        j                  ||            |       y r   r  )r   r:   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  rj   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  rj   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   rj   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   rj   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  rj   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   rj   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   rj   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  rj   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  rj   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>   rw  rC  r6   r   )r   r:   rN  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   rj   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	 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
)ImplementationTestc                    | 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<   Matchr{  r  r>   r/   rp  )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   ru   r   rJ  )r   r   r   r   aaaa)r   r_   ro   r`   ababba)r   r   r_   ro   r   r_   abcabdac)r   r   r   r_   ro   r   r_   r   )r<   	_compiler_generate_overlap_tabler6   )r   fs     r   test_overlap_tablez%ImplementationTest.test_overlap_table:  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  	MAXREPEATrd  rj   s    r   test_signednessz"ImplementationTest.test_signednessC  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/   rp  r   s     r   test_disallow_instantiationz.ImplementationTest.test_disallow_instantiationG  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  r  r  r>  r   __package__rx  r  )r   
deprecatednamer  ra  attrs         r   test_deprecated_modulesz*ImplementationTest.test_deprecated_modulesO  s+   -3(	

 DT*d+%%&89Qt$ :  QYY#*4(.!AC  X6dCKK0kk$'  t4  "5&t,DOOGC$67 -KK% +*  :9 +*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_tolowerrI   r  ascii_iscasedunicode_iscasedr,   upperrG  rx  )r   r8  r   rw   loiscaseds         r   test_case_helpersz$ImplementationTest.test_case_helpersj  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   ro   r  ru   rq   r   r   )r8  r;   rB  r<   rO   r  r>   )r   r8  long_overflows      r   test_dealloczImplementationTest.test_dealloc  s     	
 3)R[[#r:}-LLM?Ar2> .y)LLQAr2. * y)LLQB3 *) .-)) *)s$   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  )r8  r  ImportErrorr'  rh   r<   ri   r6   rg   r;   r  r>   )r   r  rI   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)r8  r;   rB  r  r>  r}   r@   )r   r8  rC   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   r   r  r  r  r!  r6  rA  rD  rG  rI  r   r   r   r  r  )  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)Nr   )
benchmarksr:   rI   rs  r  )
test.re_testsrM  r?   r<   r>   rx  rf   ri   rM  rC  )r   rM  r:   rX   rX  s2s         r   test_re_benchmarksz ExternalTests.test_re_benchmarks  s   ,$JGQga8JJw',
+A/Y]SY.-E 23E53q6> BCBus1v~ FG 98 %88s   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)Nr   )testsFAILSYNTAX_ERRORr   r`   z%Test tuples should have 3 or 5 fieldsrN  zSucceeded incorrectlyzFailed incorrectly)foundr0  r|  r_   r  Noner&  zg%dzgrouping errorr  zbytes pattern matchzlocale-sensitive matchz#=== Fails on locale-sensitive matchro   r  zrange-limited matchzcase-insensitive matchzunicode-sensitive match)rO  rS  rT  rU  rC  r   r?   r;   r<   r=   r>   rf   rh   rx  rg   r|   r|  r   r   r~  keysr6   evalr  r  printUnicodeEncodeErrorr  r  )r   rS  rT  rU  rc  r:   rX   outcomerG   r  objresultrJ  rK  vardictr   gir  bss                      r   test_re_testszExternalTests.test_re_tests  s   ;;A6::G:a:':D81v{673GT8Q1&'#G !H!LLga8l***2884

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

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

1eS1W(EF = \\":;**Wbmm<COOCJJqM2 < \\";<**Wbjj9COOCJJqM2 =_ 98  540  * )!(B)  * )!(B)- $^J =< @? * , =< <; =<_ 98s0  '%RO4"	R4>R;RA-P%9P1P% P$P%9RQR+6P2!R:AP?>+R);Q$R=AQ)RAQ5 R4O>9RPP%PP%P"P%!P""P%%P/*R2P<7R?Q	R	QRQRQ&!R)Q2.R5Q>:RR	N)r   r   r   rQ  rc  r   r   r   rK  rK    s    H]3r   rK  __main__)%test.supportr   r   r   r   r   r   r	   r
   r   r   r  r<   rI   r.  ru  r  r  r   weakrefr   _multiprocessingr  rF  r}   r   r  r$   TestCaser'   r  r  r  r  rK  r   mainr   r   r   <module>rj     s  < < <  	  
      - -- -K)<h K)<\R \"" \ \~Mdx(( Md`FC** FCRn3H%% n3b zHMMO c`  Os   C) )C32C3