Your IP : 216.73.216.213


Current Path : /proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/test_re.cpython-34.pyc

�
g f�$�@smddlmZmZmZmZmZmZmZddlZddl	Z	ddl
Z
ddl
mZddlZddl
Z
ddlZddlZddlZddlZddlmZGdd�de�ZGdd�de�ZGd	d
�d
ej�ZGdd�dej�ZGd
d�dej�ZGdd�dej�Zedkriej�ndS)�)�verbose�run_unittest�
gc_collect�
bigmemtest�_2G�cpython_only�captured_stdoutN)�Scanner)�proxycs"eZdZ�fdd�Z�S)�Scstt�j|��S)N)r�super�__getitem__)�self�index)�	__class__��1/opt/alt/python34/lib64/python3.4/test/test_re.pyr
sz
S.__getitem__)�__name__�
__module__�__qualname__r
rr)rrrsrcs"eZdZ�fdd�Z�S)�Bcstt�j|��S)N)rrr
)rr)rrrr
sz
B.__getitem__)rrrr
rr)rrrsrc@s�eZdZddd�Zdd�Zdd�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-dde.j/dXdY�Z0dZd[�Z1d\d]�Z2d^d_�Z3d`da�Z4dbdc�Z5ddde�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��ZWeXd�eYd�d��d�d���ZZeXd�eYd�d��d�d���Z[d�d��Z\d�d��Z]e^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��ZjdS)��ReTestsNcs<�j||�����fdd���||�dS)Ncsht|ttf�rExLt||�D]\}}�||�q%Wn�jt|�t|���dS)N)�
isinstance�tuple�list�zip�assertIs�type)�actual�expect�x�y)�msg�recurserrrr#!sz)ReTests.assertTypedEqual.<locals>.recurse)�assertEqual)rrrr"r)r"r#rr�assertTypedEqualszReTests.assertTypedEqualc
Csntd�}tjd|�}|jt��|jdd�WdQXt|�~t�|jdd�dS)N�x�ai�)�	bytearray�re�finditer�assertRaises�BufferError�extendrr)r�b�itrrr�test_keep_buffer)s
zReTests.test_keep_buffercCsGd}tjd�}t|�}|j|jd�|jd��dS)NZQabbbcRzab+c)r)�compiler
r$�findall)r�sr r!rrr�test_weakref4szReTests.test_weakrefcCsR|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)r5r6)r5r6)rr)rr)rr6)rr6)r$r)�search�span�assertIsNone�match)rrrr�test_search_star_plus:s%"%"%"%"zReTests.test_search_star_pluscCs#t|jd��}t|d�S)Nrr5)�int�group�str)rZmatchobjZ	int_valuerrr�bump_numFszReTests.bump_numcst|jtjddd�d�|jtjdtd�td��d�|jtjddd�d�|jtjdtd�td��d�|jtjdtd�td��d�|jtjdtd�td��d�x1d3D])}|jtj|dd|�d�q�W|jtjd
dd�d�|jtjd|jd�d�|jtjd|jdd�d�|jtjddd�d�d�|jtjddd�d�d�|jtjd�d�d�|jtjdtj	��d���|jtjd�fdd�d���|jtjdd d�d!�|jtjdd"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
d.��|jtjd/d0d1�d2�dS)4Nr!�a�xyzZxaz�yr'sxyzsxaz�à�а�𝒜zx%szz(?i)b+r z	bbbb BBBBzx xz\d+z08.2 -2 23x99yz9.3 -3 24x100yr6z
9.3 -3 23x99y�.cSsdS)Nz\nr)�mrrr�<lambda>Zsz+ReTests.test_basic_re_sub.<locals>.<lambda>z\n�
z\1\1z(.)�xxcs�S)Nr)rH)r3rrrI`sz(?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\b\B\Z\a\A\w\W\s\S\d\Dz	

\B\Z\A\w\W\s\S\d\Dz	

�	�
��
��z^\s*�XZtestZXtest)rDrErF)r%r)�subrrr(�
memoryviewr$r@�escape�chr)rr!r)r3r�test_basic_re_subJs:++++
'%(+?zReTests.test_basic_re_subcCs#|jtjddd�d�dS)Nz
(?P<unk>x)z\g<1>\g<1>\brKzxxxx)r$r)rS)rrrr�test_bug_449964oszReTests.test_bug_449964cCs�|jtjddd�d�|jtjddd�d�|jtjddd�d�|jtjddd�d�dS)Nz\r\nz\nz
abc
def
zabc
def
z
rJ)r$r)rS)rrrr�test_bug_449000tszReTests.test_bug_449000cCs�tjd�}|jttj|dtj�|jttj|dtj�|jttj|dtj�|jttj|tj�dS)NrG�A)r)r1r+�
ValueErrorr;�Ir8r2)r�patternrrr�
test_bug_1661s
zReTests.test_bug_1661cCstjd�dS)Nz(?P<quote>)(?(quote)))r)r1)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�d0�|jtjddd�d1�|jtjddd�d2�|jtjddd�d�|jtjddd�d�|jtjtjddd�|jtjtjddd�|jtjtjddd�|jtjtjddd�|jtjtjdd d�|jtjtjdd!d�|jtjtjdd"d�|jtjtjdd#d�|jtjtjdd$d�|jtjtjdd%d�|jtjtjdd&d�|jtjtjdd'd�|jtjd(dd�d�|jtjd)d$d*�d+�|jtjd)d%d*�d,�dS)3Nr z\0�z\000z\001�z\008�8z\009�9z\111r\z\117�Oz\1111�I1�1z\00z\07�z\08z\09z\0arAz\400z\777�ÿz\1z\8z\9z\11z\18z\1az\90z\99z\118z\11az\181z\800z(((((((((((x)))))))))))z((((((((((y))))))))))(.)rBZxz8Zxza�8�9rerirjZa)r$r)rSr+�error)rrrr� test_sub_template_numeric_escape�sBz(ReTests.test_sub_template_numeric_escapecCsE|jtjddd�d�|jtjdddd�d�dS)NrAr.ZaaaaaZbbbbbr5Zbaaaa)r$r)rS)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)rS)rrrr�test_bug_114660�szReTests.test_bug_114660cCsB|jtjddd�d�|jtjddd�d�dS)Nzx*�-Zabxdz-a-b-d-zx+zab-d)r$r)rS)rrrr�test_bug_462270�szReTests.test_bug_462270cCs�tjd�tjd�|jtjtjd�|jtjtjd�|jtjtjd�|jtjtjd�|jtjtjd�|jtjtjd�|jtjtjd	�|jtjtjd
�|jtjtjd�|jtjtjd�|jtjtjd
�|jtjtjd�|jtjtjd�|jtjtjd�|jtjtjd�tjd�tjd�|jtjtjd�dS)Nz(?P<a>x)(?P=a)(?(a)y)z(?P<a1>x)(?P=a1)(?(a1)y)z(?P<a>)(?P<a>)z(?Px)z(?P=)z(?P=1)z(?P=a)z(?P=a1)z(?P=a.)z(?P<)z(?P<>)z(?P<1>)z(?P<a.>)z(?())z(?(a))z(?(1a))z(?(a.))u(?P<µ>x)(?P=µ)(?(µ)y)uf(?P<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>x)(?P=𝔘𝔫𝔦𝔠𝔬𝔡𝔢)(?(𝔘𝔫𝔦𝔠𝔬𝔡𝔢)y)u	(?P<©>x))r)r1r+rk)rrrr�test_symbolic_groups�s(



zReTests.test_symbolic_groupscCs�|jtjtjddd�|jtjtjddd�|jtjtjddd�|jtjtjddd�|jtjtjddd�|jtjtjddd�|jttjdd	d�|jtjtjd
dd�|jtjtjd
dd�|jtjtjdd
d�|jtjddd�d�|jtjddd�d�|jtjtjddd�dS)Nz(?P<a>x)z\g<arKz\g<z\gz\g<a a>z\g<>z\g<1a1>z\g<ab>z(?P<a>x)|(?P<b>y)z\g<b>z\2z\g<-1>u	(?P<µ>x)u\g<µ>u#(?P<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>x)u \g<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>u\g<©>)r+r)rkrS�
IndexErrorr$)rrrr�test_symbolic_refs�szReTests.test_symbolic_refscCs�|jtjddd�d�|jtjddd�d�|jtjddd	�d�|jtjddd	�d�|jtjddd	d�d�dS)Nz(?i)b+r z	bbbb BBBB�x x�zb+�x BBBBr5rBrzb*�xxxyxzx��xxxyz)rtru)rvr5)zxyzr)rwrx)ryru)r$r)�subn)rrrr�test_re_subn�s
zReTests.test_re_subncCs�x�dtd�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�dD]�\}}}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�dS)Nz:a:b::c�:�rAr.�cz:*z(:*)z::s:a:b::c�:�r'�b�cs:*s(:*)s::�àßç�абв�𝒜𝒞𝒵z
:%s:%s::%sz(?::*)z(:)*z([b:]+)z:b::z(b)|(:+)z(?:b)|(?::+))r�r�r�)rr%r)�splitrr(rTr$)r�stringrAr.r~rrr�
test_re_split�s@  +( (zReTests.test_re_splitcCs�|jtjddd�dddg�|jtjddd�ddd	g�|jtjd
dd�dddddg�|jtjddd�dddddg�dS)Nr|z:a:b::crur}rAzb::cza:b:c:dr.zc:dz(:)z(:*))r$r)r�)rrrr�test_qualified_re_splits((zReTests.test_qualified_re_splitcCs|jtjdd�g�x�dtd�fD]u}|jtjd|�dddg�|jtjd|�dddg�|jtjd|�dddg�q/Wx�d
td
�td
�td
�fD]u}|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�qMWdS)"Nz:+�abcz
a:b::c:::dr|�::z:::z(:+)z(:)(:*)r}s
a:b::c:::ds:+r�::s:::s(:+)s(:)(:*)r�rD�а�𝒜rur6z
a%sb%sc%sdz%s+z(%s+)z	(%s)(%s*))r|r})r|r|)r|r�)rr�)rr)rr�)rDr�r�)r$r)r2rr%rr(rT)rr�r rKr7rrr�test_re_findalls0


))zReTests.test_re_findallcCs)|jtjdd�dddg�dS)	Nz(a|(b))�abarAr}r.)rAr})r.r.)rAr})r$r)r2)rrrr�test_bug_1176125szReTests.test_bug_117612cCsIx�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 �tjdd�}|j|jd�d�|j|jd�d�|j|jd�d�|j|jdd�d!�tj	d�}|j|jd�jddd�d"�|j|jd�jddd�d#�|j|jd
�jddd�d$�dS)%NrAz(a)rr5r's(a)rD�а�𝒜z(%s)z
((a)|(b))(c)?r.�acr~�bcr}z!(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?rur6Za1Zb2Zc3)rA)rArA)r')r'r')rDr�r�)rArANN)r.Nr.N)rArANr~)r.Nr.r~)r.r}r.r~)rArA)rANN)Nr.N)rANr~)
rr$r)r;�groupsr>rr(rTr1)rr�rA�patrHrrr�
test_re_match9sD""%%,+""%%,
")))6"(!zReTests.test_re_matchcCs|jtjdd�j�d!�x<dtd�fD](}|jtjd|�j�d"�q5WxNdtd�td�td�fD](}|jtjd|�j�d#�q�WxNd$D]F\}}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 d�j�d.�|jtj	d
�jdddd d�j�d/�|jtj	d�jdddd d�j�d0�dS)1NrArr5�abza|abrusabsa|ab�àß�аб�𝒜𝒞z%s|%sz.*?$r�r6z.*?za.*?b�abbZaxxbrxza+zabc$zabc
zabc\Zz(?m)abc$z	ab(?=c)cd�abcdz
ab(?<=b)cdz
(?=a|ab)abr��pos�endpos)rr5)rru)rru)r�r�r�)rru)rr6)rr6)rru)rr6)rrx)rrx)rrx)rru)r5r6)r5r6)r5r6)
r$r)�	fullmatchr9rrr(rTr:r1)rr�rAr.�rrrr�test_re_fullmatchas4"&+&*""""""""..zReTests.test_re_fullmatchcCs{|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��dS)Nz^(\()?([^()]+)(?(1)\))$z(a)�(rAza)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�r~ZadZabdr�)r�rA)NrA)rAr.)Nr�)Nr�)rAr})rAr.r~)rANr�)r$r)r;r�r:r1)r�prrr�test_re_groupref_existss*zReTests.test_re_groupref_existscCs�|jtjdd�j�d�|jtjdd�j�d
�|jtjdd��|jtjdd��|jtjdd	�j�d�|jtjd
d�j�d�dS)Nz^(\|)?([^()]+)\1$z|a|�|rAz^(\|)?([^()]+)\1?$za|z|az^(?:(a)|c)(\1)$Zaaz^(?:(a)|c)(\1)?$r~)r�rA)NrA)rArA)NN)r$r)r;r�r:)rrrr�test_re_groupref�szReTests.test_re_grouprefcCs4|jtjdd�j�idd6dd6�dS)Nz#(?P<first>first) (?P<second>second)zfirst second�first�second)r$r)r;�	groupdict)rrrr�test_groupdict�szReTests.test_groupdictcCs)|jtjdd�jd�d�dS)Nz#(?P<first>first) (?P<second>second)zfirst secondz\2 \1 \g<second> \g<first>zsecond first second first)r$r)r;�expand)rrrr�test_expand�s	zReTests.test_expandcCs�|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��dS)Nz	^(\w){1}$r�z
^(\w){1}?$z^(\w){1,2}$z^(\w){1,2}?$z	^(\w){3}$r5r~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}$r7z^x{1}?$z^x{1,2}$z	^x{1,2}?$z^x{3}$z^x{1,3}$z^x{1,4}$z	^x{3,4}?$z^x{3}?$z	^x{1,3}?$z	^x{1,4}?$z^x{}$zx{})r:r)r;r$r>�
assertTrue)rrrr�test_repeat_minmax�s4%%%%%%%%zReTests.test_repeat_minmaxcCs@|jtjd�jd�|jtjd�jtjtjB�|jtjd�jd�|jtjd�ji�|jtjd�jidd6dd6�|jtj	dd�j
d	�|jtj	dd�jd�|jtj	dd�jd�|jtj	dd�j
d�|jtj	dd�j�dS)
Nz
(?i)(a)(b)ruz(?i)(?P<first>a)(?P<other>b)r5r��otherz(a)rAr�rr5�rr5)r�r�)r$r)r1r]�flagsr\�Ur��
groupindexr;r�r�r��regsr�)rrrr�test_getattr�s&zReTests.test_getattrcCsO|jtjdd�jd�d�|jtjdd�jd�d�|jtjddtj�jd�d�|jtjddtj�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�|jtjddtj�jd	�d�dS)Nz\b(b.)\bzabcd abc bcd bxr5Zbxz\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)r8r>�ASCII�LOCALE�Mr:)rrrr�test_special_escapes�sH++++zReTests.test_special_escapescCsP|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�r5z\bz\Br}rArur� z   )
r$r)r8r>r�r;ZassertFalser:�lenr2)rrrr�test_string_boundariess""""zReTests.test_string_boundariescCss|jtjdd�jd�d�ddjtttddd	���}|jtj|d
�j�d
�dS)Nu
([∢∣])u∢r5z[%s]r}�ru��u!i)r$r)r;r>�join�maprV�range)rr�rrr�test_bigcharsets(zReTests.test_bigcharsetcCs[tjdjdd�td�D���}|j|jd��|j|jd��dS)Nr�css|]}d|VqdS)z%dNr)�.0r rrr�	<genexpr>&sz,ReTests.test_big_codesize.<locals>.<genexpr>i'Z1000Z9999)r)r1r�r�r�r;)rr�rrr�test_big_codesize$s+zReTests.test_big_codesizecCsZ|jtjddtj�jd�d�|jtjddtj�jd�d�dS)Nza.bza
brza.*bza

b)r$r)r;�DOTALLr>)rrrr�test_anyall*s$$zReTests.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��|jtjdd��|jtjd d��dS)!Nz
(a(?=\s[^a]))za br5rAz(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(?P<g>a)b(?=(?P=g))az(?P<g>a)b(?=(?P=g))cz(?:(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)r;r>r�r:)rrrr�test_lookahead0s.%%%%%%%%%%%zReTests.test_lookaheadcCs�|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jttjd�|jttjd�|jttjd�|jttjd	�dS)
Nz	ab(?<=b)cr�z	ab(?<=c)cz	ab(?<!b)cz	ab(?<!c)cz(a)a(?<=\1)cz(?P<g>a)a(?<=(?P=g))cz(a)b(?<=(?(1)b|x))cz(a)b(?<=(?(2)b|x))(c))r�r)r;r:ZassertWarns�RuntimeWarningr1)rrrr�test_lookbehindOszReTests.test_lookbehindcCsF|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�dj�dks�t�|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��dj�dksZt�|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��dj�dj�ko�dknst�|jtjddtj��|jtjddtj��dS) Nr��ABCrsabcsABCz	(a\s[^a])za br5z
(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)*)uK�k�Kz\u212auſrr3z\u017fuſtust�STz\ufb05z\ufb06)	r$r)r;r\r>�lower�AssertionErrorr��upper)rrrr�test_ignore_case]s.++++++++++.zReTests.test_ignore_casecCs�|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��d	j�d
kst�|jtjdd	tj��|jtjdd	tj��|jtjd
dtj��|jtjd
d
tj��dj�dks�t�|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��dj�dj�koCdknsNt�|jtjddtj��|jtjddtj��dS)Nz[19A]rZz[19a]rAs[19A]�As[19a]r'uKr�z[19K]z[19k]z
[19\u212a]r�uſrz[19S]z[19s]z
[19\u017f]r3uſtustr�z
[19\ufb05]z
[19\ufb06])r�r)r;r\r�r�r�)rrrr�test_ignore_case_setws*.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��dj�dkst�|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��dj�dks�t�|jtjddtj��|jtjddtj��|jtjddtj��|jtjddtj��dj�d j�ko;d!knsFt�|jtjd"d tj��|jtjd#dtj��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]uKr�z[J-M]z[j-m]z[\u2129-\u212b]r�uſrz[R-T]z[r-t]z[\u017e-\u0180]r3uſtustr�z[\ufb04-\ufb05]z[\ufb06-\ufb07])r�r)r;r\r:r�r�r�)rrrr�test_ignore_case_range�s:.zReTests.test_ignore_case_rangecCs)|jtjdd�jd�d�dS)Nz(\s)r�r5)r$r)r;r>)rrrr�
test_category�szReTests.test_categorycCs�ddl}|j|jtd�d�td��|j|jtd�tj�td��|j|jtd�tj�td��|jtjddtj�j	d�d�|jtjddtj�j	d�d�dS)NrrZrAr�r�sabcsABC)
�_srer$�getlower�ordr)r��UNICODEr;r\r>)rr�rrr�
test_getlower�s(+++zReTests.test_getlowercCsN|jtjdd�jd�d�|jtjdd�jd�d�dS)Nz\s([^a])z br5r.z	\s([^a]*)z bbZbb)r$r)r8r>)rrrr�test_not_literal�s%zReTests.test_not_literalcCsN|jtjdd�jd�d�|jtjdd�jd�d�dS)Nz\s(b)z br5r.za\sza r)r$r)r8r>)rrrr�test_search_coverage�s%zReTests.test_search_coveragecCs�|dkr3|dkr3|}dt|�f}n'|dksK|dkrZtd��n|||�}|j|�|j|j�|�|j|j�|�dS)Nrz@If match is not None, span should be specified (and vice versa).)r�r[r�r$r>r9)rr]�textr;r9ZmatcherrHrrr�assertMatch�s
zReTests.assertMatchcCs�tjtjd}djdd�td�D��}x�|D]�}||krk|jtj|�|�nE|dkr�|jtj|�d�n|jtj|�d|�|jtj|�|�q=W|jtj|�|�dS)	Nr�r}css|]}t|�VqdS)N)rV)r��irrrr��sz)ReTests.test_re_escape.<locals>.<genexpr>r�r`z\000�\)	r��
ascii_letters�digitsr�r�r$r)rUr�)r�alnum_charsr�r~rrr�test_re_escape�s"
zReTests.test_re_escapecCs�tjtjdjd�}ttd��}x�|D]�}t|g�}||krs|jtj|�|�nE|dkr�|jtj|�d�n|jtj|�d|�|j	tj|�|�q6W|j	tj|�|�dS)Nr��asciir�rs\000s\)
r�r�r��encode�bytesr�r$r)rUr�)rr�r�r�r.rrr�test_re_escape_byte�s
zReTests.test_re_escape_bytecCsbd}tj|�}|j|d�|j||�|jdtjd�|ddtj�dS)	Nuxxx☠☠☠xxxuxxx\☠\☠\☠xxxz.%s+.u☠ux☠☠☠xrurQ)rurQ)r)rUr$r�r8)rr3Z	s_escapedrrr�test_re_escape_non_ascii�sz ReTests.test_re_escape_non_asciicCs|djd�}tj|�}|j|d�|j||�tjtjdjd��|�}|jt|�d�dS)Nu	y☠y☠yzutf-8sy\�\�\�y\�\�\�yu☠ru)r�r)rUr$r�r2r�)rr.Z	b_escaped�resrrr�test_re_escape_non_ascii_bytes�s$z&ReTests.test_re_escape_non_ascii_bytescCs�ddl}tjdtj�}xLt|jd�D]7}|j||�}|j|�}|j||�q5Wddlm	}dS)Nrza(?:b|(c|e){1,2}?|d)+?(.)r5)�_compile)
�pickler)r1r�r�ZHIGHEST_PROTOCOL�dumps�loadsr$r�)rr�Zoldpat�protoZpickledZnewpatr�rrr�
test_pickling�szReTests.test_picklingcCsr|jtjtj�|jtjtj�|jtjtj�|jtjtj	�|jtj
tj�dS)N)r$r)r\�
IGNORECASE�Lr�r��	MULTILINErr�rR�VERBOSE)rrrr�test_constantss
zReTests.test_constantscCsLxEtjtjtjtjtjgD]}|jtjd|��q%WdS)Nz	^pattern$)r)r\r�rRrr�r�r1)rZflagrrr�
test_flags
s+zReTests.test_flagscCs~xddddddddd	d
ddgD]�}|d	kr"|jtjd
|t|���|jtjd|t|�d��|jtjd|t|�d��|jtjd|t|���|jtjd|t|�d��|jtjd|t|�d��n|dkr�|jtjd|t|���|jtjd|t|�d��|jtjd|t|�d��n|jtjd|t|���|jtjd|t|�d��|jtjd|t|�d��q+W|jtjdd��|jtjdd��|jtjd d!��|jtjd"d#��|jtjd$td%���|jtjtjd&d'�|jtjtjd(d'�|jtjtjd)d'�|jtjtjd*d'�|jtjtjd+d'�|jtjtjd,d'�|jtjtjd-d'�|jtjtjd.d'�dS)/Nr�r�� �@��r�r�i��ii��z\%03oz\%03o0�0z\%03o8rbz\x%02xz\x%02x0z\x%02xz�zz\u%04xz\u%04x0z\u%04xzz\U%08xz\U%08x0z\U%08xzz\0r`z\08riz\01raz\018z8z\567�wz\911r}z\x1z\x1zz\u123z\u123zz	\U0001234z
\U0001234zz
\U00110000)r�r)r;rVr+rk)rr�rrr�test_sre_character_literalss81#''#'*#'*#'+z#ReTests.test_sre_character_literalscCs�xBddddddddd	d
ddgD]}|d	krX|jtjd
|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���n|dkr�|jtjd|t|���|jtjd|t|���|jtjd|t|���n|jtjd|t|���|jtjd|t|�d��|jtjd|t|�d��q+W|jtjdd��|jtjtjdd �|jtjtjd!d �|jtjtjd"d �|jtjtjd#d �|jtjtjd$d �dS)%Nrrr�rrrrr�r�i��ii��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]rz	[\U%08xz]r	z[\U0001d49c-\U0001d4b5]u𝒞z[\911]r}z[\x1z]z[\u123z]z[\U0001234z]z[\U00110000])r�r)r;rVr+rk)rr�rrr�!test_sre_character_class_literals/s.1#######&##&#'+z)ReTests.test_sre_character_class_literalscCsQx>ddddddddgD]}|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|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdtdg���|jtjtjd d!�|jtjtjd"d!�|jtjtjd#d!�dS)$Nrrr�rrrrr�z\%03oz\%03o0�0z\%03o8�8z\x%02xz\x%02x0z\x%02xz�zs\u�us\U�Us\0ss\08s8s\01ss\018s8s\567r
s\911r�s\x1s\x1z)r�r)r;r�r�r+rk)rr�rrr�test_sre_byte_literalsHs"%,00,04"zReTests.test_sre_byte_literalscCs�x�ddddddddgD]f}|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|jtjdd��|jtjdd��|jtjtjdd�|jtjtjdd�dS)Nrrr�rrrrr�z[\%o]z[\%o8]z[\%03o]z[\%03o0]z[\%03o8]z[\x%02x]z	[\x%02x0]z	[\x%02xz]s[\u]rs[\U]rs[\911]r�s[\x1z])r�r)r;r�r�r+rk)rr�rrr�test_sre_byte_class_literals[s%,,,,,,,0z$ReTests.test_sre_byte_class_literalscCss|jtjdd�jd�d�|jtjdd�jd�d�|jtjdd�jd�d�dS)	Nz(a)|(b)r.r5���rrr)rr)r$r)r;�start�endr9)rrrr�test_bug_113254js%%zReTests.test_bug_113254cCs�|jtjdd�j�|jtjdd�jd�|jtjdd�jd�|jtjdd�jd�|jtjdd�jd�dS)	Nz(a)?arAz(a)(b)?br�r5z(?P<a>a)(?P<b>b)?bz(?P<a>a(b))z((a)))r:r)r;�	lastindexr$�	lastgroup)rrrr�test_bug_527371os
zReTests.test_bug_527371cCs|jtjtjd�dS)Nzfoo[a-)r+r)rkr1)rrrr�test_bug_545855wszReTests.test_bug_545855cCs�|jtjdddd�jd�d�|jtjdddd	ddd
�jd�d�|jtjddd
d�jd�d�|jtjdddd�jd�d�dS)Nz.*?ci'r�r�ri!Nz.*?cdi�r~Zcdei#Ni Nr�Zdeia�z(a|b)*?c)r$r)r;rr8)rrrr�test_bug_418626|s
-2-zReTests.test_bug_418626cCs:dtjd�d}|jtj|�o/dd�dS)N�[u‹�]r5)r)rUr$r1)rr�rrr�test_bug_612074�szReTests.test_bug_612074cCs�|jtjddd�jd�d�|jtjdddd�jd�d�|jtjdddd�jd�d�dS)Nz(x)*iP�r r5z(x)*yr!z(x)*?y)r$r)r;r>)rrrr�test_stack_overflow�s)-zReTests.test_stack_overflowcCs�|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��dS)Nz(?:a?)*yr	z(?:a?)+yz(?:a?){2,}yz	(?:a?)*?yz	(?:a?)+?yz(?:a?){2,}?y)r:r)r;)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)r"r#rrr�
s_operator�sz(ReTests.test_scanner.<locals>.s_operatorcSs
t|�S)N)�float)r"r#rrr�s_float�sz%ReTests.test_scanner.<locals>.s_floatcSs
t|�S)N)r=)r"r#rrr�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=r6zop*Zfoozop+g�s@Zbar)r)N)r	r�r"r]r$�scan)rr$r%r'r(r"rrr�test_scanner�s				zReTests.test_scannercCsaxZd	D]R}|jtjd|d�j�d
�|jtjd|d�j�d�qWdS)Nr}�?�*z
((.%s):)?zr	za:z�a:rA)r}r-r.)NN)r/rA)r$r)r;r�)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.rAz^(([ab])|c)*r~z^((d)|[ab])*z
^((a)c|[ab])*z^((a)|b)*?cz^(([ab])|c)*?dr�z^((d)|[ab])*?cz^((a)c|[ab])*?c)r.rA)r~r.)r.N)r.N)r.rA)r~r.)r.N)r.N)r$r)r;r�)rrrr�test_bug_725106�s zReTests.test_bug_725106cCsH|jtjdd�j�d�|jtjdd�j�d�dS)Nz(a)(?:(?=(b)*)c)*r�rAz(a)((?!(b)*))*)rAN)rANN)r$r)r;r�)rrrr�test_bug_725149�szReTests.test_bug_725149cCsEGdd�dt�}tj|d��}|j|jd��dS)Nc@seZdZdS)z+ReTests.test_bug_764548.<locals>.my_unicodeN)rrrrrrr�
my_unicode�sr4r�rB)r?r)r1r:r;)rr4r�rrr�test_bug_764548�szReTests.test_bug_764548cCsstjdd�}|jdd�|D�dddg�tjd�}|jddd	�}|jd
d�|D�dddg�tjd�}|jddddd	�}|jd
d�|D�dddg�tjd�}|jddd	dd�}|jdd�|D�dddg�tjd�}|jddddd�}|jdd�|D�ddg�dS)Nz:+z
a:b::c:::dcSsg|]}|jd��qS)r)r>)r��itemrrr�
<listcomp>�s	z)ReTests.test_finditer.<locals>.<listcomp>r|z::z:::r5rMcSsg|]}|jd��qS)r)r>)r�r6rrrr7�s	r�r�cSsg|]}|jd��qS)r)r>)r�r6rrrr7�s	cSsg|]}|jd��qS)r)r>)r�r6rrrr7�s	r6rcSsg|]}|jd��qS)r)r>)r�r6rrrr7�s	)r)r*r$r1)r�iterr�rrr�
test_finditer�s&zReTests.test_finditercCs&|jtjd�tjd��dS)NZ
bug_926075s
bug_926075)ZassertIsNotr)r1)rrrr�test_bug_926075�szReTests.test_bug_926075cCs5d}|jtj|�jd�dddg�dS)Nu[.。.。]za.b.crAr.r~)r$r)r1r�)rr]rrr�test_bug_931848�szReTests.test_bug_931848cCs�tjdd�}|jt|�j�d�|jtt|�tjd�jd�}|j|j	�j�d�|j
|j	��dS)Nz\sza br5ru)r5ru)r5ru)r)r*r$�nextr9r+�
StopIterationr1r"r8r:)rr8r"rrr�test_bug_581080�szReTests.test_bug_581080cCsatjdd�}|jt|�j�d�|jt|�j�d�|jtt|�dS)Nz.*Zasdfrrx)rrx)rxrx)r)r*r$r<r9r+r=)rr8rrr�test_bug_817234szReTests.test_bug_817234cCs�dddg}x3|D]+}|jtjd|�jd�|�qWdddd	g}x'|D]}|jtjd|��q^WdS)
N�7u๘u0z^\d$ruⅥu〹u₂u㊴)r$r)r;r>r:)rZdecimal_digitsr Znot_decimal_digitsrrr�
test_bug_6561
s	
)	
zReTests.test_bug_6561cCswddl}xddD]\}|j|�}|jtjd�j|��|jtjd�j|�j�f�qWdS)NrZbBuhHiIlLfdsblar�)�arrayr:r)r1r;r$r�)rrB�typecoderArrr�test_empty_arrays

zReTests.test_empty_arraycCsTtd�}td�}tj|tjtjB�}|j|�}|j|�tj|tjtjB�}|j|�}|j|�tjd|tj�}|j|�}|j|�tjd|tj�}|j|�}|j|�tjd|�}|j|�}|j|�tjd|�}|j|�}|j|�dS)Ni�i�z(?i)z(?iu))rVr)r1r\r�r;r�)rZ
upper_charZ
lower_charr��qrrr�test_inline_flags's(




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)z>$ matches the end of string, and just before the terminating 
�$�#za
b
za
b#
#za
b
cza
b
c#rJz#
#za#
b#
#za#
b#
c#N)r)r1r$rSr�)rr]rrr�test_dollar_matches_twiceDsz!ReTests.test_dollar_matches_twicecCs�tjd�}tjd�}|jt|jd�|jt|jd�|jt|jdd�|jt|jdd�|jt|jdd�|jt|jdd�|jt|jdd�|jt|jdd�dS)NrG�.r�r.r~r�)r)r1r+�	TypeErrorr;rS)rr��bpatrrr�test_bytes_str_mixingPszReTests.test_bytes_str_mixingcCs6xndtjfD]]}tjd|tjB�}|j|jd��tjd|�}|j|jd��qWtjdtjtjB�}|j|jd��tjdtj�}|j|jd��tjdtj�}|j|jd��tjd�}|j|jd��xndtjfD]]}tjd|tjB�}|j|jd��tjd	|�}|j|jd��q.W|jt	tjd	tj�|jt	tjd
�|jt	tjdtjtjB�|jt	tjdtj�|jt	tjdtj�|jt	tjd�dS)
Nr�ÀrDz\wu(?a)Àz(?a)\ws�s�s\ws(?u)\wz(?u)\wz(?au)\w)
r)r�r1r�r�r;r�r:r+r[)rr�r�rrr�test_ascii_and_unicode_flag]s0#z#ReTests.test_ascii_and_unicode_flagcCstjd�}|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)Nr?r)rHrrrrI�sz'ReTests.test_bug_6509.<locals>.<lambda>Za5r?sa(\w)sb\1sacsbcsa(.)sa�sb�s..cSsdS)Nsbytesr)rHrrrrI�ssa5sbytes)r)r1r$rS)rr�rrr�
test_bug_6509zs"zReTests.test_bug_6509cCsjddl}d}|jttjdi�|jt|jdd|g�|jt|jidg�dS)NrrurrAr�l	)r�r+rKr)r*�
OverflowErrorr1)rr�Z
long_overflowrrr�test_dealloc�s
zReTests.test_dealloccCs�|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��dS)Nz123.*-z123abc-u123é-u123€-u123􏿿-u
123é€􏿿-)r�r)r8)rrrr�test_search_dot_unicode�s
zReTests.test_search_dot_unicodecCsntjd�}|j|tj�tj|�}|j|tj�|j||�|jttjd�dS)Nzrandom patternr)r)r1ZassertIsInstance�
_pattern_typerr+rK)rr]Zsame_patternrrr�test_compile�szReTests.test_compilecCs/|jtjdd�dddddg�dS)Nz[\A\B\b\C\Z]zABCZrZr��C�Z)r$r)r2)rrrr�test_bug_13899�szReTests.test_bug_13899�sizeZmemuser5cCsYd|}tjd|�}|j|�|j|j�|�|j|j�|�dS)NrArG)r)r8ZassertIsNotNoner$rr)rrZr3rHrrr�test_large_search�s


zReTests.test_large_searchr�rucCsMd|}tjdd|�\}}|j||�|j||d�dS)NrAr}r5)r)rzr$)rrZr3r��nrrr�test_large_subn�s
zReTests.test_large_subncCsE|jtjdd�dg�|jtjdd�j�d�dS)	Nz	(?i)(a)\1uaa ĀrAz
(?s).{1,3}uĀĀrru)rru)r$r)r2r;r9)rrrr�test_bug_16688�szReTests.test_bug_16688cCsBdd}|jtjd|�j�d�|jtjd|�j�d�|jtjd|�j�d�|jtjd|�j�d�|jtjd
|�j�d�|jtjd|�j�d�|jttjdd�|jttjdd�|jttjdd�|jttjdd�dS)Nr i��z.{65535}r�z	.{,65535}z
.{65535,}?z.{65536}�z	.{,65536}z
.{65536,}?z.{%d}rurz.{,%d}z.{%d,}?z.{%d,%d}�)rr_)rr_)rr_)rr`)rr`)rr`l	l	l	�	�	)rbrc)r$r)r;r9r+rQr1)rr�rrr�test_repeat_minmax_overflow�s
""""""z#ReTests.test_repeat_minmax_overflowc
Cs�yddlm}Wntk
r5|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}r5z.{,%d}z.{%d,}?)rrf)r�re�ImportError�skipTestr:r)r;r$r9r+rQr1)rrer�rrr�%test_repeat_minmax_overflow_maxrepeat�s

!#!z-ReTests.test_repeat_minmax_overflow_maxrepeatc	Cs-|jtjd��tjd�WdQXdS)Nz<foo>z
(?P=<foo>))�assertRaisesRegex�
sre_constantsrkr)r1)rrrr�$test_backref_group_name_in_exception�sz,ReTests.test_backref_group_name_in_exceptionc	Cs-|jtjd��tjd�WdQXdS)Nz\?fooz
(?P<?foo>))rjrkrkr)r1)rrrr�test_group_name_in_exception�sz$ReTests.test_group_name_in_exceptioncCs�x�dD]�}x�dD]�}d||d}|jtj|tj�jd�dgd	|�|j�}|jtj|tj�jd
�d
gd	|�qWqWdS)
Nr.�+r-�{1}r}rGZyzrBr"sxyz)r.rnr-ro)r}r-)r$r)r1rr2r�)rZreps�modr]rrr�test_issue17998�s

!!zReTests.test_issue17998cCsZx^dtd�fD]J}tjd|�}|jt|�dt|�jt|�jf�qWxpdtd�t	d�t
d�fD]J}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)r8r$�reprrrrrr(rTrr*)rr�rHr�r�rrr�test_match_repr�s$	$ zReTests.test_match_reprcCs�x�dD]�}x�dD]y}tjd||f�}|jd�}|j|jd�d	�|j|jd
�d�|j|jd�d
�qWqWdS)N�{0,}r.rn�{1,187}r-z^((x|y)%s)%sZxyyzyrZxyyr5r}rur!)rtr.rnru)rtr.r-)r)r1r;r$r>)rZouter_opZinner_opr�rHrrr�
test_bug_2537s

zReTests.test_bug_2537cCs�d}t��}tj|tj�WdQXd}|j|j�|�t��}tj|tj�WdQX|j|j�|�dS)Nz(\.)(?:[ch]|py)(?(1)$|: )z�subpattern 1
  literal 46
subpattern None
  branch
    in
      literal 99
      literal 104
  or
    literal 112
    literal 121
subpattern None
  groupref_exists 1
    at at_end
  else
    literal 58
    literal 32
)rr)r1�DEBUGr$�getvalue)rr��out�dumprrr�test_debug_flagszReTests.test_debug_flagcCs'tjd�}|j|jdddddd�j�d�|j|jdddddd�j�d�|j|jdddd	dd�j�d�|j|jdddd	dd�d
g�|j|jdddd�d
d
dg�|j|j	dddd	dd�j�j�d�dS)Nz(ab)r�Zabracadabrar�rQr�rMrLr6r��maxsplitr5r}Z	racadabra)rQrL)rQrL)rQrL)rQrL)
r)r1r$r;r9r�r8r2r�r")rr�rrr�test_keyword_parameters8s(((%'zReTests.test_keyword_parameterscCs,|jtjddtj�j�d�dS)Nz[a-c]+r�rr6)rr6)r$r)r�r\r9)rrrr�test_bug_20998JszReTests.test_bug_20998cCs�tjtj�}|jtjtj|�xNdD]F}ytjtj|�Wq2tjk
rw|jd|�Yq2Xq2Wtj�|j�|j	�tj�|j	�|j�dS)N�en_US.iso88591�
en_US.utf8ztest needs %s locale)rr�)
�locale�	setlocale�LC_CTYPEZ
addCleanup�Errorrhr)�purge�check_en_US_iso88591�check_en_US_utf8)rZ	oldlocale�locrrr�test_locale_cachingOs





zReTests.test_locale_cachingcCs�tjtjd�|jtjddtjtjB��|jtjddtjtjB��|jtjddtjtjB��|jtjdd��|jtjdd��|jtjdd��dS)Nzen_US.iso88591s��s�s�s(?Li)��s(?Li)�s(?Li)�)r�r�r�r�r)r;r�r\)rrrrr�as&&&zReTests.check_en_US_iso88591cCs�tjtjd�|jtjddtjtjB��|jtjddtjtjB��|jtjddtjtjB��|jtjdd��|jtjdd��|jtjdd��dS)Nz
en_US.utf8s��s�s�s(?Li)��s(?Li)�s(?Li)�)	r�r�r�r�r)r;r�r\r:)rrrrr�js&&&zReTests.check_en_US_utf8�)krrrr%r0r4r<r@rWrXrYr^r_rlrmrnrprqrsr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r)r;r�r�r�r�r�r�rrrrrrrrrrrr r!r,r1r2r3r5r9r:r;r>r?rArDrFrIrMrOrPrRrSrUrYrrr[r]r^rdrrirlrmrqrsrvr{r}r~r�r�r�rrrrrs�
%*#( &!	


			

!!

	rc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�PatternReprTestscCs#|jttj|��|�dS)N)r$rrr)r1)rr]�expectedrrr�checkuszPatternReprTests.checkcCs&|jttj||��|�dS)N)r$rrr)r1)rr]r�r�rrr�check_flagsxszPatternReprTests.check_flagscCs|jdd�dS)Nzrandom patternzre.compile('random pattern'))r�)rrrr�test_without_flags{s	z#PatternReprTests.test_without_flagscCs|jdtjd�dS)Nzrandom patternz+re.compile('random pattern', re.IGNORECASE))r�r)r�)rrrr�test_single_flagsz!PatternReprTests.test_single_flagcCs(|jdtjtjBtjBd�dS)Nzrandom patternz@re.compile('random pattern', re.IGNORECASE|re.DOTALL|re.VERBOSE))r�r)r\rrR)rrrr�test_multiple_flags�sz$PatternReprTests.test_multiple_flagscCs>|jdtjd�|jdtjtjBtjBd�dS)Nzrandom patternzre.compile('random pattern')z5re.compile('random pattern', re.IGNORECASE|re.DOTALL))r�r)r�r\r)rrrr�test_unicode_flag�sz"PatternReprTests.test_unicode_flagcCs|jdd�dS)Nz(?i)patternz(re.compile('(?i)pattern', re.IGNORECASE))r�)rrrrrF�s	z"PatternReprTests.test_inline_flagscCs1|jddd�|jddtjBd�dS)Nzrandom patterni0z&re.compile('random pattern', 0x123000)z4re.compile('random pattern', re.IGNORECASE|0x123000))r�r)r\)rrrr�test_unknown_flags�sz#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)rZ)rrrr�
test_bytes�s	zPatternReprTests.test_bytescCs4|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�)rrr)r1Z
assertLessr�r$r\)rr]r�rrr�test_long_pattern�sz"PatternReprTests.test_long_patternN)rrrr�r�r�r�r�r�rFr�r�r�r�rrrrr�tsr�c@s"eZdZdZdd�ZdS)�ImplementationTestz7
    Test implementation details of the re module.
    c
Cs�tj}|j|d�g�|j|d�dg�|j|d�ddddg�|j|d�ddddg�|j|d	�ddddddg�|j|d
�ddddddddg�dS)Nr}rArr�Zaaaar5rur6ZababbaZabcabdac)�sre_compile�_generate_overlap_tabler$)r�frrr�test_overlap_table�s	""(z%ImplementationTest.test_overlap_tableN)rrr�__doc__r�rrrrr��sr�c@s(eZdZdd�Zdd�ZdS)�
ExternalTestscCs,ddlm}x|D]
\}}|jd|d|���tj|�}|j|j|��|j|j|��|j|j|��dd|dd}|j|j|��|j|j|d��|j|j|ddt	|���|j|j|ddt	|���WdQXqWdS)zre_tests benchmarksr)�
benchmarksr]r�r�i'N)
�
test.re_testsr��subTestr)r1r�r8r;r�r�)rr�r]r3r��s2rrr�test_re_benchmarks�s&z ExternalTests.test_re_benchmarksc>Cs^ddlm}m}m}m}x5|D]-}d}}}}	}
t|�dkro|\}}}}	}
n3t|�dkr�|\}}}ntd|��|jd|d|���||kr�|jt	j
��t	j|�WdQXw)nt	j|�}|j|�}||kr3|j
|d	�w)n|j��K|j|d
�|jd�\}
}i|jd�d6|j�d6|j	jd
6}xhtdd�D]W}y(|j|�}|dkr�d}nWntk
r�d}YnX||d|<q�Wxg|j	jj�D]S}y(|j|�}|dkr@d}nWntk
r[d}YnX|||<qW|jt|	|�|
d�WdQXy"t|d�}t|d�}Wntk
r�Yn<X|jd��*t	j|�}|j|j|��WdQX|dd�dkr~|dd�dkr~|dk	r~|jd��4t	j|�}|j|j||
|d��WdQXn|jd��0t	j|t	j�}|j|j|��WdQXd|kr|jd��0t	j|t	j�}|j|j|��WdQXn|jd��0t	j|t	j�}|j|j|��WdQXWdQXq)WdS)zre_tests test suiter)�tests�SUCCEED�FAIL�SYNTAX_ERRORN�r6z%Test tuples should have 3 or 5 fieldsr]r�zSucceeded incorrectlyzFailed incorrectly�foundr�r�r5�d�Noner�zg%dzgrouping errorr�zbytes pattern matchruz\Bzrange-limited matchzcase-insensitive matchz(?u)zlocale-sensitive matchzunicode-sensitive match���)r�r�r�r�r�r�r[r�r+r)rkr1r8r:r�r9r>r�r�rrr��keysr$�evalr��UnicodeEncodeErrorr�r�r�)rr�r�r�r��tr]r3Zoutcome�replr��obj�resultrrZvardictr�ZgirLZbsrrr�
test_re_tests�s�"








,)zExternalTests.test_re_testsN)rrrr�r�rrrrr��sr��__main__)Ztest.supportrrrrrrr�ior�r)r	r�rk�sysr��	tracebackZunittest�weakrefr
r?rr�rZTestCaserr�r�r�r�mainrrrr�<module>s04�����\>p