Your IP : 216.73.216.85


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_re.cpython-35.pyc



��Yf�a�@sjddlmZmZmZmZmZmZmZddlZddl	Z	ddl
Z
ddl
mZddlZddl
Z
ddlZddlZddlZddlZddlmZGdd�de�ZGdd�de�ZGd	d
�d
ej�ZGdd�dej�ZGd
d�dej�ZGdd�dej�Zedkrfej�dS)�)�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/python35/lib64/python3.5/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@sqeZdZddd�Zddd�Zddd�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_�Z1dde2j3d`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��ZWd�d��ZXd�d��ZYd�d��ZZd�d��Z[d�d��Z\d�d��Z]d�d��Z^e_d�e`d�d��d�d���Zae_d�e`d�d��d�d���Zbd�d��Zcd�d��Zdeed�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��ZtdS)��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.assertTypedEqualcCs�|jtj��}tj|�WdQRX|jd|��@|j}|j|j|�|dk	rw|j|j|�WdQRXdS)N�pattern)	�assertRaises�re�error�compile�subTest�	exceptionr$r"�pos)rr&�errmsgr-�cm�errrrr�checkPatternError)s	zReTests.checkPatternErrorcCs�|jtj��}tj|||�WdQRX|jd|d|��@|j}|j|j|�|dk	r�|j|j|�WdQRXdS)Nr&�repl)	r'r(r)�subr+r,r$r"r-)rr&r2�stringr.r-r/r0rrr�checkTemplateError2s	zReTests.checkTemplateErrorc
Csotd�}tjd|�}|jt��|jdd�WdQRXt|�~t�|jdd�dS)N�x�ai�)�	bytearrayr(�finditerr'�BufferError�extendrr)r�b�itrrr�test_keep_buffer;s
zReTests.test_keep_buffercCsGd}tjd�}t|�}|j|jd�|jd��dS)NZQabbbcRzab+c)r(r*r
r$�findall)r�sr r!rrr�test_weakrefFs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)rBrC)rBrC)rr)rr)rrC)rrC)r$r(�search�span�assertIsNone�match)rrrr�test_search_star_plusLs%"%"%"%"zReTests.test_search_star_pluscCs#t|jd��}t|d�S)NrrB)�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�x1d6D])}|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�|jtjdtj	��d���|jtjd�fdd�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
d.�t
d/��xcd0D][}|j|��C|jt
��,|jtjdd1|d�d1|�WdQRXWdQRXq�W|jtjd2d3d4�d5�dS)7Nr!�a�xyzZxaz�yr7sxyzsxaz�à�а�𝒜zx%szz(?i)b+r z	bbbb BBBBzx xz\d+z08.2 -2 23x99yz9.3 -3 24x100yrCz
9.3 -3 23x99y�count�.cSsdS)Nz\nr)�mrrr�<lambda>nsz+ReTests.test_basic_re_sub.<locals>.<lambda>z\n�
z\1\1z(.)�xxcs�S)Nr)rV)r@rrrWtsz(?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,cdehijklmopqsuwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ�\z^\s*�XZtestZXtest)rQrRrS)r%r(r3rrr8�
memoryviewr$rM�escape�chrr+�assertWarns�DeprecationWarning)rr!�cr)r@r�test_basic_re_sub\sD++++
'!%(+I
9zReTests.test_basic_re_subcCs#|jtjddd�d�dS)Nz
(?P<unk>x)z\g<1>\g<1>\brYzxxxx)r$r(r3)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
rX)r$r(r3)rrrr�test_bug_449000�szReTests.test_bug_449000cCs�tjd�}|jttj|dtj�|jttj|dtj�|jttj|dtj�|jttj|tj�dS)NrU�A)r(r*r'�
ValueErrorrH�IrEr?)rr&rrr�
test_bug_1661�s
zReTests.test_bug_1661cCstjd�dS)Nz(?P<quote>)(?(quote)))r(r*)rrrr�
test_bug_3629�szReTests.test_bug_3629cCsl|jtjddd�d�|jtjddd�d�|jtjddd�d�|jtjddd�d2�|jtjdd	d�d3�|jtjddd�d�|jtjdd
d�d�|jtjddd�d�|jtjddd�d�|jtjddd�d4�|jtjddd�d�|jtjddd�d�|jtjddd�d5�|jtjddd�d6�|jtjddd�d7�|jddddd�|jddddd�|jdd dd!�|jdd"dd!�|jdd#dd!�|jdd$dd!�|jdd%dd!�|jdd&dd!�|jdd'dd!�|jdd(dd!�|jdd)dd!�|jdd*dd!�|jdd+dd!�|jdd,dd!�|jtjd-d$d�d�|jtjd.d)d/�d0�|jtjd.d*d/�d1�dS)8Nr z\0�z\000z\001�z\008�8z\009�9z\111rnz\117�Oz\377�ÿz\1111�I1�1z\00z\07�z\08z\09z\0arNz\400z0octal escape value \400 outside of range 0-0o377rz\777z0octal escape value \777 outside of range 0-0o377z\1zinvalid group referencez\8z\9z\11z\18z\1az\90z\99z\118z\11az\181z\800z(((((((((((x)))))))))))z((((((((((y))))))))))(.)rOZxz8Zxzaz8z9rwz8z9za)r$r(r3r5)rrrr� test_sub_template_numeric_escape�sLz(ReTests.test_sub_template_numeric_escapecCsj|jtjddd�d�|jtjdddd�d�|jtjddddd�d�dS)NrNr<ZaaaaaZbbbbbrBZbaaaarT)r$r(r3)rrrr�test_qualified_re_sub�s"zReTests.test_qualified_re_subcCs#|jtjddd�d�dS)Nz(\S)\s+(\S)z\1 \2zhello  therezhello there)r$r(r3)rrrr�test_bug_114660�szReTests.test_bug_114660cCsB|jtjddd�d�|jtjddd�d�dS)Nzx*�-Zabxdz-a-b-d-zx+zab-d)r$r(r3)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)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(?(rCz(?())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>rB��z(?:%s)(?(200)z|t)�xc8yzr���)rr�)r(r*r1�join�ranger$rHrF)r�patrrr�test_symbolic_groups�sB


		


%
zReTests.test_symbolic_groupsc
Cs�|jddddd�|jddddd�|jdddd	d
�|jddddd�|jdd
ddd�|jddddd�|jdddd�|jdddd�|jtd��tjddd�WdQRX|jtjddd�d�|jtjddd�d�|jddddd�|jtjddd�d�|jtjddd�d�|jddddd�d jd!d"�td#d(�D��}|jtj|d%d&�d'�dS))Nz(?P<a>x)z\g<arYzmissing >, unterminated namerCz\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 referencez\2zunknown group name 'ab'z\g<ab>z(?P<a>x)|(?P<b>y)z\g<b>�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>rBr�z\g<200>Z	xc8yzxc8yZc8zc8r�)r5ZassertRaisesRegex�
IndexErrorr(r3r$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 BBBBrBrOrzb*�xxxyxzxr�xxxyzrT)r�r�)r�rB)rOr)r�r)r�r�)r�r�)r$r(�subn)rrrr�test_re_subn$s"zReTests.test_re_subncCsYx�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�d%D]�\}}}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]Y\}}|jd!|��8|j	t
��!|jtj|d�|�WdQRXWdQRXqdWx�ddgfd"dgfd#dgfd$dgfgD]Y\}}|jd!|��8|jt��!|jtj|d�|�WdQRXWdQRXq�WdS)&Nz:a:b::c�:r�rNr<rhz:+z(:+)z::s:a:b::c�:�r7�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(�splitrr8rcr$r+rf�
FutureWarningr'rm)rr4rNr<rhr��expectedrrr�
test_re_split,s\  +( (.#.#zReTests.test_re_splitcCs,|jtjddd�dddg�|jtjdddd�dddg�|jtjdddd�dd	d
g�|jtjdddd�dddddg�|jtjdddd�dddddg�|jt��6|jtjd
ddd�dddddg�WdQRXdS)Nr�z:a:b::cr�r�rNzb::c�maxsplitza:b:c:dr<zc:dz(:)z(:+)z(:*))r$r(r�rfr�)rrrr�test_qualified_re_splitas(++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�rQ�а�𝒜r�rCz
a%sb%sc%sdz%s+z(%s+)z	(%s)(%s*))r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rQr�r�)r$r(r?rr%rr8rc)rr4r rYrDrrr�test_re_findallms0


))zReTests.test_re_findallcCs)|jtjdd�dddg�dS)	Nz(a|(b))�abarNr�r<)rNr�)r<r<)rNr�)r$r(r?)rrrr�test_bug_117612�szReTests.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)%NrNz(a)rrBr7s(a)rQ�а�𝒜z(%s)z
((a)|(b))(c)?r<�acrh�bcr�z!(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?r�rCZa1Zb2Zc3)rN)rNrN)r7)r7r7)rQr�r�)rNrNNN)r<Nr<N)rNrNNrh)r<Nr<rh)r<r�r<rh)rNrN)rNNN)Nr<N)rNNrh)
rr$r(rH�groupsrKrr8rcr*)rr4rNr�rVrrr�
test_re_match�sD""%%,+""%%,
")))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)1NrNrrB�abza|abr�sabsa|ab�àß�аб�𝒜𝒞z%s|%sz.*?$r�rCz.*?za.*?b�abbZaxxbrza+zabc$zabc
zabc\Zz(?m)abc$z	ab(?=c)cd�abcdz
ab(?<=b)cdz
(?=a|ab)abr�r-�endpos)rrB)rr�)rr�)r�r�r�)rr�)rrC)rrC)rr�)rrC)rr)rr)rr)rr�)rBrC)rBrC)rBrC)
r$r(�	fullmatchrFrrr8rcrGr*)rr4rNr<�rrrr�test_re_fullmatch�s4"&+&*""""""""..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��djdd�tdd-�D��}d|}|jtj|d�j�d.�|j	ddd�|j	d d!d"�|j	d#d$d�dS)/Nz^(\()?([^()]+)(?(1)\))$z(a)�(rNza)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�rhZadZabdr�r�css|]}d||fVqdS)z
x(?P<a%d>%x)yNr)r�r�rrrr��sz2ReTests.test_re_groupref_exists.<locals>.<genexpr>rBr�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�rN)NrN)rNr<)Nr�)Nr�)rNr�)rNr<rh)rNNr�r�)rr�)
r$r(rHr�rGr*r�r�rFr1)r�pr�rrr�test_re_groupref_exists�s<%
"	
	zReTests.test_re_groupref_existscCs>|jddtjddd�|jdtjdd�dS)Nz()z\g<%s>rYzinvalid group referencerCz(?P<a>)(?(%d))r[)r5�
sre_constants�	MAXGROUPSr1)rrrr�test_re_groupref_overflow�s
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�rNz^(\|)?([^()]+)\1?$za|z|az^(?:(a)|c)(\1)$Zaaz^(?:(a)|c)(\1)?$rhz(abc\1)zcannot refer to an open groupr)r�rN)NrN)rNrN)NN)r$r(rHr�rGr1)rrrr�test_re_groupref�szReTests.test_re_grouprefcCs2|jtjdd�j�ddddi�dS)Nz#(?P<first>first) (?P<second>second)zfirst second�first�second)r$r(rH�	groupdict)rrrr�test_groupdict
szReTests.test_groupdictcCsN|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(rH�expand)rrrr�test_expands		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��|jtjdd��|jddd �dS)!Nz	^(\w){1}$r�z
^(\w){1}?$z^(\w){1,2}$z^(\w){1,2}?$z	^(\w){3}$rBrhz^(\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}$rDz^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�)rGr(rHr$rK�
assertTruer1)rrrr�test_repeat_minmaxs:%%%%%%%%	zReTests.test_repeat_minmaxc
Cs�|jtjd�jd�|jtjd�jtjtjB�|jtjd�jd�|jtjd�ji�|jtjd�jddddi�|jtj	dd�j
d	�|jtj	dd�jd�|jtj	dd�jd�|jtj	dd�j
d�|jtj	dd�j�tjd�}|jt|j�ddg�|j|jdd�|jt��d	|jd<WdQRX|j|jdd�dS)
Nz
(?i)(a)(b)r�z(?i)(?P<first>a)(?P<other>b)r�rB�otherz(a)rNr�rrB�rrB)r�r�)r$r(r*r&�flagsrn�Ur��
groupindexrHr-r�r4�regsr��sortedr'�	TypeError)rr�rrr�test_getattr=s"&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 bxrBZbxz\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(rErK�ASCII�MrG�LOCALE)rrrr�test_special_escapesSs<++++zReTests.test_special_escapescCs�|jddd�|jtjdd�j�d�|jtjdd��|jtjdd�j�d�|jtjdd	�j�d	�|jtjdd
��|jtjdd�j�d�|jtjdd
��|jtjdd�j�d�|jtjdd
��tj�x�dD]�}|j|���|jt	��J}|jtj
d||�j�|�|jtjd|d��WdQRX|jt|j
dj�d�|j|j
djt�WdQRXq2Wx�dD]�}|j|���|jt	��J}|jtj
d||�j�|�|jtjd|d��WdQRX|jt|j
dj�d�|j|j
djt�WdQRXq�WdS)Nrazbad escape (end of pattern)rz\(r��)z\\z[\]]�]�[z[a\-c]r}r<z[\^a]+za^Z!ceghijklmopqyzCEFGHIJKLMNOPQRTVXYz\%crNz
bad escapeZ$ceghijklmopqyzABCEFGHIJKLMNOPQRTVXYZz[\%c])r1r$r(rHrKrG�purger+rfrgr�ZassertRegexrL�warnings�message�filename�__file__)rrhZwarnsrrr�test_other_escapesss2"""""

&$ %
&$ zReTests.test_other_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�rBz\bz\Br�rNr�rr�z   )
r$r(rErKr�rHZassertFalserG�lenr?)rrrr�test_string_boundaries�s""""zReTests.test_string_boundariescCss|jtjdd�jd�d�ddjtttddd	���}|jtj|d
�j�d
�dS)Nu
([∢∣])u∢rBz[%s]r��r���u!i)r$r(rHrKr��maprer�)rr�rrr�test_bigcharset�s(zReTests.test_bigcharsetcCs[tjdjdd�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�rH)rr�rrr�test_big_codesize�s+zReTests.test_big_codesizecCsZ|jtjddtj�jd�d�|jtjddtj�jd�d�dS)Nza.bza
brza.*bza

b)r$r(rH�DOTALLrK)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��dS)Nz
(a(?=\s[^a]))za brBrNz(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(rHrKr�rG)rrrr�test_lookahead�s*%%%%%%%%%%%zReTests.test_lookaheadcCs�|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(rHrGr'r)r*)rrrr�test_lookbehind�s(zReTests.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 brBz
(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ſrr@z\u017fuſtust�STz\ufb05z\ufb06)	r$r(rHrnrK�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]rlz[19a]rNs[19A]�As[19a]r7uKr�z[19K]z[19k]z
[19\u212a]r�uſrz[19S]z[19s]z
[19\u017f]r@uſtustr�z
[19\ufb05]z
[19\ufb06])r�r(rHrnr�r�r�)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��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]r@uſtustr�z[\ufb04-\ufb05]z[\ufb06-\ufb07])r�r(rHrnrGr�r�r�)rrrr�test_ignore_case_range!s:.zReTests.test_ignore_case_rangecCs)|jtjdd�jd�d�dS)Nz(\s)r�rB)r$r(rHrK)rrrr�
test_categoryBszReTests.test_categorycCssddl}|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)NrrlrNr�r�sabcsABC)
�_srer$�getlower�ordr(r��UNICODEr�rHrnrKrl�L)rrrrr�
test_getlowerEs(+++++2zReTests.test_getlowercCsN|jtjdd�jd�d�|jtjdd�jd�d�dS)Nz\s([^a])z brBr<z	\s([^a]*)z bbZbb)r$r(rErK)rrrr�test_not_literalQs%zReTests.test_not_literalcCsN|jtjdd�jd�d�|jtjdd�jd�d�dS)Nz\s(b)z brBr<za\sza r)r$r(rErK)rrrr�test_search_coverageUs%zReTests.test_search_coveragecCs�|dkr3|dkr3|}dt|�f}n$|dksK|dkrWtd��|||�}|j|�|j|j�|�|j|j�|�dS)Nrz@If match is not None, span should be specified (and vice versa).)r�rmr�r$rKrF)rr&�textrHrFZmatcherrVrrr�assertMatchYs
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)re)r�r�rrrr�isz)ReTests.test_re_escape.<locals>.<genexpr>r�rqz\000ra)	r4�
ascii_letters�digitsr�r�r$r(rdr)r�alnum_charsr�rhrrr�test_re_escapegs"
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\)
r4rr
�encode�bytesr�r$r(rdr)rrr�r�r<rrr�test_re_escape_bytets
zReTests.test_re_escape_bytecCsbd}tj|�}|j|d�|j||�|jdtjd�|ddtj�dS)	Nuxxx☠☠☠xxxuxxx\☠\☠\☠xxxz.%s+.u☠ux☠☠☠xr�r_)r�r_)r(rdr$rrE)rr@Z	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☠r�)rr(rdr$rr?r�)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)+?(.)rB)�_compile)
�pickler(r*rr�ZHIGHEST_PROTOCOL�dumps�loadsr$r)rrZoldpat�protoZpickledZnewpatrrrr�
test_pickling�szReTests.test_picklingcCsr|jtjtj�|jtjtj�|jtjtj�|jtjtj	�|jtj
tj�dS)N)r$r(rn�
IGNORECASErr�r��	MULTILINErr�rb�VERBOSE)rrrr�test_constants�s
zReTests.test_constantscCs�xKtjtjtjtjtjtjgD]}|jtjd|��q+WxKtjtjtjtjtjtj	gD]}|jtjd|��qyWdS)Nz	^pattern$s	^pattern$)
r(rnr�rbrrlr�r�r*r)rZflagrrr�
test_flags�s11zReTests.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��|dkr�|jtjd|t|���|jtjd|t|�d��|jtjd|t|�d��|jtjd|t|���|jtjd|t|�d��|jtjd|t|�d��q+W|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.d/d�|jd0d/d�|jd1d2d�dS)3Nrr`r�� �@��r�r�i��ii��z\%03oz\%03o0�0z\%03o8rsz\x%02xz\x%02x0z\x%02xz�zz\u%04xz\u%04x0z\u%04xzz\U%08xz\U%08x0z\U%08xzz\0rqz\08z8z\01rrz\018z8z\567z0octal escape value \567 outside of range 0-0o377z\911zinvalid group referencez\x1zincomplete escape \x1z\x1zz\u123zincomplete escape \u123z\u123zz	\U0001234zincomplete escape \U0001234z
\U0001234zz
\U00110000zbad escape \U00110000)r�r(rHrer1)rr�rrr�test_sre_character_literals�s<1#''#''#''#'+	z#ReTests.test_sre_character_literalscCs�x<ddddddddd	d
ddgD]}|d	krU|jtjd
|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|dkr�|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|���|jtjd|t|�d��|jtjd|t|�d��q+W|jddd�|jd d!d�|jd"d#d�|jd$d%d�|jd&d'd�|jd(d)d�|jtjd*d+��dS),Nrr`r�r"r#r$r%r�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]r&z	[\U%08xz]r'z[\567]z0octal escape value \567 outside of range 0-0o377rBz[\911]z
bad escape \9z[\x1z]zincomplete escape \x1z[\u123z]zincomplete escape \u123z[\U0001234z]zincomplete escape \U0001234z[\U00110000]zbad escape \U00110000z[\U0001d49c-\U0001d4b5]u𝒞)r�r(rHrer1)rr�rrr�!test_sre_character_class_literals�s41############'+	z)ReTests.test_sre_character_class_literalscCsUx>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|jt��|jtjdd��WdQRX|jt��|jtjdd��WdQRX|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jddd�|jd d!d�|jd"d#d�|jd$d#d�dS)%Nrr`r�r"r#r$r%r�z\%03oz\%03o0�0z\%03o8�8z\x%02xz\x%02x0z\x%02xz�zs\u1234su1234s
\U00012345s	U00012345s\0ss\08s8s\01ss\018s8s\567z0octal escape value \567 outside of range 0-0o377s\911zinvalid group references\x1zincomplete escape \x1s\x1z)r�r(rHrrrfrgr1)rr�rrr�test_sre_byte_literals�s*%,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|jt��|jtjdd��WdQRX|jt��|jtjdd��WdQRX|jddd�|jddd�|jddd�dS)Nrr`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]s[\u1234]�us[\U00012345]�Us[\567]z0octal escape value \567 outside of range 0-0o377rBs[\911]z
bad escape \9s[\x1z]zincomplete escape \x1)r�r(rHrrrfrgr1)rr�rrr�test_sre_byte_class_literals�s$%,,,,,,,0  	z$ReTests.test_sre_byte_class_literalscCs�|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-brBz[a-\w]zbad character range a-\wz[b-a]zbad character range b-a)r1)rrrr�test_character_set_errorssz!ReTests.test_character_set_errorscCss|jtjdd�jd�d�|jtjdd�jd�d�|jtjdd�jd�d�dS)	Nz(a)|(b)r<rB���r2r2r2)r2r2)r$r(rH�start�endrF)rrrr�test_bug_113254s%%zReTests.test_bug_113254cCs�|jtjdd�j�|jtjdd�jd�|jtjdd�jd�|jtjdd�jd�|jtjdd�jd�dS)	Nz(a)?arNz(a)(b)?br�rBz(?P<a>a)(?P<b>b)?bz(?P<a>a(b))z((a)))rGr(rH�	lastindexr$�	lastgroup)rrrr�test_bug_527371 s
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�rhZcdei#Ni Nr�Zdeia�z(a|b)*?c)r$r(rHr4rE)rrrr�test_bug_418626(s
-2-zReTests.test_bug_418626cCs:dtjd�d}|jtj|�o/dd�dS)Nr�u‹r�rB)r(rdr$r*)rr�rrr�test_bug_6120744szReTests.test_bug_612074cCs�|jtjddd�jd�d�|jtjdddd�jd�d�|jtjdddd�jd�d�dS)Nz(x)*iP�r rBz(x)*yr!z(x)*?y)r$r(rHrK)rrrr�test_stack_overflow8s)-zReTests.test_stack_overflowcCs`xYdD]Q}xHdD]@}|jd||fdd�|jd	||fdd
�qWqWdS)
N�*�+�?�{1,2}r�z%s%sznothing to repeatrz(?:%s%s)rC)r<r=r>r?)r�r>)r1)r�reps�modrrr�test_nothing_to_repeat?s


zReTests.test_nothing_to_repeatc
Cs�x|d	D]t}xkd
D]c}||}xPdD]H}x?dD]7}||}|jd||fddt|��q8Wq+WqWqWdS)
Nr<r=�{1,2}r�r>zx%s%szmultiple repeatrB)r<r=rC)r�r>)r<r=r>rC)r�r>)r1r�)rZ
outer_repsZ	outer_mod�outer_opZ
inner_repsZ	inner_mod�inner_oprrr�test_multiple_repeatGs





zReTests.test_multiple_repeatcCs�|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��dS)Nz(?:a?)*yr'z(?:a?)+yz(?:a?){2,}yz	(?:a?)*?yz	(?:a?)+?yz(?:a?){2,}?y)rGr(rH)rrrr� test_unlimited_zero_width_repeatQs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)rHrIrrr�
s_operator\sz(ReTests.test_scanner.<locals>.s_operatorcSs
t|�S)N)�float)rHrIrrr�s_float]sz%ReTests.test_scanner.<locals>.s_floatcSs
t|�S)N)rJ)rHrIrrr�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=rCzop*Zfoozop+g�s@Zbar)rON)r	r�rHr&r$�scan)rrJrKrMrNrHrrr�test_scannerZs				zReTests.test_scannercCsaxZd	D]R}|jtjd|d�j�d
�|jtjd|d�j�d�qWdS)Nr�r>r<z
((.%s):)?zr'za:z�a:rN)r�r>r<)NN)rSrN)r$r(rHr�)r�oprrr�test_bug_448951ns

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<rNz^(([ab])|c)*rhz^((d)|[ab])*z
^((a)c|[ab])*z^((a)|b)*?cz^(([ab])|c)*?dr�z^((d)|[ab])*?cz^((a)c|[ab])*?c)r<rN)rhr<)r<N)r<N)r<rN)rhr<)r<N)r<N)r$r(rHr�)rrrr�test_bug_725106ws zReTests.test_bug_725106cCsH|jtjdd�j�d�|jtjdd�j�d�dS)Nz(a)(?:(?=(b)*)c)*r�rNz(a)((?!(b)*))*)rNN)rNNN)r$r(rHr�)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rXr�rO)rLr(r*rGrH)rrXr�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)rK)r��itemrrr�
<listcomp>�s	z)ReTests.test_finditer.<locals>.<listcomp>r�z::z:::rBr[cSsg|]}|jd��qS)r)rK)r�rZrrrr[�s	r-r�cSsg|]}|jd��qS)r)rK)r�rZrrrr[�s	cSsg|]}|jd��qS)r)rK)r�rZrrrr[�s	rCr`cSsg|]}|jd��qS)r)rK)r�rZrrrr[�s	)r(r9r$r*)r�iterr�rrr�
test_finditer�s&zReTests.test_finditercCs&|jtjd�tjd��dS)NZ
bug_926075s
bug_926075)ZassertIsNotr(r*)rrrr�test_bug_926075�szReTests.test_bug_926075cCs5d}|jtj|�jd�dddg�dS)Nu[.。.。]za.b.crNr<rh)r$r(r*r�)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 brBr�)rBr�)rBr�)r(r9r$�nextrFr'�
StopIterationr*rHrErG)rr\rHrrr�test_bug_581080�szReTests.test_bug_581080cCsatjdd�}|jt|�j�d�|jt|�j�d�|jtt|�dS)Nz.*Zasdfrr)rr)rr)r(r9r$r`rFr'ra)rr\rrr�test_bug_817234�szReTests.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(rHrKrG)rZdecimal_digitsr Znot_decimal_digitsrrr�
test_bug_6561�s	
)	
zReTests.test_bug_6561cCswddl}xddD]\}|j|�}|jtjd�j|��|jtjd�j|�j�f�qWdS)NrZbBuhHiIlLfdsblar�)�arrayrGr(r*rHr$r�)rrf�typecoderNrrr�test_empty_array�s

zReTests.test_empty_arraycCs�d}d}tj|tjtjB�}|j|�}|j|�tj|tjtjB�}|j|�}|j|�tjd|tj�}|j|�}|j|�tjd|tj�}|j|�}|j|�tjd|�}|j|�}|j|�tjd|�}|j|�}|j|�|jtjd||��|jtjd||��dS)NuẠuạz(?i)z(?iu)z(?ixu) )r(r*rnr�rHr�)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#rXz#
#za#
b#
#za#
b#
c#N)r(r*r$r3r)rr&rrr�test_dollar_matches_twicesz!ReTests.test_dollar_matches_twicecCs�tjd�}tjd�}|jt|jd�|jt|jd�|jt|jdd�|jt|jdd�|jt|jdd�|jt|jdd�|jt|jdd�|jt|jdd�dS)NrU�.r�r<rhr�)r(r*r'r�rHr3)rr��bpatrrr�test_bytes_str_mixingszReTests.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�ÀrQz\wu(?a)Àz(?a)\ws�s�s\ws(?u)\wz(?u)\wz(?au)\w)
r(rr*rr�rHr�rGr'rm)rr�r�rrr�test_ascii_and_unicode_flags0#z#ReTests.test_ascii_and_unicode_flagc

Cs�ddl}|j|j�\}}x�tdd�D]�}y�t|g�j|�}|j�}||krpw4|j|�}t|�dkr�w4|j|�|kr�w4t	j
t|g��}PWq4ttfk
r�Yq4Xq4Wd}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�}	|r�|j|	j|��t	j
d�}	|r�|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�rBr�s(?L)s\ws(?L)\wr�z(?L)r�s(?a)s(?aL))�localeZ	getlocale�LC_CTYPEr�r�decoder�rr�r(rd�UnicodeErrorr�r*r�rr�rHrGrfrgr�)
rrsr��encr�rhZsletterZbletterror�rrr�test_locale_flag;sV	#zReTests.test_locale_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)NrLr)rVrrrrWqsz'ReTests.test_bug_6509.<locals>.<lambda>Za5rLsa(\w)sb\1sacsbcsa(.)sa�sb�s..cSsdS)Nsbytesr)rVrrrrWyssa5sbytes)r(r*r$r3)rr�rrr�
test_bug_6509is"zReTests.test_bug_6509cCs�ddl}d}|jttjdi�|jt��$|jdd|gdgg�WdQRX|jt��!|jidgdgg�WdQRXdS)Nrr�r%rNr�l	)rr'r�r(r9�
OverflowErrorr*)rrZ
long_overflowrrr�test_dealloc{s&zReTests.test_dealloccCs�|jtjdd��|jtjdd��|jtjdd��|jtjdd��|jtjdd��dS)Nz123.*-z123abc-u123é-u123€-u123􏿿-u
123é€􏿿-)r�r(rE)rrrr�test_search_dot_unicode�s
zReTests.test_search_dot_unicodecCsntjd�}|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_compilecCsF|jt��0|jtjdd�dddddg�WdQRXdS)Nz[\A\B\b\C\Z]zABCZrlr��C�Z)rfrgr$r(r?)rrrr�test_bug_13899�szReTests.test_bug_13899�sizeZmemuserBcCsYd|}tjd|�}|j|�|j|j�|�|j|j�|�dS)NrNrk)r(rEZassertIsNotNoner$r3r4)rr�r@rVrrr�test_large_search�s


zReTests.test_large_searchr�r�cCsMd|}tjdd|�\}}|j||�|j||d�dS)NrNr�rB)r(r�r$)rr�r@r��nrrr�test_large_subn�s
zReTests.test_large_subncCsE|jtjdd�dg�|jtjdd�j�d�dS)	Nz	(?i)(a)\1uaa ĀrNz
(?s).{1,3}uĀĀrr�)rr�)r$r(r?rHrF)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}r�r%z.{,%d}z.{%d,}?z.{%d,%d}�)rr�)rr�)rr�)rr�)rr�)rr�l	l	l	�	�	)r�r�)r$r(rHrFr'rzr*)rr4rrr�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}rBz.{,%d}z.{%d,}?)rr�)rr��ImportError�skipTestrGr(rHr$rFr'rzr*)rr�r4rrr�%test_repeat_minmax_overflow_maxrepeat�s

!#!z-ReTests.test_repeat_minmax_overflow_maxrepeatcCs|jddd�dS)Nz
(?P=<foo>)z#bad character in group name '<foo>'r)r1)rrrr�$test_backref_group_name_in_exception�s	z,ReTests.test_backref_group_name_in_exceptioncCs|jddd�dS)Nz
(?P<?foo>)z"bad character in group name '?foo'r)r1)rrrr�test_group_name_in_exception�s	z$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=r>�{1}r�rUZyzrOr"sxyz)r<r=r>r�)r�r>)r$r(r*rr?r)rr@rAr&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(rEr$�reprrrrrr8rcrr9)rr4rVr�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<r=�{1,187}r>z^((x|y)%s)%sZxyyzyrZxyyrBr�r�r!)r�r<r=r�)r�r<r>)r(r*rHr$rK)rrDrEr�rVrrr�
test_bug_2537s

zReTests.test_bug_2537cCs�d}t��}tj|tj�WdQRXd}|j|j�|�t��}tj|tj�WdQRX|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(r*�DEBUGr$�getvalue)rr��out�dumprrr�test_debug_flag
s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)r4Zabracadabrar-r_r�r[rZrCr�r�rBr�Z	racadabra)r_rZ)r_rZ)r_rZ)r_rZ)
r(r*r$rHrFr�rEr?r�rH)rr�rrr�test_keyword_parameters*s(((%'zReTests.test_keyword_parameterscCs,|jtjddtj�j�d�dS)Nz[a-c]+r�rrC)rrC)r$r(r�rnrF)rrrr�test_bug_20998<szReTests.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)r�r�)
rs�	setlocalertZ
addCleanup�Errorr�r(r��check_en_US_iso88591�check_en_US_utf8)rZ	oldlocale�locrrr�test_locale_cachingAs





zReTests.test_locale_cachingcCs�tjtjd�|jtjddtjtjB��|jtjddtjtjB��|jtjddtjtjB��|jtjdd��|jtjdd��|jtjdd��dS)Nzen_US.iso88591s��s�s�s(?Li)��s(?Li)�s(?Li)�)rsr�rtr�r(rHrrn)rrrrr�Ss&&&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)�)	rsr�rtr�r(rHrrnrG)rrrrr�\s&&&zReTests.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(€))rCrBrz at position 3s(�))zq
                (
                    abc
                )
                )
                (
                �Mr��z at position 77z(line 5, column 17))r'r(r)r*r,r}r&rLr$r-�lineno�colnoZassertInr"ZassertNotInrr)rr/r0rrr�
test_errores6			zReTests.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 patternrCz(?z)zunknown extension ?zrBz(?iz)zunknown flagz(?iz	missing )z(?#abczmissing ), unterminated commentz(?<z(?<>)zunknown extension ?<>z(?r�)r1)rrrr�test_misc_errors�szReTests.test_misc_errorscCs�td�}tjd|�}tjd|�}|j|j�d�|j|j�d�d|dd�<|j|j�d�|j|j�d�dS)Nsabcdefghs[a-h]+s[e-h]+sefghsxyzr�)r8r(rEr$rK)rr@rV�m2rrr�test_bug_29444�szReTests.test_bug_29444�)urrrr%r1r5r>rArIrMrirjrkrorprzr{r|r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr	r(rHrrrrrrr r!r(r)r-r0r1r5r8r9r:r;rBrFrGrRrUrVrWrYr]r^r_rbrcrerhrjrmrprrrxryr{r|rr�rrr�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrs�
		*/&5(%
$ !


 
			 
.
!!

		$
rc@s�eZdZdd�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�check�szPatternReprTests.checkcCs&|jttj||��|�dS)N)r$r�r(r*)rr&r�r�rrr�check_flags�szPatternReprTests.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_flag�sz!PatternReprTests.test_single_flagcCs(|jdtjtjBtjBd�dS)Nzrandom patternz@re.compile('random pattern', re.IGNORECASE|re.DOTALL|re.VERBOSE))r�r(rnrrb)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�rnr)rrrr�test_unicode_flag�sz"PatternReprTests.test_unicode_flagcCs|jdd�dS)Nz(?i)patternz(re.compile('(?i)pattern', re.IGNORECASE))r�)rrrrrj�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(rn)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(rl)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�szPatternReprTests.test_localecCs4|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$rn)rr&r�rrr�test_long_pattern�sz"PatternReprTests.test_long_patternN)rrrr�r�r�r�r�r�rjr�r�r�r�r�rrrrr��s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�rNrr�ZaaaarBr�rCZababbaZabcabdac)�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	|���WdQRXqWdS)zre_tests benchmarksr)�
benchmarksr&r4r�i'N)
�
test.re_testsr�r+r(r*r�rErHr�r�)rr�r&r@r��s2rrr�test_re_benchmarks�s&z ExternalTests.test_re_benchmarkscDCsWddlm}m}m}m}x.|D]&}d}}}}	}
t|�dkro|\}}}}	}
n3t|�dkr�|\}}}ntd|��|jd|d|���||kr�|jt	j
��t	j|�WdQRXw)t	j|�}|j|�}||kr.|j
|d	�w)|j��B|j|d
�|jd�\}
}d|jd�d|j�d
|j	ji}xetdd�D]T}y%|j|�}|dkr�d}Wntk
r�d}YnX||d|<q�Wxd|j	jj�D]P}y%|j|�}|dkr2d}Wntk
rMd}YnX|||<qW|jt|	|�|
d�WdQRXy"t|d�}t|d�}Wntk
r�Yn�X|jd��*t	j|�}|j|j|��WdQRX|jd��Bt	j|t	j�}|j|�}|dkr?td|�WdQRX|dd�dkr�|dd�dkr�|dk	r�|jd��4t	j|�}|j|j||
|d��WdQRX|jd��0t	j|t	j�}|j|j|��WdQRX|jd��0t	j|t	j�}|j|j|��WdQRXWdQRXq)WdS)zre_tests test suiter)�tests�SUCCEED�FAIL�SYNTAX_ERRORNr�rCz%Test tuples should have 3 or 5 fieldsr&r4zSucceeded incorrectlyzFailed incorrectly�foundr�r�rB�d�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�rmr+r'r(r)r*rErGr�rFrKr�r�r�r��keysr$�evalr�UnicodeEncodeErrorr��printrr)rr�r�r�r��tr&r@Zoutcomer2r��obj�resultr3r4Zvardictr�ZgiroZbsrrr�
test_re_testss�"






,'zExternalTests.test_re_testsN)rrrr�r�rrrrr��sr��__main__)Ztest.supportrrrrrrr�iorsr(r	r�r��sysr4�	tracebackZunittest�weakrefr
rLrrrZTestCaserr�r�r�r�mainrrrr�<module>s24�������Bq