Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/test/__pycache__/test_re.cpython-38.opt-1.pyc
U

>��g���@s�ddlmZmZmZmZmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZddl
mZGdd�de�ZGdd�de�ZGd	d
�d
e
j�ZGdd�de
j�ZGd
d�de
j�ZGdd�de
j�Zedkr�e
��dS)�)�
gc_collect�
bigmemtest�_2G�cpython_only�captured_stdoutN)�Scanner)�proxycseZdZ�fdd�Z�ZS)�Scstt��|��S�N)r	�super�__getitem__��self�index��	__class__��+/opt/cppython/lib/python3.8/test/test_re.pyrsz
S.__getitem__��__name__�
__module__�__qualname__r�
__classcell__rrrrr	sr	cseZdZ�fdd�Z�ZS)�Bcstt��|��Sr
)rrrr
rrrrsz
B.__getitem__rrrrrrsrc@seZdZd�dd�Zd�dd�Zd�dd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Z d>d?�Z!d@dA�Z"dBdC�Z#dDdE�Z$dFdG�Z%dHdI�Z&dJdK�Z'dLdM�Z(dNdO�Z)dPdQ�Z*dRdS�Z+dTdU�Z,dVdW�Z-dXdY�Z.dZd[�Z/d\d]�Z0e1d^d_��Z2d`da�Z3dbdc�Z4ddde�Z5dde6j7fdfdg�Z8e9j:e9j;dhZ<didj�Z=dkdl�Z>dmdn�Z?dodp�Z@dqdr�ZAdsdt�ZBdudv�ZCdwdx�ZDdydz�ZEd{d|�ZFd}d~�ZGdd��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�d��ZUd�d��ZVd�d��ZWd�d��ZXd�d��ZYd�d��ZZd�d��Z[d�d��Z\d�d��Z]d�d��Z^d�d��Z_d�d��Z`d�d��Zad�d��Zbd�d��Zcd�d��Zdd�d��Zed�d��Zfd�d��Zgeheid�d��d�d„�Zjeheid�d��d�dń�Zkd�dDŽZld�dɄZme1d�d˄�Znd�d̈́Zod�dτZpd�dфZqd�dӄZrd�dՄZsd�dׄZte1d�dل�Zud�dۄZvd�d݄Zwd�d߄Zxd�d�Zyd�d�Zzd�d�Z{d�d�Z|d�d�Z}d�d�Z~d�d�Zd�d�Z�d�d�Z�d�d�Z�dS)��ReTestsNcs,��||�����fdd���||�dS)NcsHt|ttf�r.t||�D]\}}�||�qn��t|�t|���dSr
)�
isinstance�tuple�list�zip�assertIs�type)�actual�expect�x�y��msg�recurserrrr'sz)ReTests.assertTypedEqual.<locals>.recurse)�assertEqual)rr!r"r&rr%r�assertTypedEqualszReTests.assertTypedEqualc	Csh|�tj��}t�|�W5QRX|j|d��0|j}|�|j|�|dk	rZ|�|j|�W5QRXdS)N)�pattern)	�assertRaises�re�error�compile�subTest�	exceptionr(r&�pos)rr*�errmsgr1�cm�errrrr�checkPatternError&szReTests.checkPatternErrorc	Csn|�tj��}t�|||�W5QRX|j||d��0|j}|�|j|�|dk	r`|�|j|�W5QRXdS)N)r*�repl)	r+r,r-�subr/r0r(r&r1)rr*r6�stringr2r1r3r4rrr�checkTemplateError/szReTests.checkTemplateErrorc	CsRtd�}t�d|�}|�t��|�d�W5QRXt|�~t�|�d�dS)N�x�as�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)�	bytearrayr,�finditerr+�BufferError�extendrr)r�b�itrrr�test_keep_buffer8szReTests.test_keep_buffercCs2d}t�d�}t|�}|�|�d�|�d��dS)NZQabbbcRzab+c)r,r.rr(�findall)r�sr#r$rrr�test_weakrefCs
zReTests.test_weakrefcCs�|�t�dd��d�d�|�t�dd���d�|�t�dd��d�d�|�t�dd���d�|�t�dd��|�t�d	d
��d�d�|�t�d	d
���d�|�t�dd��d�d�|�t�dd���d�|�t�d
d
��dS)Nzx*Zaxxr�rrzx+���r#Zaaaza*�xxxZxxxa�rrI�a+)r(r,�search�span�assertIsNone�match�rrrr�test_search_star_plusIszReTests.test_search_star_pluscCst|�d��}t|d�S)NrrH)�int�group�str)rZmatchobjZ	int_valuerrr�bump_numUszReTests.bump_numcs�|�t�ddd�d�|�t�dtd�td��d�|�t�ddd�d�|�t�dtd�td��d�|�t�dtd�td��d�|�t�dtd�td��d�d	D]}|�t�|dd
|�d�q�|�t�ddd
�d�|�t�d|jd�d�|�t�d|jdd�d�|�tjd|jddd�d�|�t�ddd�d�d�|�t�ddd�d�d�|�t�d�d�d�|�t�d��	dd�d���|�t�d�fdd�d���|�t�d d!d�d"�|�t�d d#d�d"�|�t�d$d%d�d"�|�t�d$d&d�d"�|�t�dd'd�d(�|�t�dd(d�d(�|�t�dd(d�t
d)�t
d*�t
d+�t
d,�t
d-�t
d.�t
d/��d0D]R}|�|��<|�tj
��$|�t�dd|d�d|�W5QRXW5QRX�q�|�t�d1d2d3�d4�dS)5Nr$�a�xyzZxaz�yr;�xyzsxaz��àuаu𝒜zx%sz�(?i)b+r#�	bbbb BBBB�x x�\d+z08.2 -2 23x99yz9.3 -3 24x100yrIz
9.3 -3 23x99y��count�.cSsdS)N�\nr��mrrr�<lambda>k�z+ReTests.test_basic_re_sub.<locals>.<lambda>rd�
z\1\1z(.)�xx�\�\\cs�Sr
rre�rDrrrgqrh�(?P<a>x)z
\g<a>\g<a>Zxxxxz
\g<a>\g<1>�
(?P<unk>x)z\g<unk>\g<unk>z
\g<1>\g<1>z\t\n\v\r\f\a\bz	

�	�
��
���Z,cdehijklmopqsuwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz^\s*�X�testZXtest)r)r,r7r	rr<�
memoryviewr(rV�replace�chrr/r+r-)rr$�crrmr�test_basic_re_subYsL���6�6zReTests.test_basic_re_subcCs|�t�ddd�d�dS)Nroz\g<1>\g<1>\brjzxxxx�r(r,r7rQrrr�test_bug_449964�s�zReTests.test_bug_449964cCs\|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�dS)Nz\r\nrdz
abc
def
zabc
def
z
rir~rQrrr�test_bug_449000�s����zReTests.test_bug_449000cCsdt�d�}|�ttj|dtj�|�ttj|dtj�|�ttj|dtj�|�ttj|tj�dS)Nrc�A)r,r.r+�
ValueErrorrP�IrMrC�rr*rrr�
test_bug_1661�s

zReTests.test_bug_1661cCst�d�dS)Nz(?P<quote>)(?(quote)))r,r.rQrrr�
test_bug_3629�szReTests.test_bug_3629cCs�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�dd	d�d
�|�t�ddd�d�|�t�dd
d�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d
�|�t�ddd�d�|�ddddd�|�ddddd�|�dddd d!�|�dd"dd#d!�|�dd$dd%d!�|�dd&dd'd!�|�dd(dd)d!�|�dd*dd d!�|�dd+dd,d!�|�dd-dd.d!�|�dd/dd'd!�|�dd0dd'd!�|�dd1dd)d!�|�dd2dd3d!�|�dd"d4d#d!�|�t�d5d&d�d�|�t�d6d/d7�d8�|�t�d6d0d7�d9�dS):Nr#�\0�z\000z\001�z\008�8z\009z9z\111r�z\117�Oz\377�ÿz\1111ZI1z\00z\07��\08z\09z\0azaz\400z0octal escape value \400 outside of range 0-0o377rz\777z0octal escape value \777 outside of range 0-0o377z\1zinvalid group reference 1rHz\8zinvalid group reference 8z\9zinvalid group reference 9z\11zinvalid group reference 11z\18zinvalid group reference 18z\1az\90zinvalid group reference 90z\99zinvalid group reference 99z\118z\11az\181z\800zinvalid group reference 80�z(((((((((((x)))))))))))z((((((((((y))))))))))(.)rXZxz8Zxza)r(r,r7r9rQrrr� test_sub_template_numeric_escape�sV
�
���z(ReTests.test_sub_template_numeric_escapecCsL|�t�ddd�d�|�t�dddd�d�|�tjddddd�d�dS)NrWr@ZaaaaaZbbbbbrHZbaaaarar~rQrrr�test_qualified_re_sub�szReTests.test_qualified_re_subcCs|�t�ddd�d�dS)Nz(\S)\s+(\S)z\1 \2zhello  therezhello therer~rQrrr�test_bug_114660�s�zReTests.test_bug_114660cCs�t�d�t�d�t�d�|�dd�|�ddd�|�d	d
�|�ddd
�|�ddd�|�ddd�|�ddd�|�dd�|�dd�|�ddd�|�ddd�|�ddd�|�ddd�|�ddd�|�ddd�|�d dd�|�d!dd"�|�d#dd"�|�d$dd"�|�d%d&d"�|�d'd(d"�|�d)dd"�t�d*�t�d+�|�d,d-d�d.�d/d0�td1d2�D��}d3|}|�t�|d4���d5�dS)6Nz(?P<a>x)(?P=a)(?(a)y)z(?P<a1>x)(?P=a1)(?(a1)y)z(?P<a1>x)\1(?(1)y)z(?P<a>)(?P<a>)z6redefinition of group name 'a' as group 2; was group 1z
(?P<a>(?P=a))�cannot refer to an open grouprqz(?Pxy)zunknown extension ?Pxz(?P<a>)(?P=azmissing ), unterminated namerrz(?P=�missing group name�z(?P=)z(?P=1)zbad character in group name '1'z(?P=a)zunknown group name 'a'z(?P=a1)zunknown 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(?(rIz(?())z(?(a))z(?(-1))� bad character in group name '-1'z(?(1a))z bad character in group name '1a'z(?(a.))u(?P<µ>x)(?P=µ)(?(µ)y)uf(?P<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>x)(?P=𝔘𝔫𝔦𝔠𝔬𝔡𝔢)(?(𝔘𝔫𝔦𝔠𝔬𝔡𝔢)y)u	(?P<©>x)� bad character in group name '©'�|css|]}d||fVqdS�z
x(?P<a%d>%x)yNr��.0�irrr�	<genexpr>�sz/ReTests.test_symbolic_groups.<locals>.<genexpr>rH��z(?:%s)(?(200)z|t)�xc8yz�r�)r,r.r5�join�ranger(rPrN�r�patrrr�test_symbolic_groups�sH


��

zReTests.test_symbolic_groupsc	Csf|�ddddd�|�ddddd�|�dddd	d
�|�ddddd�|�dd
ddd�|�ddddd�|�ddddd�|�ddddd�|�td��t�ddd�W5QRX|�t�ddd�d�|�t�ddd�d�|�ddddd�|�t�ddd�d�|�t�ddd�d�|�dddd d�d!�d"d#�tdd$�D��}|�t�|d%d&�d'�dS)(Nrnz\g<arjr�rIz\g<r�z\gz	missing <�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>zinvalid group reference 2z\2rHzunknown group name 'ab'z\g<ab>z(?P<a>x)|(?P<b>y)z\g<b>r�z\g<-1>r�u	(?P<µ>x)u\g<µ>u#(?P<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>x)u \g<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>u\g<©>r�r�css|]}d||fVqdSr�rr�rrrr�sz-ReTests.test_symbolic_refs.<locals>.<genexpr>r�z\g<200>Z	xc8yzxc8yZc8zc8)r9�assertRaisesRegex�
IndexErrorr,r7r(r�r�r�rrr�test_symbolic_refs�sZ
�
�
�
�
�
�
�
�
�zReTests.test_symbolic_refscCs�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�d	dd�d
�|�t�d	ddd�d�|�tjd	dddd
�d�dS)Nr]r#r^)r_r�zb+)zx BBBBrHrX)rXrzb*)Zxxxyxzxr�r�)Zxxxyzr�ra)r(r,�subnrQrrr�test_re_subnszReTests.test_re_subncCsFdtd�fD]`}|�t�d|�dddddg�|�t�d|�ddddg�|�t�d|�dddddd	dg�qd
td
�td
�td
�fD]`}|�t�d|�dd
dddg�|�t�d|�dd
ddg�|�t�d|�ddd
ddddg�q�dD]t\}}}d|||f}|�t�d|�d||d|g�|�t�d|�d|||g�|�t�d|�dd|d|d	|g�q�|�t�dd�ddddg�|�t�dd�dddddddg�|�t�dd�dddddg�|�t�dd�dddddddddddd	dg
�|�t�dd�dddddg�dddddddddgfdddddddddgfddddddddddd	dddddgfddddddddddddddddgffD]6\}}|j|d��|�t�|d�|�W5QRX�q�ddddddddddg	fd ddddd	ddgfd!dd"d#dd$gfd%dd&d'ddgffD]6\}}|j|d��|�t�|d�|�W5QRX�q
dS)(N�:a:b::c�:r�rWr@r|�:+�(:+)�::s:a:b::c�:rhr;�b�c�:+�(:+)�::)uàßçuабвu𝒜𝒞𝒵z
:%s:%s::%sz(?::+)z(:)+z([b:]+)z:b::z(b)|(:+)z(?:b)|(?::+)z:*z(?::*)�(:*)z(:)*)�sep�\bz(?=:)z:az:bz:cz(?<=:)�a:zb:)	r	r)r,�splitrr<ryr(r/)rr8rWr@r|r��expectedrrr�
test_re_split%sx�
����
��������$$�"�zReTests.test_re_splitcCs�|�t�ddd�dddg�|�tjdddd�dddg�|�tjdddd�dd	d
g�|�tjdddd�dddddg�|�tjdddd�dddddg�|�tjd
ddd�dddddg�dS)Nr�r�r�r�rWzb::c)�maxsplitza:b:c:dr@zc:dz(:)r�r�za:b::c)r(r,r�rQrrr�test_qualified_re_splitZs���zReTests.test_qualified_re_splitcCsv|�t�dd�g�dtd�fD]R}|�t�d|�dddg�|�t�d|�dddg�|�t�d|�d	d
dg�q dtd�td�td�fD]R}|�t�d
|�dddg�|�t�d|�dddg�|�t�d|�dddg�q�dD]�}|d}|d}d|||f}|�t�d||�|||g�|�t�d||�|||g�|�t�d||f|�|df||f||fg�q�dS)Nr��abc�
a:b::c:::dr�r��:::r�z(:)(:*))r�r�)r�r�)r�r�s
a:b::c:::dr�r�r�s:::r�s(:)(:*))r�rh)r�r�)r�r�r[r�rIz
a%sb%sc%sdz%s+z(%s+)z	(%s)(%s*)r�)r(r,rCr	r)rr<ry)rr8r#rjrJrrr�test_re_findalles@��������zReTests.test_re_findallcCs|�t�dd�dddg�dS)Nz(a|(b))�aba�rWr�)r@r@)r(r,rCrQrrr�test_bug_117612s�zReTests.test_bug_117612cCs�dtd�fD]�}|�t�d|���d�|�t�d|���d�|�t�d|��d�d�|�t�d|��d�d�|�t�d|��dd�d�qdtd�td�td�fD]�}|�t�d|���d�|�t�d	|���d
�|�t�d	|��d�d�|�t�d	|��d�d�|�t�d	|��dd�d�q�dD]�}|�t�||���d�|�t�d
||���|f�|�t�d
||��d�|�|�t�d
||��d�|�|�t�d
||��dd�||f��q4t�	d�}|�|�d���d�|�|�d���d�|�|�d���d�|�|�d���d�|�|�d��d�d�t�	d�}|�|�d��ddd�d�|�|�d��ddd�d�|�|�d��ddd�d �dS)!NrWr�(a))rWrrH�rWrWr;s(a))r;)r;r;r[z(%s)z
((a)|(b))(c)?)rWrWNNr@)r@Nr@N�ac)rWrWNr|�bc)r@Nr@r|r�)r@r�r@r|�!(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?r�rI�rWNN�a1�b2�c3)Nr@N)rWNr|)
r	r(r,rP�groupsrTrr<ryr.)rr8rWr�rrr�
test_re_match�s<(

�zReTests.test_re_matchcCs�Gdd�d�}t�dd�}|�|��d�|�|�d�d�|�|�d�d�|�|�|d��d�|�t|jd�|�t|jd	�|�t|jdd
>�|�t|j|dd
>��|�t|jd�|�|�dd�d
�|�|�|d�|d��d
�dS)Nc@seZdZdd�Zdd�ZdS)z!ReTests.test_group.<locals>.IndexcSs
||_dSr
��value)rr�rrr�__init__�sz*ReTests.test_group.<locals>.Index.__init__cSs|jSr
r�rQrrr�	__index__�sz+ReTests.test_group.<locals>.Index.__index__N)rrrr�r�rrrr�Index�sr�z(a)(b)�abrrHrW���rI��r#r��r@rW)r,rPr(rTr+r�)rr�rfrrr�
test_group�szReTests.test_groupc	Cs4t�d�}|�d�}|�|dd�|�|dd�|�|dd�|�d�|�d�|�|dd�|�|d	d�|�|d
d�|�|dd�|�td��|d
W5QRX|�td��|dW5QRX|�td��|dW5QRX|�td��|dW5QRX|�td��|dW5QRX|�td��|dW5QRX|�td��d�|�W5QRX|�d�}|�|dd�|�|dd�|�|dd�|�d�|�d�|�|dd�|�|d	d�|�|d
d�|�|dd�|�t��d	|d<W5QRX|�tt	|�dS)Nr�rWr�r�r�za1={a1} b2={b2} c3={c3}za1=a b2=None c3=NonerrHr�rIz
no such grouprwr�r��rrH�rza1={a2}r�r|za1=a b2=None c3=c)
r,r.rPr(�
format_mapr�r�r+�	TypeError�len)rr�rfrrr�test_match_getitem�sH


zReTests.test_match_getitemcCs$|�t�dd���d�dtd�fD]}|�t�d|���d�q$dtd�td�td�fD]}|�t�d|���d�qZdD]4\}}d	|||f}|�t�|||���d�q||�t�d
d���d�|�t�d
d���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�	d�jdddd���d�|�t�	d
�jdddd���d�|�t�	d
�jdddd���d�dS) NrWr�r�za|ab�rr�sabsa|ab)uàßuабu𝒜𝒞z%s|%sz.*?$r�rKz.*?za.*?b�abbZaxxb�rr�rLzabc$zabc
zabc\Zz(?m)abc$z	ab(?=c)cd�abcdz
ab(?<=b)cdz
(?=a|ab)abr�rHrI�r1�endposrG)
r(r,�	fullmatchrNr	rr<ryrOr.)rr8rWr@�rrrr�test_re_fullmatch�s@���zReTests.test_re_fullmatchcCsr|�t�dd���d�|�t�dd���d�|�t�dd��|�t�dd��|�t�dd	���d
�|�t�dd���d�|�t�d
d���d�|�t�d
d���d�t�d�}|�|�d���d�|�|�d���d�|�|�d��|�|�d��d�dd�tdd�D��}d|}|�t�|d���d�|�	ddd �|�	d!d"d#�|�	d$d%d �dS)&Nz^(\()?([^()]+)(?(1)\))$r�)�(rWrW�NrWza)z(az^(?:(a)|c)((?(1)b|d))$r��rWr@�cd)N�dz^(?:(a)|c)((?(1)|d))$r�z(?P<g1>a)(?P<g2>b)?((?(g2)c|d))r�)rWr@r|Zad)rWNr�Zabdr�r�css|]}d||fVqdSr�rr�rrrr�sz2ReTests.test_re_groupref_exists.<locals>.<genexpr>rHr�z(?:%s)(?(200)z)r�r�z
(?P<a>)(?(0))zbad group numberrqz
()(?(1)a|b�"missing ), unterminated subpatternr�z
()(?(1)a|b|c)z/conditional backref with more than two branches)
r(r,rPr�rOr.r�r�rNr5)r�pr�rrr�test_re_groupref_existssR������
����zReTests.test_re_groupref_existscCs@ddlm}|�dd|dd|d�|�d|d|d	�dS)
Nr)�	MAXGROUPSz()z\g<%s>rjzinvalid group reference %drIz(?P<a>)(?(%d))rq)�
sre_constantsr�r9r5)rr�rrr�test_re_groupref_overflow(s�
�z!ReTests.test_re_groupref_overflowcCs�|�t�dd���d�|�t�dd���d�|�t�dd��|�t�dd��|�t�d	d
���d�|�t�dd
���d�|�ddd�dS)Nz^(\|)?([^()]+)\1$z|a|)r�rWz^(\|)?([^()]+)\1?$rWr�za|z|az^(?:(a)|c)(\1)$Zaar�z^(?:(a)|c)(\1)?$r|�NNz(abc\1)r�r�)r(r,rPr�rOr5rQrrr�test_re_groupref/s����zReTests.test_re_grouprefcCs"|�t�dd���ddd��dS)N�#(?P<first>first) (?P<second>second)�first second�first�second)r�r�)r(r,rP�	groupdictrQrrr�test_groupdict=s

��zReTests.test_groupdictcCs8|�t�dd��d�d�|�t�dd��d�d�dS)	Nr�r�z\2 \1 \g<second> \g<first>zsecond first second firstz#(?P<first>first)|(?P<second>second)r�z
\2 \g<second>� )r(r,rP�expandrQrrr�test_expandBs
���
���zReTests.test_expandcCs8|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��d�d�|�t�d	d��d�d�|�t�d
d��d�d�|�t�dd��d�d�|�t�dd��d�d�|�t�d
d��d�d�|�t�dd��d�d�|�t�dd��d�d�|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�ddd �dS)!Nz	^(\w){1}$r�z
^(\w){1}?$z^(\w){1,2}$z^(\w){1,2}?$z	^(\w){3}$rHr|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}$rJz^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{}$zx{}zx{2,1}z"min repeat greater than max repeatr�)rOr,rPr(rT�
assertTruer5rQrrr�test_repeat_minmaxLs>�zReTests.test_repeat_minmaxc	CsF|�t�d�jd�|�t�d�jtjtjB�|�t�d�jd�|�t�d�ji�|�t�d�jddd��|�t�	dd�j
d�|�t�	dd�jd�|�t�	dd�jd�|�t�	dd�j
d	�|�t�	dd�j�t�d�}|�t|j�d
dg�|�|jdd�|�t��d|jd<W5QRX|�|jdd�dS)Nz
(?i)(a)(b)r�z(?i)(?P<first>a)(?P<other>b)rH)r��otherr�rWr)r�r�r�r)r(r,r.r*�flagsr��Ur��
groupindexrPr1r�r8�regsr�sortedr+r�)rr�rrr�test_getattrps$�
zReTests.test_getattrcCs�|�t�dd��d�d�|�t�dd��d�d�|�t�ddtj��d�d�|�t�ddtj��d�d�|�t�ddtj��d	�d
�|�t�dd
tj��d	�d
�|�t�ddtj��|�t�dd
��d�d�|�t�dd��d�d�|�t�dd
tj��d�d�|�t�ddtj��d�d�|�t�ddtj��d	�d�|�t�ddtj��d	�d�|�t�ddtj��|�t�dd��d	�d�|�t�dd��d	�d�|�t�ddtj��d	�d�|�t�ddtj��d	�d�dS)Nz\b(b.)\bzabcd abc bcd bxrHZbxz\B(b.)\Bzabc bcd bc abxdz^abc$z
abc
rr�z	^\Aabc\Z$s\b(b.)\bsabcd abc bcd bxsbxs\B(b.)\Bsabc bcd bc abxds^abc$s
abc
�abcs	^\Aabc\Z$z\d\D\w\W\s\Sz1aa! as\d\D\w\W\s\Ss1aa! a)r(r,rMrT�ASCII�MrO�LOCALErQrrr�test_special_escapes�s�
���
���
���
���
���
���
���
���
���
���
���
���zReTests.test_special_escapesc
CsH|�ddd�|�t�dd���d�|�t�dd��|�t�dd���d�|�t�dd	���d	�|�t�dd
��|�t�dd���d�|�t�dd
��|�t�dd���d�|�t�dd
��t��dD]0}|�|��|�tj	tj
d|�W5QRXq�dD]2}|�|��|�tj	tj
d|�W5QRX�qdS)Nrkzbad escape (end of pattern)rz\(r��)rlz[\]]�]�[z[a\-c]�-r@z[\^a]+za^Z!ceghijklmopqyzCEFGHIJKLMNOPQRTVXYz\%cZ$ceghijklmopqyzABCEFGHIJKLMNOPQRTVXYZz[\%c])r5r(r,rPrTrO�purger/r+r-r.)rr|rrr�test_other_escapes�s""zReTests.test_other_escapescCsT|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�d	d
��|�t�d	d��|�dd
d�|�dd
d�|�ddd�|�ddd�|�ddd�|�ddd�|�dd
d�|�dd
d�|�ddd�|�ddd�|�ddd�|�dd d!�|�d"d d�|�d#d$d!�|�d%d$d�dS)&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 {r�z[\N]rIz\N{zmissing character namez[\N{r�z\N{}z[\N{}]z\NSNAKE}z
[\NSNAKE}]z\N{SNAKEzmissing }, unterminated namez
[\N{SNAKE]z[\N{SNAKE]}z!undefined character name 'SNAKE]'rHz\N{SPAM}zundefined character name 'SPAM'rz
[\N{SPAM}]s\N{LESS-THAN SIGN}z
bad escape \Ns[\N{LESS-THAN SIGN}])rr,rPrOr5rQrrr�test_named_unicode_escapes�sV
�
�
������z"ReTests.test_named_unicode_escapescCs�|�t�dd��d�d�|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�tt�	dd��d�|�tt�	dd��d	�|�tt�	dd
��d	�|�tt�	dd��d	�|�tt�	dd
��d�dS)Nz	\b(abc)\br�rHr��\Br�rWr�rrz   )
r(r,rMrTrrP�assertFalserOr�rCrQrrr�test_string_boundaries�s�zReTests.test_string_boundariesc	CsR|�t�dd��d�d�dd�tttddd���}|�t�|d	���d	�dS)
Nu
([∢∣])u∢rHz[%s]r����u!)r(r,rPrTr��mapr{r��rr�rrr�test_bigcharset�s
���zReTests.test_bigcharsetcCsBt�d�dd�td�D���}|�|�d��|�|�d��dS)Nr�css|]}d|VqdS)z%dNr)r�r#rrrr��sz,ReTests.test_big_codesize.<locals>.<genexpr>�'Z1000Z9999)r,r.r�r�rrPr#rrr�test_big_codesize�szReTests.test_big_codesizecCs@|�t�ddtj��d�d�|�t�ddtj��d�d�dS)Nza.bza
brza.*bza

b)r(r,rP�DOTALLrTrQrrr�test_anyalls��zReTests.test_anyallcCs�|�t�dd��d�d�|�t�dd��d�d�|�t�dd��d�d�|�t�dd��d�d�|�t�d	d
��d�d�|�t�dd��d�d�|�t�d
d
��d�d�|�t�dd
��d�d�|�t�dd��d�d�|�t�dd��d�d�|�t�dd��d�d�|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��dS)Nz
(a(?=\s[^a]))�a brHrWz(a(?=\s[^a]*))z(a(?=\s[abc]))z(a(?=\s[abc]*))za bcz(a)(?=\s\1)�a az(a)(?=\s\1*)�a aaz(a)(?=\s(abc|a))z
(a(?!\s[^a]))z(a(?!\s[abc]))za dz(a)(?!\s\1)z(a)(?!\s(abc|a))z(a)b(?=\1)ar�z(a)b(?=\1)cZabacz(?:(a)|(x))b(?=(?(2)x|c))cr�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))r(r,rPrTrrOrQrrr�test_lookahead	s*zReTests.test_lookaheadcCsl|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd	��|�t�d
d��|�t�dd	��|�t�dd��|�t�d
d��|�t�dd��|�t�dd��|�t�dd��|�tjtjd�|�t�dd��|�t�dd��|�tjtjd�|�tjtjd�|�tjtjd�|�tjtjd�dS)Nz	ab(?<=b)cr�z	ab(?<=c)cz	ab(?<!b)cz	ab(?<!c)cz(a)a(?<=\1)cZaacz(a)b(?<=\1)aZabaaz(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))rr,rPrOr+r-r.rQrrr�test_lookbehind%s(zReTests.test_lookbehindcCs|�t�ddtj��d�d�|�t�ddtj��d�d�|�t�ddtj��d�d�|�t�d	d
tj��d�d
�|�t�ddtj��d�d�|�t�dd
tj��d�d
�|�t�d
dtj��d�d�|�t�ddtj��d�d�|�t�ddtj��d�d�|�t�ddtj��d�d�|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��dS)Nr��ABCrrsABCz	(a\s[^a])r)rHz
(a\s[^a]*)za 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�K�kz\u212ar	�ſrDz\u017fz\ufb05�stz\ufb06�ſt)r(r,rPr�rTrrQrrr�test_ignore_case?s(zReTests.test_ignore_casecCs�|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�d	d
tj��|�t�dd
tj��|�t�dd
tj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��dS)Nz[19A]r�z[19a]rWs[19A]�As[19a]r;z[19K]r0z[19k]z
[19\u212a]r/r1z[19S]r2z[19s]z
[19\u017f]r	rDz
[19\ufb05]r3z
[19\ufb06]r4)rr,rPr�rQrrr�test_ignore_case_setYs$zReTests.test_ignore_case_setcCs@|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�dd	tj��|�t�d
d	tj��|�t�d
dtj��|�t�ddtj��|�t�dd
tj��|�t�ddtj��|�t�dd
tj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�dd tj��|�t�d!d"tj��dS)#Nz[9-a]�_z[9-A]s[9-a]�_s[9-A]z[\xc0-\xde]�×�÷z[\xe0-\xfe]z[\u0430-\u045f]uѐuЀz[\u0400-\u042f]z[\U00010428-\U0001044f]u𐐨u𐐀z[\U00010400-\U00010427]z[J-M]r0z[j-m]z[\u2129-\u212b]r/r1z[R-T]r2z[r-t]z[\u017e-\u0180]r	rDz[\ufb04-\ufb05]r3z[\ufb06-\ufb07]r4)rr,rPr�rOrQrrr�test_ignore_case_rangeps4zReTests.test_ignore_case_rangecCs|�t�dd��d�d�dS)Nz(\s)rrH�r(r,rPrTrQrrr�
test_category�szReTests.test_categorycCspddl}td�D]j}t|�}t|���}|�|�|�|�|�|�|�|�|tj	k}|�|�
|�|�|�|�|�|�qttdd��ddgD]�}t|�}|�|�|�|�|dkr�|�|�|�t|����||��kp�||�
�k}|�|�
|��|�|�|�||��k�p||�
�k�q�|�|�d�d�|�|�d�td��|�|�
d��|�|�d��dS)Nr�iii(i0r�)�_srer�r{�ord�lowerr(�
ascii_tolower�unicode_tolowerr8�
ascii_letters�
ascii_iscased�unicode_iscasedr�upperrr)rr@r�r|�lo�iscasedrrr�test_case_helpers�s.
�zReTests.test_case_helperscCs8|�t�dd��d�d�|�t�dd��d�d�dS)Nz\s([^a])� brHr@z	\s([^a]*)z bbZbb�r(r,rMrTrQrrr�test_not_literal�szReTests.test_not_literalc	Cs�ttd����}|�t��t�d�}W5QRX|�|�|�t	d��|�t�d|�t	d��|�t��t�d�}W5QRX|�|�|�t	d��|�t��t�d�}W5QRX|�|�|�t	d	��|�t��t�d
�}W5QRX|�|�|�t	d��|�t��t�d�}W5QRX|�|�|�t	d��|�t�d
|�t	d��|�t��t�d�}W5QRX|�|�|�t	d��|�t��t�d�}W5QRX|�|�|�t	d��|�t�d|�t	d��|�t��t�d�}W5QRX|�|�|�t	d��|�t��t�d�}W5QRX|�|�|�t	d��|�t�d|�t	d��|�t��t�d�}W5QRX|�|�|�t	d��|�t��t�d�}W5QRX|�|�|�t	d��dS)Nr?z[0-9--1]z
-./0123456789z[--1]z-./01z[%--1]z
%&'()*+,-1z[%--]z	%&'()*+,-z[0-9&&1]z&0123456789z[\d&&1]z[&&1]z&1z[0-9||a]z0123456789a|z[\d||a]z[||1]z1|z[0-9~~1]z0123456789~z[\d~~1]z[~~1]z1~z[[0-9]|]z0123456789[]z[[:digit:]|]z:[]dgit)
�bytesr��decode�assertWarns�
FutureWarningr,r.r(rCr�rrDr�rrr�test_possible_set_operations�sLz$ReTests.test_possible_set_operationscCs8|�t�dd��d�d�|�t�dd��d�d�dS)Nz\s(b)rLrHr@za\sza rrMrQrrr�test_search_coverage�szReTests.test_search_coveragecCsr|dkr"|dkr"|}dt|�f}n|dks2|dkr:td��|||�}|�|�|�|��|�|�|��|�dS)Nrz@If match is not None, span should be specified (and vice versa).)r�r�rr(rTrN)rr*�textrPrNZmatcherrfrrr�assertMatch�s

zReTests.assertMatchz!"%',/:;<=>@_`cCs�d�dd�td�D��}|D]F}|�t�|�|�|�dt�|�d|�|�dt�|�|�q|�t�|�|�dD]}|�t�|�dd	�d
�qz|j}|�t�|�|�dS)Nr�css|]}t|�VqdSr
)r{r�rrrr��sz)ReTests.test_re_escape.<locals>.<genexpr>rrrz(?x)z-.]{}rHrk)r�r�rWr,�escaper(�
LITERAL_CHARS)rr�r|�
literal_charsrrr�test_re_escape�szReTests.test_re_escapecCs�ttd��}|D]P}t|g�}|�t�|�|�|�dt�|�d|�|�dt�|�|�q|�t�|�|�dD](}t|g�}|�t�|�dd�d�qx|j�d�}|�t�|�|�dS)	Nr�[�]s(?x)s-.]{}rH�\�ascii)rOr�rWr,rXr(rY�encode)rr�r�r@rZrrr�test_re_escape_bytess

zReTests.test_re_escape_bytescCsHd}t�|�}|�||�|�||�|�dt�d�|ddtj�dS)Nuxxx☠☠☠xxxz.%s+.�☠ux☠☠☠x)r�ru)r,rXr(rWrM)rrDZ	s_escapedrrr�test_re_escape_non_asciis
�z ReTests.test_re_escape_non_asciicCsXd�d�}t�|�}|�||�|�||�t�t�d�d��|�}|�t|�d�dS)Nu	y☠y☠yzutf-8rbr�)r`r,rXr(rWrCr�)rr@Z	b_escaped�resrrr�test_re_escape_non_ascii_bytess

z&ReTests.test_re_escape_non_ascii_bytescCs\ddl}t�dtj�}t|jd�D]&}|�||�}|�|�}|�||�q$ddlm	}dS)Nrza(?:b|(c|e){1,2}?|d)+?(.)rH)�_compile)
�pickler,r.�UNICODEr��HIGHEST_PROTOCOL�dumps�loadsr(rf)rrgZoldpat�protoZpickledZnewpatrfrrr�
test_picklings
zReTests.test_picklingcCshddl}t�d�}|�|�|�|�|�|�|�|�|�d�}|�|�|�|�|�|�|�|�dS)Nrz (?P<int>\d+)(?:\.(?P<frac>\d*))?z12.34)�copyr,r.r�deepcopyrP)rrnr�rfrrr�test_copying(s

zReTests.test_copyingcCsT|�tjtj�|�tjtj�|�tjtj�|�tjtj	�|�tj
tj�dSr
)r(r,r��
IGNORECASE�Lrr�	MULTILINEr	r'rw�VERBOSErQrrr�test_constants1s
zReTests.test_constantscCsltjtjtjtjtjtjfD]}|�t�d|��qtjtjtjtjtjtj	fD]}|�t�d|��qPdS)Nz	^pattern$s	^pattern$)
r,r�rrwr	r�rrr.rr)r�flagrrr�
test_flags8s  zReTests.test_flagscCs@dD�]n}|dkr�|�t�d|t|���|�t�d|t|�d��|�t�d|t|�d��|�t�d|t|���|�t�d	|t|�d��|�t�d
|t|�d��|dk�r|�t�d
|t|���|�t�d|t|�d��|�t�d|t|�d��|�t�d|t|���|�t�d|t|�d��|�t�d|t|�d��q|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�ddd�|�ddd �|�d!d"d�|�d#d"d�|�d$d%d�|�d&d%d�|�d'd(d�|�d)d(d�|�d*d+d�dS),N�rrv�� �@�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\018z8z\567�0octal escape value \567 outside of range 0-0o377rz\911�invalid group reference 91rHz\x1�incomplete escape \x1z\x1zz\u123�incomplete escape \u123z\u123zz	\U0001234�incomplete escape \U0001234z
\U0001234zz
\U00110000�bad escape \U00110000�rr,rPr{r5�rr�rrr�test_sre_character_literals>s>

 �z#ReTests.test_sre_character_literalscCs�dD�]�}|dkr�|�t�d|t|���|�t�d|t|���|�t�d|t|���|�t�d|t|���|�t�d|t|���|�t�d|t|���|�t�d	|t|���|�t�d
|t|���|dk�r:|�t�d|t|���|�t�d
|t|���|�t�d|t|���|�t�d|t|���|�t�d|t|�d��|�t�d|t|�d��q|�ddd�|�ddd�|�ddd�|�ddd�|�ddd�|�dd d�|�t�d!d"��dS)#Nrxr�[\%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�rHz[\911]�
bad escape \9z[\x1z]r�z[\u123z]r�z[\U0001234z]r�z[\U00110000]r�z[\U0001d49c-\U0001d4b5]u𝒞r�r�rrr�!test_sre_character_class_literals^s6

 �z)ReTests.test_sre_character_class_literalscCs�dD]�}|�t�d|��t|g���|�t�d|��t|g�d��|�t�d|��t|g�d��|�t�d|��t|g���|�t�d|��t|g�d��|�t�d	|��t|g�d
��q|�tjtjd�|�tjtjd�|�t�d
d��|�t�dd��|�t�dd��|�t�dd��|�ddd�|�ddd�|�ddd�|�ddd�dS)N�rrvryrzr{r|r?r!r~r�0r��8r�r�r��zs\u1234s
\U00012345s\0�s\08s8s\01�s\018s8s\567r�rs\911r�rHs\x1r�s\x1z�	rr,rPr`rOr+r-r.r5r�rrr�test_sre_byte_literalszs( $$ $&�zReTests.test_sre_byte_literalscCs^dD�]}|�t�d|��t|g���|�t�d|��t|g���|�t�d|��t|g���|�t�d|��t|g���|�t�d|��t|g���|�t�d|��t|g���|�t�d|��t|g���|�t�d	|��t|g���q|�tjtjd
�|�tjtjd�|�dd
d�|�ddd�|�ddd�dS)Nr�r�r�r�r�r�r�r�r�s[\u1234]s[\U00012345]s[\567]r�rHs[\911]r�s[\x1z]r�r�r�rrr�test_sre_byte_class_literals�s"
       "�z$ReTests.test_sre_byte_class_literalscCsf|�ddd�|�ddd�|�ddd�|�ddd�|�ddd	�|�d
dd	�|�dd
d	�dS)Nrzunterminated character setrz[^z[az[a-z[\w-b]zbad character range \w-brHz[a-\w]zbad character range a-\wz[b-a]zbad character range b-a�r5rQrrr�test_character_set_errors�sz!ReTests.test_character_set_errorscCsR|�t�dd��d�d�|�t�dd��d�d�|�t�dd��d�d�dS)Nz(a)|(b)r@rHr�)r�r�)r(r,rP�start�endrNrQrrr�test_bug_113254�szReTests.test_bug_113254cCsp|�t�dd�j�|�t�dd�jd�|�t�dd�jd�|�t�dd�jd�|�t�dd�jd�dS)	Nz(a)?arWz(a)(b)?br�rHz(?P<a>a)(?P<b>b)?bz(?P<a>a(b))z((a)))rOr,rP�	lastindexr(�	lastgrouprQrrr�test_bug_527371�s
zReTests.test_bug_527371cCs�|�t�dddd��d�d�|�t�dddd	ddd
��d�d�|�t�ddd
d��d�d�|�t�dddd��d�d�dS)Nz.*?cr%r�r�ri!Nz.*?cdi�r|Zcdei#Ni Nr��deia�z(a|b)*?c)r(r,rPr�rMrQrrr�test_bug_418626�s"(�"zReTests.test_bug_418626cCs,dt�d�d}|�t�|�o"dd�dS)Nru‹rrH)r,rXr(r.r�rrr�test_bug_612074�szReTests.test_bug_612074cCsf|�t�ddd��d�d�|�t�dddd��d�d�|�t�dddd��d�d�dS)Nz(x)*iP�r#rHz(x)*yr$z(x)*?yr=rQrrr�test_stack_overflow�s"zReTests.test_stack_overflowcCsDdD]:}dD]0}|�d||fdd�|�d||fdd�qqdS)N��*�+�?�{1,2}�r�r�z%s%sznothing to repeatrz(?:%s%s)rIr�)r�reps�modrrr�test_nothing_to_repeat�s��zReTests.test_nothing_to_repeatcCsZdD]P}dD]F}||}dD]4}dD]*}||}|�d||fddt|��q$qqqdS)N)r�r�r�r�r�zx%s%szmultiple repeatrH)r5r�)rZ
outer_repsZ	outer_mod�outer_opZ
inner_repsZ	inner_mod�inner_oprrr�test_multiple_repeat�s
�zReTests.test_multiple_repeatcCsp|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��dS)Nz(?:a?)*yr�z(?:a?)+yz(?:a?){2,}yz	(?:a?)*?yz	(?:a?)+?yz(?:a?){2,}?y)rOr,rPrQrrr� test_unlimited_zero_width_repeat�sz(ReTests.test_unlimited_zero_width_repeatcCs�dd�}dd�}dd�}dd�}td	|fd
|fd|fd|fd
g�}|�|j�d�j�|�|�d�dddddddddg	df�dS)NcSs|Sr
r��scanner�tokenrrr�s_ident�rhz%ReTests.test_scanner.<locals>.s_identcSsd|S)Nzop%srr�rrr�
s_operator�rhz(ReTests.test_scanner.<locals>.s_operatorcSst|�Sr
)�floatr�rrr�s_float�rhz%ReTests.test_scanner.<locals>.s_floatcSst|�Sr
)rSr�rrr�s_int�rhz#ReTests.test_scanner.<locals>.s_intz[a-zA-Z_]\w*z\d+\.\d*r`z=|\+|-|\*|/)z\s+Nr�zsum = 3*foo + 312.50 + bar�sumzop=rIzop*�foozop+g�s@Zbar)rrr�r*r(�scan)rr�r�r�r�r�rrr�test_scanner�s(����zReTests.test_scannercCsFdD]<}|�t�d|d���d�|�t�d|d���d�qdS)N)r�r�r�z
((.%s):)?zr�r�za:z)r�rW�r(r,rPr�)r�oprrr�test_bug_448951�s��zReTests.test_bug_448951cCs�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�d	d���d�|�t�d
d���d�|�t�dd���d�|�t�d
d���d�dS)Nz	^((a)|b)*r�r�z^(([ab])|c)*)r|r@z^((d)|[ab])*�r@Nz
^((a)c|[ab])*z^((a)|b)*?cz^(([ab])|c)*?dr�z^((d)|[ab])*?cz^((a)c|[ab])*?cr�rQrrr�test_bug_725106s0��������zReTests.test_bug_725106cCs4|�t�dd���d�|�t�dd���d�dS)Nz(a)(?:(?=(b)*)c)*r�)rWNz(a)((?!(b)*))*r�r�rQrrr�test_bug_725149s��zReTests.test_bug_725149cCs2Gdd�dt�}t�|d��}|�|�d��dS)Nc@seZdZdS)z+ReTests.test_bug_764548.<locals>.my_unicodeN)rrrrrrr�
my_unicode$sr�r�rX)rUr,r.rOrP)rr�r�rrr�test_bug_764548"szReTests.test_bug_764548cCst�dd�}|�dd�|D�dddg�t�d�}|�ddd	�}|�d
d�|D�dddg�t�d�}|jddd	d�}|�dd�|D�dddg�t�d�}|jdd	dd
�}|�dd�|D�dddg�t�d�}|jdddd�}|�dd�|D�ddg�dS)Nr�r�cSsg|]}|�d��qSr��rT�r��itemrrr�
<listcomp>*sz)ReTests.test_finditer.<locals>.<listcomp>r�r�r�rHrqcSsg|]}|�d��qSr�r�r�rrrr�/sr�cSsg|]}|�d��qSr�r�r�rrrr�4s)r�r1cSsg|]}|�d��qSr�r�r�rrrr�9srIrvcSsg|]}|�d��qSr�r�r�rrrr�>s)r,r=r(r.)r�iterr�rrr�
test_finditer(s0�
�
�
�
�zReTests.test_finditercCs|�t�d�t�d��dS)NZ
bug_926075s
bug_926075)ZassertIsNotr,r.rQrrr�test_bug_926075As�zReTests.test_bug_926075cCs&d}|�t�|��d�dddg�dS)Nu[.。.。]za.b.crWr@r|)r(r,r.r�r�rrr�test_bug_931848Es�zReTests.test_bug_931848cCsdt�dd�}|�t|���d�|�tt|�t�d��d�}|�|�	���d�|�
|�	��dS)Nz\sr))rHr�)r,r=r(�nextrNr+�
StopIterationr.r�rMrO)rr�r�rrr�test_bug_581080JszReTests.test_bug_581080cCsFt�dd�}|�t|���d�|�t|���d�|�tt|�dS)Nz.*Zasdfr�)r�r�)r,r=r(r�rNr+r�)rr�rrr�test_bug_817234SszReTests.test_bug_817234cCsZdddg}|D]}|�t�d|��d�|�qdddd	g}|D]}|�t�d|��q>dS)
N�7u๘u0z^\d$ruⅥu〹u₂u㊴)r(r,rPrTrO)rZdecimal_digitsr#Znot_decimal_digitsrrr�
test_bug_6561Ys��zReTests.test_bug_6561cCsRddl}dD]@}|�|�}|�t�d��|��|�t�d��|���d�qdS)NrZbBuhHiIlLfdsblarhr)�arrayrOr,r.rPr(r�)rr��typecoderWrrr�test_empty_arrayns

zReTests.test_empty_arrayc
Csd}d}t�d|tjtjB�}|�d|�}|�|�t�d|tjtjB�}|�d|�}|�|�t�d|tj�}|�d|�}|�|�t�d|tj�}|�d|�}|�|�t�d|�}|�d|�}|�|�t�d|�}|�d|�}|�|�t�d|�}|�d|�}|�|�t�d|�}|�d|�}|�|�|�t�d||��|�t�d||��|�t�d	||tj��|�t�d
||��|�t�d||tj��|d}|�t��}|�t�||��W5QRX|�	t
|jd
j�d|�|�	|jd
j
t�|dd}|�t��}|�t�||��W5QRX|�	t
|jd
j�d|dd��|�	|jd
j
t�t���nt�dt�d}|�t��}|�t�|d��W5QRX|�	t
|jd
j�d|�|�	|jd
j
t�W5QRX|�t�� |�t�d|d|��W5QRX|�t�� |�t�d|d|��W5QRX|�t��|�t�d||��W5QRX|�t��|�t�d||��W5QRX|�t��|�t�d||��W5QRX|�t�� }|�t�d|d|��W5QRX|�t
|jd
j�d�|�	|jd
j
t�|�t�� }|�t�d|d|��W5QRX|�t
|jd
j�d�|�	|jd
j
t�|�t�� }|�t�d|d|��W5QRX|�t
|jd
j�d�|�	|jd
j
t�dS) NuẠuạrcriz(?i).z(?is).z	(?s)(?i).z(?ix) z (?i) z
(?x) (?i) z (?x) (?i) z(?i)rz+Flags not at the start of the expression %rz(?i)%sz�.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?z7Flags not at the start of the expression %r (truncated)�r-sA(?i)r;z	(?s).(?i)z(?i) z (?x)z^(?i)z$|(?i)z(?:(?i)rzFlags not at the startz
(^)?(?(1)(?i)z($)?(?(1)|(?i))r,r.r�r	rPrrwrQ�DeprecationWarningr(rU�warnings�message�filename�__file__�catch_warnings�simplefilter�BytesWarning�assertRegexr�)rZ
upper_charZ
lower_charr��qZwarnsrrr�test_inline_flagsvs�







��
�$$   $�����zReTests.test_inline_flagscCs�t�d�}|�|�dd�d�|�|�dd�d�|�|�dd�d�t�dtj�}|�|�dd�d	�|�|�dd�d
�|�|�dd�d�dS)z>$ matches the end of string, and just before the terminating 
�$�#za
b
za
b#
#za
b
cza
b
c#riz#
#za#
b#
#za#
b#
c#N)r,r.r(r7rsr�rrr�test_dollar_matches_twice�s
z!ReTests.test_dollar_matches_twicecCs�t�d�}t�d�}|�t|jd�|�t|jd�|�t|jdd�|�t|jdd�|�t|jdd�|�t|jdd�|�t|jdd�|�t|jdd�dS)Nrc�.r�r@r|r�)r,r.r+r�rPr7)rr��bpatrrr�test_bytes_str_mixing�s

zReTests.test_bytes_str_mixingcCs�dtjfD]B}t�d|tjB�}|�|�d��t�d|�}|�|�d��q
t�dtjtjB�}|�|�d��t�dtj�}|�|�d��t�dtj�}|�|�d��t�d�}|�|�d��dtjfD]B}t�d|tjB�}|�|�d��t�d	|�}|�|�d��q�|�t	tjd	tj�|�tj
tjd
�|�t	tjdtjtjB�|�t	tjdtj�|�t	tjdtj�|�tj
tjd�dS)
Nr�Àr\z\wu(?a)Àz(?a)\w�����\ws(?u)\wz(?u)\wz(?au)\w)r,rhr.rqrrPr
rOr+r�r-)rrr�rrr�test_ascii_and_unicode_flag�s0
z#ReTests.test_ascii_and_unicode_flagc
Cs�t��}tdd�D]�}zjt|g��|�}|��}||kr<Wq|�|�}t|�dkrVWq|�|�|krhWqt�	t|g��}Wq�Wqt
tfk
r�YqXqd}d}t�|tj
tjB�}|r�|�|�|��t�d|tj�}|r�|�|�|��t�|tj�}|�r|�|�|��t�dtj
�}|�r:|�|�|��t�d�}|�rZ|�|�|��t�d�}|�rz|�|�|��|�ttjdtj
�|�tjtjd	�|�ttjd
tj
tjB�|�ttjdtj�|�ttjdtj
�|�tjtjd�dS)
Nr?rrHr6s(?L)r�s(?L)\wr�z(?L)rhs(?a)s(?aL))�locale�getpreferredencodingr�rOrPrBr`r�r,rX�UnicodeErrorr�r.rrqrrPrOr+r�r-r
)r�encr�r|ZsletterZbletterr�r�rrr�test_locale_flagsT



zReTests.test_locale_flagcCs�|�t�dd��|�t�dd��|�t�ddtj��|�t�ddtj��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�d	d
tj��|�t�d	dtj��|�t�dd
��|�t�dd
��|�t�dd
tj��|�ddd�|�ddd�|�ddd�|�ddd�|�ddd�|�ddd�|�ddd�|�d d!d�|�d"d!d�|�d#d!d�|�d$dd�|�d%d&d'�|�d(d)d�|�d*d)d�|�d+dd�dS),Nz(?i:a)bZAbZaBz(?-i:a)bz
(?i:(?-i:a)b)z	(?x: a) br)z a bz
(?-x: a) bz abr�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'rvz(?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 flagrIz(?-+z(?-z�unknown flagz(?-iz	missing :z(?-i)z(?-i+z(?-izz(?i:r�r�(?i�missing -, : or )z(?i+z(?iz)rr,rPrOrqrtr
r5rQrrr�test_scoped_flags?sP����zReTests.test_scoped_flagscCs�t�d�}|�|�dd�d�t�d�}|�|�dd�d�t�d�}|�|�d	d
�d�d�t�d
�}|�|�dd�d�t�d�}|�|�dd�d�t�d�}|�|�dd
�d�d�dS)Nza(\w)zb\1r�r�za(.)uaሴubሴz..cSsdS)NrUrrerrrrgmrhz'ReTests.test_bug_6509.<locals>.<lambda>Za5rUsa(\w)sb\1sacsbcsa(.)sa�sb�s..cSsdS)N�bytesrrerrrrgurhsa5r)r,r.r(r7r�rrr�
test_bug_6509es





zReTests.test_bug_6509c	Cs|ddl}dd}|�ttjdi�|�t��|�dd|gdid�W5QRX|�t��|�idgdgg�W5QRXdS)Nrr�r?rWr�r)r@r+r�r,r=�
OverflowErrorr.)rr@Z
long_overflowrrr�test_deallocws zReTests.test_dealloccCs^|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�dd��dS)Nz123.*-z123abc-u123é-u123€-u123􏿿-u
123é€􏿿-)rr,rMrQrrr�test_search_dot_unicode�s
zReTests.test_search_dot_unicodecCsPt�d�}|�|tj�t�|�}|�|tj�|�||�|�ttjd�dS)N�random patternr)r,r.�assertIsInstance�Patternrr+r�)rr*Zsame_patternrrr�test_compile�s

zReTests.test_compilerH)�sizeZmemusecCsBd|}t�d|�}|�|�|�|��|�|�|��|�dS)NrWr�)r,rMZassertIsNotNoner(r�r�)rr
rDrfrrr�test_large_search�s

zReTests.test_large_search�cCs:d|}t�dd|�\}}|�||�|�||d�dS)NrWr�rH)r,r�r()rr
rDr��nrrr�test_large_subn�szReTests.test_large_subncCs2|�t�dd�dg�|�t�dd���d�dS)Nz	(?i)(a)\1uaa ĀrWz
(?s).{1,3}uĀĀr�)r(r,rCrPrNrQrrr�test_bug_16688�szReTests.test_bug_16688cCsdd}|�t�d|���d�|�t�d|���d�|�t�d|���d�|�t�d|���d�|�t�d	|���d�|�t�d
|���d�|�ttjddd
�|�ttjddd
�|�ttjddd
�|�ttjddddd
f�dS)Nr#順z.{65535})rr}z	.{,65535}z
.{65535,}?z.{65536})rr z	.{,65536}z
.{65536,}?�.{%d}r�r?�.{,%d}�.{%d,}?z.{%d,%d}�)r(r,rPrNr+rr.)rr8rrr�test_repeat_minmax_overflow�sz#ReTests.test_repeat_minmax_overflowcCs�zddlm}Wntk
r.|�d�YnXdd}|�t�d|d|��|�t�d|d|���d	�|�t�d
|d|��|�	t
tjd|�|�	t
tjd|�|�	t
tjd
|�dS)Nr)�	MAXREPEATz requires _sre.MAXREPEAT constantr#rrrHr)rrr)r@r�ImportError�skipTestrOr,rPr(rNr+rr.)rrr8rrr�%test_repeat_minmax_overflow_maxrepeat�s�z-ReTests.test_repeat_minmax_overflow_maxrepeatcCs|�ddd�dS)Nz
(?P=<foo>)z#bad character in group name '<foo>'r�r�rQrrr�$test_backref_group_name_in_exception�s�z,ReTests.test_backref_group_name_in_exceptioncCs|�ddd�dS)Nz
(?P<?foo>)z"bad character in group name '?foo'r�r�rQrrr�test_group_name_in_exception�s�z$ReTests.test_group_name_in_exceptioncCstdD]j}dD]`}d||d}|jt�|tj��d�dg|d�|��}|jt�|tj��d�dg|d�qqdS)N)r�r�r�z{1}r�rcZyzrX)r&rZ)r(r,r.r	rCr`)rr�r�r*rrr�test_issue17998�s��zReTests.test_issue17998cCsdtd�fD]8}t�d|�}dt|�jt|�jf}|�t|�|�qdtd�t	d�t
d�fD]8}t�d|�}dt|�jt|�jf}|�t|�|�q^tt�dd��\}}d	t|�jt|�jf}|�t|�|�d
t|�jt|�jf}|�t|�|�dS)Nz
[abracadabra]z(.+)(.*?)\1z7<(%s\.)?%s object; span=\(1, 12\), match='abracadabra'>s
[abracadabra]s(.+)(.*?)\1z8<(%s\.)?%s object; span=\(1, 12\), match=b'abracadabra'>z	(aa)|(bb)zaa bbz-<(%s\.)?%s object; span=\(0, 2\), match='aa'>z-<(%s\.)?%s object; span=\(3, 5\), match='bb'>)
r	r,rMr rrr��reprrr<ryrr=)rr8rfr*r�r�rrr�test_match_repr�s8�����zReTests.test_match_reprc	CsL|�t�dd�dddddg�|�t�dd�ddddddg�|�t�dd�ddddg�|�t�d	d�ddddg�|�t�dd
d�d�|�t�dd
d�d�|�t�d
dd�d�|�t�dd�dddddg�|�t�dd�ddddddg�|�dd�t�dd�D�dddddg�|�dd�t�dd�D�ddddddg�dS)Nr�za::bcr�rWr�r�z\b|:+z(?<!\w)(?=\w)|:+z(?<=\w)(?!\w)|:+rz	-a-::-bc-z-a---bc-z(\b|:+)z[\1]z[]a[][::][]bc[]z\b|\w+cSsg|]}|���qSr�rN�r�rfrrrr�
sz*ReTests.test_zerowidth.<locals>.<listcomp>rF)rHrHrG)rIrI)r�r�cSsg|]}|���qSrrr rrrr�sr�)rIr�)r(r,r�r7rCr=rQrrr�test_zerowidth�s" ���zReTests.test_zerowidthcCsjdD]`}dD]V}t�d||f�}|�d�}|�|�d�d�|�|�d�d�|�|�d	�d
�qqdS)N)�{0,}r�r�z{1,187})r"r�r�z^((x|y)%s)%sZxyyzyrZxyyrHr�r�r$)r,r.rPr(rT)rr�r�r�rfrrr�
test_bug_2537s
zReTests.test_bug_2537c	Csrd}t��}t�|tj�W5QRXd|_d}|�|��|�t��}t�|tj�W5QRX|�|��|�dS)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
)rr,r.�DEBUGZmaxDiffr(�getvalue)rr��out�dumprrr�test_debug_flags)zReTests.test_debug_flagcCs�t�d�}|�|jdddd���d�|�|jdddd���d�|�|jdddd���d�|�|jdddd�d	g�|�|jdd
d�dd	d
g�|�|j	dddd�����d�dS)Nz(ab)Zabracadabrarurq)r8r1r�)rurprprIr�rH)r8r�r�Z	racadabra)
r,r.r(rPrNr�rMrCr�r�r�rrr�test_keyword_parametersOs2
������zReTests.test_keyword_parameterscCs |�t�ddtj���d�dS)Nz[a-c]+r.rK)r(r,r�r�rNrQrrr�test_bug_20998aszReTests.test_bug_20998c	Cs�t�tj�}|�tjtj|�dD]<}zt�tj|�Wq"tjk
r\|�d|�Yq"Xq"t��|��|�	�t��|�	�|��dS)N��en_US.iso88591�
en_US.utf8�test needs %s locale)
r��	setlocale�LC_CTYPE�
addCleanup�Errorrr,r�check_en_US_iso88591�check_en_US_utf8)r�	oldlocale�locrrr�test_locale_cachingfszReTests.test_locale_cachingcCs�t�tjd�|�t�ddtjtjB��|�t�ddtjtjB��|�t�ddtjtjB��|�t�dd��|�t�dd��|�t�dd��dS)Nr,��������(?Li)���(?Li)��(?Li)�)r�r/r0rr,rPrrr�rQrrrr3xszReTests.check_en_US_iso88591cCs�t�tjd�|�t�ddtjtjB��|�t�ddtjtjB��|�t�ddtjtjB��|�t�dd��|�t�dd��|�t�dd��dS)Nr-r8r9r:r;r<r=)	r�r/r0rr,rPrrr�rOrQrrrr4�szReTests.check_en_US_utf8c	Cs�t�tj�}|�tjtj|�dD]<}zt�tj|�Wq"tjk
r\|�d|�Yq"Xq"t�tjd�t�dtjtj	B�}t�dtjtj	B�}t�dtjtj	B�}t�dtjtj	B�}|||fD]4}|�
|�d��|�
|�d��|�
|�d	��q�|�|�d
��|�|�d��|�|�d	��t�tjd�|||fD]6}|�
|�d��|�|�d��|�|�d	���qF|�
|�d
��|�|�d��|�|�d	��dS)Nr+r.r,r8s[a�][a�]s
[az�][az�]s[^�][^�]s��s��s��r-)
r�r/r0r1r2rr,r.rrr�rrPrO)rr5r6Zp1Zp2Zp3Zp4r�rrr�test_locale_compiled�s6zReTests.test_locale_compiledc	Cs||�tj��}t�d�W5QRX|j}|�|jt�|�|jd�|�|j	d�|�|j
d�|�|jd�|�|j
t|��|�dt|��|�d|j
�|�tj��}t�d�W5QRX|j}|�|jt�|�|jd�|�|j	d�|�tj��}t�dtj�W5QRX|j}|�|j	d�|�|j
d	�|�|jd
�|�|j
t|��|�dt|��|�dt|��dS)
Nu(€))rIrHr�z at position 3s(�))zq
                (
                    abc
                )
                )
                (
                �Mr��z at position 77z(line 5, column 17))r+r,r-r.r0rr*rUr(r1�lineno�colno�assertInr&ZassertNotInrOrt)rr3r4rrr�
test_error�s8�zReTests.test_errorcCs�|�ddd�|�ddd�|�ddd�|�dd	d
�|�ddd
�|�ddd
�|�ddd
�|�ddd�|�dd	d
�|�ddd
�|�dd	d�dS)Nr�r�rz((a|b)z(a|b))zunbalanced parenthesisr�z(?Pzunexpected end of patternrIz(?z)zunknown extension ?zrHz(?iz)r�r�r�z(?#abczmissing ), unterminated commentz(?<z(?<>)zunknown extension ?<>z(?r�r�rQrrr�test_misc_errors�szReTests.test_misc_errorscCs(|�dttj��|�dttj��dS)Nr
r')rCrUr,r�r	rQrrr�	test_enum�szReTests.test_enumc	Cs�t�dtj�}|�||�|�||k�t��t�dtj�}|�t|�t|��|�||�t��t�dtj�}|�||�t��t�d�}|�||�|�t	��||kW5QRXdS)Nr�ZXYZ)
r,r.rqr(rr�hash�assertNotEqualr+r�)r�pattern1�pattern2�pattern3Zpattern4rrr�test_pattern_compare�s
zReTests.test_pattern_comparec	Cs~t�d�}t��t�d�}|�t|�t|��|�||�t��t�d�}t���t�dt�|�	||�W5QRXdS)Nrr�r-)
r,r.rr(rGr�r�r�r�rH)rrIrJrKrrr�test_pattern_compare_bytes�s



z"ReTests.test_pattern_compare_bytescCsptd�}t�d|�}t�d|�}|�|��d�|�|��d�d|dd�<|�|��d�|�|��d�dS)Nsabcdefghs[a-h]+s[e-h]+sefghrZrh)r<r,rMr(rT)rrDrfZm2rrr�test_bug_29444szReTests.test_bug_29444cCs d}d}|�t�||���d�d}d}|�t�||�ddg�|�dd	�t�||�D�dd
g�d}d}|�t�||�d
dg�|�dd	�t�||�D�ddd�ddd�g�d}|�dd	�t�||�D�ddd�ddd�g�d}|�dd	�t�||�D�ddd�ddd�ddd�g�dS)Nza	xz\b(?=(\t)|(x))x)Nr#r�z(?=(.)(.)?)r�)r@r�cSsg|]}|���qSr)r�r rrrr�&sz*ReTests.test_bug_34294.<locals>.<listcomp>r�z1(?=<(?P<tag>\w+)/?>(?:(?P<text>.+?)</(?P=tag)>)?)z<test><foo2/></test>)rx�<foo2/>)�foo2r�cSsg|]}|���qSr�r�r rrrr�.srxrO)�tagrVrPz<test>Hello</test><foo/>cSsg|]}|���qSrrQr rrrr�2sZHellor�z<test>Hello</test><foo/><foo/>cSsg|]}|���qSrrQr rrrr�6s)r(r,rMr�rCr=rSrrr�test_bug_34294sD���������zReTests.test_bug_34294)N)N)N)�rrrr)r5r9rBrErRrVr}rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrr$r&r(r,r-r5r7r<r>rrKrNrTrUr,r�rWr8rE�digitsrYr[rarcrermrprurwr�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�rrrrr	rrrrrrrrrrrr!r#r(r)r*r7r3r4r>rDrErFrLrMrNrSrrrrrs�


	
	*0&5!,%
$ $!
-�

	 
			f
-&









5		 $

rc@steZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�PatternReprTestscCs|�tt�|��|�dSr
�r(rr,r.)rr*r�rrr�check=szPatternReprTests.checkcCs|�tt�||��|�dSr
rV)rr*rr�rrr�check_flags@szPatternReprTests.check_flagscCs|�dd�dS)Nr�re.compile('random pattern')�rWrQrrr�test_without_flagsCs�z#PatternReprTests.test_without_flagscCs|�dtjd�dS)Nrz+re.compile('random pattern', re.IGNORECASE))rXr,rqrQrrr�test_single_flagGs
�z!PatternReprTests.test_single_flagcCs |�dtjtjBtjBd�dS)Nrz@re.compile('random pattern', re.IGNORECASE|re.DOTALL|re.VERBOSE))rXr,r�r	rwrQrrr�test_multiple_flagsKs�z$PatternReprTests.test_multiple_flagscCs0|�dtjd�|�dtjtjBtjBd�dS)NrrYz5re.compile('random pattern', re.IGNORECASE|re.DOTALL))rXr,rr�r	rQrrr�test_unicode_flagPs
��z"PatternReprTests.test_unicode_flagcCs|�dd�dS)Nz(?i)patternz(re.compile('(?i)pattern', re.IGNORECASE)rZrQrrrr�Ws�z"PatternReprTests.test_inline_flagscCs&|�ddd�|�ddtjBd�dS)Nri0z&re.compile('random pattern', 0x123000)z4re.compile('random pattern', re.IGNORECASE|0x123000))rXr,r�rQrrr�test_unknown_flags[s��z#PatternReprTests.test_unknown_flagscCs |�dd�|�dtjd�dS)N�
bytes patternzre.compile(b'bytes pattern')z&re.compile(b'bytes pattern', re.ASCII))rWrXr,r�rQrrr�
test_bytesas�
�zPatternReprTests.test_bytescCs|�dtjd�dS)Nr`z're.compile(b'bytes pattern', re.LOCALE))rXr,rrrQrrr�test_localegs
�zPatternReprTests.test_localecCs(|�dd�|�dd�|�dd�dS)Nzrandom "double quoted" patternz,re.compile('random "double quoted" pattern')zrandom 'single quoted' patternz,re.compile("random 'single quoted' pattern")z!both 'single' and "double" quotesz1re.compile('both \'single\' and "double" quotes')rZrQrrr�test_quotesks���zPatternReprTests.test_quotescCs�ddd}tt�|��}|�t|�d�|�|dd�d�tt�|tj��}|�t|�d�|�|dd�d�|�|dd�d�dS)	NzVery %spatternzlong r�i,�zre.compile('Very long long loni�z, re.IGNORECASE))rr,r.Z
assertLessr�r(r�)rr*r�rrr�test_long_patternssz"PatternReprTests.test_long_patterncCs�|�ttj�d�|�ttjtjBtjB�d�|�ttjtjBtjBdB�d�|�ttj�d�|�ttjtjBtjB�d�|�ttjtjBtjBdB�d�dS)Nz
re.IGNORECASEz"re.IGNORECASE|re.DOTALL|re.VERBOSEiz+re.IGNORECASE|re.DOTALL|re.VERBOSE|0x100000z~re.IGNORECASEz%~(re.IGNORECASE|re.DOTALL|re.VERBOSE)z.~(re.IGNORECASE|re.DOTALL|re.VERBOSE|0x100000))r(rr,r�r	rwrQrrr�test_flags_repr}s����z PatternReprTests.test_flags_reprN)rrrrWrXr[r\r]r^r�r_rarbrcrerfrrrrrU<s
rUc@seZdZdZdd�ZdS)�ImplementationTestz7
    Test implementation details of the re module.
    cCs�tj}|�|d�g�|�|d�dg�|�|d�ddddg�|�|d�ddddg�|�|d	�ddddddg�|�|d
�ddddddddg�dS)Nr�rWrr�ZaaaarHr�rIZababbaZabcabdac)�sre_compile�_generate_overlap_tabler()r�frrr�test_overlap_table�sz%ImplementationTest.test_overlap_tableN)rrr�__doc__rkrrrrrg�srgc@seZdZdd�Zdd�ZdS)�
ExternalTestscCs�ddlm}|D]�\}}|j||d���t�|�}|�|�|��|�|�|��|�|�|��dd|dd}|�|�|��|�|�|d��|�|�|ddt	|���|�|�|ddt	|���W5QRXqdS)zre_tests benchmarksr)�
benchmarks�r*r8rr%N)
�
test.re_testsrnr/r,r.rrMrPr�r�)rrnr*rDr��s2rrr�test_re_benchmarks�s
z ExternalTests.test_re_benchmarkscCsvddlm}m}m}m}|D�]R}d}}}}	}
t|�dkrR|\}}}}	}
n"t|�dkrj|\}}}n
td|��|j||d����||kr�|�t	j
��t	�|�W5QRXW5QR�qt	�|�}|�|�}||kr�|�
|d�W5QR�q|����|�|d	�|�d�\}
}|�d�|��|j	jd
�}tdd�D]J}z|�|�}|dk�rVd
}Wntk
�rrd}YnX||d|<�q8|j	j��D]F}z|�|�}|dk�r�d
}Wntk
�r�d}YnX|||<�q�|�t|	|�|
d�W5QRXzt|d�}t|d�}Wntk
�r$YntX|�d�� t	�|�}|�|�|��W5QRX|�d��2t	�|t	j�}|�|�}|dk�r�td|�W5QRX|dd�dk�r�|dd�dk�r�|dk	�r�|�d��(t	�|�}|�|�||
|d��W5QRX|�d��$t	�|t	j�}|�|�|��W5QRX|�d��$t	�|t	j�}|�|�|��W5QRXW5QRXqdS)zre_tests test suiter)�tests�SUCCEED�FAIL�SYNTAX_ERRORNr�rIz%Test tuples should have 3 or 5 fieldsrozSucceeded incorrectlyzFailed incorrectly)�foundr�rrH�d�Noner2zg%dzgrouping errorr_zbytes pattern matchzlocale-sensitive matchz#=== Fails on locale-sensitive matchr�r���zrange-limited matchzcase-insensitive matchzunicode-sensitive match)rprsrtrurvr�r�r/r+r,r-r.rMrOrrNrTrr�r�r�keysr(�evalrO�UnicodeEncodeErrorr�printrqrh)rrsrtrurv�tr*rDZoutcomer6r��obj�resultr�r�Zvardictr�Zgir��bsrrr�
test_re_tests�s�




�





�



$�
"zExternalTests.test_re_testsN)rrrrrr�rrrrrm�srm�__main__)Ztest.supportrrrrrr�r,rhr8Zunittestr�r�weakrefrrUr	rOrZTestCaserrUrgrmr�mainrrrr�<module>s@2Nq

F1le Man4ger