Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/test/__pycache__/test_re.cpython-39.pyc

a

��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__��(/usr/local/lib/python3.9/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@s2eZdZd�dd�Zd�dd�Z�ddd�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]�Z0d^d_�Z1d`da�Z2dbdc�Z3e4ddde��Z5dfdg�Z6dhdi�Z7djdk�Z8dde9j:fdldm�Z;e<j=e<j>dnZ?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��Zgd�d��Zhd�d„Zid�dĄZjd�dƄZkd�dȄZlemend�dʍd�d̄�Zoemend�dʍd�dτ�Zpd�dфZqd�dӄZre4d�dՄ�Zsd�dׄZtd�dلZud�dۄZvd�d݄Zwd�d߄Zxd�d�Zye4d�d��Zzd�d�Z{d�d�Z|d�d�Z}d�d�Z~d�d�Zd�d�Z�d�d�Z�d�d�Z�d�d��Z�d�d��Z�d�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.assertTypedEqualcCs�|�tj��}t�|�Wd�n1s,0Y|j|d��:|j}|�|j|�|durn|�|j|�Wd�n1s�0YdS)N)�pattern)	�assertRaises�re�error�compile�subTest�	exceptionr(r&�pos)rr*�errmsgr1�cm�errrrr�checkPatternError&s(zReTests.checkPatternErrorcCs�|�tj��}t�|||�Wd�n1s00Y|j||d��:|j}|�|j|�|durt|�|j|�Wd�n1s�0YdS)N)r*�repl)	r+r,r-�subr/r0r(r&r1)rr*r6�stringr2r1r3r4rrr�checkTemplateError/s,zReTests.checkTemplateErrorcCsftd�}t�d|�}|�t��|�d�Wd�n1s>0Yt|�~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_numc
s|�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]~}|�|��\|�tj
��.|�t�dd|d�d|�Wd�n1�s�0YWd�n1�s�0Y�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�bzReTests.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_114660cCszt�d�t�d�t�d�t�d�t�d�t�d�d�dd	�td
d�D��}d|}|�t�|d
���d�dS)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)�|css|]}d||fVqdS�z
x(?P<a%d>%x)yNr��.0�irrr�	<genexpr>�rhz/ReTests.test_symbolic_groups.<locals>.<genexpr>rH��z(?:%s)(?(200)z|t)�xc8yz�r�)r,r.�join�ranger(rPrN�r�patrrr�test_symbolic_groups�s





zReTests.test_symbolic_groupscCsZ|�dd�|�ddd�|�dd�|�dd	d
�|�ddd
�|�ddd
�|�ddd
�|�dd�|�dd�|�ddd
�|�ddd
�|�ddd
�|�ddd
�|�ddd
�|�ddd
�|�ddd
�|�ddd�|�d dd�|�d!dd�|�d"d#d�|�d$d%d�|�d&dd�|�d'd(d
�|�d)d(d
�|�d*d(d�dS)+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 grouprqz(?Pxy)zunknown extension ?Pxz(?P<a>)(?P=a�missing ), 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)� bad character in group name '©'u(?P=©)u(?(©)y)�r5rQrrr�test_symbolic_groups_errors�s:��z#ReTests.test_symbolic_groups_errorscCs�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�d	d
d�d�|�t�ddd�d�d
�dd�tdd�D��}|�t�|dd�d�dS)Nz(?P<a>x)|(?P<b>y)z\g<b>rjr��\2s	(?P<a1>x)s\g<a1>sxxu	(?P<µ>x)u\g<µ>u#(?P<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>x)u \g<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>r�css|]}d||fVqdSr�rr�rrrr�rhz-ReTests.test_symbolic_refs.<locals>.<genexpr>rHr�z\g<200>Z	xc8yzxc8yZc8zc8)r(r,r7r�r�r�rrr�test_symbolic_refsszReTests.test_symbolic_refscCs|�ddddd�|�ddddd�|�dddd	d
�|�ddddd�|�dd
ddd�|�ddddd�|�ddddd�|�ddddd�|�td��t�ddd�Wd�n1s�0Y|�ddddd�|�ddddd�|�ddddd�|�ddddd�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>�invalid group reference 2r�rHzunknown group name 'ab'z\g<ab>z\g<-1>r�u\g<©>r�u\g<㊀>�!bad character in group name '㊀'u\g<¹>� bad character in group name '¹')r9�assertRaisesRegex�
IndexErrorr,r7rQrrr�test_symbolic_refs_errorssH
�
�
�
�
�
�
�,
�
�
�
�z!ReTests.test_symbolic_refs_errorscCs�|�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_subn)szReTests.test_re_subncCs�dtd�fD]L}|�t�d|�gd��|�t�d|�gd��|�t�d|�gd��qdtd�td�td�fD]L}|�t�d	|�gd
��|�t�d|�gd��|�t�d
|�gd��qrdD]t\}}}d|||f}|�t�d|�d||d|g�|�t�d|�d|||g�|�t�d|�dd|d|d|g�q�|�t�dd�gd��|�t�dd�gd��|�t�dd�gd��|�t�dd�gd��|�t�dd�gd��dgd�fdgd�fdgd �fd!gd"�ffD]L\}}|j|d#��$|�t�|d�|�Wd�n1�s0Y�q�dgd$�fd%gd&�fd'gd(�fd)gd*�ffD]L\}}|j|d#��$|�t�|d�|�Wd�n1�s�0Y�qXdS)+N�:a:b::c�:)r�rWr@r�r|�:+)r�rWr@r|�(:+))r�r�rWr�r@�::r|s:a:b::c�:)rhr;�brh�c�:+)rhr;r�r��(:+))rhr�r;r�r��::r�)uàßçuабвu𝒜𝒞𝒵z
:%s:%s::%sr�r�z(?::+)z(:)+)r�r�rWr�r@r�r|z([b:]+))r�r�rWz:b::r|z(b)|(:+))
r�Nr�rWNr�r�r@Nr�Nr�r|z(?:b)|(?::+))r�rWr�r�r|z:*)r�r�rWr�r@r�r|r�z(?::*)�(:*))r�r�r�r�rWr�r�r�r@r�r�r�r|r�r�z(:)*)r�r�r�NrWr�r�Nr@r�r�Nr|Nr�)�sep)	r�r�rWr�r@r�r�r|r��\b)r�rWr�r@r�r|r�z(?=:))r�z:az:br�z:cz(?<=:))r��a:zb:r�r|)	r	r)r,�splitrr<ryr(r/)rr8rWr@r|r��expectedrrr�
test_re_split1sp������������



�8



�zReTests.test_re_splitcCs�|�t�ddd�gd��|�tjdddd�gd��|�tjdddd�gd��|�tjdddd�gd	��|�tjd
ddd�gd	��|�tjdddd�gd��dS)
Nr�r�r�)r�rW�b::c)�maxsplitza:b:c:d)rWr@zc:dz(:))r�r�rWr�r�r�r�)r�r�r�r�za:b::c)r(r,r�rQrrr�test_qualified_re_splitfs���zReTests.test_qualified_re_splitcCsj|�t�dd�g�dtd�fD]L}|�t�d|�gd��|�t�d|�gd��|�t�d|�gd��q dtd�td�td�fD]L}|�t�d	|�gd
��|�t�d|�gd
��|�t�d|�gd
��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:::d�r�r�z:::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_findallqs@��������zReTests.test_re_findallcCs|�t�dd�gd��dS)Nz(a|(b))�aba)�rWr�)r@r@r�)r(r,rCrQrrr�test_bug_117612�s�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_groupcCs�t�d�}|�d�}|�|dd�|�|dd�|�|dd�|�d�|�d�|�|dd�|�|d	d�|�|d
d�|�|dd�|�td��|d
Wd�n1s�0Y|�td��|dWd�n1s�0Y|�td��|dWd�n1�s*0Y|�td��|dWd�n1�s`0Y|�td��|dWd�n1�s�0Y|�td��|dWd�n1�s�0Y|�td��d�|�Wd�n1�s0Y|�d�}|�|dd�|�|dd�|�|dd�|�d�|�d�|�|dd�|�|d	d�|�|d
d�|�|dd�|�t��d	|d<Wd�n1�s�0Y|�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_fullmatchcCsH|�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�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�)rhz2ReTests.test_re_groupref_exists.<locals>.<genexpr>rHr�z(?:%s)(?(200)z)r�r�)	r(r,rPr�rOr.r�r�rN)r�pr�rrr�test_re_groupref_existss@������
��zReTests.test_re_groupref_existscCs�|�ddd�|�ddd�|�ddd�|�d	d
d�|�ddd�|�d
dd�|�ddd�|�ddd�|�ddd�|�ddd�dS)Nz(?P<a>)(?(0)a|b)zbad group numberrqz()(?(-1)a|b)r�r�u
()(?(㊀)a|b)r�u()(?(¹)a|b)r�z()(?(1r�z()(?(1)a�"missing ), unterminated subpatternr�z
()(?(1)a|bz()(?(1)a|b|cz/conditional backref with more than two branchesz
()(?(1)a|b|c)z	()(?(2)a)r�r�rQrrr�test_re_groupref_exists_errors-s<���������z&ReTests.test_re_groupref_exists_errorscCs@ddlm}|�dd|dd|d�|�d|d|d	�dS)
Nr)�	MAXGROUPSz()z\g<%s>rjzinvalid group reference %drIz(?P<a>)(?(%d))rq)�
sre_constantsrr9r5)rrrrr�test_re_groupref_overflowDs�
�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_grouprefKs����zReTests.test_re_grouprefcCs"|�t�dd���ddd��dS)N�#(?P<first>first) (?P<second>second)�first second�first�second)rr)r(r,rP�	groupdictrQrrr�test_groupdictYs

��zReTests.test_groupdictcCs8|�t�dd��d�d�|�t�dd��d�d�dS)	Nrrz\2 \1 \g<second> \g<first>zsecond first second firstz#(?P<first>first)|(?P<second>second)rz
\2 \g<second>� )r(r,rP�expandrQrrr�test_expand^s
���
���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_minmaxhs<�zReTests.test_repeat_minmaxcCs\|�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<Wd�n1�s<0Y|�|jdd�dS)Nz
(?i)(a)(b)r�z(?i)(?P<first>a)(?P<other>b)rH)r�otherr�rWr)r�r�rr)r(r,r.r*�flagsr��Ur��
groupindexrPr1r�r8�regsr�sortedr+r�)rr�rrr�test_getattr�s$�
*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 bxrH�bxz\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	Cst|�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]F}|�|��&|�tj	tj
d|�Wd�q�1�s0Yq�dD]H}|�|��&|�tj	tj
d|�Wd�n1�sb0Y�q&dS)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"8zReTests.test_other_escapescCsp|�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�|�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}]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}])rr,rPrOr5rQrrr�test_named_unicode_escapes�sX
�
�
��������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_bigcharsets
���zReTests.test_bigcharsetcCsBt�d�dd�td�D���}|�|�d��|�|�d��dS)Nr�css|]}d|VqdS)z%dNr)r�r#rrrr�rhz,ReTests.test_big_codesize.<locals>.<genexpr>�'Z1000Z9999)r,r.r�r�rrPr/rrr�test_big_codesizeszReTests.test_big_codesizecCs@|�t�ddtj��d�d�|�t�ddtj��d�d�dS)Nza.bza
brza.*bza

b)r(r,rP�DOTALLrTrQrrr�test_anyall#s��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]*))�a 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_lookbehindEs(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�d��d��k�rLdk�sRnJ�|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��d��d��k�r�dk�s�nJ�|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��d��d��k�rHdk�sNnJ�|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�d dtj��|�t�d dtj��d!��d"��k�r�d#k�s�nJ�|�t�d$d"tj��|�t�d%d!tj��dS)&Nr��ABCrrsABCz	(a\s[^a])r5rHz
(a\s[^a]*)za bbz
(a\s[abc])z(a\s[abc]*)z	((a)\s\2)r7z
((a)\s\2*)r8z((a)\s(abc|a))z((a)\s(abc|a)*)�K�K�kz\u212arD�ſr	z\u017f�в�ᲀ�Вz\u0412z\u0432z\u1c80�ſt�st�STz\ufb05z\ufb06)r(r,rPr�rT�lowerr�upperrQrrr�test_ignore_case_s<&&&&zReTests.test_ignore_casecCs�|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��d	��d
��kr�dks�nJ�|�t�dd
tj��|�t�d
d
tj��|�t�dd	tj��|�t�ddtj��d��d��k�rJdk�sPnJ�|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��d��d��k�r�dk�s�nJ�|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��d��d��k�rrdk�sxnJ�|�t�ddtj��|�t�ddtj��dS) Nz[19A]r�z[19a]rWs[19A]�As[19a]r;r<r=r>z[19K]z[19k]z
[19\u212a]rDr?r	z[19S]z[19s]z
[19\u017f]r@rArBz
[19\u0412]z
[19\u0432]z
[19\u1c80]rCrDrEz
[19\ufb05]z
[19\ufb06])rr,rPr�rFrGrQrrr�test_ignore_case_set�s8"&&&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��d��d��k�r�dk�s�nJ�|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��d��d��k�r�dk�snJ�|�t�ddtj��|�t�ddtj��|�t�ddtj��|�t�ddtj��d��d ��k�r|d!k�s�nJ�|�t�d"dtj��|�t�d"d tj��|�t�d#d!tj��|�t�d#d tj��|�t�d$d!tj��|�t�d$dtj��d%��d&��k�r&d'k�s,nJ�|�t�d(d&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]r<r=r>z[J-M]z[j-m]z[\u2129-\u212b]rDr?r	z[R-T]z[r-t]z[\u017e-\u0180]r@rArBz[\u0411-\u0413]z[\u0431-\u0433]z[\u1c80-\u1c82]rCrDrEz[\ufb04-\ufb05]z[\ufb06-\ufb07])rr,rPr�rOrFrGrQrrr�test_ignore_case_range�sH&&&&zReTests.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	v}|�|�
|�|�|�|�|�|�qttdd��ddgD]�}t|�}|�|�|�|�|dkr�|�|�|�t|����||��kp�||�
�k}|�|�
|��|�|�|�||��k�p||�
�k�q�|�|�d�d�|�|�d�td��|�|�
d��|�|�d��dS)Nr�iii(i0r�)�_srer�r{�ordrFr(�
ascii_tolower�unicode_tolowerr8�
ascii_letters�
ascii_iscased�unicode_iscasedrrGr)r)rrSr�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_literalcCs�ttd����}|�t��t�d�}Wd�n1s:0Y|�|�|�t	d��|�t�d|�t	d��|�t��t�d�}Wd�n1s�0Y|�|�|�t	d��|�t��t�d�}Wd�n1s�0Y|�|�|�t	d	��|�t��t�d
�}Wd�n1�s20Y|�|�|�t	d��|�t��t�d�}Wd�n1�s~0Y|�|�|�t	d��|�t�d
|�t	d��|�t��t�d�}Wd�n1�s�0Y|�|�|�t	d��|�t��t�d�}Wd�n1�s.0Y|�|�|�t	d��|�t�d|�t	d��|�t��t�d�}Wd�n1�s�0Y|�|�|�t	d��|�t��t�d�}Wd�n1�s�0Y|�|�|�t	d��|�t�d|�t	d��|�t��t�d�}Wd�n1�sB0Y|�|�|�t	d��|�t��t�d�}Wd�n1�s�0Y|�|�|�t	d��dS)NrRz[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)r]rHr@za\sza rr^rQrrr�test_search_coverage+szReTests.test_search_coveragecCsr|dur"|dur"|}dt|�f}n|dus2|dur: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�@rhz)ReTests.test_re_escape.<locals>.<genexpr>r+rrz(?x)z-.]{}rHrk)r�r�rhr,�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)r`r�rhr,rir(rj�encode)rr�r�r@rkrrr�test_re_escape_bytesKs

zReTests.test_re_escape_bytescCsHd}t�|�}|�||�|�||�|�dt�d�|ddtj�dS)Nuxxx☠☠☠xxxz.%s+.�☠ux☠☠☠x)r�ru)r,rir(rhrM)rrDZ	s_escapedrrr�test_re_escape_non_asciiYs
�z ReTests.test_re_escape_non_asciicCsXd�d�}t�|�}|�||�|�||�t�t�d�d��|�}|�t|�d�dS)Nu	y☠y☠yzutf-8rsr�)rqr,rir(rhrCr�)rr@Z	b_escaped�resrrr�test_re_escape_non_ascii_bytesas

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(rw)rrxZoldpat�protoZpickledZnewpatrwrrr�
test_picklingis
zReTests.test_picklingcCshddl}t�d�}|�|�|�|�|�|�|�|�|�d�}|�|�|�|�|�|�|�|�dS)Nrz (?P<int>\d+)(?:\.(?P<frac>\d*))?z12.34)�copyr,r.r�deepcopyrP)rrr�rfrrr�test_copyingss

zReTests.test_copyingcCsT|�tjtj�|�tjtj�|�tjtj�|�tjtj	�|�tj
tj�dSr
)r(r,r��
IGNORECASE�Lrr�	MULTILINEr	r3rw�VERBOSErQrrr�test_constants|s
zReTests.test_constantscCsltjtjtjtjtjtjfD]}|�t�d|��qtjtjtjtjtjtj	fD]}|�t�d|��qPdS)Nz	^pattern$s	^pattern$)
r,r�rrwr	r�rrr.r�)r�flagrrr�
test_flags�s  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�� �@�rRr-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)#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�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�rrvr�r�r�r�rRr-r�r��0r��8r�r�r��zs\u1234s
\U00012345s\0�s\08s8s\01�s\018s8s\567r�rs\911r�rHs\x1r�s\x1z�	rr,rPrqr`r+r-r.r5r�rrr�test_sre_byte_literals�s( $$ $&�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-ar�rQrrr�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.*?cr1r�r�ri!Nz.*?cdi�r|Zcdei#Ni Nr��deia�z(a|b)*?c)r(r,rPr�rMrQrrr�test_bug_418626s"(�"zReTests.test_bug_418626cCs,dt�d�d}|�t�|�o"dd�dS)Nru‹rrH)r,rir(r.r�rrr�test_bug_612074szReTests.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)*?yrPrQrrr�test_stack_overflows"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_repeats��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_repeatcCstdd�}dd�}dd�}dd�}td	|fd
|fd|fd|fd
g�}|�|j�d�j�|�|�d�gd�df�dS)NcSs|Sr
r��scanner�tokenrrr�s_ident7rhz%ReTests.test_scanner.<locals>.s_identcSsd|S)Nzop%srr�rrr�
s_operator8rhz(ReTests.test_scanner.<locals>.s_operatorcSst|�Sr
)�floatr�rrr�s_float9rhz%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*�foo�op+g�s@r�Zbar)rrr�r*r(�scan)rr�r�r�r�r�rrr�test_scanner6s"���zReTests.test_scannercCsFdD]<}|�t�d|d���d�|�t�d|d���d�qdS)N)r�r�r�z
((.%s):)?zr�rza:z)r�rW�r(r,rPr�)r�oprrr�test_bug_448951Js��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_725106Ss0��������zReTests.test_bug_725106cCs4|�t�dd���d�|�t�dd���d�dS)Nz(a)(?:(?=(b)*)c)*r�)rWNz(a)((?!(b)*))*r�r�rQrrr�test_bug_725149fs��zReTests.test_bug_725149cCs2Gdd�dt�}t�|d��}|�|�d��dS)Nc@seZdZdS)z+ReTests.test_bug_764548.<locals>.my_unicodeN)rrrrrrr�
my_unicodeorhr�r�rX)rUr,r.rOrP)rr�r�rrr�test_bug_764548mszReTests.test_bug_764548cCs�t�dd�}|�dd�|D�gd��t�d�}|�ddd�}|�dd�|D�gd��t�d�}|jdddd	�}|�d
d�|D�gd��t�d�}|jdddd�}|�dd�|D�gd��t�d�}|jdd
dd	�}|�dd�|D�ddg�dS)Nr�r�cSsg|]}|�d��qSr��rT�r��itemrrr�
<listcomp>urhz)ReTests.test_finditer.<locals>.<listcomp>r�rHrqcSsg|]}|�d��qSr�r�r�rrrr�zrhr�cSsg|]}|�d��qSr�r�r�rrrr�rh)r�r1cSsg|]}|�d��qSr�r�r�rrrr��rhrIrvcSsg|]}|�d��qSr�r�r�rrrr��rhr�)r,r=r(r.)r�iterr�rrr�
test_finditerss0�
�
�
�
�zReTests.test_finditercCs|�t�d�t�d��dS)NZ
bug_926075s
bug_926075)ZassertIsNotr,r.rQrrr�test_bug_926075�s�zReTests.test_bug_926075cCs$d}|�t�|��d�gd��dS)Nu[.。.。]za.b.cr�)r(r,r.r�r�rrr�test_bug_931848�s�zReTests.test_bug_931848cCsdt�dd�}|�t|���d�|�tt|�t�d��d�}|�|�	���d�|�
|�	��dS)Nz\sr5)rHr�)r,r=r(�nextrNr+�
StopIterationr.r�rMrO)rr�r�rrr�test_bug_581080�s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_817234�szReTests.test_bug_817234cCsTgd�}|D]}|�t�d|��d�|�qgd�}|D]}|�t�d|��q8dS)N)�7u๘u0z^\d$r)uⅥu〹u₂u㊴)r(r,rPrTrO)rZdecimal_digitsr#Znot_decimal_digitsrrr�
test_bug_6561�szReTests.test_bug_6561cCsRddl}dD]@}|�|�}|�t�d��|��|�t�d��|���d�qdS)NrZbBuhHiIlLfdsblarhr)�arrayrOr,r.rPr(r�)rr��typecoderWrrr�test_empty_array�s

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�||��Wd�n1�s0Y|�	t
|jd
j�d|�|�	|jd
j
t�|dd}|�t��"}|�t�||��Wd�n1�s�0Y|�	t
|jd
j�d|dd��|�	|jd
j
t�t����t�dt�d}|�t��"}|�t�|d��Wd�n1�s0Y|�	t
|jd
j�d|�|�	|jd
j
t�Wd�n1�s`0Y|�t��*|�t�d|d|��Wd�n1�s�0Y|�t��*|�t�d|d|��Wd�n1�s�0Y|�t��&|�t�d||��Wd�n1�s.0Y|�t��&|�t�d||��Wd�n1�sp0Y|�t��&|�t�d||��Wd�n1�s�0Y|�t��*}|�t�d|d|��Wd�n1�s�0Y|�t
|jd
j�d�|�	|jd
j
t�|�t��*}|�t�d|d|��Wd�n1�sj0Y|�t
|jd
j�d�|�	|jd
j
t�|�t��*}|�t�d|d|��Wd�n1�s�0Y|�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 %r but at position 1z(?i)%sz�.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?zIFlags not at the start of the expression %r (truncated) but at position 1�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	rPrrwrb�DeprecationWarningr(rU�warnings�message�filename�__file__�catch_warnings�simplefilter�BytesWarning�assertRegexr�)rZ
upper_charZ
lower_charr��qZwarnsrrr�test_inline_flags�s�







2��2
��
2��4::666:��&��&�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(r7r�r�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_mixing6s

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,ryr.r�rrPrrOr+r�r-)rrr�rrr�test_ascii_and_unicode_flagCs0
z#ReTests.test_ascii_and_unicode_flagc
Cs�t��}tdd�D]�}zjt|g��|�}|��}||kr<Wq|�|�}t|�dkrVWq|�|�|krhWqt�	t|g��}Wq�Wqt
tfy�Yq0qd}d}t�|tj
tjB�}|r�|�|�|��t�d|tj�}|r�|�|�|��t�|tj�}|�r|�|�|��t�dtj
�}|�r8|�|�|��t�d�}|�rX|�|�|��t�d�}|�rx|�|�|��|�ttjdtj
�|�tjtjd	�|�ttjd
tj
tjB�|�ttjdtj�|�ttjdtj
�|�tjtjd�dS)
NrRr+rHrIs(?L)rs(?L)\wr�z(?L)rhs(?a)s(?aL))�locale�getpreferredencodingr�r`rarFrqr�r,ri�UnicodeErrorr�r.rr�rrPrOr+r�r-r)r�encr�r|ZsletterZbletterrr�rrr�test_locale_flag`sN



zReTests.test_locale_flagcCs�|�t�dd��|�t�dd��|�t�ddtj��|�t�ddtj��|�t�dd��|�t�dd��|�t�dd��|�t�dd��|�t�d	dtj��|�d
dd�|�d
dd�|�ddd�|�ddd�|�ddd�|�ddd�|�ddd�|�ddd�|�ddd�|�ddd�|�ddd�|�dd d!�|�d"d#d�|�d$d#d�|�d%dd�dS)&Nz(?i:a)bZAbZaBz(?-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'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,rPrOr�rr5rQrrr�test_scoped_flags�s@����zReTests.test_scoped_flagscCs�dD]}|�t�|ddtj��qdD]}|�t�|ddtj��q(|�t�dd��|�t�ddtj��|�t�dd��|�t�dd	��|�t�d
dtj��|�t�dd��|�t�d
d��|�t�d
d��dS)Nz 	

rW)� �	�
�
��r;z(?x) az (?x) az(?x) (?x) az a(?x: b) cz ab cz a(?-x: b) cr6z(?x) a(?-x: b) cz	(?x) a| br@�rr,r�r�)r�spacerrr�test_ignore_spaces�szReTests.test_ignore_spacescCs�|�t�ddtj��|�t�ddtj��|�t�dd��|�t�ddtj��|�t�dd��|�t�dd	��|�t�d
dtj��|�t�dd��|�t�d
d��|�t�d
d��dS)Nz#x
arWs#x
ar;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
cza#y
bcz(?x)#x
a(?-x:#y
b)#z
cz
(?x)#x
a|#y
br@rrQrrr�
test_comments�s�zReTests.test_commentscCs�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)NrUrrerrrrg�rhz'ReTests.test_bug_6509.<locals>.<lambda>Za5rUsa(\w)sb\1sacsbcsa(.)sa�sb�s..cSsdS)N�bytesrrerrrrg�rhsa5r)r,r.r(r7r�rrr�
test_bug_6509�s





zReTests.test_bug_6509c	Cs�ddl}dd}|�ttjdi�|�t��&|�dd|gdid�Wd�n1sX0Y|�t��$|�idgdgg�Wd�n1s�0YdS)Nrr�rRrWr�r)rSr+r�r,r=�
OverflowErrorr.)rrSZ
long_overflowrrr�test_dealloc�s4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_subns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�rR�.{,%d}�.{%d,}?z.{%d,%d}�)r(r,rPrNr+rr.)rr8rrr�test_repeat_minmax_overflowsz#ReTests.test_repeat_minmax_overflowcCs�zddlm}Wnty,|�d�Yn0dd}|�t�d|d|��|�t�d|d|���d	�|�t�d
|d|��|�	t
tjd|�|�	t
tjd|�|�	t
tjd
|�dS)Nr)�	MAXREPEATz requires _sre.MAXREPEAT constantr#r+r,rHr-)rr+r.)rSr1�ImportError�skipTestrOr,rPr(rNr+rr.)rr1r8rrr�%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_exception1s�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_exception6s�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	rCrq)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*rrrrr�test_match_reprEs0�����zReTests.test_match_reprcCs|�t�dd�gd��|�t�dd�gd��|�t�dd�gd��|�t�dd�gd	��|�t�dd
d�d�|�t�dd
d�d�|�t�d
dd�d�|�t�dd�gd��|�t�dd�gd��|�dd�t�dd�D�gd��|�dd�t�dd�D�gd��dS)Nr�za::bc)r�rWr�r�r�z\b|:+)r�rWr�r�r�r�z(?<!\w)(?=\w)|:+)r�rWr�r�z(?<=\w)(?!\w)|:+)rWr�r�r�r z	-a-::-bc-z-a---bc-z(\b|:+)z[\1]z[]a[][::][]bc[])r�r�r�r�r�z\b|\w+cSsg|]}|���qSr�rN�r�rfrrrr�nrhz*ReTests.test_zerowidth.<locals>.<listcomp>)rF�rHrHrG�rIrI�r�r�cSsg|]}|���qSrr:r;rrrr�prh)rFr�r<r=)rIr�r>)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_2537ss
zReTests.test_bug_2537cCs�d}t��}t�|tj�Wd�n1s.0Yd|_d}|�|��|�t��}t�|tj�Wd�n1s|0Y|�|��|�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_flag}s,),zReTests.test_debug_flagcCs�t�d�}|�|jdddd���d�|�|jdddd���d�|�|jdddd���d�|�|jdddd�d	g�|�|jdd
d�gd��|�|j	dddd�����d�dS)
Nz(ab)Zabracadabrarurq)r8r1r�)rurprprIr�rH)r8r�)r�r�Z	racadabra)
r,r.r(rPrNr�rMrCr�r�r�rrr�test_keyword_parameters�s*
������zReTests.test_keyword_parameterscCs |�t�ddtj���d�dS)Nz[a-c]+r;rK)r(r,r�r�rNrQrrr�test_bug_20998�szReTests.test_bug_20998c	Cs�t�tj�}|�tjtj|�dD]:}zt�tj|�Wq"tjyZ|�d|�Yq"0q"t��|��|�	�t��|�	�|��dS)N��en_US.iso88591�
en_US.utf8�test needs %s locale)
r	�	setlocale�LC_CTYPE�
addCleanup�Errorr3r,r!�check_en_US_iso88591�check_en_US_utf8)r�	oldlocale�locrrr�test_locale_caching�szReTests.test_locale_cachingcCs�t�tjd�|�t�ddtjtjB��|�t�ddtjtjB��|�t�ddtjtjB��|�t�dd��|�t�dd��|�t�dd��dS)NrJ��������(?Li)���(?Li)��(?Li)�)r	rMrNrr,rPr�r�rQrrrrQ�szReTests.check_en_US_iso88591cCs�t�tjd�|�t�ddtjtjB��|�t�ddtjtjB��|�t�ddtjtjB��|�t�dd��|�t�dd��|�t�dd��dS)NrKrVrWrXrYrZr[)	r	rMrNrr,rPr�r�rOrQrrrrR�szReTests.check_en_US_utf8c	Cs�t�tj�}|�tjtj|�dD]:}zt�tj|�Wq"tjyZ|�d|�Yq"0q"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	���qD|�
|�d
��|�|�d��|�|�d	��dS)NrIrLrJrVs[a�][a�]s
[az�][az�]s[^�][^�]s��s��s��rK)
r	rMrNrOrPr3r,r.r�r�rrPrO)rrSrTZp1Zp2Zp3Zp4r�rrr�test_locale_compiled�s6zReTests.test_locale_compiledcCs�|�tj��}t�d�Wd�n1s,0Y|j}|�|jt�|�|jd�|�|j	d�|�|j
d�|�|jd�|�|j
t|��|�dt|��|�d|j
�|�tj��}t�d�Wd�n1s�0Y|j}|�|jt�|�|jd�|�|j	d�|�tj��}t�dtj�Wd�n1�sJ0Y|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.r0r"r*rUr(r1�lineno�colno�assertInr&ZassertNotInr`r�)rr3r4rrr�
test_errors8((�$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)rrrz(?#abczmissing ), unterminated commentz(?<z(?<>)zunknown extension ?<>z(?r�r�rQrrr�test_misc_errors2szReTests.test_misc_errorscCs(|�dttj��|�dttj��dS)Nrr3)rarUr,r�r	rQrrr�	test_enum?szReTests.test_enumcCs�t�dtj�}|�||�|�||k�t��t�dtj�}|�t|�t|��|�||�t��t�dtj�}|�||�t��t�d�}|�||�|�t	��||kWd�n1s�0YdS)Nr�ZXYZ)
r,r.r�r(r)r!�hash�assertNotEqualr+r�)r�pattern1�pattern2�pattern3Zpattern4rrr�test_pattern_compareEs
zReTests.test_pattern_comparecCs�t�d�}t��t�d�}|�t|�t|��|�||�t��t�d�}t���(t�dt�|�	||�Wd�n1s�0YdS)Nrr�r-)
r,r.r!r(rer�r�r�r�rf)rrgrhrirrr�test_pattern_compare_bytesbs



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_29444ss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��rhz*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��rhrxrm)�tagrgrnz<test>Hello</test><foo/>cSsg|]}|���qSrror;rrrr��rhZHellor�z<test>Hello</test><foo/><foo/>cSsg|]}|���qSrror;rrrr��rh)r(r,rMr�rCr=rdrrr�test_bug_34294}sD���������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�rrr
r
rrrr"r'r*r0r2r4r9r:rHrJrOrQrr\r_rerfr,r�rhr8rW�digitsrjrlrrrtrvr~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�rrrr
rrrrrr r$rrr&r)r*r0r4r5r6r7r9r?rArFrGrHrUrQrRr\rbrcrdrjrkrlrqrrrrrs


		*0
5!,
$ ((&/
-�

	 
			i
-!










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(r8r,r.)rr*r�rrr�check�szPatternReprTests.checkcCs|�tt�||��|�dSr
rt)rr*rr�rrr�check_flags�szPatternReprTests.check_flagscCs|�dd�dS)Nr!�re.compile('random pattern')�rurQrrr�test_without_flags�s�z#PatternReprTests.test_without_flagscCs|�dtjd�dS)Nr!z+re.compile('random pattern', re.IGNORECASE))rvr,r�rQrrr�test_single_flag�s
�z!PatternReprTests.test_single_flagcCs |�dtjtjBtjBd�dS)Nr!z@re.compile('random pattern', re.IGNORECASE|re.DOTALL|re.VERBOSE))rvr,r�r	rwrQrrr�test_multiple_flags�s�z$PatternReprTests.test_multiple_flagscCs0|�dtjd�|�dtjtjBtjBd�dS)Nr!rwz5re.compile('random pattern', re.IGNORECASE|re.DOTALL))rvr,rr�r	rQrrr�test_unicode_flag�s
��z"PatternReprTests.test_unicode_flagcCs|�dd�dS)Nz(?i)patternz(re.compile('(?i)pattern', re.IGNORECASE)rxrQrrrr��s�z"PatternReprTests.test_inline_flagscCs&|�ddd�|�ddtjBd�dS)Nr!i0z&re.compile('random pattern', 0x123000)z4re.compile('random pattern', re.IGNORECASE|0x123000))rvr,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))rurvr,r�rQrrr�
test_bytes�s�
�zPatternReprTests.test_bytescCs|�dtjd�dS)Nr~z're.compile(b'bytes pattern', re.LOCALE))rvr,r�rQrrr�test_locale�s
�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')rxrQrrr�test_quotes�s���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))r8r,r.Z
assertLessr�r(r�)rr*r�rrr�test_long_pattern�s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(r8r,r�r	rwrQrrr�test_flags_repr�s����z PatternReprTests.test_flags_reprN)rrrrurvryrzr{r|r�r}rr�r�r�r�rrrrrs�s
rsc@seZdZdZdd�ZdS)�ImplementationTestz7
    Test implementation details of the re module.
    cCs|tj}|�|d�g�|�|d�dg�|�|d�gd��|�|d�gd��|�|d�gd	��|�|d
�gd��dS)Nr�rWrr�)rrrrZaaaa)rrHr�rIZababba)rrrHr�rrHZabcabdac)rrrrHr�rrHr)�sre_compile�_generate_overlap_tabler()r�frrr�test_overlap_table�sz%ImplementationTest.test_overlap_tableN)rrr�__doc__r�rrrrr��sr�c@seZdZdd�Zdd�ZdS)�
ExternalTestscCs�ddlm}|D]�\}}|j||d���t�|�}|�|�|��|�|�|��|�|�|��dd|dd}|�|�|��|�|�|d��|�|�|ddt	|���|�|�|ddt	|���Wd�q1s�0YqdS)zre_tests benchmarksr)�
benchmarks�r*r8rr1N)
�
test.re_testsr�r/r,r.rrMrPr�r�)rr�r*rDr��s2rrr�test_re_benchmarks�s
z ExternalTests.test_re_benchmarkscCs ddlm}m}m}|D�]}d}}}}}	t|�dkrN|\}}}}}	n"t|�dkrf|\}}}n
td|��|j||d����||kr�|�tj	��t�
|�Wd�n1s�0YWd�qt�
|�}
|
�|�}||k�r|�|d�Wd�q|����|�
|d	�|�d�\}}
|�d�|��|jjd
�}tdd�D]H}z|�|�}|du�rld
}Wnt�y�d}Yn0||d|<�qN|jj��D]D}z|�|�}|du�r�d
}Wnt�y�d}Yn0|||<�q�|�t||�|	d�Wd�n1�s0Yzt|d�}t|d�}Wnt�yJYn�0|�d��*t�
|�}
|�
|
�|��Wd�n1�s�0Y|�d��<t�
|tj�}
|
�|�}|du�r�td|�Wd�n1�s�0Y|dd�dk�rf|dd�dk�rf|du�rf|�d��2t�
|�}
|�
|
�|||
d��Wd�n1�s\0Y|�d��.t�
|tj�}
|�
|
�|��Wd�n1�s�0Y|�d��.t�
|tj�}
|�
|
�|��Wd�n1�s�0YWd�q1�s0YqdS)zre_tests test suiter)�tests�FAIL�SYNTAX_ERRORNr�rIz%Test tuples should have 3 or 5 fieldsr�zSucceeded incorrectlyzFailed incorrectly)�foundr�rrH�d�NonerPzg%dzgrouping errorrpzbytes pattern matchzlocale-sensitive matchz#=== Fails on locale-sensitive matchr�r(���zrange-limited matchzcase-insensitive matchzunicode-sensitive match)r�r�r�r�r�r�r/r+r,r-r.rMrOrrNrTrr�r�r�keysr(�evalr`�UnicodeEncodeErrorr�printr�ry)rr�r�r��tr*rD�outcomer6r��obj�resultr�r�Zvardictr�Zgir�bsrrr�
test_re_tests	s�

(



�





�$

0

*$�
80zExternalTests.test_re_testsN)rrrr�r�rrrrr��sr��__main__)Ztest.supportrrrrrr	r,r�r8Zunittestr�r�weakrefrrUr	r`rZTestCaserrsr�r�r�mainrrrr�<module>sBNq

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists