403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.216.15
Web Server : Apache
System : Linux web0264.sh.tyo1 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
User : c9415830 ( 11735)
PHP Version : 8.4.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python36/lib64/python3.6/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python36/lib64/python3.6/test/__pycache__/test_re.cpython-36.opt-2.pyc
3

�
�^)��@sddlmZmZmZmZmZmZmZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddl
mZddlmZGdd�de�ZGdd�de�ZGd	d
�d
ej�ZGdd�dej�ZGd
d�dej�ZGdd�dej�Zedkr�ej�dS)�)�verbose�run_unittest�
gc_collect�
bigmemtest�_2G�cpython_only�captured_stdoutN)�Scanner)�proxycseZdZ�fdd�Z�ZS)�Scstt�j|��S)N)r�super�__getitem__)�self�index)�	__class__��,/opt/alt/python36/lib64/python3.6/test_re.pyr
sz
S.__getitem__)�__name__�
__module__�__qualname__r
�
__classcell__rr)rrrsrcseZdZ�fdd�Z�ZS)�Bcstt�j|��S)N)rrr
)rr)rrrr
sz
B.__getitem__)rrrr
rrr)rrrsrc@s�eZdZd�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]�Z0d^d_�Z1d`da�Z2dbdc�Z3dde4j5fddde�Z6dfdg�Z7dhdi�Z8djdk�Z9dldm�Z:dndo�Z;dpdq�Z<drds�Z=dtdu�Z>dvdw�Z?dxdy�Z@dzd{�ZAd|d}�ZBd~d�ZCd�d��ZDd�d��ZEd�d��ZFd�d��ZGd�d��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`eaebd�d��d�d���Zceaebd�d��d�d���Zdd�dÄZed�dńZfegd�dDŽ�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�ZydS)��ReTestsNcs,�j||�����fdd���||�dS)NcsLt|ttf�r2x8t||�D]\}}�||�qWn�jt|�t|���dS)N)�
isinstance�tuple�list�zip�assertIs�type)�actual�expect�x�y)�msg�recurserrrr$!sz)ReTests.assertTypedEqual.<locals>.recurse)�assertEqual)rrr r#r)r#r$rr�assertTypedEqualszReTests.assertTypedEqualcCsh|jtj��}tj|�WdQRX|j|d��0|j}|j|j|�|dk	rZ|j|j|�WdQRXdS)N)�pattern)	�assertRaises�re�error�compile�subTest�	exceptionr%r#�pos)rr'�errmsgr.�cm�errrrr�checkPatternError)szReTests.checkPatternErrorcCsn|jtj��}tj|||�WdQRX|j||d��0|j}|j|j|�|dk	r`|j|j|�WdQRXdS)N)r'�repl)	r(r)r*�subr,r-r%r#r.)rr'r3�stringr/r.r0r1rrr�checkTemplateError2szReTests.checkTemplateErrorc
CsZtd�}tjd|�}|jt��|jdd�WdQRXt|�~t�|jdd�dS)N�x�ai�)�	bytearrayr)�finditerr(�BufferError�extendrr)r�b�itrrr�test_keep_buffer;szReTests.test_keep_buffercCs2d}tjd�}t|�}|j|jd�|jd��dS)NZQabbbcRzab+c)r)r+r
r%�findall)r�sr!r"rrr�test_weakrefFs
zReTests.test_weakrefcCs�|jtjdd�jd�d
�|jtjdd�j�d�|jtjdd�jd�d�|jtjdd�j�d�|jtjdd��|jtjd	d
�jd�d�|jtjd	d
�j�d�|jtjdd�jd�d�|jtjdd�j�d�|jtjdd
��dS)Nzx*Zaxxrzx+��r!Zaaaza*�xxxZxxxaza+)rr)rr)rCrD)rCrD)rr)rr)rrD)rrD)r%r)�search�span�assertIsNone�match)rrrr�test_search_star_plusLszReTests.test_search_star_pluscCst|jd��}t|d�S)NrrC)�int�group�str)rZmatchobjZ	int_valuerrr�bump_numXszReTests.bump_numcs�|jtjddd�d�|jtjdtd�td��d�|jtjddd�d�|jtjdtd�td��d�|jtjdtd�td��d�|jtjdtd�td��d�x&d7D]}|jtj|dd|�d�q�W|jtjd
dd�d�|jtjd|jd�d�|jtjd|jdd�d�|jtjd|jddd�d�|jtjddd�d�d�|jtjddd�d�d�|jtjd�d�d�|jtjd�j	dd �d���|jtjd�fd!d�d���|jtjd"d#d�d$�|jtjd"d%d�d$�|jtjd&d'd�d$�|jtjd&d(d�d$�|jtjdd)d�d*�|jtjdd*d�d*�|jtjdd*d�t
d+�t
d,�t
d-�t
d.�t
d/�t
d0�t
d1��xXd2D]P}|j|��:|jt
��$|jtjdd|d�d|�WdQRXWdQRX�q�W|jtjd3d4d5�d6�dS)8Nr"�a�xyzZxaz�yr8sxyzsxaz�à�а�𝒜zx%szz(?i)b+r!z	bbbb BBBBzx xz\d+z08.2 -2 23x99yz9.3 -3 24x100yrDz
9.3 -3 23x99y)�count�.cSsdS)Nz\nr)�mrrr�<lambda>nsz+ReTests.test_basic_re_sub.<locals>.<lambda>z\n�
z\1\1z(.)�xx�\z\\cs�S)Nr)rW)rArrrXtsz(?P<a>x)z
\g<a>\g<a>Zxxxxz
\g<a>\g<1>z
(?P<unk>x)z\g<unk>\g<unk>z
\g<1>\g<1>z\t\n\v\r\f\a\bz	

�	�
��
���Z,cdehijklmopqsuwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz^\s*�XZtestZXtest)rRrSrT)r&r)r4rrr9�
memoryviewr%rN�replace�chrr,�assertWarns�DeprecationWarning)rr"�cr)rAr�test_basic_re_sub\sD
:
8zReTests.test_basic_re_subcCs|jtjddd�d�dS)Nz
(?P<unk>x)z\g<1>\g<1>\brZzxxxx)r%r)r4)rrrr�test_bug_449964�szReTests.test_bug_449964cCs\|jtjddd�d�|jtjddd�d�|jtjddd�d�|jtjddd�d�dS)Nz\r\nz\nz
abc
def
zabc
def
z
rY)r%r)r4)rrrr�test_bug_449000�szReTests.test_bug_449000cCsdtjd�}|jttj|dtj�|jttj|dtj�|jttj|dtj�|jttj|tj�dS)NrV�A)r)r+r(�
ValueErrorrI�IrFr@)rr'rrr�
test_bug_1661�s

zReTests.test_bug_1661cCstjd�dS)Nz(?P<quote>)(?(quote)))r)r+)rrrr�
test_bug_3629�szReTests.test_bug_3629cCs�|jtjddd�d�|jtjddd�d�|jtjddd�d�|jtjddd�d;�|jtjdd	d�d<�|jtjddd�d�|jtjdd
d�d�|jtjddd�d�|jtjddd�d�|jtjddd�d=�|jtjddd�d�|jtjddd�d�|jtjddd�d>�|jtjddd�d?�|jtjddd�d@�|jddddd�|jddddd�|jdd dd!d"�|jdd#dd$d"�|jdd%dd&d"�|jdd'dd(d"�|jdd)dd*d"�|jdd+dd!d"�|jdd,dd-d"�|jdd.dd/d"�|jdd0dd(d"�|jdd1dd(d"�|jdd2dd*d"�|jdd3dd4d"�|jdd#d5d$d"�|jtjd6d'd�d�|jtjd7d0d8�d9�|jtjd7d1d8�d:�dS)ANr!z\0�z\000z\001�z\008�8z\009�9z\111roz\117�Oz\377�ÿz\1111�I1�1z\00z\07�z\08z\09z\0arOz\400z0octal escape value \400 outside of range 0-0o377rz\777z0octal escape value \777 outside of range 0-0o377z\1zinvalid group reference 1rCz\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))))))))))(.)rPZxz8Zxzaz8z9rxz8z9za)r%r)r4r6)rrrr� test_sub_template_numeric_escape�sN

z(ReTests.test_sub_template_numeric_escapecCsL|jtjddd�d�|jtjdddd�d�|jtjddddd�d�dS)NrOr=ZaaaaaZbbbbbrCZbaaaa)rU)r%r)r4)rrrr�test_qualified_re_sub�szReTests.test_qualified_re_subcCs|jtjddd�d�dS)Nz(\S)\s+(\S)z\1 \2zhello  therezhello there)r%r)r4)rrrr�test_bug_114660�szReTests.test_bug_114660cCs0|jtjddd�d�|jtjddd�d�dS)Nzx*�-Zabxdz-a-b-d-zx+zab-d)r%r)r4)rrrr�test_bug_462270�szReTests.test_bug_462270cCs�tjd�tjd�tjd�|jdd�|jddd�|jd	d
�|jddd
�|jddd�|jddd�|jddd�|jdd�|jdd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jd dd�|jd!dd"�|jd#dd"�|jd$dd"�|jd%d&d"�|jd'd(d"�|jd)dd"�tjd*�tjd+�|jd,d-d�d.jd/d0�td1d7�D��}d3|}|jtj|d4�j�d8�dS)9Nz(?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))zcannot refer to an open groupr]z(?Pxy)zunknown extension ?Pxz(?P<a>)(?P=azmissing ), unterminated namer^z(?P=zmissing 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<)zmissing >, unterminated namez(?P<az(?P<z(?P<>)z(?P<1>)z(?P<a.>)z(?(rDz(?())z(?(a))z(?(-1))z 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)u 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>rC��z(?:%s)(?(200)z|t)�xc8yzr���)rr�)r)r+r2�join�ranger%rIrG)r�patrrr�test_symbolic_groups�sB




zReTests.test_symbolic_groupsc
Csf|jddddd�|jddddd�|jdddd	d
�|jddddd�|jdd
ddd�|jddddd�|jddddd�|jddddd�|jtd��tjddd�WdQRX|jtjddd�d�|jtjddd�d�|jddddd�|jtjddd�d�|jtjddd�d�|jdddd d�d!jd"d#�tdd(�D��}|jtj|d%d&�d'�dS))Nz(?P<a>x)z\g<arZzmissing >, unterminated namerDz\g<zmissing group namez\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\2rCzunknown group name 'ab'z\g<ab>z(?P<a>x)|(?P<b>y)z\g<b>r{z\g<-1>z bad character in group name '-1'u	(?P<µ>x)u\g<µ>u#(?P<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>x)u \g<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>u\g<©>u bad character in group name '©'r�css|]}d||fVqdS)z
x(?P<a%d>%x)yNr)r�r�rrrr�"sz-ReTests.test_symbolic_refs.<locals>.<genexpr>r�z\g<200>Z	xc8yzxc8yZc8zc8r�)r6�assertRaisesRegex�
IndexErrorr)r4r%r�r�)rr�rrr�test_symbolic_refss6








zReTests.test_symbolic_refscCs�|jtjddd�d�|jtjddd�d�|jtjddd	�d�|jtjddd	�d�|jtjddd	d�d�|jtjddd	dd�d�dS)Nz(?i)b+r!z	bbbb BBBB�x xr�zb+�x BBBBrCrPrzb*�xxxyxzxr��xxxyz)rU)r�r�)r�rC)rPr)r�r�)r�r�)r�r�)r%r)�subn)rrrr�test_re_subn%szReTests.test_re_subncCs*xpdtd�fD]`}|jtjd|�dddddg�|jtjd|�ddddg�|jtjd|�dddddd	dg�qWx|d
td
�td
�td
�fD]`}|jtjd|�dd
dddg�|jtjd|�dd
ddg�|jtjd|�ddd
ddddg�q�Wx|d%D]t\}}}d|||f}|jtjd|�d||d|g�|jtjd|�d|||g�|jtjd|�dd|d|d	|g�q�W|jtjdd�ddddg�|jtjdd�dddddddg�|jtjdd�dddddg�|jtjdd�dddddddddddd	dg
�|jtjdd�dddddg�x�dddddgfdddddgfddddddd	dgfd dddddddgfgD]L\}}|j|d!��0|j	t
��|jtj|d�|�WdQRXWdQRX�q`Wxtddgfd"dgfd#dgfd$dgfgD]L\}}|j|d!��0|jt��|jtj|d�|�WdQRXWdQRX�q�WdS)&Nz:a:b::c�:r{rOr=riz:+z(:+)z::s:a:b::c�:�r8�b�cs:+s(:+)s::�àßç�абв�𝒜𝒞𝒵z
:%s:%s::%sz(?::+)z(:)+z([b:]+)z:b::z(b)|(:+)z(?:b)|(?::+)z:*z(?::*)z(:*)z(:)*)�sepz\bz(?=:)z(?<=:))r�r�r�)
rr&r)�splitrr9rdr%r,rg�
FutureWarningr(rn)rr5rOr=rir��expectedrrr�
test_re_split-s\ .zReTests.test_re_splitcCs�|jtjddd�dddg�|jtjdddd�dddg�|jtjdddd�dd	d
g�|jtjdddd�dddddg�|jtjdddd�dddddg�|jt��(|jtjd
ddd�dddddg�WdQRXdS)Nr�z:a:b::cr�r{rOzb::c)�maxsplitza:b:c:dr=zc:dz(:)z(:+)z(:*))r%r)r�rgr�)rrrr�test_qualified_re_splitbszReTests.test_qualified_re_splitcCs�|jtjdd�g�xbdtd�fD]R}|jtjd|�dddg�|jtjd|�dddg�|jtjd|�dddg�q"Wxnd
td
�td
�td
�fD]R}|jtjd|�dd
dg�|jtjd|�dd
dg�|jtjd|�ddd g�q�Wx�d!D]�}|d}|d}d|||f}|jtjd||�|||g�|jtjd||�|||g�|jtjd||f|�|d	f||f||fg��q�WdS)"Nz:+�abcz
a:b::c:::dr��::z:::z(:+)z(:)(:*)r{s
a:b::c:::ds:+r��::s:::s(:+)s(:)(:*)r�rR�а�𝒜r�rDz
a%sb%sc%sdz%s+z(%s+)z	(%s)(%s*))r�r{)r�r�)r�r�)r�r�)r�r�)r�r�)rRr�r�)r%r)r@rr&rr9rd)rr5r!rZrErrr�test_re_findallns0
zReTests.test_re_findallcCs|jtjdd�dddg�dS)	Nz(a|(b))�abarOr{r=)rOr{)r=r=)rOr{)r%r)r@)rrrr�test_bug_117612�szReTests.test_bug_117612cCs�x�dtd�fD]�}|jtjd|�j�f�|jtjd|�j�d�|jtjd|�jd�d�|jtjd|�jd�d�|jtjd|�jdd�d�qWx�dtd�td�td�fD]�}|jtjd|�j�f�|jtjd|�j�d�|jtjd|�jd�d�|jtjd|�jd�d�|jtjd|�jdd�d�q�Wx�dD]�}|jtj||�j�f�|jtjd
||�j�|f�|jtjd
||�jd�|�|jtjd
||�jd�|�|jtjd
||�jdd�||f��q>Wtj	d�}|j|jd�j�d�|j|jd�j�d�|j|jd
�j�d�|j|jd�j�d�|j|jd�jd�d �tj	d�}|j|jd�jddd�d!�|j|jd�jddd�d"�|j|jd
�jddd�d#�dS)$NrOz(a)rrCr8s(a)rR�а�𝒜z(%s)z
((a)|(b))(c)?r=�acri�bcr{z!(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?r�rD�a1�b2�c3)rO)rOrO)r8)r8r8)rRr�r�)rOrONN)r=Nr=N)rOrONri)r=Nr=ri)r=r{r=ri)rONN)Nr=N)rONri)
rr%r)rI�groupsrLrr9rdr+)rr5rOr�rrr�
test_re_match�s:  
*

zReTests.test_re_matchcCs�Gdd�d�}tjdd�}|j|j�d�|j|jd�d�|j|jd�d�|j|j|d��d�|jt|jd
�|jt|jd�|jt|jdd	>�|jt|j|dd	>��|jt|jd
�|j|jdd�d�|j|j|d�|d��d�dS)Nc@seZdZdd�Zdd�ZdS)z!ReTests.test_group.<locals>.IndexcSs
||_dS)N)�value)rr�rrr�__init__�sz*ReTests.test_group.<locals>.Index.__init__cSs|jS)N)r�)rrrr�	__index__�sz+ReTests.test_group.<locals>.Index.__index__N)rrrr�r�rrrr�Index�sr�z(a)(b)�abrrCrOrDi�r!r�r=���)r=rO)r=rO)r)rIr%rLr(r�)rr�rWrrr�
test_group�szReTests.test_groupc<Cs4tjd�}|jd�}|j|dd�|j|dd�|j|dd�|jdj|�d�|j|dd�|j|d	d�|j|d
d�|j|dd�|jtd��|d
WdQRX|jtd��|dWdQRX|jtd��|dWdQRX|jtd��|dWdQRX|jtd��|dWdQRX|jtd��|dWdQRX|jtd��dj|�WdQRX|jd�}|j|dd�|j|dd�|j|dd�|jdj|�d�|j|dd�|j|d	d�|j|d
d�|j|dd�|jt��d	|d<WdQRX|jtt	|�dS)Nz!(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?rOr�r�r�za1={a1} b2={b2} c3={c3}za1=a b2=None c3=NonerrCr�rDz
no such grouprcr�za1={a2}r�riza1=a b2=None c3=cr�)rrC)r)rrC)
r)r+rIr%�
format_mapr�r�r(�	TypeError�len)rr�rWrrr�test_match_getitem�sH


zReTests.test_match_getitemcCs0|jtjdd�j�d �x,dtd�fD]}|jtjd|�j�d!�q&Wx8dtd�td�td�fD]}|jtjd|�j�d"�q`Wx<d#D]4\}}d|||f}|jtj|||�j�d$�q�W|jtjd
d�j�d%�|jtjdd�j�d&�|jtjdd�j�d'�|jtjdd�j�d(�|jtjdd�j�d)�|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd�j�d*�|jtjdd�j�d+�|jtjdd�j�d,�|jtj	d�jdddd�j�d-�|jtj	d
�jdddd�j�d.�|jtj	d�jdddd�j�d/�dS)0NrOrrCr�za|abr�sabsa|ab�àß�аб�𝒜𝒞z%s|%sz.*?$r�rDz.*?za.*?b�abbZaxxbr�za+zabc$zabc
zabc\Zz(?m)abc$z	ab(?=c)cd�abcdz
ab(?<=b)cdz
(?=a|ab)abr�)r.�endpos)rrC)rr�)rr�)r�r�r�)rr�)rrD)rrD)rr�)rrD)rr�)rr�)rr�)rr�)rCrD)rCrD)rCrD)
r%r)�	fullmatchrGrrr9rdrHr+)rr5rOr=�rrrr�test_re_fullmatch�s4 zReTests.test_re_fullmatchcCsr|jtjdd�j�d%�|jtjdd�j�d&�|jtjdd��|jtjdd��|jtjdd�j�d'�|jtjdd
�j�d(�|jtjdd
�j�d)�|jtjdd�j�d*�tjd�}|j|jd�j�d+�|j|jd�j�d,�|j|jd��|j|jd��djdd�tdd-�D��}d|}|jtj|d�j�d.�|j	ddd�|j	d d!d"�|j	d#d$d�dS)/Nz^(\()?([^()]+)(?(1)\))$z(a)�(rOza)z(az^(?:(a)|c)((?(1)b|d))$r�r=�cd�dz^(?:(a)|c)((?(1)|d))$r{z(?P<g1>a)(?P<g2>b)?((?(g2)c|d))r�riZadZabdr�r�css|]}d||fVqdS)z
x(?P<a%d>%x)yNr)r�r�rrrr�&sz2ReTests.test_re_groupref_exists.<locals>.<genexpr>rCr�z(?:%s)(?(200)z)r�rr�z
(?P<a>)(?(0))zbad group numberr]z
()(?(1)a|bz"missing ), unterminated subpatternr�z
()(?(1)a|b|c)z/conditional backref with more than two branches)r�rO)NrO)rOr=)Nr�)Nr�)rOr{)rOr=ri)rONr�r�)rr�)
r%r)rIr�rHr+r�r�rGr2)r�pr�rrr�test_re_groupref_existss<
zReTests.test_re_groupref_existscCs@ddlm}|jdd|dd|d�|jd|d|d	�dS)
Nr)�	MAXGROUPSz()z\g<%s>rZzinvalid group reference %drDz(?P<a>)(?(%d))r])�
sre_constantsr�r6r2)rr�rrr�test_re_groupref_overflow1s

z!ReTests.test_re_groupref_overflowcCs�|jtjdd�j�d�|jtjdd�j�d�|jtjdd��|jtjdd��|jtjdd	�j�d�|jtjd
d�j�d�|jdd
d�dS)Nz^(\|)?([^()]+)\1$z|a|r�rOz^(\|)?([^()]+)\1?$za|z|az^(?:(a)|c)(\1)$Zaaz^(?:(a)|c)(\1)?$riz(abc\1)zcannot refer to an open groupr�)r�rO)NrO)rOrO)NN)r%r)rIr�rHr2)rrrr�test_re_groupref8szReTests.test_re_grouprefcCs"|jtjdd�j�ddd��dS)Nz#(?P<first>first) (?P<second>second)zfirst second�first�second)r�r�)r%r)rI�	groupdict)rrrr�test_groupdictFs
zReTests.test_groupdictcCs8|jtjdd�jd�d�|jtjdd�jd�d�dS)	Nz#(?P<first>first) (?P<second>second)zfirst secondz\2 \1 \g<second> \g<first>zsecond first second firstz#(?P<first>first)|(?P<second>second)r�z
\2 \g<second>� )r%r)rI�expand)rrrr�test_expandKs

zReTests.test_expandcCs8|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd�jd�d�|jtjd	d�jd�d�|jtjd
d�jd�d�|jtjdd�jd�d�|jtjdd�jd�d�|jtjd
d�jd�d�|jtjdd�jd�d�|jtjdd�jd�d�|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jddd �dS)!Nz	^(\w){1}$r�z
^(\w){1}?$z^(\w){1,2}$z^(\w){1,2}?$z	^(\w){3}$rCriz^(\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}$rEz^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�)rHr)rIr%rL�
assertTruer2)rrrr�test_repeat_minmaxUs:zReTests.test_repeat_minmaxc
CsF|jtjd�jd�|jtjd�jtjtjB�|jtjd�jd�|jtjd�ji�|jtjd�jddd��|jtj	dd�j
d�|jtj	dd�jd�|jtj	dd�jd�|jtj	dd�j
d
�|jtj	dd�j�tjd�}|jt|j�d	d
g�|j|jd
d�|jt��d|jd
<WdQRX|j|jd
d�dS)Nz
(?i)(a)(b)r�z(?i)(?P<first>a)(?P<other>b)rC)r��otherz(a)rOrr�r��rrC�rrC)r�r�)r%r)r+r'�flagsro�Ur��
groupindexrIr.r�r5�regsr��sortedr(r�)rr�rrr�test_getattrys"
zReTests.test_getattrcCs�|jtjdd�jd�d�|jtjdd�jd�d�|jtjddtj�jd�d�|jtjddtj�jd�d�|jtjddtj�jd	�d
�|jtjdd
tj�jd	�d
�|jtjddtj��|jtjdd
�jd�d�|jtjdd�jd�d�|jtjdd
tj�jd�d�|jtjddtj�jd�d�|jtjddtj�jd	�d�|jtjddtj�jd	�d�|jtjddtj��|jtjdd�jd	�d�|jtjdd�jd	�d�|jtjddtj�jd	�d�|jtjddtj�jd	�d�dS)Nz\b(b.)\bzabcd abc bcd bxrCZbxz\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
sabcs	^\Aabc\Z$z\d\D\w\W\s\Sz1aa! as\d\D\w\W\s\Ss1aa! a)r%r)rFrL�ASCII�MrH�LOCALE)rrrr�test_special_escapes�s<











zReTests.test_special_escapesc
CsP|jddd�|jtjdd�j�d�|jtjdd��|jtjdd�j�d�|jtjdd	�j�d	�|jtjdd
��|jtjdd�j�d�|jtjdd
��|jtjdd�j�d�|jtjdd
��tj�x8dD]0}|j|��|jtj	tj
d|�WdQRXq�Wx:dD]2}|j|��|jtj	tj
d|�WdQRX�qWdS)Nr[zbad escape (end of pattern)rz\(r��)z\\z[\]]�]�[z[a\-c]rr=z[\^a]+za^Z!ceghijklmopqyzCEFGHIJKLMNOPQRTVXYz\%cZ$ceghijklmopqyzABCEFGHIJKLMNOPQRTVXYZz[\%c])r2r%r)rIrLrH�purger,r(r*r+)rrirrr�test_other_escapes�s"
$
zReTests.test_other_escapescCs�|jtjdd�jd�d�|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jttj	dd��d�|jttj	dd��d	�|jttj	dd
��d	�|jttj	dd��d	�|jttj	dd
��d�dS)Nz	\b(abc)\br�rCz\bz\Br{rOr�rr�z   )
r%r)rFrLr�rI�assertFalserHr�r@)rrrr�test_string_boundaries�szReTests.test_string_boundariescCsR|jtjdd�jd�d�ddjtttddd	���}|jtj|d
�j�d
�dS)Nu
([∢∣])u∢rCz[%s]r{�r���u!i)r%r)rIrLr��maprfr�)rr�rrr�test_bigcharset�s
zReTests.test_bigcharsetcCsBtjdjdd�td�D���}|j|jd��|j|jd��dS)Nr�css|]}d|VqdS)z%dNr)r�r!rrrr��sz,ReTests.test_big_codesize.<locals>.<genexpr>i'Z1000Z9999)r)r+r�r�r�rI)rr�rrr�test_big_codesize�szReTests.test_big_codesizecCs@|jtjddtj�jd�d�|jtjddtj�jd�d�dS)Nza.bza
brza.*bza

b)r%r)rI�DOTALLrL)rrrr�test_anyall�szReTests.test_anyallcCs�|jtjdd�jd�d�|jtjdd�jd�d�|jtjdd�jd�d�|jtjdd�jd�d�|jtjd	d
�jd�d�|jtjdd�jd�d�|jtjd
d
�jd�d�|jtjdd
�jd�d�|jtjdd�jd�d�|jtjdd�jd�d�|jtjdd�jd�d�|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��dS)Nz
(a(?=\s[^a]))za brCrOz(a(?=\s[^a]*))z(a(?=\s[abc]))z(a(?=\s[abc]*))za bcz(a)(?=\s\1)za az(a)(?=\s\1*)za 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)rIrLr�rH)rrrr�test_lookahead�s*zReTests.test_lookaheadcCsl|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd	��|jtjd
d��|jtjdd	��|jtjdd��|jtjd
d��|jtjdd��|jtjdd��|jtjdd��|jtjtjd�|jtjdd��|jtjdd��|jtjtjd�|jtjtjd�|jtjtjd�|jtjtjd�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))r�r)rIrHr(r*r+)rrrr�test_lookbehind
s(zReTests.test_lookbehindcCs|jtjddtj�jd�d�|jtjddtj�jd�d�|jtjddtj�jd�d�|jtjd	d
tj�jd�d
�|jtjddtj�jd�d�|jtjdd
tj�jd�d
�|jtjd
dtj�jd�d�|jtjddtj�jd�d�|jtjddtj�jd�d�|jtjddtj�jd�d�|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��dS)Nr��ABCrsabcsABCz	(a\s[^a])za brCz
(a\s[^a]*)za bbz
(a\s[abc])z(a\s[abc]*)z	((a)\s\2)za az
((a)\s\2*)za aaz((a)\s(abc|a))z((a)\s(abc|a)*)�KuK�kz\u212aruſrAz\u017fz\ufb05ustz\ufb06uſt)r%r)rIrorLr�)rrrr�test_ignore_case$s(zReTests.test_ignore_casecCs�|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjd	d
tj��|jtjdd
tj��|jtjdd
tj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��dS)Nz[19A]rmz[19a]rOs[19A]�As[19a]r8z[19K]uKz[19k]z
[19\u212a]r�r�z[19S]uſz[19s]z
[19\u017f]rrAz
[19\ufb05]ustz
[19\ufb06]uſt)r�r)rIro)rrrr�test_ignore_case_set>s$zReTests.test_ignore_case_setcCs@|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjdd	tj��|jtjd
d	tj��|jtjd
dtj��|jtjddtj��|jtjdd
tj��|jtjddtj��|jtjdd
tj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjdd tj��|jtjd!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]uKz[j-m]z[\u2129-\u212b]r�r�z[R-T]uſz[r-t]z[\u017e-\u0180]rrAz[\ufb04-\ufb05]ustz[\ufb06-\ufb07]uſt)r�r)rIrorH)rrrr�test_ignore_case_rangeUs4zReTests.test_ignore_case_rangecCs|jtjdd�jd�d�dS)Nz(\s)r�rC)r%r)rIrL)rrrr�
test_categoryvszReTests.test_categorycCsddl}|j|jtd�d�td��|j|jtd�tj�td��|j|jtd�tj�td��|j|jtd�tj�td��|jtjddtj	�j
d�d�|jtjddtj	�j
d�d�|jtjddtj	tjB�j
d�d�|jtjddtj	tjB�j
d�d�dS)NrrmrOr�r�sabcsABC)
�_srer%�getlower�ordr)r��UNICODEr�rIrorLrm�L)rrrrr�
test_getlowerys$zReTests.test_getlowercCs8|jtjdd�jd�d�|jtjdd�jd�d�dS)Nz\s([^a])z brCr=z	\s([^a]*)z bbZbb)r%r)rFrL)rrrr�test_not_literal�szReTests.test_not_literalcCs8|jtjdd�jd�d�|jtjdd�jd�d�dS)Nz\s(b)z brCr=za\sza r)r%r)rFrL)rrrr�test_search_coverage�szReTests.test_search_coveragecCsr|dkr"|dkr"|}dt|�f}n|dks2|dkr:td��|||�}|j|�|j|j�|�|j|j�|�dS)Nrz@If match is not None, span should be specified (and vice versa).)r�rnr�r%rLrG)rr'�textrIrGZmatcherrWrrr�assertMatch�s

zReTests.assertMatchcCs�tjtjd}djdd�td�D��}xl|D]d}||krN|jtj|�|�n2|dkrj|jtj|�d�n|jtj|�d|�|jtj|�|�q.W|jtj|�|�dS)	Nrr{css|]}t|�VqdS)N)rf)r�r�rrrr��sz)ReTests.test_re_escape.<locals>.<genexpr>r�rrz\000r[)	r5�
ascii_letters�digitsr�r�r%r)�escaper)r�alnum_charsr�rirrr�test_re_escape�s
zReTests.test_re_escapecCs�tjtjdjd�}ttd��}xv|D]n}t|g�}||krR|jtj|�|�n2|dkrn|jtj|�d�n|jtj|�d|�|j	tj|�|�q(W|j	tj|�|�dS)Nr�asciir�rs\000�\)
r5rr�encode�bytesr�r%r)rr)rrr�r�r=rrr�test_re_escape_byte�s

zReTests.test_re_escape_bytecCsHd}tj|�}|j|d�|j||�|jdtjd�|ddtj�dS)	Nuxxx☠☠☠xxxuxxx\☠\☠\☠xxxz.%s+.u☠ux☠☠☠xr�ra)r�ra)r)rr%rrF)rrAZ	s_escapedrrr�test_re_escape_non_ascii�s
z ReTests.test_re_escape_non_asciicCsXdjd�}tj|�}|j|d�|j||�tjtjdjd��|�}|jt|�d�dS)Nu	y☠y☠yzutf-8sy\�\�\�y\�\�\�yu☠r�)rr)rr%rr@r�)rr=Z	b_escaped�resrrr�test_re_escape_non_ascii_bytes�s

z&ReTests.test_re_escape_non_ascii_bytescCs`ddl}tjdtj�}x8t|jd�D]&}|j||�}|j|�}|j||�q&Wddlm	}dS)Nrza(?:b|(c|e){1,2}?|d)+?(.)rC)�_compile)
�pickler)r+rr�ZHIGHEST_PROTOCOL�dumps�loadsr%r)rr Zoldpat�protoZpickledZnewpatrrrr�
test_pickling�s
zReTests.test_picklingcCsT|jtjtj�|jtjtj�|jtjtj�|jtjtj	�|jtj
tj�dS)N)r%r)ro�
IGNORECASErr�r��	MULTILINErr�rc�VERBOSE)rrrr�test_constants�s
zReTests.test_constantscCstx6tjtjtjtjtjtjgD]}|jtjd|��qWx6tjtjtjtjtjtj	gD]}|jtjd|��qVWdS)Nz	^pattern$s	^pattern$)
r)ror�rcrrmr�r�r+r)r�flagrrr�
test_flags�s""zReTests.test_flagscCsF�xxd4D�]n}|d	kr�|jtjd
|t|���|jtjd|t|�d��|jtjd|t|�d��|jtjd|t|���|jtjd|t|�d��|jtjd|t|�d��|dk�r"|jtjd|t|���|jtjd|t|�d��|jtjd|t|�d��|jtjd|t|���|jtjd|t|�d��|jtjd|t|�d��qW|jtjdd��|jtjdd��|jtjd d!��|jtjd"d#��|jd$d%d�|jd&d'd(�|jd)d*d�|jd+d*d�|jd,d-d�|jd.d-d�|jd/d0d�|jd1d0d�|jd2d3d�dS)5Nrrbr�� �@��r�r����z\%03oz\%03o0�0z\%03o8rtz\x%02xz\x%02x0z\x%02xz�zz\u%04xz\u%04x0z\u%04xzz\U%08xz\U%08x0z\U%08xzz\0rrz\08z8z\01rsz\018z8z\567z0octal escape value \567 outside of range 0-0o377z\911zinvalid group reference 91rCz\x1zincomplete escape \x1z\x1zz\u123zincomplete escape \u123z\u123zz	\U0001234zincomplete escape \U0001234z
\U0001234zz
\U00110000zbad escape \U00110000)rrbr�r+r,r-r.r�r�r/r0r1)r�r)rIrfr2)rr�rrr�test_sre_character_literals�s<
"z#ReTests.test_sre_character_literalscCs�x�d,D�]�}|d	kr�|jtjd
|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|dk�r>|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|�d��|jtjd|t|�d��qW|jddd�|jd d!d�|jd"d#d�|jd$d%d�|jd&d'd�|jd(d)d�|jtjd*d+��dS)-Nrrbr�r+r,r-r.r�r����z[\%o]z[\%o8]z[\%03o]z[\%03o0]z[\%03o8]z[\x%02x]z	[\x%02x0]z	[\x%02xz]z[\u%04x]z	[\u%04x0]z	[\u%04xz]z[\U%08x]z	[\U%08x0]r2z	[\U%08xz]r3z[\567]z0octal escape value \567 outside of range 0-0o377rCz[\911]z
bad escape \9z[\x1z]zincomplete escape \x1z[\u123z]zincomplete escape \u123z[\U0001234z]zincomplete escape \U0001234z[\U00110000]zbad escape \U00110000z[\U0001d49c-\U0001d4b5]u𝒞)rrbr�r+r,r-r.r�r�r5r6r7)r�r)rIrfr2)rr�rrr�!test_sre_character_class_literals�s4
"z)ReTests.test_sre_character_class_literalscCs�x�d$D]�}|jtjd	|j�t|g���|jtjd
|j�t|g�d��|jtjd|j�t|g�d
��|jtjd|j�t|g���|jtjd|j�t|g�d��|jtjd|j�t|g�d��qW|jtjtjd�|jtjtjd�|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jddd�|jddd �|jd!d"d�|jd#d"d�dS)%Nrrbr�r+r,r-r.r�z\%03oz\%03o0�0z\%03o8�8z\x%02xz\x%02x0z\x%02xz�zs\u1234s
\U00012345s\0�s\08s8s\01�s\018s8s\567z0octal escape value \567 outside of range 0-0o377s\911zinvalid group reference 91rCs\x1zincomplete escape \x1s\x1z)rrbr�r+r,r-r.r�)	r�r)rIrrr(r*r+r2)rr�rrr�test_sre_byte_literalss&
 $$ $(zReTests.test_sre_byte_literalscCsd�xdD�]}|jtjd	|j�t|g���|jtjd
|j�t|g���|jtjd|j�t|g���|jtjd|j�t|g���|jtjd
|j�t|g���|jtjd|j�t|g���|jtjd|j�t|g���|jtjd|j�t|g���qW|jtjtjd�|jtjtjd�|jddd�|jddd�|jddd�dS)Nrrbr�r+r,r-r.r�z[\%o]z[\%o8]z[\%03o]z[\%03o0]z[\%03o8]z[\x%02x]z	[\x%02x0]z	[\x%02xz]s[\u1234]s[\U00012345]s[\567]z0octal escape value \567 outside of range 0-0o377rCs[\911]z
bad escape \9s[\x1z]zincomplete escape \x1)rrbr�r+r,r-r.r�)	r�r)rIrrr(r*r+r2)rr�rrr�test_sre_byte_class_literals.s        $z$ReTests.test_sre_byte_class_literalscCsf|jddd�|jddd�|jddd�|jddd�|jddd	�|jd
dd	�|jdd
d	�dS)Nr�zunterminated character setrz[^z[az[a-z[\w-b]zbad character range \w-brCz[a-\w]zbad character range a-\wz[b-a]zbad character range b-a)r2)rrrr�test_character_set_errors@sz!ReTests.test_character_set_errorscCsR|jtjdd�jd�d�|jtjdd�jd�d�|jtjdd�jd�d�dS)	Nz(a)|(b)r=rCr�r�r�r�)r�r�)r%r)rI�start�endrG)rrrr�test_bug_113254KszReTests.test_bug_113254cCsp|jtjdd�j�|jtjdd�jd�|jtjdd�jd�|jtjdd�jd�|jtjdd�jd�dS)	Nz(a)?arOz(a)(b)?br�rCz(?P<a>a)(?P<b>b)?bz(?P<a>a(b))z((a)))rHr)rI�	lastindexr%�	lastgroup)rrrr�test_bug_527371Ps
zReTests.test_bug_527371cCs�|jtjdddd�jd�d�|jtjdddd	ddd
�jd�d�|jtjddd
d�jd�d�|jtjdddd�jd�d�dS)Nz.*?ci'r�r�ri!Nz.*?cdi�riZcdei#Ni Nr��deia�z(a|b)*?c)r%r)rIrBrF)rrrr�test_bug_418626Xs
"("zReTests.test_bug_418626cCs,dtjd�d}|jtj|�o"dd�dS)Nr�u‹r�rC)r)rr%r+)rr�rrr�test_bug_612074dszReTests.test_bug_612074cCsf|jtjddd�jd�d�|jtjdddd�jd�d�|jtjdddd�jd�d�dS)Nz(x)*iP�r!rCz(x)*yr"z(x)*?y)r%r)rIrL)rrrr�test_stack_overflowhs"zReTests.test_stack_overflowcCsLxFdD]>}x8dD]0}|jd||fdd�|jd	||fdd
�qWqWdS)
N�*�+�?�{1,2}r{z%s%sznothing to repeatrz(?:%s%s)rD)rKrLrMrN)r{rM)r2)r�reps�modrrr�test_nothing_to_repeatos

zReTests.test_nothing_to_repeatc
Csjxdd	D]\}xVd
D]N}||}x@dD]8}x2dD]*}||}|jd||fddt|��q,Wq"WqWqWdS)
NrKrL�{1,2}r{rMzx%s%szmultiple repeatrC)rKrLrR)r{rM)rKrLrMrR)r{rM)r2r�)rZ
outer_repsZ	outer_mod�outer_opZ
inner_repsZ	inner_mod�inner_oprrr�test_multiple_repeatws



zReTests.test_multiple_repeatcCsp|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��dS)Nz(?:a?)*yr3z(?:a?)+yz(?:a?){2,}yz	(?:a?)*?yz	(?:a?)+?yz(?:a?){2,}?y)rHr)rI)rrrr� test_unlimited_zero_width_repeat�sz(ReTests.test_unlimited_zero_width_repeatcCs�dd�}dd�}dd�}dd�}td	|fd
|fd|fd|fdg�}|j|jjd�j�|j|jd�dddddddddg	df�dS)NcSs|S)Nr)�scanner�tokenrrr�s_ident�sz%ReTests.test_scanner.<locals>.s_identcSsd|S)Nzop%sr)rWrXrrr�
s_operator�sz(ReTests.test_scanner.<locals>.s_operatorcSst|�S)N)�float)rWrXrrr�s_float�sz%ReTests.test_scanner.<locals>.s_floatcSst|�S)N)rK)rWrXrrr�s_int�sz#ReTests.test_scanner.<locals>.s_intz[a-zA-Z_]\w*z\d+\.\d*z\d+z=|\+|-|\*|/�\s+r{zsum = 3*foo + 312.50 + bar�sumzop=rDzop*Zfoozop+g�s@Zbar)r^N)r	r�rWr'r%�scan)rrYrZr\r]rWrrr�test_scanner�szReTests.test_scannercCsJxDd	D]<}|jtjd|d�j�d
�|jtjd|d�j�d�qWdS)Nr{rMrKz
((.%s):)?zr3za:z�a:rO)r{rMrK)NN)rbrO)r%r)rIr�)r�oprrr�test_bug_448951�s

zReTests.test_bug_448951cCs�|jtjdd�j�d�|jtjdd�j�d�|jtjdd�j�d�|jtjdd�j�d�|jtjd	d�j�d�|jtjd
d�j�d�|jtjdd�j�d�|jtjd
d�j�d�dS)Nz	^((a)|b)*r�r=rOz^(([ab])|c)*riz^((d)|[ab])*z
^((a)c|[ab])*z^((a)|b)*?cz^(([ab])|c)*?dr�z^((d)|[ab])*?cz^((a)c|[ab])*?c)r=rO)rir=)r=N)r=N)r=rO)rir=)r=N)r=N)r%r)rIr�)rrrr�test_bug_725106�s zReTests.test_bug_725106cCs4|jtjdd�j�d�|jtjdd�j�d�dS)Nz(a)(?:(?=(b)*)c)*r�rOz(a)((?!(b)*))*)rON)rONN)r%r)rIr�)rrrr�test_bug_725149�szReTests.test_bug_725149cCs2Gdd�dt�}tj|d��}|j|jd��dS)Nc@seZdZdS)z+ReTests.test_bug_764548.<locals>.my_unicodeN)rrrrrrr�
my_unicode�srgr�rP)rMr)r+rHrI)rrgr�rrr�test_bug_764548�szReTests.test_bug_764548cCstjdd�}|jdd�|D�dddg�tjd�}|jddd	�}|jd
d�|D�dddg�tjd�}|jddd	d�}|jdd�|D�dddg�tjd�}|jdd	dd
�}|jdd�|D�dddg�tjd�}|jdddd�}|jdd�|D�ddg�dS)Nz:+z
a:b::c:::dcSsg|]}|jd��qS)r)rL)r��itemrrr�
<listcomp>�sz)ReTests.test_finditer.<locals>.<listcomp>r�z::z:::rCr]cSsg|]}|jd��qS)r)rL)r�rirrrrj�s)r.r�cSsg|]}|jd��qS)r)rL)r�rirrrrj�s)r�r.cSsg|]}|jd��qS)r)rL)r�rirrrrj�srDrbcSsg|]}|jd��qS)r)rL)r�rirrrrj�s)r)r:r%r+)r�iterr�rrr�
test_finditer�s&



zReTests.test_finditercCs|jtjd�tjd��dS)NZ
bug_926075s
bug_926075)ZassertIsNotr)r+)rrrr�test_bug_926075�szReTests.test_bug_926075cCs&d}|jtj|�jd�dddg�dS)Nu[.。.。]za.b.crOr=ri)r%r)r+r�)rr'rrr�test_bug_931848�szReTests.test_bug_931848cCsdtjdd�}|jt|�j�d�|jtt|�tjd�jd�}|j|j	�j�d�|j
|j	��dS)Nz\sza brCr�)rCr�)rCr�)r)r:r%�nextrGr(�
StopIterationr+rWrFrH)rrkrWrrr�test_bug_581080�szReTests.test_bug_581080cCsFtjdd�}|jt|�j�d�|jt|�j�d�|jtt|�dS)Nz.*Zasdfrr�)rr�)r�r�)r)r:r%rorGr(rp)rrkrrr�test_bug_817234�szReTests.test_bug_817234cCsbdddg}x&|D]}|jtjd|�jd�|�qWdddd	g}x|D]}|jtjd|��qDWdS)
N�7u๘u0z^\d$ruⅥu〹u₂u㊴)r%r)rIrLrH)rZdecimal_digitsr!Znot_decimal_digitsrrr�
test_bug_6561�s

zReTests.test_bug_6561cCsVddl}xHdD]@}|j|�}|jtjd�j|��|jtjd�j|�j�f�qWdS)NrZbBuhHiIlLfdsblar�)�arrayrHr)r+rIr%r�)rru�typecoderOrrr�test_empty_array
s


zReTests.test_empty_arraycXCsd}d}tjd|tjtjB�}|jd|�}|j|�tjd|tjtjB�}|jd|�}|j|�tjd|tj�}|jd|�}|j|�tjd|tj�}|jd|�}|j|�tjd|�}|jd|�}|j|�tjd|�}|jd|�}|j|�tjd|�}|jd|�}|j|�tjd|�}|jd|�}|j|�|jtjd||��|jtjd||��|jtjd	||tj��|jtjd
||��|jtjd||tj��|d}|jt��}|jtj||��WdQRX|j	t
|jd
j�d|�|j	|jd
j
t�|ddd}|jt��}|jtj||��WdQRX|j	t
|jd
j�d|dd��|j	|jd
j
t�tj��ntjdt�d}|jt��}|jtj|d��WdQRX|j	t
|jd
j�d|�|j	|jd
j
t�WdQRX|jt�� |jtjd|d|��WdQRX|jt�� |jtjd|d|��WdQRX|jt��|jtjd||��WdQRX|jt��|jtjd||��WdQRX|jt��|jtjd||��WdQRX|jt�� }|jtjd|d|��WdQRX|jt
|jd
j�d�|j	|jd
j
t�|jt�� }|jtjd|d|��WdQRX|jt
|jd
j�d�|j	|jd
j
t�|jt�� }|jtjd |d|��WdQRX|jt
|jd
j�d�|j	|jd
j
t�dS)!NuẠuạrVrYz(?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.?�dz7Flags not at the start of the expression %r (truncated)�r*sA(?i)r8z	(?s).(?i)z(?i) z (?x)z^(?i)z$|(?i)z(?:(?i)r�zFlags not at the startz
(^)?(?(1)(?i)z($)?(?(1)|(?i))r)r+rorrIr�rcrgrhr%rM�warnings�message�filename�__file__�catch_warnings�simplefilter�BytesWarningZassertRegexr�)rZ
upper_charZ
lower_charr��qZwarnsrrr�test_inline_flagss�










$$   $zReTests.test_inline_flagscCs�tjd�}|j|jdd�d�|j|jdd�d�|j|jdd�d�tjdtj�}|j|jdd�d	�|j|jdd�d
�|j|jdd�d�dS)N�$�#za
b
za
b#
#za
b
cza
b
c#rYz#
#za#
b#
#za#
b#
c#)r)r+r%r4r&)rr'rrr�test_dollar_matches_twice{s
z!ReTests.test_dollar_matches_twicecCs�tjd�}tjd�}|jt|jd�|jt|jd�|jt|jdd�|jt|jdd�|jt|jdd�|jt|jdd�|jt|jdd�|jt|jdd�dS)NrV�.r�r=rir�)r)r+r(r�rIr4)rr��bpatrrr�test_bytes_str_mixing�s

zReTests.test_bytes_str_mixingcCs�xPdtjfD]B}tjd|tjB�}|j|jd��tjd|�}|j|jd��qWtjdtjtjB�}|j|jd��tjdtj�}|j|jd��tjdtj�}|j|jd��tjd�}|j|jd��xPdtjfD]B}tjd|tjB�}|j|jd��tjd	|�}|j|jd��q�W|jt	tjd	tj�|jt	tjd
�|jt	tjdtjtjB�|jt	tjdtj�|jt	tjdtj�|jt	tjd�dS)
Nr�ÀrRz\wu(?a)Àz(?a)\w����s\ws(?u)\wz(?u)\wz(?au)\w)
r)rr+r%r�rIr�rHr(rn)rr�r�rrr�test_ascii_and_unicode_flag�s0
z#ReTests.test_ascii_and_unicode_flagc

Cs�ddl}|j|j�\}}x�tdd�D]~}y`t|g�j|�}|j�}||krLw$|j|�}t|�dkrdw$|j|�|krtw$t	j
t|g��}PWq$ttfk
r�Yq$Xq$Wd}d}t	j
|t	jt	jB�}	|r�|j|	j|��t	j
d|t	j�}	|r�|j|	j|��t	j
|t	j�}	|�r |j|	j|��t	j
dt	j�}	|�rD|j|	j|��t	j
d�}	|�rd|j|	j|��t	j
d�}	|�r�|j|	j|��|jtt	j
d	t	j�|jtt	j
d
�|jtt	j
dt	jt	jB�|jtt	j
dt	j�|jtt	j
dt	j�|jtt	j
d
�dS)Nrr.r�rCrs(?L)s\ws(?L)\wr{z(?L)r�s(?a)s(?aL))�locale�	getlocale�LC_CTYPEr�r�decode�lowerrr�r)r�UnicodeErrorr�r+r�r%r�rIrHr(rnr�)
rr�r�encr�riZsletterZbletterr�r�rrr�test_locale_flag�sV



zReTests.test_locale_flagcCs�|jtjdd��|jtjdd��|jtjddtj��|jtjddtj��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjd	d
tj��|jtjd	dtj��|jdd
d�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jd d!d"�|jd#d$d�|jd%d$d�|jd&dd�dS)'Nz(?i:a)bZAbZaBz(?-i:a)bz
(?i:(?-i:a)b)z	(?x: a) bza bz a bz
(?-x: a) bz abr�z(?a:\w)z,bad inline flags: cannot turn on global flagrDz(?a)(?-a:\w)z-bad inline flags: cannot turn off global flagrbz(?i-i:a)z(bad inline flags: flag turned on and offr�z(?-zmissing flagz(?-+z(?-zzunknown flagz(?-iz	missing :r�z(?-i)z(?-i+z(?-izz(?i:z"missing ), unterminated subpatternrz(?izmissing -, : or )z(?i+z(?iz)r�r)rIrHr%r'r2)rrrr�test_scoped_flags�s6zReTests.test_scoped_flagscCs�tjd�}|j|jdd�d�tjd�}|j|jdd�d�tjd�}|j|jd	d
�d�d�tjd
�}|j|jdd�d�tjd�}|j|jdd�d�tjd�}|j|jdd
�d�d�dS)Nza(\w)zb\1r�r�za(.)uaሴubሴz..cSsdS)NrMr)rWrrrrXsz'ReTests.test_bug_6509.<locals>.<lambda>Za5rMsa(\w)sb\1sacsbcsa(.)sa�sb�s..cSsdS)Nsbytesr)rWrrrrXssa5sbytes)r)r+r%r4)rr�rrr�
test_bug_6509�s





zReTests.test_bug_6509cCs|ddl}dd}|jttjdi�|jt��|jdd|gdgg�WdQRX|jt��|jidgdgg�WdQRXdS)Nrr�r.rOr�)rr(r�r)r:�
OverflowErrorr+)rrZ
long_overflowrrr�test_deallocs zReTests.test_dealloccCs^|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��dS)Nz123.*-z123abc-u123é-u123€-u123􏿿-u
123é€􏿿-)r�r)rF)rrrr�test_search_dot_unicodes
zReTests.test_search_dot_unicodecCsPtjd�}|j|tj�tj|�}|j|tj�|j||�|jttjd�dS)Nzrandom patternr)r)r+�assertIsInstance�
_pattern_typerr(r�)rr'Zsame_patternrrr�test_compile&s

zReTests.test_compilerC)�sizeZmemusecCsBd|}tjd|�}|j|�|j|j�|�|j|j�|�dS)NrOr�)r)rFZassertIsNotNoner%rArB)rr�rArWrrr�test_large_search0s

zReTests.test_large_searchr�r�cCs:d|}tjdd|�\}}|j||�|j||d�dS)NrOr{rC)r)r�r%)rr�rAr��nrrr�test_large_subn;szReTests.test_large_subncCs2|jtjdd�dg�|jtjdd�j�d�dS)	Nz	(?i)(a)\1uaa ĀrOz
(?s).{1,3}uĀĀrr�)rr�)r%r)r@rIrG)rrrr�test_bug_16688CszReTests.test_bug_16688cCsdd}|jtjd|�j�d�|jtjd|�j�d�|jtjd|�j�d�|jtjd|�j�d�|jtjd
|�j�d�|jtjd|�j�d�|jttjdd
d�|jttjdd
d�|jttjdd
d�|jttjdd
dd
df�dS)Nr!i��z.{65535}r�z	.{,65535}z
.{65535,}?z.{65536}�z	.{,65536}z
.{65536,}?z.{%d}r�r.z.{,%d}z.{%d,}?z.{%d,%d}�)rr�)rr�)rr�)rr�)rr�)rr�)r%r)rIrGr(r�r+)rr5rrr�test_repeat_minmax_overflowIsz#ReTests.test_repeat_minmax_overflowc
Cs�yddlm}Wntk
r.|jd�YnXdd}|jtjd|d|��|jtjd|d|�j�d
�|jtjd	|d|��|j	t
tjd|�|j	t
tjd|�|j	t
tjd	|�dS)Nr)�	MAXREPEATz requires _sre.MAXREPEAT constantr!順z.{%d}rCz.{,%d}z.{%d,}?)rr�)rr��ImportError�skipTestrHr)rIr%rGr(r�r+)rr�r5rrr�%test_repeat_minmax_overflow_maxrepeatXsz-ReTests.test_repeat_minmax_overflow_maxrepeatcCs|jddd�dS)Nz
(?P=<foo>)z#bad character in group name '<foo>'r�)r2)rrrr�$test_backref_group_name_in_exceptiongsz,ReTests.test_backref_group_name_in_exceptioncCs|jddd�dS)Nz
(?P<?foo>)z"bad character in group name '?foo'r�)r2)rrrr�test_group_name_in_exceptionlsz$ReTests.test_group_name_in_exceptioncCs|xvdD]n}xhdD]`}d||d}|jtj|tj�jd�dg|d	�|j�}|jtj|tj�jd
�d
g|d	�qWqWdS)
NrKrLrM�{1}r{rVZyzrP)r#sxyz)rKrLrMr�)r{rM)r%r)r+rr@r)rrOrPr'rrr�test_issue17998qs

zReTests.test_issue17998cCs�xDdtd�fD]4}tjd|�}|jt|�dt|�jt|�jf�qWxPdtd�t	d�t
d�fD]4}tjd|�}|jt|�dt|�jt|�jf�q`Wttjdd��\}}|jt|�d	t|�jt|�jf�|jt|�d
t|�jt|�jf�dS)Nz
[abracadabra]z(.+)(.*?)\1z1<%s.%s object; span=(1, 12), match='abracadabra'>s
[abracadabra]s(.+)(.*?)\1z2<%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'>)
rr)rFr%�reprrrrrr9rdrr:)rr5rWr�r�rrr�test_match_repr{s
zReTests.test_match_reprcCsrxldD]d}x^dD]V}tjd||f�}|jd�}|j|jd�d	�|j|jd
�d�|j|jd�d
�qWqWdS)N�{0,}rKrL�{1,187}rMz^((x|y)%s)%sZxyyzyrZxyyrCr{r�r")r�rKrLr�)r�rKrM)r)r+rIr%rL)rrSrTr�rWrrr�
test_bug_2537�s


zReTests.test_bug_2537cCsld}t��}tj|tj�WdQRXd}|j|j�|�t��}tj|tj�WdQRX|j|j�|�dS)Nz(\.)(?:[ch]|py)(?(1)$|: )z�SUBPATTERN 1 0 0
  LITERAL 46
SUBPATTERN None 0 0
  BRANCH
    IN
      LITERAL 99
      LITERAL 104
  OR
    LITERAL 112
    LITERAL 121
SUBPATTERN None 0 0
  GROUPREF_EXISTS 1
    AT AT_END
  ELSE
    LITERAL 58
    LITERAL 32
)rr)r+�DEBUGr%�getvalue)rr��out�dumprrr�test_debug_flag�szReTests.test_debug_flagcCs�tjd�}|j|jdddd�j�d
�|j|jdddd�j�d�|j|jdddd�j�d�|j|jdddd�dg�|j|jdd	d
�dddg�|j|j	dddd�j�j�d�dS)Nz(ab)Zabracadabrarar])r5r.r�r\rDr�rC)r5r�r{Z	racadabra)rar\)rar\)rar\)rar\)
r)r+r%rIrGr�rFr@r�rW)rr�rrr�test_keyword_parameters�s
zReTests.test_keyword_parameterscCs |jtjddtj�j�d�dS)Nz[a-c]+r�rrD)rrD)r%r)r�rorG)rrrr�test_bug_20998�szReTests.test_bug_20998cCs�tjtj�}|jtjtj|�xDdD]<}ytjtj|�Wq$tjk
r^|jd|�Yq$Xq$Wtj�|j�|j	�tj�|j	�|j�dS)N�en_US.iso88591�
en_US.utf8ztest needs %s locale)r�r�)
r��	setlocaler�Z
addCleanup�Errorr�r)r��check_en_US_iso88591�check_en_US_utf8)rZ	oldlocale�locrrr�test_locale_caching�s
zReTests.test_locale_cachingcCs�tjtjd�|jtjddtjtjB��|jtjddtjtjB��|jtjddtjtjB��|jtjdd��|jtjdd��|jtjdd��dS)Nzen_US.iso88591s������s(?Li)��s(?Li)�s(?Li)�)r�r�r�r�r)rIrro)rrrrr��szReTests.check_en_US_iso88591cCs�tjtjd�|jtjddtjtjB��|jtjddtjtjB��|jtjddtjtjB��|jtjdd��|jtjdd��|jtjdd��dS)Nz
en_US.utf8s��r�r�s(?Li)��s(?Li)�s(?Li)�)	r�r�r�r�r)rIrrorH)rrrrr��szReTests.check_en_US_utf8cCs||jtj��}tjd�WdQRX|j}|j|jt�|j|jd�|j|j	d�|j|j
d�|j|jd�|j|j
t|��|jdt|��|jd|j
�|jtj��}tjd�WdQRX|j}|j|jt�|j|jd�|j|j	d�|jtj��}tjdtj�WdQRX|j}|j|j	d�|j|j
d	�|j|jd
�|j|j
t|��|jdt|��|jdt|��dS)
Nu(€))rDrCr�z at position 3s(�))zq
                (
                    abc
                )
                )
                (
                �Mr��z at position 77z(line 5, column 17))r(r)r*r+r-r�r'rMr%r.�lineno�colno�assertInr#ZassertNotInrr')rr0r1rrr�
test_error�s6zReTests.test_errorcCs�|jddd�|jddd�|jddd�|jdd	d
�|jddd
�|jddd
�|jddd
�|jddd�|jdd	d
�|jddd
�|jdd	d�dS)Nr�z"missing ), unterminated subpatternrz((a|b)z(a|b))zunbalanced parenthesisr�z(?Pzunexpected end of patternrDz(?z)zunknown extension ?zrCz(?iz)zunknown flagz(?izmissing -, : or )z(?#abczmissing ), unterminated commentz(?<z(?<>)zunknown extension ?<>z(?r�)r2)rrrr�test_misc_errorsszReTests.test_misc_errorscCs(|jdttj��|jdttj��dS)Nr�r�)r�rMr)rmr)rrrr�	test_enum%szReTests.test_enumc	Cs�tjdtj�}|j||�|j||k�tj�tjdtj�}|jt|�t|��|j||�tj�tjdtj�}|j||�tj�tjd�}|j||�|jt	��||kWdQRXdS)Nr�ZXYZ)
r)r+r%r%r�r��hash�assertNotEqualr(r�)r�pattern1�pattern2�pattern3Zpattern4rrr�test_pattern_compare+s
zReTests.test_pattern_comparec
Cs~tjd�}tj�tjd�}|jt|�t|��|j||�tj�tjd�}tj��tjdt�|j	||�WdQRXdS)Nsabcr�r*)
r)r+r�r%r�rzr~rr�r�)rr�r�r�rrr�test_pattern_compare_bytesHs



z"ReTests.test_pattern_compare_bytescCsptd�}tjd|�}tjd|�}|j|j�d�|j|j�d�d|dd�<|j|j�d�|j|j�d�dS)Nsabcdefghs[a-h]+s[e-h]+sefghsxyzr�)r9r)rFr%rL)rrArW�m2rrr�test_bug_29444YszReTests.test_bug_29444)N)N)N�)zrrrr&r2r6r?rBrJrNrjrkrlrprqr|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�rrrr
rrr)rIrrrrrr$r(r*r4r8r>r?r@rCrFrHrIrJrQrUrVrardrerfrhrlrmrnrqrrrtrwr�r�r�r�r�r�r�r�r�r�rrr�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrs�


	
	*0&5!,%
$ !


 
			f
. 


		$
rc@sleZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�PatternReprTestscCs|jttj|��|�dS)N)r%r�r)r+)rr'r�rrr�checkeszPatternReprTests.checkcCs|jttj||��|�dS)N)r%r�r)r+)rr'r�r�rrr�check_flagshszPatternReprTests.check_flagscCs|jdd�dS)Nzrandom patternzre.compile('random pattern'))r�)rrrr�test_without_flagsksz#PatternReprTests.test_without_flagscCs|jdtjd�dS)Nzrandom patternz+re.compile('random pattern', re.IGNORECASE))r�r)r%)rrrr�test_single_flagos
z!PatternReprTests.test_single_flagcCs |jdtjtjBtjBd�dS)Nzrandom patternz@re.compile('random pattern', re.IGNORECASE|re.DOTALL|re.VERBOSE))r�r)rorrc)rrrr�test_multiple_flagsssz$PatternReprTests.test_multiple_flagscCs0|jdtjd�|jdtjtjBtjBd�dS)Nzrandom patternzre.compile('random pattern')z5re.compile('random pattern', re.IGNORECASE|re.DOTALL))r�r)r�ror)rrrr�test_unicode_flagxs
z"PatternReprTests.test_unicode_flagcCs|jdd�dS)Nz(?i)patternz(re.compile('(?i)pattern', re.IGNORECASE))r�)rrrrr�sz"PatternReprTests.test_inline_flagscCs&|jddd�|jddtjBd�dS)Nzrandom patterni0z&re.compile('random pattern', 0x123000)z4re.compile('random pattern', re.IGNORECASE|0x123000))r�r)ro)rrrr�test_unknown_flags�sz#PatternReprTests.test_unknown_flagscCs |jdd�|jdtjd�dS)Ns
bytes patternzre.compile(b'bytes pattern')z&re.compile(b'bytes pattern', re.ASCII))r�r�r)rm)rrrr�
test_bytes�s
zPatternReprTests.test_bytescCs|jdtjd�dS)Ns
bytes patternz're.compile(b'bytes pattern', re.LOCALE))r�r)r)rrrr�test_locale�s
zPatternReprTests.test_localecCs(|jdd�|jdd�|jdd�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'))r�)rrrr�test_quotes�szPatternReprTests.test_quotescCs�ddd}ttj|��}|jt|�d�|j|dd�d�ttj|tj��}|jt|�d�|j|dd�d�|j|d	d�d�dS)
NzVery %spatternzlong i�i,�zre.compile('Very long long lonr�z, re.IGNORECASE)i�)r�r)r+Z
assertLessr�r%ro)rr'r�rrr�test_long_pattern�sz"PatternReprTests.test_long_patternN)rrrr�r�r�r�r�r�r�r�r�r�r�r�rrrrr�dsr�c@seZdZdd�ZdS)�ImplementationTestc
Cs�tj}|j|d�g�|j|d�dg�|j|d�ddddg�|j|d�ddddg�|j|d	�ddddddg�|j|d
�ddddddddg�dS)Nr{rOrr�ZaaaarCr�rDZababbaZabcabdac)�sre_compile�_generate_overlap_tabler%)r�frrr�test_overlap_table�sz%ImplementationTest.test_overlap_tableN)rrrr�rrrrr��sr�c@seZdZdd�Zdd�ZdS)�
ExternalTestscCs�ddlm}x�|D]�\}}|j||d���tj|�}|j|j|��|j|j|��|j|j|��dd|dd}|j|j|��|j|j|d��|j|j|ddt	|���|j|j|ddt	|���WdQRXqWdS)Nr)�
benchmarks)r'r5r�i')
�
test.re_testsr�r,r)r+r�rFrIr�r�)rr�r'rAr��s2rrr�test_re_benchmarks�s
z ExternalTests.test_re_benchmarkscDCsrddlm}m}m}m}�xR|D�]H}d}}}}	}
t|�dkrV|\}}}}	}
n"t|�dkrn|\}}}n
td|��|j||d����||kr�|jt	j
��t	j|�WdQRXw t	j|�}|j|�}||kr�|j
|d�w |j���|j|d�|jd�\}
}|jd�|j�|j	jd	�}xXtd
d�D]J}y|j|�}|dk�rJd}Wntk
�rfd
}YnX||d|<�q,WxV|j	jj�D]F}y|j|�}|dk�r�d}Wntk
�r�d
}YnX|||<�q�W|jt|	|�|
d�WdQRXyt|d�}t|d�}Wntk
�rYntX|jd�� t	j|�}|j|j|��WdQRX|jd��2t	j|t	j�}|j|�}|dk�r�td|�WdQRX|dd�dk�r�|dd�dk�r�|dk	�r�|jd��(t	j|�}|j|j||
|d
��WdQRX|jd��$t	j|t	j�}|j|j|��WdQRX|jd��$t	j|t	j�}|j|j|��WdQRXWdQRXq WdS)Nr)�tests�SUCCEED�FAIL�SYNTAX_ERRORr�rDz%Test tuples should have 3 or 5 fields)r'r5zSucceeded incorrectlyzFailed incorrectly)�foundr�r�rCrx�Noner�zg%dzgrouping errorrzbytes pattern matchzlocale-sensitive matchz#=== Fails on locale-sensitive matchr�z\Bzrange-limited matchzcase-insensitive matchzunicode-sensitive match���)r�r�r�r�r�r�rnr,r(r)r*r+rFrHr�rGrLr�r�r�r��keysr%�evalr�UnicodeEncodeErrorr��printr%r)rr�r�r�r��tr'rAZoutcomer3r��obj�resultrArBZvardictr�Zgir��bsrrr�
test_re_tests�s�












$

"zExternalTests.test_re_testsN)rrrr�r�rrrrr��sr��__main__)Ztest.supportrrrrrrr�ior�r)r�r5�sys�	tracebackZunittestrzr	�weakrefr
rMrrrZTestCaserr�r�r�r�mainrrrr�<module>sB$UBq

Youez - 2016 - github.com/yon3zu
LinuXploit