Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_re.cpython-311.opt-1.pyc
�

�Ke�����ddlmZmZmZmZmZmZmZmZm	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZddlmZ	ddlZddlZn
#e$rdZYnwxYwGd�de��ZGd�de��ZGd	�d
ej��Zd�ZeGd�d
ej����ZGd�dej��ZGd�dej��Z Gd�dej��Z!e"dkrej#��dSdS)�)	�
gc_collect�
bigmemtest�_2G�cpython_only�captured_stdout�check_disallow_instantiation�
is_emscripten�is_wasi�
SHORT_TIMEOUTN)�Scanner)�proxyc���eZdZ�fd�Z�xZS)�Sc�`��tt���|����S�N)r�super�__getitem__��self�index�	__class__s  ��6/usr/local/apps/python3/lib/python3.11/test/test_re.pyrz
S.__getitem__�#�������$�$�U�+�+�,�,�,���__name__�
__module__�__qualname__r�
__classcell__�rs@rrr�8�������-�-�-�-�-�-�-�-�-rrc���eZdZ�fd�Z�xZS)�Bc�`��tt���|����Sr)r#rrrs  �rrz
B.__getitem__"rrrr s@rr#r#!r!rr#c��eZdZd�d�Zd�d�Zd�d�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d �Z!d!�Z"d"�Z#d#�Z$d$�Z%d%�Z&d&�Z'd'�Z(d(�Z)d)�Z*d*�Z+d+�Z,d,�Z-d-�Z.d.�Z/d/�Z0d0�Z1d1�Z2d2�Z3d3�Z4d4�Z5e6d5���Z7d6�Z8d7�Z9d8�Z:dde;j<fd9�Z=e>j?e>j@zd:zZAd;�ZBd<�ZCd=�ZDd>�ZEd?�ZFd@�ZGdA�ZHdB�ZIdC�ZJdD�ZKdE�ZLdF�ZMdG�ZNdH�ZOdI�ZPdJ�ZQdK�ZRdL�ZSdM�ZTdN�ZUdO�ZVdP�ZWdQ�ZXdR�ZYdS�ZZdT�Z[dU�Z\dV�Z]dW�Z^dX�Z_dY�Z`dZ�Zad[�Zbd\�Zcd]�Zdd^�Zed_�Zfd`�Zgda�Zhdb�Zidc�Zjdd�Zkde�Zldf�Zmdg�Zneoepdh�i��dj���Zqeoepdk�i��dl���Zrdm�Zsdn�Zte6do���Zudp�Zvdq�Zwdr�Zxds�Zydt�Zzdu�Z{dv�Z|dw�Z}e~je�pe�dx��dy���Z�dz�Z�d{�Z�e~je�pe�dx��d|���Z�d}�Z�d~�Z�d�Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�e~je�dud���d����Z�dS)��ReTestsNc�`������||������fd���||��dS)Nc����t|ttf��r$t||��D]\}}�||���dS��t|��t|�����dSr)�
isinstance�tuple�list�zip�assertIs�type)�actual�expect�x�y�msg�recursers    ���rr4z)ReTests.assertTypedEqual.<locals>.recurse)s{����&�5�$�-�0�0�
?����/�/�"�"�D�A�q��G�A�q�M�M�M�M�"�"��
�
�d�6�l�l�D��L�L�#�>�>�>�>�>r)�assertEqual)rr/r0r3r4s`  `@r�assertTypedEqualzReTests.assertTypedEqual'sZ�����������-�-�-�	?�	?�	?�	?�	?�	?�	?�	��������rc�x�|�tj��5}tj|��ddd��n#1swxYwY|�|���5|j}|�|j|��|�|�|j|��ddd��dS#1swxYwYdS)N)�pattern)	�assertRaises�re�error�compile�subTest�	exceptionr5r3�pos)rr8�errmsgr?�cm�errs      r�checkPatternErrorzReTests.checkPatternError1s.��
�
�
�r�x�
(�
(�	 �B��J�w����	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �
�\�\�'�\�
*�
*�	/�	/��,�C����S�W�f�-�-�-���� � ���#�.�.�.�		/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s$�A�A�A�"AB/�/B3�6B3c�~�|�tj��5}tj|||��ddd��n#1swxYwY|�||���5|j}|�|j|��|�|�|j|��ddd��dS#1swxYwYdS)N)r8�repl)	r9r:r;�subr=r>r5r3r?)rr8rE�stringr@r?rArBs        r�checkTemplateErrorzReTests.checkTemplateError:s4��
�
�
�r�x�
(�
(�	*�B��F�7�D�&�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
�\�\�'��\�
5�
5�	/�	/��,�C����S�W�f�-�-�-���� � ���#�.�.�.�		/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s$�A�A�
A�%AB2�2B6�9B6c�B�td��}tjd|��}|�t��5|�d��ddd��n#1swxYwYt
|��~t��|�d��dS)N�x�as�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)�	bytearrayr:�finditerr9�BufferError�extendr+r)r�b�its   r�test_keep_bufferzReTests.test_keep_bufferCs����d�O�O��
�[��q�
!�
!��
�
�
�{�
+�
+�	�	�
�H�H�X����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��R���������	��������s�A!�!A%�(A%c���d}tjd��}t|��}|�|�d��|�d����dS)N�QabbbcRzab+c)r:r<r
r5�findall)r�sr1r2s    r�test_weakrefzReTests.test_weakrefNsU�����J�v�����!�H�H��������9�-�-�q�y�y��/C�/C�D�D�D�D�Drc�^�|�tjdd���d��d��|�tjdd�����d��|�tjdd���d��d��|�tjdd�����d��|�tjdd����|�tjd	d
���d��d��|�tjd	d
�����d��|�tjdd���d��d��|�tjdd�����d��|�tjd
d
����dS)N�x*�axxr�rrzx+���r1�aaaza*�xxx�xxxa�rr^�a+)r5r:�search�span�assertIsNone�match�rs r�test_search_star_pluszReTests.test_search_star_plusTs��������4��/�/�4�4�Q�7�7��@�@�@������4��/�/�4�4�6�6��?�?�?������4��/�/�4�4�Q�7�7��@�@�@������4��/�/�4�4�6�6��?�?�?����"�)�C��/�/�0�0�0������$��.�.�3�3�A�6�6��?�?�?������$��.�.�3�3�5�5�v�>�>�>������$��/�/�4�4�Q�7�7��@�@�@������$��/�/�4�4�6�6��?�?�?����"�(�4��/�/�0�0�0�0�0rc�,�|�tjdd�����d��|�tjdd�����d��|�tjdd�����d��|�tjdd�����d��|�tjdd	�����d��|�tjdd
�����d��|�tjdd�����d
��|�tjdd�����d
��|�tjdd�����d
��dS)zDTest Branching
        Test expressions using the OR ('|') operator.z(ab|ba)�ab�r��baz(abc|bac|ca|cb)�abcrb�bac�ca�cbz
((a)|(b)|(c))�a�rr]rP�cN)r5r:rgrerhs r�test_branchingzReTests.test_branching`s���	
�����)�T�2�2�7�7�9�9�6�B�B�B������)�T�2�2�7�7�9�9�6�B�B�B������"3�U�;�;�@�@�B�B��	!�	!�	!������"3�U�;�;�@�@�B�B��	!�	!�	!������"3�T�:�:�?�?�A�A��	!�	!�	!������"3�T�:�:�?�?�A�A��	!�	!�	!������/�3�7�7�<�<�>�>��G�G�G������/�3�7�7�<�<�>�>��G�G�G������/�3�7�7�<�<�>�>��G�G�G�G�Grc�j�t|�d����}t|dz��S)Nrr])�int�group�str)r�matchobj�	int_values   r�bump_numzReTests.bump_numqs-������q�)�)�*�*�	��9�q�=�!�!�!rc
���|�tjddd��d��|�tjdtd��td����d��|�tjddd��d��|�tjdt	d��t	d����d��|�tjdtd��td����d��|�tjdt
d��t
d����d��d	D]/}|�tj|dd
|z��d���0|�tjddd
��d��|�tjd|jd��d��|�tjd|jdd��d��|�tjd|jdd���d��|�tjdd�d��d��|�tjddd��d��d�|�tjd�d��d��|�tjd��	dd��d�����|�tjd�fd�d�����|�tjdd d��d!��|�tjdd"d��d!��|�tjd#d$d��d!��|�tjd#d%d��d!��|�tjd&d'd��d!��|�tjdd(d��d)��|�tjdd)d��d)��|�tjdd)d��td*��td+��ztd,��ztd-��ztd.��ztd/��ztd0��z��d1D]�}|�|��5|�tj
��5|�tjdd|zd��d|z��ddd��n#1swxYwYddd��n#1swxYwY��|�tjd2d3d4��d5��dS)6Nr2rs�xyz�xaz�yrK�xyzsxaz��àuаu𝒜zx%sz�(?i)b+r1�	bbbb BBBB�x x�\d+z08.2 -2 23x99yz9.3 -3 24x100yr^z
9.3 -3 23x99y��count�.c��dS)N�\n���ms r�<lambda>z+ReTests.test_basic_re_sub.<locals>.<lambda>�s��u�rr��
z\1\1z(.)�xx�\�\\c����Srr�)r�rVs �rr�z+ReTests.test_basic_re_sub.<locals>.<lambda>�s����r�(?P<a>x)z
\g<a>\g<a>�xxxxz
\g<a>\g<1>�
(?P<unk>x)z\g<unk>\g<unk>z
\g<1>\g<1>z()xz
\g<0>\g<0>z\t\n\v\r\f\a\bz	

�	�
��
����,cdehijklmopqsuwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz^\s*�X�test�Xtest)r6r:rFrr#rL�
memoryviewr5r}�replace�chrr=r9r;)rr2rurVs   @r�test_basic_re_subzReTests.test_basic_re_subus�������b�f�S�#�u�5�5�u�=�=�=����b�f�S�!�C�&�&�!�E�(�(�;�;�U�C�C�C����b�f�T�4��8�8�&�A�A�A����b�f�T�1�T�7�7�A�f�I�I�>�>��G�G�G����b�f�T�9�T�?�?�I�f�<M�<M�N�N�PV�W�W�W����b�f�T�:�d�+;�+;�Z��=O�=O�P�P�RX�Y�Y�Y�1�	@�	@�A����R�V�A�s�F�Q�J�7�7��?�?�?�?�������#�{�;�;�U�C�C�C��������
�7G�H�H�)�	+�	+�	+��������
�7G��K�K�(�	*�	*�	*��������
�7G�q�Q�Q�Q�(�	*�	*�	*�	
������_�_�c�:�:�E�B�B�B�������U�C�0�0�$�7�7�7���������q�#�.�.��5�5�5�������q�y�y��u�'=�'=�s�C�C�Q�G�G�G�������{�{�{�{�C�8�8�!�<�<�<������
�M�4�@�@�&�I�I�I������
�M�4�@�@�&�I�I�I�������.?��F�F��O�O�O�������m�T�B�B�F�K�K�K�������}�d�;�;�V�D�D�D�������%6��<�<�>N�O�O�O�������%5�s�;�;�=M�N�N�N�������%5�s�;�;��a�&�&��R���.��R���0��R���8��R���@��Q���G��A���N�	Q�	Q�	Q�?�	K�	K�A����a���
K�
K��&�&�r�x�0�0�K�K��$�$�R�V�C����3�%?�%?����J�J�J�K�K�K�K�K�K�K�K�K�K�K����K�K�K�K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K����
K�
K�
K�
K��	
�������f�5�5�w�?�?�?�?�?s6� V�41U1�%V�1U5�5V�8U5�9V�V	�V	c�Z�|�tjddd��d��dS)Nr�z\g<1>\g<1>\br�zxxxx�r5r:rFrhs r�test_bug_449964zReTests.test_bug_449964�s7�������
���E�E�#�	%�	%�	%�	%�	%rc�V�|�tjddd��d��|�tjddd��d��|�tjddd��d��|�tjddd��d��dS)Nz\r\nr�z
abc
def
zabc
def
z
r�r�rhs r�test_bug_449000zReTests.test_bug_449000�s����������0@�A�A�%�	'�	'�	'��������/?�@�@�%�	'�	'�	'��������/?�@�@�%�	'�	'�	'��������.>�?�?�%�	'�	'�	'�	'�	'rc��tjd��}|�ttj|dtj��|�ttj|dtj��|�ttj|dtj��|�ttj|tj��dS)Nr��A)r:r<r9�
ValueErrorrg�IrdrU�rr8s  r�
test_bug_1661zReTests.test_bug_1661�s����*�S�/�/�����*�b�h���b�d�C�C�C����*�b�i��#�r�t�D�D�D����*�b�j�'�3���E�E�E����*�b�j�'�2�4�@�@�@�@�@rc�.�tjd��dS)Nz(?P<quote>)(?(quote)))r:r<rhs r�
test_bug_3629zReTests.test_bug_3629�s��
�
�*�+�+�+�+�+rc���|�tjddd��d��|�tjddd��d��|�tjddd��d��|�tjddd��d��|�tjdd	d��d
��|�tjddd��d��|�tjdd
d��d��|�tjddd��d��|�tjddd��d��|�tjddd��d��|�tjddd��d��|�tjddd��d��|�tjddd��d��|�tjddd��d
��|�tjddd��d��|�ddddd��|�ddddd��|�dddd d!��|�dd"dd#d!��|�dd$dd%d!��|�dd&dd'd!��|�dd(dd)d!��|�dd*dd d!��|�dd+dd,d!��|�dd-dd.d!��|�dd/dd'd!��|�dd0dd'd!��|�dd1dd)d!��|�dd2dd3d!��|�dd"d4d#d!��|�tjd5d&d��d��|�tjd6d/d7��d8��|�tjd6d0d7��d9��dS):Nr1�\0�z\000z\001�z\008�8z\009z9z\111r�z\117�Oz\377�ÿz\1111�I1z\00z\07��\08z\09z\0azaz\400z0octal escape value \400 outside of range 0-0o377rz\777z0octal escape value \777 outside of range 0-0o377z\1zinvalid group reference 1r]z\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))))))))))(.)r�xz8�xza)r5r:rFrHrhs r� test_sub_template_numeric_escapez(ReTests.test_sub_template_numeric_escape�sx��������U�C�0�0�$�7�7�7�������W�c�2�2�F�;�;�;�������W�c�2�2�F�;�;�;�������W�c�2�2�J�?�?�?�������W�c�2�2�J�?�?�?�������W�c�2�2�F�;�;�;�������W�c�2�2�F�;�;�;�������W�c�2�2�F�;�;�;�������X�s�3�3�W�=�=�=�������X�s�3�3�\�B�B�B�������V�S�1�1�6�:�:�:�������V�S�1�1�6�:�:�:�������V�S�1�1�:�>�>�>�������V�S�1�1�:�>�>�>�������V�S�1�1�:�>�>�>�����W�c�!1�23�	5�	5�	5�	
����W�c�!1�23�	5�	5�	5�	
����U�C�1L�a�P�P�P�����U�C�1L�a�P�P�P�����U�C�1L�a�P�P�P�����V�S�2N�PQ�R�R�R�����V�S�2N�PQ�R�R�R�����V�S�2M�q�Q�Q�Q�����V�S�2N�PQ�R�R�R�����V�S�2N�PQ�R�R�R�����W�c�3O�QR�S�S�S�����W�c�3O�QR�S�S�S�����W�c�3O�QR�S�S�S�����W�c�3O�QR�S�S�S�����U�B�0K�Q�O�O�O�	
����� 9�6�3�G�G��M�M�M������ :�G�U�K�K��	 �	 �	 ������ :�G�U�K�K��	 �	 �	 �	 �	 rc��|�tjddd��d��|�tjdddd��d��|�tjdddd���d��dS)NrsrP�aaaaa�bbbbbr]�baaaar�r�rhs r�test_qualified_re_subzReTests.test_qualified_re_sub�s{��������S�'�2�2�G�<�<�<�������S�'�1�5�5�w�?�?�?�������S�'��;�;�;�W�E�E�E�E�Erc�Z�|�tjddd��d��dS)Nz(\S)\s+(\S)z\1 \2zhello  therezhello therer�rhs r�test_bug_114660zReTests.test_bug_114660�s7���������.�I�I�&�	(�	(�	(�	(�	(rc���tjd��tjd��tjd��tjd��tjd��tjd��d�d�td	d
��D����}d|z}|�tj|d�����d
��dS)Nz(?P<a>x)(?P=a)(?(a)y)z(?P<a1>x)(?P=a1)(?(a1)y)z(?P<a1>x)\1(?(1)y)s(?P<a1>x)(?P=a1)(?(a1)y)u(?P<µ>x)(?P=µ)(?(µ)y)uf(?P<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>x)(?P=𝔘𝔫𝔦𝔠𝔬𝔡𝔢)(?(𝔘𝔫𝔦𝔠𝔬𝔡𝔢)y)�|c3�$K�|]}d||fzV��dS�z
x(?P<a%d>%x)yNr���.0�is  r�	<genexpr>z/ReTests.test_symbolic_groups.<locals>.<genexpr>��+����K�K�A��!�Q��/�K�K�K�K�K�Krr]��z(?:%s)(?(200)z|t)�xc8yz�r�)r:r<�join�ranger5rgre�r�pats  r�test_symbolic_groupszReTests.test_symbolic_groups�s���
�
�+�,�,�,�
�
�.�/�/�/�
�
�(�)�)�)�
�
�.�/�/�/�
�
�-�.�.�.�
�
�{�|�|�|��h�h�K�K��q�'�9J�9J�K�K�K�K�K��!�C�'�������#�w�/�/�4�4�6�6��?�?�?�?�?rc�t�|�dd��|�ddd��|�dd��|�dd	d
��|�ddd
��|�ddd
��|�ddd
��|�dd��|�dd��|�ddd
��|�ddd
��|�ddd
��|�ddd
��|�ddd
��|�ddd
��|�ddd
��|�ddd��|�d dd��|�d!dd��|�d"d#d��|�d$d%d��|�d&dd��|�d'd(d
��|�d)d(d
��|�d*d(d��|�td+��5}tjd,��ddd��n#1swxYwY|�|jt��|�td+��5|�d-d.d
��ddd��n#1swxYwY|�td/��5|�d0d.d��ddd��dS#1swxYwYdS)1Nz(?P<a>)(?P<a>)z6redefinition of group name 'a' as group 2; was group 1z
(?P<a>(?P=a))�cannot refer to an open groupr�z(?Pxy)zunknown extension ?Pxz(?P<a>)(?P=a�missing ), unterminated namer�z(?P=�missing group name�z(?P=)z(?P=1)zbad character in group name '1'z(?P=a)zunknown group name 'a'z(?P=a1)zunknown group name 'a1'z(?P=a.)z bad character in group name 'a.'z(?P<)�missing >, unterminated namez(?P<az(?P<z(?P<>)z(?P<1>)z(?P<a.>)z(?(r^z(?())z(?(a))z(?(-1))� bad character in group name '-1'z(?(1a))z bad character in group name '1a'z(?(a.))u	(?P<©>x)� bad character in group name '©'u(?P=©)u(?(©)y)z6bad character in group name '\\xc2\\xb5' at position 4s	(?P<µ>x)s(?P=µ)zunknown group name '\xc2\xb5'�6bad character in group name '\\xc2\\xb5' at position 3s(?(µ)y)�rC�assertWarnsRegex�DeprecationWarningr:r<r5�filename�__file__�r�ws  r�test_symbolic_groups_errorsz#ReTests.test_symbolic_groups_errorss������0� -�	.�	.�	.�	
���/�>��	D�	D�	D����y�*A�B�B�B�����0N�PR�S�S�S����w�(<�a�@�@�@����x�)=�q�A�A�A����y�*K�Q�O�O�O����y�*B�C�C�C����z�+D�E�E�E����z�+M�q�Q�Q�Q����x�)G��K�K�K����x�)G��K�K�K����w�(<�a�@�@�@����y�*>��B�B�B����z�+L�a�P�P�P����{�,N�PQ�R�R�R����v�';�Q�?�?�?����x�)=�q�A�A�A����y�*B�A�F�F�F����z�+M�q�Q�Q�Q����z�+M�q�Q�Q�Q����z�+M�q�Q�Q�Q����{�,N�PQ�R�R�R����y�*L�a�P�P�P����z�+M�q�Q�Q�Q�
�
"�
"�#5�$4�5�5�	+�89��J�)�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	
�����X�.�.�.�
�
"�
"�#5�$4�5�5�	H�	H�
�"�"�#3�#C�Q�
H�
H�
H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�
�
"�
"�#5�$4�5�5�	H�	H�
�"�"�#4�#C�Q�
H�
H�
H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�	H�	Hs6�I8�8I<�?I<�>K"�"K&�)K&�L-�-L1�4L1c�X�|�tjddd��d��|�tjddd��d��|�tjddd��d��|�tjd	d
d��d��|�tjddd��d��d
�d�t	dd��D����}|�tj|dd��d��dS)Nz(?P<a>x)|(?P<b>y)z\g<b>r�r��\2s	(?P<a1>x)s\g<a1>�xxu	(?P<µ>x)u\g<µ>u#(?P<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>x)u \g<𝔘𝔫𝔦𝔠𝔬𝔡𝔢>r�c3�$K�|]}d||fzV��dSr�r�r�s  rr�z-ReTests.test_symbolic_refs.<locals>.<genexpr>7r�rr]r�z\g<200>�	xc8yzxc8y�c8zc8)r5r:rFr�r�r�s  r�test_symbolic_refszReTests.test_symbolic_refs/s������� 3�X�t�D�D�b�I�I�I������ 3�U�D�A�A�2�F�F�F�������j�%�@�@�%�H�H�H�������Y��=�=�t�D�D�D������ E�Gj�lp�q�q�sw�x�x�x��h�h�K�K��q�'�9J�9J�K�K�K�K�K��������Z��=�=�w�G�G�G�G�Grc��|�ddddd��|�ddddd��|�dddd	d
��|�ddddd��|�dd
ddd��|�ddddd��|�ddddd��|�ddddd��|�td��5tjddd��ddd��n#1swxYwY|�ddddd��|�td��5}tjddd��ddd��n#1swxYwY|�|jt��|�td��5tjddd��ddd��n#1swxYwY|�td��5tjddd��ddd��n#1swxYwY|�dddd d��|�td!��5}|�td"��5tjd#d$d%��ddd��n#1swxYwYddd��n#1swxYwY|�|jt��|�dd&dd'd��|�dd(dd)d��|�td*��5tjdd+d��ddd��dS#1swxYwYdS),Nr�z\g<ar�r�r^z\g<r�z\gz	missing <rmz\g<a a>z!bad character in group name 'a a'z\g<>z\g<1a1>z!bad character in group name '1a1'z\g<2>�invalid group reference 2r�r]zunknown group name 'ab'z\g<ab>z\g<-1>r�z/bad character in group name '\+1' at position 3z\g<+1>z/bad character in group name '1_0' at position 3z()()()()()()()()()()z\g<1_0>z/bad character in group name ' 1 ' at position 3z\g< 1 >u\g<©>r�r�uunknown group name 'µ's(?P<a>x)s\g<µ>r�u\g<㊀>�!bad character in group name '㊀'u\g<¹>� bad character in group name '¹'u/bad character in group name '१' at position 3u\g<१>)
rH�assertRaisesRegex�
IndexErrorr:rFr�r�r5r�r�r�s  r�test_symbolic_refs_errorsz!ReTests.test_symbolic_refs_errors:s������
�G�T� >��	C�	C�	C����
�F�D� 4�a�	9�	9�	9����
�E�4��a�H�H�H����
�J�� C�Q�	H�	H�	H����
�G�T� 4�a�	9�	9�	9����
�J�� C�Q�	H�	H�	H����
�H�d� ;�Q�	@�	@�	@����
�E�4� ;�Q�	@�	@�	@�
�
#�
#�J�0I�
J�
J�	0�	0��F�:�y�$�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0����
�I�t� B�A�	G�	G�	G�
�
"�
"�#5�$4�5�5�	0�89��F�:�y�$�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	
�����X�.�.�.�
�
"�
"�#5�$4�5�5�	.�	.�
�F�7�J��-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.��
"�
"�#5�$4�5�5�	1�	1�
�F�:�z�4�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	
���
�I�t� B�A�	G�	G�	G�
�
"�
"�#5�$4�5�5�	=�89��'�'�
�4S�T�T�
=�
=���{�$4�e�<�<�<�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�
	
�����X�.�.�.����
�J�� C�Q�	H�	H�	H����
�I�t� B�A�	G�	G�	G�
�
"�
"�#5�$4�5�5�	1�	1�
�F�:�z�4�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s��$D�D�D�E)�)E-�0E-�/G�G�G�8H�H�"H�J0�6J�
J0�J	�J0� J	�!J0�0J4�7J4�(M�M�Mc��|�tjddd��d��|�tjddd��d��|�tjddd��d��|�tjd	dd��d
��|�tjd	ddd��d��|�tjd	ddd�
��d��dS)Nr�r1r�)r�rmzb+)zx BBBBr]r)rrzb*)�xxxyxzxr�rm)�xxxyzrmr�)r5r:�subnrhs r�test_re_subnzReTests.test_re_subnls���������3��<�<�j�I�I�I�������s�K�8�8�-�H�H�H�������s�E�2�2�J�?�?�?�������s�E�2�2�N�C�C�C�������s�E�1�5�5�|�D�D�D�������s�E��;�;�;�\�J�J�J�J�Jrc�J�dtd��fD]�}|�tjd|��gd���|�tjd|��gd���|�tjd|��gd�����dt	d��td��t
d��fD]�}|�tjd	|��gd
���|�tjd|��gd���|�tjd
|��gd�����dD]�\}}}d|�d|�d|��}|�tjd|��d||d|g��|�tjd|��d|||g��|�tjd|��dd|d|d|g����|�tjdd��gd���|�tjdd��gd���|�tjdd��gd���|�tjdd��gd���|�tjdd��gd���dgd�fdgd�fdgd�fd gd!�ffD]\\}}|�|�"��5|�tj|d��|��ddd��n#1swxYwY�]dgd#�fd$gd%�fd&gd'�fd(gd)�ffD]\\}}|�|�"��5|�tj|d��|��ddd��n#1swxYwY�]dS)*N�:a:b::c�:)r�rsrPr�ru�:+)r�rsrPru�(:+))r�rrsrrP�::rus:a:b::c�:)rrK�br�c�:+)rrKrr	�(:+))rrrKrr�::r	)uàßçuабвu𝒜𝒞𝒵rr�z(?::+)z(:)+)r�rrsrrPrruz([b:]+))r�rrsz:b::ruz(b)|(:+))
r�NrrsNrr�rPNr�Nrruz(?:b)|(?::+))r�rsr�r�ruz:*)r�r�rsr�rPr�rur�z(?::*)�(:*))r�rr�r�rsrr�r�rPrr�r�rur�r�z(:)*)r�rr�Nrsrr�NrPrr�NruNr�)�sep)	r�rrsrrPrrrur��\b)rrsrrPrrur�z(?=:))r�z:az:brz:cz(?<=:))r�a:zb:rru)	rr6r:�splitr#rLr�r5r=)rrGrsrPrur�expecteds       r�
test_re_splitzReTests.test_re_splitts&����9���-�	G�	G�F��!�!�"�(�3��"7�"7�"9�"9�"9�
;�
;�
;��!�!�"�(�4��"8�"8�"5�"5�"5�
7�
7�
7��!�!�"�(�6�6�":�":�"E�"E�"E�
G�
G�
G�
G�!�1�Z�=�=�)�J�2G�2G�!�*�-�-�/�	N�	N�F��!�!�"�(�4��"8�"8�">�">�">�
@�
@�
@��!�!�"�(�5�&�"9�"9�"9�"9�"9�
;�
;�
;��!�!�"�(�7�F�";�";�"L�"L�"L�
N�
N�
N�
N�:�	<�	<�G�A�q�!�!�%&�Q�Q����1�1�-�F����R�X�c�6�2�2�R��A�r�1�4E�F�F�F����R�X�d�F�3�3�b�!�Q��]�C�C�C����R�X�f�f�5�5� �#�q�#�q�$��:�
<�
<�
<�
<�	
�����(�I�6�6�8K�8K�8K�L�L�L������&�)�4�4�;�;�;�	=�	=�	=������)�Y�7�7�4�4�4�	6�	6�	6������*�i�8�8�+�+�+�	,�	,�	,�	
�����.�)�<�<�/�/�/�	1�	1�	1��6�6�6�7�
�:�:�:�;�
�X�X�X�Y�
�_�_�_�`�	
�	J�	J�M�C�����#��&�&�
J�
J��%�%�b�h�s�I�&>�&>��I�I�I�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J����
J�
J�
J�
J���<�<�<�=�
�7�7�7�8�
�2�2�2�3�
�3�3�3�4�	
�	J�	J�M�C�����#��&�&�
J�
J��%�%�b�h�s�I�&>�&>��I�I�I�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J����
J�
J�
J�
J��
	J�	Js$�.*L$�$L(	�+L(	�!*N�N	�N	c� �|�tjddd��gd���|�tjddd���gd���|�tjddd���gd���|�tjddd���gd	���|�tjd
dd���gd	���|�tjddd���gd���dS)
Nrrrm)r�rs�b::c)�maxsplitza:b:c:d)rsrPzc:dz(:))r�rrsrrrr
)r�rr�r�za:b::c)r5r:rrhs r�test_qualified_re_splitzReTests.test_qualified_re_split�s/�������#�y�!�4�4�6G�6G�6G�H�H�H������#�y�1�=�=�=�?P�?P�?P�Q�Q�Q������#�y�1�=�=�=�?P�?P�?P�Q�Q�Q������%��Q�?�?�?�4�4�4�	6�	6�	6������&�)�a�@�@�@�4�4�4�	6�	6�	6������&�)�a�@�@�@�4�4�4�	6�	6�	6�	6�	6rc
�H�|�tjdd��g��dtd��fD]�}|�tjd|��gd���|�tjd|��gd���|�tjd|��gd�����dtd��t
d��td��fD]�}|�tjd	|��gd
���|�tjd|��gd
���|�tjd|��gd
�����dD]�}|dz}|dz}d|�d|�d|�d�}|�tjd|z|��|||g��|�tjd|z|��|||g��|�tjd|�d|�d�|��|df||f||fg����dS)Nrro�
a:b::c:::d�rrz:::rz(:)(:*)))rr�)rr)rrs
a:b::c:::dr
)rrs:::rs(:)(:*)))rr)rr)rrr�rmr^rsrPru�dz%s+z(%s+)�(z)(z*)r�)r5r:rUrr6r#rLr�)rrGr1r�r`s     r�test_re_findallzReTests.test_re_findall�s��������D�%�0�0�"�5�5�5�"�A�l�O�O�3�	H�	H�F��!�!�"�*�T�6�":�":�"4�"4�"4�
6�
6�
6��!�!�"�*�V�V�"<�"<�"4�"4�"4�
6�
6�
6��!�!�"�*�Y��"?�"?�"F�"F�"F�
H�
H�
H�
H�$�a�
�&6�&6�	�-�8P�8P�!�-�0�0�2�	N�	N�F��!�!�"�*�U�F�";�";�"7�"7�"7�
9�
9�
9��!�!�"�*�W�f�"=�"=�"7�"7�"7�
9�
9�
9��!�!�"�*�Z��"@�"@�"L�"L�"L�
N�
N�
N�
N�1�	9�	9�A��Q��B��a�%�C�C�%&�Q�Q����C�C�C�0�F����R�Z���	�6�:�:�Q��C�L�I�I�I����R�Z��!��V�<�<�q�"�c�l�K�K�K����R�Z�Z�q�q�q�!�!�!�(<�f�E�E� �"�g��1�v��2�w�7�
9�
9�
9�
9�
	9�	9rc�\�|�tjdd��gd���dS)Nz(a|(b))�aba)�rsr�)rPrPr �r5r:rUrhs r�test_bug_117612zReTests.test_bug_117612�s;�������J��6�6�9�9�9�	;�	;�	;�	;�	;rc���dtd��fD�].}|�tjd|�����d��|�tjd|�����d��|�tjd|���d��d��|�tjd|���d��d��|�tjd|���dd��d����0dt
d��td��td��fD�].}|�tjd|�����d��|�tjd	|�����d
��|�tjd	|���d��d��|�tjd	|���d��d��|�tjd	|���dd��d����0dD�]=}|�tj||�����d��|�tjd
|z|�����|f��|�tjd
|z|���d��|��|�tjd
|z|���d��|��|�tjd
|z|���dd��||f����?tj	d��}|�|�d�����d��|�|�d�����d��|�|�d�����d��|�|�d�����d��|�|�d���d��d��tj	d��}|�|�d���ddd��d��|�|�d���ddd��d��|�|�d���ddd��d ��dS)!Nrsr��(a)�rsrr]�rsrsrKs(a))rK)rKrKr�z(%s)z
((a)|(b))(c)?)rsrsNNrP)rPNrPN�ac)rsrsNru�bc)rPNrPrur�)rPr�rPru�!(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?rmr^�rsNN�a1�b2�c3)NrPN)rsNru)
rr5r:rg�groupsryr#rLr�r<)rrGrsr�s    r�
test_re_matchzReTests.test_re_match�s����1�S�6�6�k�	N�	N�F����R�X�c�6�2�2�9�9�;�;�R�@�@�@����R�X�e�V�4�4�;�;�=�=�v�F�F�F����R�X�e�V�4�4�:�:�1�=�=�s�C�C�C����R�X�e�V�4�4�:�:�1�=�=�s�C�C�C����R�X�e�V�4�4�:�:�1�a�@�@�*�M�M�M�M��A�d�G�G�Y�t�_�_�j��6F�6F�F�	Q�	Q�F����R�X�d�F�3�3�:�:�<�<�b�A�A�A����R�X�f�f�5�5�<�<�>�>��H�H�H����R�X�f�f�5�5�;�;�A�>�>��E�E�E����R�X�f�f�5�5�;�;�A�>�>��E�E�E����R�X�f�f�5�5�;�;�A�q�A�A�<�P�P�P�P�1�	J�	J�A����R�X�a��^�^�2�2�4�4�b�9�9�9����R�X�f�q�j�!�4�4�;�;�=�=��t�D�D�D����R�X�f�q�j�!�4�4�:�:�1�=�=�q�A�A�A����R�X�f�q�j�!�4�4�:�:�1�=�=�q�A�A�A����R�X�f�q�j�!�4�4�:�:�1�a�@�@�1�a�&�I�I�I�I��j��)�)��������3���.�.�0�0�2H�I�I�I�������3���.�.�0�0�2H�I�I�I�������4���/�/�1�1�3H�I�I�I�������4���/�/�1�1�3H�I�I�I�������4���/�/��3�3�5H�I�I�I��j�<�=�=��������3���-�-�a��A�6�6�8I�J�J�J�������3���-�-�d�D�$�?�?�*�	,�	,�	,�������4���.�.�q�$��:�:�<L�M�M�M�M�Mrc���Gd�d��}tjdd��}|�|���d��|�|�d��d��|�|�d��d��|�|�|d����d��|�t
|jd��|�t
|jd	��|�t
|jdd
z��|�t
|j|dd
z����|�t
|jd��|�|�dd��d
��|�|�|d��|d����d
��dS)Nc��eZdZd�Zd�ZdS)�!ReTests.test_group.<locals>.Indexc��||_dSr��value)rr5s  r�__init__z*ReTests.test_group.<locals>.Index.__init__�s
��"��
�
�
rc��|jSrr4rhs r�	__index__z+ReTests.test_group.<locals>.Index.__index__�s
���z�!rN)rrrr6r8r�rr�Indexr2�s2������
#�
#�
#�
"�
"�
"�
"�
"rr9z(a)(b)rkrr]rs���r^��r1rm�rPrs)r:rgr5ryr9r�)rr9r�s   r�
test_groupzReTests.test_group�s���	"�	"�	"�	"�	"�	"�	"�	"�
�H�X�t�$�$����������D�)�)�)����������T�*�*�*����������S�)�)�)���������q���*�*�C�0�0�0����*�a�g�r�2�2�2����*�a�g�q�1�1�1����*�a�g�q�$�w�7�7�7����*�a�g�u�u�Q��W�~�~�>�>�>����*�a�g�s�3�3�3��������A���
�3�3�3���������q���5�5��8�8�4�4�j�A�A�A�A�Arc�:�tjd��}|�d��}|�|dd��|�|dd��|�|dd��|�d�|��d��|�|dd��|�|d	d��|�|d
d��|�|dd��|�td��5|d
ddd��n#1swxYwY|�td��5|dddd��n#1swxYwY|�td��5|dddd��n#1swxYwY|�td��5|dddd��n#1swxYwY|�td��5|dddd��n#1swxYwY|�td��5|dddd��n#1swxYwY|�td��5d�|��ddd��n#1swxYwY|�d��}|�|dd��|�|dd��|�|dd��|�d�|��d��|�|dd��|�|d	d��|�|d
d��|�|dd��|�t��5d	|d<ddd��n#1swxYwY|�tt|��dS)Nr)rsr+r,r-za1={a1} b2={b2} c3={c3}za1=a b2=None c3=Nonerr]rmr^z
no such groupr�r:r�rt�rza1={a2}r'ruza1=a b2=None c3=c)
r:r<rgr5�
format_mapr�r�r9�	TypeError�len)rr�r�s   r�test_match_getitemzReTests.test_match_getitems����j�<�=�=���I�I�c�N�N������4��#�&�&�&�����4��$�'�'�'�����4��$�'�'�'����2�=�=�a�@�@�BX�Y�Y�Y�����1��s�#�#�#�����1��s�#�#�#�����1��t�$�$�$�����1��t�$�$�$�
�
#�
#�J��
@�
@�	�	�
�c�F�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
#�
#�J��
@�
@�	�	�
�b�E�E�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
#�
#�J��
@�
@�	�	�
�a�D�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
#�
#�J��
@�
@�	�	�
�d�G�G�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
#�
#�J��
@�
@�	�	�
�d�G�G�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
#�
#�J��
@�
@�	�	�
�f�I�I�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
#�
#�J��
@�
@�	$�	$�� � ��#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
�I�I�d�O�O������4��#�&�&�&�����4��$�'�'�'�����4��#�&�&�&����2�=�=�a�@�@�BU�V�V�V�����1��t�$�$�$�����1��s�#�#�#�����1��t�$�$�$�����1��s�#�#�#��
�
�y�
)�
)�	�	��A�a�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
���)�S�!�,�,�,�,�,s��2	E�E�E�-	F�F�	F�(	F=�=G�G�#	G8�8G<�?G<�	H3�3H7�:H7�	I.�.I2�5I2�J6�6J:�=J:�O/�/O3�6O3c�`	�|�tjdd�����d��dt	d��fD]=}|�tjd|�����d���>dtd��t
d��td��fD]=}|�tjd|�����d���>dD]M\}}|�d	||z��}|�tj|||z�����d���N|�tjd
d�����d��|�tjd
d�����d��|�tjdd�����d��|�tjdd�����d��|�tjdd�����d��|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd�����d��|�tjdd�����d��|�tjdd�����d��|�tj	d���ddd������d��|�tj	d
���ddd������d��|�tj	d
���ddd������d��dS) Nrsrtrkza|abrlsabsa|ab)uàßuабu𝒜𝒞r�z.*?$rorbz.*?za.*?b�abb�axxb�rr�rczabc$zabc
zabc\Zz(?m)abc$z	ab(?=c)cd�abcdz
ab(?<=b)cdz
(?=a|ab)abr(r]r^�r?�endposr\)
r5r:�	fullmatchrerr#rLr�rfr<)rrGrsrP�rs     r�test_re_fullmatchzReTests.test_re_fullmatch4s�������d�C�0�0�5�5�7�7��@�@�@��A�d�G�G�m�	K�	K�F����R�\�'�6�:�:�?�?�A�A�6�J�J�J�J��Q�u�X�X�y��'7�'7��E�9J�9J�J�	L�	L�F����R�\�(�F�;�;�@�@�B�B�F�K�K�K�K�F�	D�	D�D�A�q��A�A�q�1�u�u�%�A����R�\�!�Q��U�3�3�8�8�:�:�F�C�C�C�C������g�u�5�5�:�:�<�<�f�E�E�E������f�e�4�4�9�9�;�;�V�D�D�D������h��5�5�:�:�<�<�f�E�E�E������h��6�6�;�;�=�=�v�F�F�F������h��7�7�<�<�>�>��G�G�G����"�,�u�d�3�3�4�4�4����"�,�w��8�8�9�9�9����"�,�x��9�9�:�:�:����"�,�{�G�<�<�=�=�=������l�F�;�;�@�@�B�B�F�K�K�K������m�V�<�<�A�A�C�C�V�L�L�L������m�T�:�:�?�?�A�A�6�J�J�J�����J�u���'�'��A�a�'�@�@�E�E�G�G��	Q�	Q�	Q�����J�w���)�)�&�a��)�B�B�G�G�I�I�6�	S�	S�	S�����J�v���(�(��Q�q�(�A�A�F�F�H�H�&�	R�	R�	R�	R�	Rrc��|�tjdd�����d��|�tjdd�����d��|�tjdd����|�tjdd����|�tjdd	�����d
��|�tjdd�����d��|�tjd
d�����d��|�tjd
d�����d��tjd��}|�|�d�����d��|�|�d�����d��|�|�d����|�|�d����d�d�tdd��D����}d|z}|�tj|d�����d��dS)Nz^(\()?([^()]+)(?(1)\))$r$)rrsrs�Nrsza)z(az^(?:(a)|c)((?(1)b|d))$rk�rsrP�cd)Nrz^(?:(a)|c)((?(1)|d))$r z(?P<g1>a)(?P<g2>b)?((?(g2)c|d))ro�rsrPru�ad)rsNr�abdr'r�c3�$K�|]}d||fzV��dSr�r�r�s  rr�z2ReTests.test_re_groupref_exists.<locals>.<genexpr>lr�rr]r�z(?:%s)(?(200)z)r�r�)	r5r:rgr.rfr<r�r�re)r�pr�s   r�test_re_groupref_existszReTests.test_re_groupref_existsRs��������"<�e�D�D�K�K�M�M�#�	%�	%�	%������"<�c�B�B�I�I�K�K�$�	&�	&�	&����"�(�#=�t�D�D�E�E�E����"�(�#=�t�D�D�E�E�E������":�D�A�A�H�H�J�J�#�	%�	%�	%������";�T�B�B�I�I�K�K�$�	&�	&�	&������":�D�A�A�H�H�J�J�$�	&�	&�	&������":�C�@�@�G�G�I�I�"�	$�	$�	$�
�J�8�9�9�����������.�.�0�0�(�	*�	*�	*����������-�-�/�/�)�	+�	+�	+����!�'�'�%�.�.�)�)�)����!�'�'�$�-�-�(�(�(��h�h�K�K��q�'�9J�9J�K�K�K�K�K���#�%�������#�w�/�/�4�4�6�6��?�?�?�?�?rc�J�|�ddd��|�ddd��|�td��5}tjd��ddd��n#1swxYwY|�|jt��|�td	��5tjd
��ddd��n#1swxYwY|�td��5tjd��ddd��n#1swxYwY|�d
dd��|�ddd��|�td��5tjd��ddd��n#1swxYwY|�ddd��|�ddd��|�ddd��|�ddd��|�ddd��|�ddd��dS)Nz(?P<a>)(?(0)a|b)zbad group numberr�z()(?(-1)a|b)r�r�z/bad character in group name '\+1' at position 5z()(?(+1)a|b)z0bad character in group name '1_0' at position 23z()()()()()()()()()()(?(1_0)a|b)z/bad character in group name ' 1 ' at position 5z
()(?( 1 )a|b)u
()(?(㊀)a|b)r�u()(?(¹)a|b)r�u/bad character in group name '१' at position 5u
()(?(१)a|b)z()(?(1r�z()(?(1)a�"missing ), unterminated subpatternrmz
()(?(1)a|bz()(?(1)a|b|cz/conditional backref with more than two branchesz
()(?(1)a|b|c)z	()(?(2)a)r�r�r�s  r�test_re_groupref_exists_errorsz&ReTests.test_re_groupref_exists_errorsps������2�4F��K�K�K�����A�1�	F�	F�	F�
�
"�
"�#5�$4�5�5�	(�89��J��'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	
�����X�.�.�.�
�
"�
"�#5�$5�6�6�	2�	2�
�J�0�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2��
"�
"�#5�$4�5�5�	)�	)�
�J�'�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	
���/�B�A�	G�	G�	G�����A�1�	F�	F�	F�
�
"�
"�#5�$4�5�5�	)�	)�
�J�'�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	
���y�=�q�	B�	B�	B����{�C�Q�	H�	H�	H����}�C�Q�	H�	H�	H����� .�/1�	3�	3�	3�	
���/� .�/1�	3�	3�	3�	
���|�:�A�	?�	?�	?�	?�	?sH�
A+�+A/�2A/�1C�C�C�8D�D� D�-F�F�Fc��td��D]G}|�|���5tjd|z��ddd��n#1swxYwY�HdS)N�)�codez()(?(1)\x%02x?))r�r=r:r<�rr�s  r�&test_re_groupref_exists_validation_bugz.ReTests.test_re_groupref_exists_validation_bug�s����s���	3�	3�A����1��%�%�
3�
3��
�-��1�2�2�2�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3��	3�	3s�A�A	�A	c��ddlm}|�dd|zdd|zd��|�d|zd|zd	��dS)
Nr)�	MAXGROUPSz()z\g<%s>r�zinvalid group reference %dr^z(?P<a>)(?(%d))r�)�
re._constantsrarHrC)rras  r�test_re_groupref_overflowz!ReTests.test_re_groupref_overflow�s}��+�+�+�+�+�+�����i�)�&;�T� <�y� H�!�	M�	M�	M����0�9�<�;�i�G��	M�	M�	M�	M�	Mrc��|�tjdd�����d��|�tjdd�����d��|�tjdd����|�tjdd����|�tjd	d
�����d��|�tjdd
�����d��|�ddd��dS)Nz^(\|)?([^()]+)\1$z|a|)r�rsz^(\|)?([^()]+)\1?$rsrOza|z|az^(?:(a)|c)(\1)$�aar&z^(?:(a)|c)(\1)?$ru�NNz(abc\1)r�r�)r5r:rgr.rfrCrhs r�test_re_grouprefzReTests.test_re_groupref�s=�������"6��>�>�E�E�G�G�#�	%�	%�	%������"7��=�=�D�D�F�F�$�	&�	&�	&����"�(�#7��>�>�?�?�?����"�(�#7��>�>�?�?�?������"4�d�;�;�B�B�D�D�#�	%�	%�	%������"5�s�;�;�B�B�D�D�%�	'�	'�	'�	
���z�+J�A�N�N�N�N�Nrc��|�tjdd�����ddd���dS)N�#(?P<first>first) (?P<second>second)�first second�first�second)rkrl)r5r:rg�	groupdictrhs r�test_groupdictzReTests.test_groupdict�sL�������"G�"0�2�2�2;�)�+�+�")�H�=�=�	?�	?�	?�	?�	?rc��|�tjdd���d��d��|�tjdd���d��d��dS)	Nrirjz\2 \1 \g<second> \g<first>zsecond first second firstz#(?P<first>first)|(?P<second>second)rkz
\2 \g<second>� )r5r:rg�expandrhs r�test_expandzReTests.test_expand�s��������"G�"0�2�2�#)�6�*G�#H�#H�4�	6�	6�	6�	
�����"G�")�+�+�#)�6�*:�#;�#;��	�	�	�	�	rc��	�|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd���d��d��|�tjd	d���d��d��|�tjd
d���d��d��|�tjdd���d��d��|�tjdd���d��d��|�tjd
d���d��d��|�tjdd���d��d��|�tjdd���d��d��|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�ddd ��dS)!Nz	^(\w){1}$roz
^(\w){1}?$z^(\w){1,2}$z^(\w){1,2}?$z	^(\w){3}$r]ruz^(\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}$r`z^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{}$�x{}zx{2,1}z"min repeat greater than max repeatrm)rfr:rgr5ry�
assertTruerCrhs r�test_repeat_minmaxzReTests.test_repeat_minmax�s������"�(�<��7�7�8�8�8����"�(�=�%�8�8�9�9�9����"�(�>�5�9�9�:�:�:����"�(�?�E�:�:�;�;�;������,��6�6�<�<�Q�?�?��E�E�E������.�%�8�8�>�>�q�A�A�3�G�G�G������.�%�8�8�>�>�q�A�A�3�G�G�G������/�5�9�9�?�?��B�B�C�H�H�H������-��7�7�=�=�a�@�@�#�F�F�F������/�5�9�9�?�?��B�B�C�H�H�H������/�5�9�9�?�?��B�B�C�H�H�H������/�5�9�9�?�?��B�B�C�H�H�H����"�(�9�e�4�4�5�5�5����"�(�:�u�5�5�6�6�6����"�(�;��6�6�7�7�7����"�(�<��7�7�8�8�8�������E�2�2�3�3�3�������e�4�4�5�5�5�������e�4�4�5�5�5�������e�4�4�5�5�5�������u�5�5�6�6�6�������U�3�3�4�4�4�������u�5�5�6�6�6�������u�5�5�6�6�6�������u�5�5�6�6�6����"�(�8�U�3�3�4�4�4�������5�1�1�2�2�2����y�C�Q�	H�	H�	H�	H�	Hrc�>�|�tjd��jd��|�tjd��jtjtjz��|�tjd��jd��|�tjd��ji��|�tjd��jddd���|�tj	dd��j
d��|�tj	dd��jd��|�tj	dd��jd��|�tj	dd��j
d	��|�tj	dd��j��tjd��}|�t|j��d
dg��|�|jdd��|�t"��5d|jd<ddd��n#1swxYwY|�|jdd��dS)Nz
(?i)(a)(b)rmz(?i)(?P<first>a)(?P<other>b)r])rk�otherr$rsr)rtrtrkrx)r5r:r<r8�flagsr��Ur.�
groupindexrgr?rJrG�regsru�sortedr9rA)rrVs  r�test_getattrzReTests.test_getattr�sm�������L�1�1�9�<�H�H�H������L�1�1�7������E�E�E������L�1�1�8�!�<�<�<������L�1�1�<�b�A�A�A������$B�C�C�N�#$�q�1�1�	3�	3�	3�	
�����%��-�-�1�1�5�5�5������%��-�-�4�a�8�8�8������%��-�-�4�c�:�:�:������%��-�-�2�4D�E�E�E��������,�,�/�0�0�0�
�J�6�7�7��������-�-���/A�B�B�B������g�.��2�2�2�
�
�
�y�
)�
)�	&�	&�$%�A�L��!�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&������g�.��2�2�2�2�2s�I1�1I5�8I5c�.	�|�tjdd���d��d��|�tjdd���d��d��|�tjddtj���d��d��|�tjddtj���d��d��|�tjddtj���d	��d
��|�tjdd
tj���d	��d
��|�tjddtj����|�tjdd
���d��d��|�tjdd���d��d��|�tjdd
tj���d��d��|�tjddtj���d��d��|�tjddtj���d	��d��|�tjddtj���d	��d��|�tjddtj����|�tjdd���d	��d��|�tjdd���d	��d��|�tjddtj���d	��d��|�tjddtj���d	��d��dS)Nz\b(b.)\bzabcd abc bcd bxr]�bxz\B(b.)\Bzabc bcd bc abxdz^abc$z
abc
rroz	^\Aabc\Z$s\b(b.)\bsabcd abc bcd bxsbxs\B(b.)\Bsabc bcd bc abxds^abc$s
abc
�abcs	^\Aabc\Z$z\d\D\w\W\s\Sz1aa! as\d\D\w\W\s\Ss1aa! a)r5r:rdry�ASCII�Mrf�LOCALErhs r�test_special_escapeszReTests.test_special_escapes�s�������;�#4�6�6�6;�e�A�h�h��	F�	F�	F������;�#4�6�6�6;�e�A�h�h��	F�	F�	F������;�#4�b�h�@�@�@E��a���$�	P�	P�	P������;�#4�b�h�@�@�@E��a���$�	P�	P�	P������8�Y���=�=�C�C�A�F�F��N�N�N������<����=�=�C�C�A�F�F��N�N�N����"�)�L�)�R�T�B�B�C�C�C������<�#5�7�7�7<�u�Q�x�x��	H�	H�	H������<�#5�7�7�7<�u�Q�x�x��	H�	H�	H������<�#5�r�y�B�B�BG�%��(�(�E�	S�	S�	S������<�#5�r�y�B�B�BG�%��(�(�E�	S�	S�	S������9�j�"�$�?�?�E�E�a�H�H�&�Q�Q�Q������=�&�"�$�?�?�E�E�a�H�H�&�Q�Q�Q����"�)�M�:�r�t�D�D�E�E�E������?�#+�-�-�-2�U�1�X�X�x�	A�	A�	A������#3�#,�.�.�.3�e�A�h�h�	�	C�	C�	C������?�#+�R�X�7�7�7<�u�Q�x�x��	K�	K�	K������#3�#,�b�i�9�9�9>��q���9�	N�	N�	N�	N�	Nrc�h�|�ddd��|�tjdd�����d��|�tjdd����|�tjdd�����d��|�tjdd	�����d	��|�tjdd
����|�tjdd�����d��|�tjdd
����|�tjdd�����d��|�tjdd
����tj��dD]]}|�|��5|�tj	tj
d|z��ddd��n#1swxYwY�^dD]]}|�|��5|�tj	tj
d|z��ddd��n#1swxYwY�^dS)Nr�zbad escape (end of pattern)rz\(r�)r�z[\]]�]�[z[a\-c]�-rPz[\^a]+za^�!ceghijklmopqyzCEFGHIJKLMNOPQRTVXYz\%c�$ceghijklmopqyzABCEFGHIJKLMNOPQRTVXYZz[\%c])rCr5r:rgryrf�purger=r9r;r<)rrus  r�test_other_escapeszReTests.test_other_escapess������t�%B�A�F�F�F������%��-�-�3�3�5�5�s�;�;�;����"�(�5�#�.�.�/�/�/������%��.�.�4�4�6�6��=�=�=������'�3�/�/�5�5�7�7��=�=�=����"�(�7�C�0�0�1�1�1������)�S�1�1�7�7�9�9�3�?�?�?����"�(�9�c�2�2�3�3�3������)�T�2�2�8�8�:�:�D�A�A�A����"�(�9�c�2�2�3�3�3�
��
�
�
�4�	D�	D�A����a���
D�
D��!�!�"�(�B�J���
�C�C�C�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D����
D�
D�
D�
D��7�	F�	F�A����a���
F�
F��!�!�"�(�B�J��1��E�E�E�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F����
F�
F�
F�
F��	F�	Fs$�/I�I
	�
I
	�+/J&�&J*	�-J*	c�D�|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjd	d
����|�tjd	d����|�dd
d��|�dd
d��|�ddd��|�ddd��|�ddd��|�ddd��|�dd
d��|�dd
d��|�ddd��|�ddd��|�ddd��|�dd d!��|�d"d d��|�d#d$d!��|�d%d$d��|�d&d'd!��|�d(d'd��dS))Nz\N{LESS-THAN SIGN}�<z\N{less-than sign}�>z	\N{SNAKE}u🐍zW\N{ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM}uﯹz*[\N{LESS-THAN SIGN}-\N{GREATER-THAN SIGN}]�=�;z\Nz	missing {rmz[\N]r^z\N{zmissing character namez[\N{r�z\N{}z[\N{}]z\NSNAKE}z
[\NSNAKE}]z\N{SNAKEzmissing }, unterminated namez
[\N{SNAKE]z[\N{SNAKE]}z!undefined character name 'SNAKE]'r]z\N{SPAM}zundefined character name 'SPAM'rz
[\N{SPAM}]z\N{KEYCAP NUMBER SIGN}z-undefined character name 'KEYCAP NUMBER SIGN'z[\N{KEYCAP NUMBER SIGN}]s\N{LESS-THAN SIGN}z
bad escape \Ns[\N{LESS-THAN SIGN}])rur:rgrfrCrhs r�test_named_unicode_escapesz"ReTests.test_named_unicode_escapes.s��������!6��<�<�=�=�=������!6��<�<�=�=�=����"�(�#8�#�>�>�?�?�?�������|�<�<�=�=�=������"Q�!)�+�+�	,�	,�	,�	
�����!N�!$�&�&�	'�	'�	'����"�(�#P�#&�(�(�	)�	)�	)�	
���u�k�1�5�5�5����w��Q�7�7�7����v�'?��C�C�C����w�(@�!�D�D�D����w�(@�!�D�D�D����y�*B�A�F�F�F����{�K��;�;�;����}�k�1�=�=�=����{�=�q�	B�	B�	B����}�=�q�	B�	B�	B����~�B�A�	G�	G�	G����{�@�!�	E�	E�	E����}�@�!�	E�	E�	E����8�K�Q�	P�	P�	P����:�K�Q�	P�	P�	P����5�7G��K�K�K����7�9I�1�M�M�M�M�Mrc�*�|�tjdd���d��d��|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�ttj	dd����d��|�ttj	dd����d	��|�ttj	dd
����d	��|�ttj	dd����d	��|�ttj	dd
����d��dS)Nz	\b(abc)\bror]r�\Br�rsrmrrpz   )
r5r:rdryrurg�assertFalserfrBrUrhs r�test_string_boundarieszReTests.test_string_boundariesVs��������<��7�7�=�=�a�@�@��	 �	 �	 �	
�������.�.�/�/�/�����	�%��/�/�0�0�0������%��/�/�0�0�0�	
���"�)�E�2�.�.�/�/�/�	
���"�)�E�2�.�.�/�/�/�	
����R�Z��s�3�3�4�4�a�8�8�8�����R�Z��s�3�3�4�4�a�8�8�8�����R�Z��s�3�3�4�4�a�8�8�8�����R�Z��u�5�5�6�6��:�:�:�����R�Z��s�3�3�4�4�a�8�8�8�8�8rc�h�|�tjdd���d��d��dd�tttddd������z}|�tj|d	�����d	��dS)
Nu
([∢∣])u∢r]z[%s]r�r\��u!)r5r:rgryr��mapr�r��rrLs  r�test_bigcharsetzReTests.test_bigcharsetps��������"4�"*�,�,�,1�E�!�H�H�h�	@�	@�	@��R�W�W�S��e�C���&<�&<�=�=�>�>�>�������!�X�.�.�4�4�6�6��A�A�A�A�Arc�"�tjd�d�td��D������}|�|�d����|�|�d����dS)Nr�c3� K�|]	}d|zV��
dS)z%dNr�)r�r1s  rr�z,ReTests.test_big_codesize.<locals>.<genexpr>xs&���� >� >�A��a�� >� >� >� >� >� >r�'�1000�9999)r:r<r�r�rurgr�s  r�test_big_codesizezReTests.test_big_codesizevsp���J�s�x�x� >� >��u��� >� >� >�?�?�@�@�����������(�(�(����������(�(�(�(�(rc�"�|�tjddtj���d��d��|�tjddtj���d��d��dS)Nza.bza
brza.*bza

b)r5r:rg�DOTALLryrhs r�test_anyallzReTests.test_anyall|s��������%����;�;�A�A�!�D�D��	!�	!�	!������&�(�B�I�>�>�D�D�Q�G�G�!�	#�	#�	#�	#�	#rc�N�|�tjdd���d��d��|�tjdd���d��d��|�tjdd���d��d��|�tjdd���d��d��|�tjd	d
���d��d��|�tjdd���d��d��|�tjd
d
���d��d��|�tjdd
���d��d��|�tjdd���d��d��|�tjdd���d��d��|�tjdd���d��d��|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����dS)Nz
(a(?=\s[^a]))�a br]rsz(a(?=\s[^a]*))z(a(?=\s[abc]))z(a(?=\s[abc]*))�a bcz(a)(?=\s\1)�a az(a)(?=\s\1*)�a aaz(a)(?=\s(abc|a))z
(a(?!\s[^a]))z(a(?!\s[abc]))za dz(a)(?!\s\1)z(a)(?!\s(abc|a))z(a)b(?=\1)arz(a)b(?=\1)c�abacz(?:(a)|(x))b(?=(?(2)x|c))croz(?:(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))r5r:rgryrurfrhs r�test_lookaheadzReTests.test_lookahead�s^�������"2�E�:�:�@�@��C�C�S�I�I�I������"3�U�;�;�A�A�!�D�D�c�J�J�J������"3�U�;�;�A�A�!�D�D�c�J�J�J������"4�f�=�=�C�C�A�F�F��L�L�L������.�%�8�8�>�>�q�A�A�3�G�G�G������/�6�:�:�@�@��C�C�S�I�I�I������"5�u�=�=�C�C�A�F�F��L�L�L������"2�E�:�:�@�@��C�C�S�I�I�I������"3�U�;�;�A�A�!�D�D�c�J�J�J������.�%�8�8�>�>�q�A�A�3�G�G�G������"5�u�=�=�C�C�A�F�F��L�L�L�	
�������7�7�8�8�8����"�(�>�6�:�:�;�;�;������!>��F�F�G�G�G����"�(�#@�%�H�H�I�I�I������!>��F�F�G�G�G����"�(�#@�%�H�H�I�I�I������!>��F�F�G�G�G������!8�%�@�@�A�A�A����"�(�#:�E�B�B�C�C�C������!8�%�@�@�A�A�A�A�Arc�d�|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd	����|�tjd
d����|�tjdd	����|�tjdd����|�tjd
d����|�tjdd����|�tjdd����|�tjdd����|�tjtjd��|�tjdd����|�tjdd����|�tjtjd��|�tjtjd��|�tjtjd��|�tjtjd��dS)Nz	ab(?<=b)croz	ab(?<=c)cz	ab(?<!b)cz	ab(?<!c)cz(a)a(?<=\1)c�aacz(a)b(?<=\1)a�abaaz(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))rur:rgrfr9r;r<rhs r�test_lookbehindzReTests.test_lookbehind�sr��������u�5�5�6�6�6����"�(�<��7�7�8�8�8����"�(�<��7�7�8�8�8�������u�5�5�6�6�6�������%�8�8�9�9�9����"�(�?�F�;�;�<�<�<����"�(�?�E�:�:�;�;�;�������&�9�9�:�:�:����"�(�#A�5�I�I�J�J�J����"�(�#A�5�I�I�J�J�J������!?��G�G�H�H�H����"�(�#A�5�I�I�J�J�J������!?��G�G�H�H�H����"�(�B�J�0H�I�I�I����"�(�#;�U�C�C�D�D�D������!9�5�A�A�B�B�B����"�(�B�J�0D�E�E�E����"�(�B�J�0M�N�N�N����"�(�B�J�0K�L�L�L����"�(�B�J�0I�J�J�J�J�Jrc���|�tjddtj���d��d��|�tjddtj���d��d��|�tjddtj���d��d��|�tjd	d
tj���d��d
��|�tjddtj���d��d��|�tjdd
tj���d��d
��|�tjd
dtj���d��d��|�tjddtj���d��d��|�tjddtj���d��d��|�tjddtj���d��d��|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjd dtj����|�tjd dtj����|�tjd!d"tj����|�tjd#d$tj����dS)%Nro�ABCrr�sABCz	(a\s[^a])r�r]z
(a\s[^a]*)za bbz
(a\s[abc])z(a\s[abc]*)z	((a)\s\2)r�z
((a)\s\2*)r�z((a)\s(abc|a))z((a)\s(abc|a)*)�K�K�kz\u212ar�ſrVz\u017fz\u0412�в�ᲀz\u0432�Вz\u1c80z\ufb05�stz\ufb06�ſt)r5r:rgr�ryrurhs r�test_ignore_casezReTests.test_ignore_case�s:�������%����5�5�;�;�A�>�>��F�F�F������&�&�"�$�7�7�=�=�a�@�@�&�I�I�I������,��r�t�<�<�B�B�1�E�E�u�M�M�M������-����>�>�D�D�Q�G�G��P�P�P������-����=�=�C�C�A�F�F��N�N�N������.�&�"�$�?�?�E�E�a�H�H�&�Q�Q�Q������,��r�t�<�<�B�B�1�E�E�u�M�M�M������-����>�>�D�D�Q�G�G��P�P�P������"3�U�B�D�A�A�G�G��J�J�E�R�R�R������"4�f�b�d�C�C�I�I�!�L�L�f�U�U�U�	
������x���6�6�7�7�7�������x���6�6�7�7�7�������C���6�6�7�7�7�������C���6�6�7�7�7�	
������x���6�6�7�7�7�������x���6�6�7�7�7�������C���6�6�7�7�7�������C���6�6�7�7�7�	
������H�b�d�;�;�<�<�<�������H�b�d�;�;�<�<�<�������H�b�d�;�;�<�<�<�������H�b�d�;�;�<�<�<�������H�b�d�;�;�<�<�<�������H�b�d�;�;�<�<�<�	
������H�b�d�;�;�<�<�<�������H�b�d�;�;�<�<�<�<�<rc�	�|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjd	d
tj����|�tjdd
tj����|�tjdd
tj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����dS)Nz[19A]r�z[19a]rss[19A]�As[19a]rKz[19K]r�z[19k]z
[19\u212a]r�r�z[19S]r�z[19s]z
[19\u017f]rrVz
[19\u0412]r�r�z
[19\u0432]r�z
[19\u1c80]z
[19\ufb05]r�z
[19\ufb06]r�)rur:rgr�rhs r�test_ignore_case_setzReTests.test_ignore_case_set�s@��������3���5�5�6�6�6�������3���5�5�6�6�6�������3���5�5�6�6�6�������3���5�5�6�6�6�������D�"�$�7�7�8�8�8�������D�"�$�7�7�8�8�8�������D�"�$�7�7�8�8�8�������D�"�$�7�7�8�8�8�	
������8�R�T�:�:�;�;�;�������8�R�T�:�:�;�;�;��������R�T�:�:�;�;�;��������R�T�:�:�;�;�;�	
������8�R�T�:�:�;�;�;�������8�R�T�:�:�;�;�;��������R�T�:�:�;�;�;��������R�T�:�:�;�;�;�	
�������"�$�?�?�@�@�@��������"�$�?�?�@�@�@��������"�$�?�?�@�@�@��������"�$�?�?�@�@�@��������"�$�?�?�@�@�@��������"�$�?�?�@�@�@�	
�������"�$�?�?�@�@�@��������"�$�?�?�@�@�@�@�@rc���|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjdd	tj����|�tjd
d	tj����|�tjd
dtj����|�tjddtj����|�tjdd
tj����|�tjddtj����|�tjdd
tj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjddtj����|�tjdd tj����|�tjdd!tj����|�tjd"d#tj����|�tjd"d!tj����|�tjd$d#tj����|�tjd$d tj����|�tjd%d&tj����|�tjd'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]r�z[j-m]z[\u2129-\u212b]r�r�z[R-T]r�z[r-t]z[\u017e-\u0180]rrVz[\u0411-\u0413]r�r�z[\u0431-\u0433]r�z[\u1c80-\u1c82]z[\ufb04-\ufb05]r�z[\ufb06-\ufb07]r�)rur:rgr�rfrhs r�test_ignore_case_rangezReTests.test_ignore_case_rangesl��������3���5�5�6�6�6����"�(�8�S�"�$�7�7�8�8�8�������D�"�$�7�7�8�8�8����"�(�9�d�B�D�9�9�:�:�:����������>�>�?�?�?����"�(�>�6�2�4�@�@�A�A�A����������>�>�?�?�?����"�(�>�6�2�4�@�@�A�A�A������!3�X�r�t�D�D�E�E�E������!3�X�r�t�D�D�E�E�E������!3�X�r�t�D�D�E�E�E������!3�X�r�t�D�D�E�E�E������!;�\�2�4�P�P�Q�Q�Q������!;�\�2�4�P�P�Q�Q�Q������!;�\�2�4�P�P�Q�Q�Q������!;�\�2�4�P�P�Q�Q�Q�	
������8�R�T�:�:�;�;�;�������8�R�T�:�:�;�;�;������!3�S�"�$�?�?�@�@�@������!3�S�"�$�?�?�@�@�@�	
������8�R�T�:�:�;�;�;�������8�R�T�:�:�;�;�;������!3�S�"�$�?�?�@�@�@������!3�S�"�$�?�?�@�@�@�	
�����!3�X�r�t�D�D�E�E�E������!3�X�r�t�D�D�E�E�E������!3�X�r�t�D�D�E�E�E������!3�X�r�t�D�D�E�E�E������!3�X�r�t�D�D�E�E�E������!3�X�r�t�D�D�E�E�E�	
�����!3�X�r�t�D�D�E�E�E������!3�X�r�t�D�D�E�E�E�E�Erc�~�|�tjdd���d��d��dS)Nz(\s)rpr]�r5r:rgryrhs r�
test_categoryzReTests.test_category5s8�������'�3�/�/�5�5�a�8�8�#�>�>�>�>�>rc��ddl}td��D]�}t|��}t|�����}|�|�|��|��|�|�|��|��|tj	v}|�|�
|��|��|�|�|��|����ttdd����ddgzD�]8}t|��}|�|�|��|��|dkrH|�|�|��t|�������||���kp||�
��k}|�|�
|����|�|�|��||���kp||�
��k����:|�|�d��d��|�|�d��td����|�|�
d����|�|�d����dS)Nr�iii(i0r�)�_srer�r��ord�lowerr5�
ascii_tolower�unicode_tolowerrG�
ascii_letters�
ascii_iscased�unicode_iscasedr+�upperr�ru)rr�r�ru�lo�iscaseds      r�test_case_helperszReTests.test_case_helpers8s��������s���	?�	?�A��A���A��Q�W�W�Y�Y���B����T�/�/��2�2�B�7�7�7����T�1�1�!�4�4�b�9�9�9��6�/�/�G����T�/�/��2�2�G�<�<�<����T�1�1�!�4�4�g�>�>�>�>��e�C��(�(�)�)�W�g�,>�>�	?�	?�A��A���A����T�/�/��2�2�A�6�6�6��F�{�{�� � ��!5�!5�a�!8�!8�#�a�g�g�i�i�.�.�I�I�I��1�7�7�9�9�n�6��Q�W�W�Y�Y��G����T�/�/��2�2�3�3�3����T�1�1�!�4�4��!�'�'�)�)�^�=�q�A�G�G�I�I�~�
?�
?�
?�
?�	
����+�+�F�3�3�V�<�<�<�����-�-�f�5�5�s�3�x�x�@�@�@�����+�+�F�3�3�4�4�4�����,�,�V�4�4�5�5�5�5�5rc��|�tjdd���d��d��|�tjdd���d��d��dS)Nz\s([^a])� br]rPz	\s([^a]*)z bb�bb�r5r:rdryrhs r�test_not_literalzReTests.test_not_literalSsh�������;��5�5�;�;�A�>�>��D�D�D������<��7�7�=�=�a�@�@�$�G�G�G�G�Grc��ttd�������}|�t��5tjd��}ddd��n#1swxYwY|�|�|��td����|�tjd|��td����|�t��5tjd��}ddd��n#1swxYwY|�|�|��td����|�t��5tjd��}ddd��n#1swxYwY|�|�|��td	����|�t��5tjd
��}ddd��n#1swxYwY|�|�|��td����|�t��5tjd��}ddd��n#1swxYwY|�|�|��td����|�tjd
|��td����|�t��5tjd��}ddd��n#1swxYwY|�|�|��td����|�t��5tjd��}ddd��n#1swxYwY|�|�|��td����|�tjd|��td����|�t��5tjd��}ddd��n#1swxYwY|�|�|��td����|�t��5tjd��}ddd��n#1swxYwY|�|�|��td����|�tjd|��td����|�t��5tjd��}ddd��n#1swxYwY|�|�|��td����|�t��5tjd��}ddd��n#1swxYwY|�|�|��td����dS)Nr�z[0-9--1]z
-./0123456789z[--1]z-./01z[%--1]z
%&'()*+,-1z[%--]z	%&'()*+,-z[0-9&&1]z&0123456789z[\d&&1]z[&&1]z&1z[0-9||a]z0123456789a|z[\d||a]z[||1]z1|z[0-9~~1]z0123456789~z[\d~~1]z[~~1]z1~z[[0-9]|]z0123456789[]z[[:digit:]|]z:[]dgit)
�bytesr��decode�assertWarns�
FutureWarningr:r<r5rUr+�rrVrVs   r�test_possible_set_operationsz$ReTests.test_possible_set_operationsWs����%��*�*���$�$�&�&��
�
�
�m�
,�
,�	(�	(��
�;�'�'�A�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�������1���t�O�'<�'<�=�=�=������H�a�0�0�$�w�-�-�@�@�@�
�
�
�m�
,�
,�	&�	&��
�9�%�%�A�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�������1���t�L�'9�'9�:�:�:�
�
�
�m�
,�
,�	%�	%��
�8�$�$�A�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�������1���t�K�'8�'8�9�9�9�
�
�
�m�
,�
,�	(�	(��
�;�'�'�A�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�������1���t�M�':�':�;�;�;�
�
�
�m�
,�
,�	'�	'��
�:�&�&�A�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�������1���t�M�':�':�;�;�;������H�a�0�0�$�t�*�*�=�=�=�
�
�
�m�
,�
,�	(�	(��
�;�'�'�A�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�������1���t�N�';�';�<�<�<�
�
�
�m�
,�
,�	'�	'��
�:�&�&�A�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�������1���t�N�';�';�<�<�<������H�a�0�0�$�t�*�*�=�=�=�
�
�
�m�
,�
,�	(�	(��
�;�'�'�A�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�������1���t�M�':�':�;�;�;�
�
�
�m�
,�
,�	'�	'��
�:�&�&�A�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�������1���t�M�':�':�;�;�;������H�a�0�0�$�t�*�*�=�=�=�
�
�
�m�
,�
,�	(�	(��
�;�'�'�A�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�������1���t�N�';�';�<�<�<�
�
�
�m�
,�
,�	,�	,��
�?�+�+�A�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�������1���t�I���7�7�7�7�7s��	A*�*A.�1A.�;D�D �#D �7F�F�F�3H�H�H�/J�J�J�!M�M�	M�N>�>O�O�Q0�0Q4�7Q4�S,�,S0�3S0�=V�V"�%V"�9X�X�!Xc��|�tjdd���d��d��|�tjdd���d��d��dS)Nz\s(b)r�r]rPza\sza rr�rhs r�test_search_coveragezReTests.test_search_coverage�sh�������8�T�2�2�8�8��;�;�S�A�A�A������6�4�0�0�6�6�q�9�9�4�@�@�@�@�@rc�>�|�|�|}dt|��f}n|�|�td���|||��}|�|��|�|���|��|�|���|��dS)Nrz@If match is not None, span should be specified (and vice versa).)rBr�rur5ryre)rr8�textrgre�matcherr�s       r�assertMatchzReTests.assertMatch�s����=�T�\��E��s�4�y�y�>�D�D�
�]�d�l��1�2�2�
2��G�G�T�"�"�����������������E�*�*�*���������4�(�(�(�(�(rz!"%',/:;<=>@_`c��d�d�td��D����}|D]�}|�tj|��|��|�dtj|��zdz|��|�dtj|��z|����|�tj|��|��dD]2}|�tj|��dd�d	���3|j}|�tj|��|��dS)
Nr�c3�4K�|]}t|��V��dSr)r�r�s  rr�z)ReTests.test_re_escape.<locals>.<genexpr>�s(����/�/�q�C��F�F�/�/�/�/�/�/rr\r�r�z(?x)z-.]{}r]r�)r�r�r�r:�escaper5�
LITERAL_CHARS)rrVru�
literal_charss    r�test_re_escapezReTests.test_re_escape�s(���G�G�/�/�E�#�J�J�/�/�/�/�/���	7�	7�A����R�Y�q�\�\�1�-�-�-����S�2�9�Q�<�<�/�#�5�q�9�9�9����V�b�i��l�l�2�A�6�6�6�6������1���q�)�)�)��	5�	5�A����R�Y�q�\�\�"�1�"�-�t�4�4�4�4��*�
������=�1�1�=�A�A�A�A�Arc���ttd����}|D]�}t|g��}|�tj|��|��|�dtj|��zdz|��|�dtj|��z|����|�tj|��|��dD]B}t|g��}|�tj|��dd�d���C|j�d��}|�tj|��|��dS)	Nr\�[�]s(?x)s-.]{}r]�\�ascii)r�r�r�r:r�r5r��encode)rrVr�rPr�s     r�test_re_escape_byteszReTests.test_re_escape_bytes�s=���%��*�*�����	8�	8�A��q�c�
�
�A����R�Y�q�\�\�1�-�-�-����T�B�I�a�L�L�0�4�7��;�;�;����W�r�y��|�|�3�Q�7�7�7�7������1���q�)�)�)��	6�	6�A��q�c�
�
�A����R�Y�q�\�\�"�1�"�-�u�5�5�5�5��*�1�1�'�:�:�
������=�1�1�=�A�A�A�A�Arc��d}tj|��}|�||��|�||��|�dtjd��z|ddtj��dS)Nuxxx☠☠☠xxxz.%s+.�☠ux☠☠☠x)rmr�)r:r�r5r�rd)rrV�	s_escapeds   r�test_re_escape_non_asciiz ReTests.test_re_escape_non_ascii�s���&���I�a�L�L�	�����A�&�&�&�����A�&�&�&�����2�9�X�#6�#6�6��/����	D�	D�	D�	D�	Drc�j�d�d��}tj|��}|�||��|�||��tjtjd�d����|��}|�t
|��d��dS)Nu	y☠y☠yzutf-8r�rm)r�r:r�r5r�rUrB)rrP�	b_escaped�ress    r�test_re_escape_non_ascii_bytesz&ReTests.test_re_escape_non_ascii_bytes�s����$�$�W�-�-���I�a�L�L�	�����A�&�&�&�����A�&�&�&��j���8�?�?�7�#;�#;�<�<�a�@�@������S���1�%�%�%�%�%rc��ddl}tjdtj��}t	|jdz��D]C}|�||��}|�|��}|�||���Dddlm	}dS)Nrza(?:b|(c|e){1,2}?|d)+?(.)r])�_compile)
�pickler:r<�UNICODEr��HIGHEST_PROTOCOL�dumps�loadsr5r)rr�oldpat�proto�pickled�newpatrs       r�
test_picklingzReTests.test_pickling�s����
�
�
���7���D�D���6�2�Q�6�7�7�	-�	-�E��l�l�6�5�1�1�G��\�\�'�*�*�F����V�V�,�,�,�,��������rc��ddl}tjd��}|�|�|��|��|�|�|��|��|�d��}|�|�|��|��|�|�|��|��dS)Nrz (?P<int>\d+)(?:\.(?P<frac>\d*))?z12.34)�copyr:r<r-�deepcopyrg)rr
rVr�s    r�test_copyingzReTests.test_copying�s��������J�:�;�;���
�
�d�i�i��l�l�A�&�&�&��
�
�d�m�m�A�&�&��*�*�*�
�G�G�G�����
�
�d�i�i��l�l�A�&�&�&��
�
�d�m�m�A�&�&��*�*�*�*�*rc��|�tjtj��|�tjtj��|�tjtj��|�tjtj	��|�tj
tj��dSr)r5r:r��
IGNORECASE�Lr�r��	MULTILINErr�r��VERBOSErhs r�test_constantszReTests.test_constants�s��������r�}�-�-�-������r�y�)�)�)������r�|�,�,�,������r�y�)�)�)������r�z�*�*�*�*�*rc���tjtjtjtjtjtjfD]*}|�tjd|�����+tjtjtjtjtjtj	fD]*}|�tjd|�����+dS)Nz	^pattern$s	^pattern$)
r:r�r�r�rr�rzrur<r)r�flags  r�
test_flagszReTests.test_flags�s����T�2�4���r�t�R�T�2�4�8�	;�	;�D��O�O�B�J�{�D�9�9�:�:�:�:��T�2�4���r�t�R�T�2�4�8�	<�	<�D��O�O�B�J�|�T�:�:�;�;�;�;�	<�	<rc	�|�dD�]�}|dk�r\|�tjd|zt|������|�tjd|zt|��dz����|�tjd|zt|��dz����|�tjd|zt|������|�tjd	|zt|��dz����|�tjd
|zt|��dz����|dkr�|�tjd
|zt|������|�tjd|zt|��dz����|�tjd|zt|��dz����|�tjd|zt|������|�tjd|zt|��dz����|�tjd|zt|��dz�������|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�ddd��|�ddd ��|�d!d"d��|�d#d"d��|�d$d%d��|�d&d%d��|�d'd(d��|�d)d(d��|�d*d+d��dS),N�rr��� �@�r�r�r\�r�i��r\�\%03o�\%03o0�0�\%03o8�8�\x%02x�\x%02x0�\x%02xz�zr�z\u%04xz\u%04x0z\u%04xzz\U%08xz\U%08x0z\U%08xzr�r�r�r�z\01r�z\018z8z\567�0octal escape value \567 outside of range 0-0o377rz\911�invalid group reference 91r]z\x1�incomplete escape \x1z\x1zz\u123�incomplete escape \u123z\u123zz	\U0001234�incomplete escape \U0001234z
\U0001234zz
\U00110000�bad escape \U00110000�rur:rgr�rCr^s  r�test_sre_character_literalsz#ReTests.test_sre_character_literals�s���R�	B�	B�A��3�w�w�������A��s�1�v�v� >� >�?�?�?�������Q���A���s�
� C� C�D�D�D�������Q���A���s�
� C� C�D�D�D�������Q���A��� ?� ?�@�@�@�������a���Q����� D� D�E�E�E�������a���Q����� D� D�E�E�E��7�{�{�������Q���A��� ?� ?�@�@�@�������a���Q����� D� D�E�E�E�������a���Q����� D� D�E�E�E��O�O�B�H�Y��]�C��F�F�;�;�<�<�<��O�O�B�H�Z�!�^�S��V�V�C�Z�@�@�A�A�A��O�O�B�H�Z�!�^�S��V�V�C�Z�@�@�A�A�A�A��������/�/�0�0�0��������1�1�2�2�2��������0�0�1�1�1�������'�2�2�3�3�3����w� 0�12�	4�	4�	4�	
���w�(D�a�H�H�H����v�'?��C�C�C����w�(@�!�D�D�D����x�)C�Q�G�G�G����y�*D�a�H�H�H����|�-K�Q�O�O�O����}�.L�a�P�P�P����}�.F��J�J�J�J�Jrc	��dD�]&}|dk�r�|�tjd|zt|������|�tjd|zt|������|�tjd|zt|������|�tjd|zt|������|�tjd|zt|������|�tjd|zt|������|�tjd	|zt|������|�tjd
|zt|������|dkr�|�tjd|zt|������|�tjd
|zt|������|�tjd|zt|������|�tjd|zt|������|�tjd|zt|��dz����|�tjd|zt|��dz������(|�ddd��|�ddd��|�ddd��|�ddd��|�ddd��|�dd d��|�tjd!d"����dS)#Nrr\�[\%o]�[\%o8]�[\%03o]�[\%03o0]�[\%03o8]�[\x%02x]�	[\x%02x0]�	[\x%02xz]r�z[\u%04x]z	[\u%04x0]z	[\u%04xz]z[\U%08x]z	[\U%08x0]r"z	[\U%08xz]r(z[\567]r)r]z[\911]�
bad escape \9z[\x1z]r+z[\u123z]r,z[\U0001234z]r-z[\U00110000]r.z[\U0001d49c-\U0001d4b5]u𝒞r/r^s  r�!test_sre_character_class_literalsz)ReTests.test_sre_character_class_literalss-��R�	D�	D�A��3�w�w�������A��s�1�v�v� >� >�?�?�?�������Q���A��� ?� ?�@�@�@�������a���Q��� @� @�A�A�A�������q��#�a�&�&� A� A�B�B�B�������q��#�a�&�&� A� A�B�B�B�������q��#�a�&�&� A� A�B�B�B��������)9�3�q�6�6� B� B�C�C�C��������)9�3�q�6�6� B� B�C�C�C��7�{�{�������q��#�a�&�&� A� A�B�B�B��������)9�3�q�6�6� B� B�C�C�C��������)9�3�q�6�6� B� B�C�C�C��O�O�B�H�[�1�_�c�!�f�f�=�=�>�>�>��O�O�B�H�\�A�%5�s�1�v�v�c�z�B�B�C�C�C��O�O�B�H�\�A�%5�s�1�v�v�c�z�B�B�C�C�C�C����y� 0�12�	4�	4�	4�	
���y�*:�A�>�>�>����y�*B�A�F�F�F����{�,F��J�J�J�����0N�PQ�R�R�R�����0H�!�L�L�L������!;�\�J�J�K�K�K�K�Krc	�T�dD�]�}|�tjd|z���t	|g������|�tjd|z���t	|g��dz����|�tjd|z���t	|g��dz����|�tjd|z���t	|g������|�tjd|z���t	|g��dz����|�tjd	|z���t	|g��d
z�������|�tjtjd��|�tjtjd��|�tjd
d����|�tjdd����|�tjdd����|�tjdd����|�ddd��|�ddd��|�ddd��|�ddd��dS)N�rr�rrrrr�r�r r!�0r#�8r%r&r'�zs\u1234s
\U00012345s\0�s\08s8s\01�s\018s8s\567r)rs\911r*r]s\x1r+s\x1z�	rur:rgr�r�r9r;r<rCr^s  r�test_sre_byte_literalszReTests.test_sre_byte_literalss���2�	R�	R�A��O�O�B�H�h��l�%:�%:�%<�%<�e�Q�C�j�j�I�I�J�J�J��O�O�B�H�i�!�m�%;�%;�%=�%=�u�a�S�z�z�$��O�O�P�P�P��O�O�B�H�i�!�m�%;�%;�%=�%=�u�a�S�z�z�$��O�O�P�P�P��O�O�B�H�i�!�m�%;�%;�%=�%=�u�a�S�z�z�J�J�K�K�K��O�O�B�H�j�1�n�%<�%<�%>�%>��q�c�
�
�4��P�P�Q�Q�Q��O�O�B�H�j�1�n�%<�%<�%>�%>��q�c�
�
�4��P�P�Q�Q�Q�Q����"�(�B�J�
�;�;�;����"�(�B�J��?�?�?��������1�1�2�2�2�������(�3�3�4�4�4�������'�2�2�3�3�3�������8�4�4�5�5�5����x� 0�12�	4�	4�	4�	
���x�)E�q�I�I�I����w�(@�!�D�D�D����x�)A�1�E�E�E�E�Erc	��dD�][}|�tjd|z���t	|g������|�tjd|z���t	|g������|�tjd|z���t	|g������|�tjd|z���t	|g������|�tjd|z���t	|g������|�tjd|z���t	|g������|�tjd|z���t	|g������|�tjd	|z���t	|g��������]|�tjtjd
��|�tjtjd��|�dd
d��|�ddd��|�ddd��dS)Nr=r2r3r4r5r6r7r8r9s[\u1234]s[\U00012345]s[\567]r)r]s[\911]r:s[\x1z]r+rCr^s  r�test_sre_byte_class_literalsz$ReTests.test_sre_byte_class_literals3s]��2�	O�	O�A��O�O�B�H�h��l�%:�%:�%<�%<�e�Q�C�j�j�I�I�J�J�J��O�O�B�H�i�!�m�%;�%;�%=�%=�u�a�S�z�z�J�J�K�K�K��O�O�B�H�j�1�n�%<�%<�%>�%>��q�c�
�
�K�K�L�L�L��O�O�B�H�k�A�o�%=�%=�%?�%?���s���L�L�M�M�M��O�O�B�H�k�A�o�%=�%=�%?�%?���s���L�L�M�M�M��O�O�B�H�k�A�o�%=�%=�%?�%?���s���L�L�M�M�M��O�O�B�H�l�Q�&6�%>�%>�%@�%@�%���*�*�M�M�N�N�N��O�O�B�H�l�Q�&6�%>�%>�%@�%@�%���*�*�M�M�N�N�N�N����"�(�B�J��=�=�=����"�(�B�J�0@�A�A�A����z� 0�12�	4�	4�	4�	
���z�+;�Q�?�?�?����z�+C�Q�G�G�G�G�Grc�H�|�ddd��|�ddd��|�ddd��|�ddd��|�ddd	��|�d
dd	��|�dd
d	��dS)Nr�zunterminated character setrz[^z[az[a-z[\w-b]zbad character range \w-br]z[a-\w]zbad character range a-\wz[b-a]zbad character range b-a�rCrhs r�test_character_set_errorsz!ReTests.test_character_set_errorsEs������t�%A�1�E�E�E����u�&B�A�F�F�F����u�&B�A�F�F�F�	
���v�'C�Q�G�G�G����y�*E�q�I�I�I����y�*E�q�I�I�I����x�)B�A�F�F�F�F�Frc�n�|�tjdd���d��d��|�tjdd���d��d��|�tjdd���d��d��dS)Nz(a)|(b)rPr]r:)r:r:)r5r:rg�start�endrerhs r�test_bug_113254zReTests.test_bug_113254Ps��������*�c�2�2�8�8��;�;�R�@�@�@������*�c�2�2�6�6�q�9�9�2�>�>�>������*�c�2�2�7�7��:�:�H�E�E�E�E�Erc���|�tjdd��j��|�tjdd��jd��|�tjdd��jd��|�tjdd��jd��|�tjdd��jd��dS)	Nz(a)?arsz(a)(b)?brkr]z(?P<a>a)(?P<b>b)?bz(?P<a>a(b))z((a)))rfr:rg�	lastindexr5�	lastgrouprhs r�test_bug_527371zReTests.test_bug_527371Us������"�(�8�C�0�0�:�;�;�;������+�d�3�3�=�q�A�A�A������"7��=�=�G��M�M�M������.�$�7�7�A�3�G�G�G������(�C�0�0�:�A�>�>�>�>�>rc�(�|�tjdddzdz���d��d��|�tjdddzd	zddzzd
z���d��d��|�tjddd
zdz���d��d��|�tjdddzdz���d��d��dS)Nz.*?cr�rkrQri!Nz.*?cdi�ru�cdei#Ni Nro�deia�z(a|b)*?c)r5r:rgrLrdrhs r�test_bug_418626zReTests.test_bug_418626]s��	
�����&�%��*�T�/�:�:�>�>�q�A�A�5�I�I�I������'�4��9�S�=��d��+B�5�+H�I�I�M�M�a�P�P��	 �	 �	 ������'�5��;�t�+;�<�<�@�@��C�C�U�K�K�K�	
�����:�u�T�z�$��?�?�C�C�A�F�F��N�N�N�N�Nrc��dtjd��zdz}|�tj|��odd��dS)Nr�u‹r�r])r:r�r5r<r�s  r�test_bug_612074zReTests.test_bug_612074isD����	�(�#�#�#�C�'�������C���.�Q��2�2�2�2�2rc��|�tjdddz���d��d��|�tjdddzdz���d��d��|�tjdddzdz���d��d��dS)Nz(x)*iP�r1r]z(x)*yr2z(x)*?yr�rhs r�test_stack_overflowzReTests.test_stack_overflowms���	
�����&�%��)�4�4�:�:�1�=�=�s�C�C�C������'�5��9�S�=�9�9�?�?��B�B�C�H�H�H������(�E�#�I�c�M�:�:�@�@��C�C�S�I�I�I�I�Irc��dD]?}dD]:}|�|�|��dd��|�d|�|�d�dd���;�@dS)N��*�+�?z{1,2}�r�r^znothing to repeatrz(?:r�r^rH)r�reps�mods   r�test_nothing_to_repeatzReTests.test_nothing_to_repeatts���*�	?�	?�D��
?�
?���&�&���s�s�';�':�A�?�?�?��&�&�&�T�T�3�3�3�'?�':�A�?�?�?�?�
?�	?�	?rc��dD]O}dD]J}||z}dD]@}dD];}||zdvr�
||z}|�d|�|��ddt|��z���<�A�K�PdS)Nr[)r�r^r])r^r]r1zmultiple repeatr])rCrB)r�
outer_reps�	outer_mod�outer_op�
inner_reps�	inner_mod�inner_ops       r�test_multiple_repeatzReTests.test_multiple_repeat|s���0�		F�		F�J�)�
F�
F�	�%�	�1��"8�F�F�J�%1�F�F�	�$�z�1�Z�?�?�$�#-�	�#9���.�.�.�8�8�X�X�/N� 1�1�s�8�}�}�3D�F�F�F�F�	F�F�
F�		F�		Frc���|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����dS)Nz(?:a?)*yr(z(?:a?)+yz(?:a?){2,}yz	(?:a?)*?yz	(?:a?)+?yz(?:a?){2,}?y)rfr:rgrhs r� test_unlimited_zero_width_repeatz(ReTests.test_unlimited_zero_width_repeat�s������"�(�;��4�4�5�5�5����"�(�;��4�4�5�5�5����"�(�>�3�7�7�8�8�8����"�(�<��5�5�6�6�6����"�(�<��5�5�6�6�6����"�(�?�C�8�8�9�9�9�9�9rc��d�}d�}d�}d�}td|fd|fd|fd|fd	g��}|�|j�d
��j��|�|�d��gd�d
f��dS)
Nc��|Srr���scanner�tokens  r�s_identz%ReTests.test_scanner.<locals>.s_ident�s��E�\rc��d|zS)Nzop%sr�ros  r�
s_operatorz(ReTests.test_scanner.<locals>.s_operator�s��v��~�(=rc� �t|��Sr)�floatros  r�s_floatz%ReTests.test_scanner.<locals>.s_float�s
��E�%�L�L�%8rc� �t|��Sr)rxros  r�s_intz#ReTests.test_scanner.<locals>.s_int�s
��#�e�*�*�#4rz[a-zA-Z_]\w*z\d+\.\d*r�z=|\+|-|\*|/)z\s+Nr�zsum = 3*foo + 312.50 + bar)	�sumzop=r^zop*�foo�op+g�s@r|�bar)rrurpr8r5�scan)rrrrtrwryrps      r�test_scannerzReTests.test_scanner�s���1�1�1�=�=�=�8�8�8�4�4�4��
�g�&�
�'�"�
�U�O�
�Z�(������	
�����/�/��3�3�;�<�<�<�������&B�C�C�)�)�)�*,�.�	/�	/�	/�	/�	/rc��dD]~}|�tjd|zd�����d��|�tjd|zd�����d���dS)N)r�r^r\z
((.%s):)?zr(rfza:z)rrs�r5r:rgr.)r�ops  r�test_bug_448951zReTests.test_bug_448951�s����	*�	*�B����R�X�m�B�&6��<�<�C�C�E�E�)�
+�
+�
+����R�X�m�B�&6��>�>�E�E�G�G�(�
*�
*�
*�
*�	*�	*rc��|�tjdd�����d��|�tjdd�����d��|�tjdd�����d��|�tjdd�����d��|�tjd	d�����d��|�tjd
d�����d��|�tjdd�����d��|�tjd
d�����d��dS)Nz	^((a)|b)*ror<z^(([ab])|c)*)rurPz^((d)|[ab])*�rPNz
^((a)c|[ab])*z^((a)|b)*?cz^(([ab])|c)*?drHz^((d)|[ab])*?cz^((a)c|[ab])*?cr�rhs r�test_bug_725106zReTests.test_bug_725106�s��������+�u�5�5�<�<�>�>�#�	%�	%�	%������.�%�8�8�?�?�A�A�#�	%�	%�	%������.�%�8�8�?�?�A�A�$�	&�	&�	&������/�5�9�9�@�@�B�B�$�	&�	&�	&������-��7�7�>�>�@�@�#�	%�	%�	%������"2�F�;�;�B�B�D�D�#�	%�	%�	%������"2�E�:�:�A�A�C�C�$�	&�	&�	&������"3�U�;�;�B�B�D�D�$�	&�	&�	&�	&�	&rc���|�tjdd�����d��|�tjdd�����d��dS)Nz(a)(?:(?=(b)*)c)*rE)rsNz(a)((?!(b)*))*r*r�rhs r�test_bug_725149zReTests.test_bug_725149�sx�������"5�u�=�=�D�D�F�F�$�	&�	&�	&������"2�E�:�:�A�A�C�C�*�	,�	,�	,�	,�	,rc��Gd�dt��}tj|d����}|�|�d����dS)Nc��eZdZdS)�+ReTests.test_bug_764548.<locals>.my_unicodeN)rrrr�rr�
my_unicoder��s�������rr�ror)rzr:r<rfrg)rr�r�s   r�test_bug_764548zReTests.test_bug_764548�s[��#�#�#�#�#��#�#�#��j���E�*�*�+�+�����#�)�)�E�*�*�+�+�+�+�+rc���tjdd��}|�d�|D��gd���tjd��}|�ddd��}|�d�|D��gd���tjd��}|�ddd���}|�d	�|D��gd���tjd��}|�ddd�
��}|�d�|D��gd���tjd��}|�ddd
���}|�d�|D��ddg��dS)Nrrc�8�g|]}|�d����Sr?�ry�r��items  r�
<listcomp>z)ReTests.test_finditer.<locals>.<listcomp>��"��9�9�9�D�$�*�*�Q�-�-�9�9�9rrr]r�c�8�g|]}|�d����Sr?r�r�s  rr�z)ReTests.test_finditer.<locals>.<listcomp>�r�rrIc�8�g|]}|�d����Sr?r�r�s  rr�z)ReTests.test_finditer.<locals>.<listcomp>�r�r)rJr?c�8�g|]}|�d����Sr?r�r�s  rr�z)ReTests.test_finditer.<locals>.<listcomp>�r�rr^r�c�8�g|]}|�d����Sr?r�r�s  rr�z)ReTests.test_finditer.<locals>.<listcomp>�r�rr)r:rMr5r<)r�iterr�s   r�
test_finditerzReTests.test_finditer�s����{�5�,�/�/�����9�9�D�9�9�9�+�+�+�	-�	-�	-��j������|�|�L�!�R�0�0�����9�9�D�9�9�9�+�+�+�	-�	-�	-��j������|�|�L�a��|�;�;�����9�9�D�9�9�9�+�+�+�	-�	-�	-��j������|�|�L���|�;�;�����9�9�D�9�9�9�+�+�+�	-�	-�	-��j������|�|�L�a��|�:�:�����9�9�D�9�9�9����	'�	'�	'�	'�	'rc�z�|�tjd��tjd����dS)N�
bug_926075s
bug_926075)�assertIsNotr:r<rhs r�test_bug_926075zReTests.test_bug_926075�s=�������L�1�1���M�2�2�	4�	4�	4�	4�	4rc��d}|�tj|���d��gd���dS)Nu[.。.。]za.b.crR)r5r:r<rr�s  r�test_bug_931848zReTests.test_bug_931848�sJ��.�������G�,�,�2�2�7�;�;�&���	(�	(�	(�	(�	(rc���tjdd��}|�t|�����d��|�tt|��tjd���d��}|�|�	�����d��|�
|�	����dS)Nz\sr�)r]rm)r:rMr5�nextrer9�
StopIterationr<rprdrf)rr�rps   r�test_bug_581080zReTests.test_bug_581080�s����{�5�%�(�(������d�����*�*�E�2�2�2����-��t�4�4�4��*�U�#�#�+�+�E�2�2��������)�)�.�.�0�0�&�9�9�9����'�.�.�*�*�+�+�+�+�+rc�F�tjdd��}|�t|�����d��|�t|�����d��|�tt|��dS)Nz.*�asdfrG)r�r�)r:rMr5r�rer9r�)rr�s  r�test_bug_817234zReTests.test_bug_817234�s}���{�5�&�)�)������d�����*�*�F�3�3�3�����d�����*�*�F�3�3�3����-��t�4�4�4�4�4rc���gd�}|D]>}|�tjd|���d��|���?gd�}|D]*}|�tjd|�����+dS)N)�7u๘u0z^\d$r)uⅥu〹u₂u㊴)r5r:rgryrf)r�decimal_digitsr1�not_decimal_digitss    r�
test_bug_6561zReTests.test_bug_6561�s�������
 �	?�	?�A����R�X�g�q�1�1�7�7��:�:�A�>�>�>�>�����$�	4�	4�A����b�h�w��2�2�3�3�3�3�	4�	4rc�P�ddl}dD]�}|�|��}|�tjd���|����|�tjd���|�����d����dS)Nr�bBuhHiIlLfdsblarr�)�arrayrfr:r<rgr5r.)rr��typecoderss    r�test_empty_arrayzReTests.test_empty_arrays�������%�	D�	D�H����H�%�%�A����b�j��0�0�6�6�q�9�9�:�:�:����R�Z��_�_�2�2�1�5�5�<�<�>�>��C�C�C�C�	D�	Drc�\	�d}d}tjd|ztjtjz��}|�d|z��}|�|��tjd|ztjtjz��}|�d|z��}|�|��tjd|ztj��}|�d|z��}|�|��tjd|ztj��}|�d|z��}|�|��tjd|z��}|�d|z��}|�|��tjd|z��}|�d|z��}|�|��tjd|z��}|�d|z��}|�|��tjd|z��}|�d|z��}|�|��|�tjd|z|����|�tjd|z|����|�tjd	|z|tj����|�tjd
|z|����|�tjd|z|tj����d}|�|d
z|d��tj	��5tj
dt��|�d|d��ddd��n#1swxYwY|�d|z|d��|�d|zdz|d��|�d|z|d��|�d|z|d��|�d|z|d��|�d|zdz|d��|�d|zdz|d��|�d|zdz|d��dS) NuẠuạr�r�z(?i).z(?is).z	(?s)(?i).z(?ix) z (?i) z
(?x) (?i) z (?x) (?i) z/global flags not at the start of the expressionz(?i)r]r;sA(?i)z	(?s).(?i)r�z(?i) z (?x)r�z^(?i)z$|(?i)rmz(?:(?i)r�r^z
(^)?(?(1)(?i)r�z($)?(?(1)|(?i)r�)r:r<r�rrgrur�rC�warnings�catch_warnings�simplefilter�BytesWarning)r�
upper_char�
lower_charrV�qr3s      r�test_inline_flagszReTests.test_inline_flagssw���
��
��J�s�Z�'������5�5��
�G�G�D�:�%�&�&����������J�s�Z�'������5�5��
�G�G�D�:�%�&�&����������J�w��+�R�T�2�2��
�G�G�D�:�%�&�&����������J�w��+�R�T�2�2��
�G�G�D�:�%�&�&����������J�x�*�,�-�-��
�G�G�D�:�%�&�&����������J�x�*�,�-�-��
�G�G�D�:�%�&�&����������J�{�Z�/�0�0��
�G�G�D�:�%�&�&����������J�{�Z�/�0�0��
�G�G�D�:�%�&�&���������������J�!6�
�C�C�D�D�D�������J�!6�
�C�C�D�D�D�������J�!6�
�B�D�I�I�J�J�J�������
�!:�J�G�G�H�H�H��������!;�Z���N�N�O�O�O�?�����z�F�2�C��;�;�;��
$�
&�
&�	5�	5��!�'�<�8�8�8��"�"�8�S�!�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	
���{�Z�7��a�@�@�@����w��3�g�=�s�A�F�F�F����}�z�9�3��B�B�B����w��3�S�!�<�<�<����x�*�4�c�1�=�=�=����y�:�5��;�S�!�D�D�D������;�c�A�3��J�J�J����/�*�<�s�B�C��L�L�L�L�Ls�2O�O	�O	c�d�tjd��}|�|�dd��d��|�|�dd��d��|�|�dd��d��tjdtj��}|�|�dd��d	��|�|�dd��d
��|�|�dd��d��dS)zgTest that $ does not include \n
        $ matches the end of string, and just before the terminating \n�$�#za
b
za
b#
#za
b
cza
b
c#r�z#
#za#
b#
#za#
b#
c#N)r:r<r5rFrr�s  r�test_dollar_matches_twicez!ReTests.test_dollar_matches_twiceYs���*�S�/�/��������S�(�3�3�Z�@�@�@�������S�)�4�4�j�A�A�A�������S�$�/�/��8�8�8��*�S�"�,�/�/��������S�(�4�4�k�C�C�C�������S�)�4�4�l�C�C�C�������S�$�/�/��8�8�8�8�8rc�r�tjd��}tjd��}|�t|jd��|�t|jd��|�t|jdd��|�t|jdd��|�t|jdd��|�t|jdd��|�t|jdd��|�t|jdd��dS)Nr��.rrPrur	)r:r<r9rArgrF)rr��bpats   r�test_bytes_str_mixingzReTests.test_bytes_str_mixingfs���j��o�o���z�$�������)�S�Y��5�5�5����)�T�Z��5�5�5����)�S�W�d�C�8�8�8����)�S�W�c�4�8�8�8����)�S�W�d�D�9�9�9����)�T�X�t�S�9�9�9����)�T�X�s�D�9�9�9����)�T�X�s�C�8�8�8�8�8rc���dtjfD]�}tjd|tjz��}|�|�d����tjd|��}|�|�d������tjdtjtjz��}|�|�d����tjdtj��}|�|�d����tjdtj��}|�|�d����tjd��}|�|�d����dtjfD]�}tjd|tjz��}|�|�d����tjd	|��}|�|�d������|�ttjd	tj��|�tj
tjd
��|�ttjdtjtjz��|�ttjdtj��|�ttjdtj��|�tj
tjd��dS)
Nr�Àr�z\wu(?a)Àz(?a)\w�����\ws(?u)\wz(?u)\wz(?au)\w)r:rr<rrurgr�rfr9r�r;)rryr�s   r�test_ascii_and_unicode_flagz#ReTests.test_ascii_and_unicode_flagss������_�	/�	/�E��*�V�U�R�]�%:�;�;�C��O�O�C�I�I�f�-�-�.�.�.��*�U�E�*�*�C��O�O�C�I�I�f�-�-�.�.�.�.��j����B�M�!9�:�:�����#�)�)�F�+�+�,�,�,��j��R�]�3�3�����#�)�)�F�+�+�,�,�,��j����)�)�����#�)�)�F�+�+�,�,�,��j��#�#�����#�)�)�F�+�+�,�,�,����]�	2�	2�E��*�W�e�b�m�&;�<�<�C����c�i�i��0�0�1�1�1��*�V�U�+�+�C����c�i�i��0�0�1�1�1�1����*�b�j�&�"�*�E�E�E����"�(�B�J�
�;�;�;����*�b�j�%���b�h�9N�O�O�O����*�b�j�)�R�X�F�F�F����*�b�j�)�R�Z�H�H�H����"�(�B�J�
�;�;�;�;�;rc��tj��}tdd��D]�}	t|g���|��}|���}||kr�A|�|��}t|��dkr�j|�|��|kr��tj	t|g����}n#ttf$rY��wxYwd}d}tj|tj
tjz��}|r(|�|�|����tjd|ztj��}|r(|�|�|����tj|tj��}|r(|�|�|����tjdtj
��}|r(|�|�|����tjd��}|r(|�|�|����tjd��}|r(|�|�|����|�t&tjdtj
��|�tjtjd	��|�t&tjd
tj
tjz��|�t&tjdtj��|�t&tjdtj
��|�tjtjd��dS)
Nr�r\r]r�s(?L)r�s(?L)\wr�z(?L)rs(?a)s(?aL))�locale�getpreferredencodingr�r�r�r�r�rBr:r��UnicodeErrorrAr<r�rrurgrfr9r�r;r�)r�encr�ru�sletter�bletterr�r�s        r�test_locale_flagzReTests.test_locale_flag�s���)�+�+���s�C���	�	�A�

��1�#�J�J�%�%�c�*�*���'�'�)�)���a�<�<��!�.�.��-�-���w�<�<�1�$�$�h��>�>�#�&�&�'�1�1�8��y���s���,�,����� �)�,�
�
�
���
�����G��D��j��r�y�2�=�8�9�9���	0��O�O�C�I�I�g�.�.�/�/�/��j��4����7�7���	0��O�O�C�I�I�g�.�.�/�/�/��j��r�}�-�-���	2����c�i�i��0�0�1�1�1��j����+�+���	0��O�O�C�I�I�g�.�.�/�/�/��j��$�$���	0��O�O�C�I�I�g�.�.�/�/�/��j�� � ���	2����c�i�i��0�0�1�1�1����*�b�j�"�b�i�@�@�@����"�(�B�J��7�7�7����*�b�j�#�r�y�2�8�7K�L�L�L����*�b�j�'�2�8�D�D�D����*�b�j�'�2�9�E�E�E����"�(�B�J��9�9�9�9�9s#�=C�%(C�C�("C�C �C c���|�tjdd����|�tjdd����|�tjddtj����|�tjddtj����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjd	dtj����|�d
dd��|�d
dd��|�ddd��|�ddd��|�ddd��|�ddd��|�ddd��|�ddd��|�ddd��|�ddd��|�ddd��|�dd d!��|�d"d#d��|�d$d#d��|�d%dd��dS)&Nz(?i:a)b�Ab�aBz(?-i:a)bz
(?i:(?-i:a)b)z\w(?a:\W)\wuàààz(?a:\W(?u:\w)\W)z\W(?u:\w)\Wz(?a)(?-a:\w)z8bad inline flags: cannot turn off flags 'a', 'u' and 'L'r�z(?i-i:a)z(bad inline flags: flag turned on and offr�z(?au:a)z9bad inline flags: flags 'a', 'u' and 'L' are incompatibler�s(?aL:a)z(?-zmissing flagr^z(?-+z(?-z�unknown flagz(?-iz	missing :z(?-i)z(?-i+z(?-izz(?i:rYr�(?i�missing -, : or )z(?i+z(?iz)rur:rgrfrr�rCrhs r�test_scoped_flagszReTests.test_scoped_flags�s���������T�2�2�3�3�3����"�(�:�t�4�4�5�5�5����"�(�;��b�m�D�D�E�E�E�������d�B�M�B�B�C�C�C����"�(�#3�T�:�:�;�;�;������!1�4�8�8�9�9�9��������@�@�A�A�A������!4�n�E�E�F�F�F����������J�J�K�K�K�����J�A�	O�	O�	O����{�:�A�	?�	?�	?����z�K�Q�	P�	P�	P����{�K�Q�	P�	P�	P�	
���v�~�q�9�9�9����w���:�:�:����w���:�:�:����w��Q�7�7�7����x��a�8�8�8����x��a�8�8�8����x���;�;�;����w�(L�a�P�P�P����v�':�A�>�>�>����w�(;�Q�?�?�?����w���:�:�:�:�:rc��dD]8}|�tj|dzdtj�����9dD]8}|�tj|dzdtj�����9|�tjdd����|�tjddtj����|�tjdd����|�tjdd	����|�tjd
dtj����|�tjdd����|�tjd
d����|�tjd
d����dS)Nz 	

rs)� �	�
�
��rKz(?x) az (?x) az(?x) (?x) az a(?x: b) cz ab cz a(?-x: b) cr�z(?x) a(?-x: b) cz	(?x) a| brP�rur:rKr)r�spaces  r�test_ignore_spaceszReTests.test_ignore_spaces�su��"�	H�	H�E��O�O�B�L����c�2�:�F�F�G�G�G�G�<�	J�	J�E��O�O�B�L����t�R�Z�H�H�I�I�I�I������X�s�3�3�4�4�4������Y��R�Z�@�@�A�A�A������]�C�8�8�9�9�9������]�G�<�<�=�=�=������^�V�R�Z�H�H�I�I�I������%7��@�@�A�A�A������[�#�6�6�7�7�7������[�#�6�6�7�7�7�7�7rc�~�|�tjddtj����|�tjddtj����|�tjdd����|�tjddtj����|�tjdd����|�tjdd	����|�tjd
dtj����|�tjdd����|�tjd
d����|�tjd
d����dS)Nz#x
arss#x
arKz(?x)#x
az#x
(?x)#y
az(?x)#x
(?x)#y
az#x
a(?x:#y
b)#z
cz	#x
ab#z
cz#x
a(?-x:#y
b)#z
cza#y
bcz(?x)#x
a(?-x:#y
b)#z
cz
(?x)#x
a|#y
brPr�rhs r�
test_commentszReTests.test_comments�sU�������W�c�2�:�>�>�?�?�?������X�t�R�Z�@�@�A�A�A������[�#�6�6�7�7�7������_�c�2�:�F�F�G�G�G������%8�#�>�>�?�?�?������%;�]�K�K�L�L�L������%<�i�%'�Z�1�1�	2�	2�	2������%@�)�L�L�M�M�M������%6��<�<�=�=�=������%6��<�<�=�=�=�=�=rc���tjd��}|�|�dd��d��tjd��}|�|�dd��d��tjd��}|�|�d	�d
��d��tjd��}|�|�d
d��d��tjd��}|�|�d
d��d��tjd��}|�|�d�d��d��dS)Nza(\w)zb\1r'r(za(.)uaሴubሴz..c��dS)Nrzr�r�s rr�z'ReTests.test_bug_6509.<locals>.<lambda>s��5�r�a5rzsa(\w)sb\1sacsbcsa(.)sa�sb�s..c��dS)N�bytesr�r�s rr�z'ReTests.test_bug_6509.<locals>.<lambda>	s��8�rsa5r�)r:r<r5rFr�s  r�
test_bug_6509zReTests.test_bug_6509�sD���j��"�"����������.�.��5�5�5��j�� � ����������3�3�Y�?�?�?��j�������������$�7�7��?�?�?��j��#�#���������%�0�0�%�8�8�8��j��!�!���������(�3�3�X�>�>�>��j�����������!3�!3�U�;�;�X�F�F�F�F�Frc	��ddl}ddz}|�ttjdi��|�t
��5|�dd|gdid��ddd��n#1swxYwY|�t��5|�idgdgg��ddd��dS#1swxYwYdS)Nrrmr�rsror�)r�r9rAr:rM�
OverflowErrorr<)rr��
long_overflows   r�test_dealloczReTests.test_deallocsM������
�3��
����)�R�[�#�r�:�:�:�
�
�
�}�
-�
-�	?�	?��L�L���M�?�A�r�2�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�
�
�
�y�
)�
)�	/�	/��L�L��Q��A�r�2�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s$�A3�3A7�:A7�C�C�Cc��|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����dS)Nz123.*-z123abc-u123é-u123€-u123􏿿-u
123é€􏿿-)rur:rdrhs r�test_search_dot_unicodezReTests.test_search_dot_unicodes�������	�(�I�6�6�7�7�7�����	�(�J�7�7�8�8�8�����	�(�L�9�9�:�:�:�����	�(�,<�=�=�>�>�>�����	�(�,F�G�G�H�H�H�H�Hrc�N�tjd��}|�|tj��tj|��}|�|tj��|�||��|�ttjd��dS)N�random patternr)r:r<�assertIsInstance�Patternr-r9rA)rr8�same_patterns   r�test_compilezReTests.test_compile s����*�-�.�.�����g�r�z�2�2�2��z�'�*�*�����l�B�J�7�7�7��
�
�l�G�,�,�,����)�R�Z��3�3�3�3�3rr])�size�memusec��d|z}tjd|��}|�|��|�|���|��|�|���|��dS)Nrsr�)r:rd�assertIsNotNoner5rKrL)rr�rVr�s    r�test_large_searchzReTests.test_large_search*st��
�$�J���I�c�1�������Q������������D�)�)�)���������$�'�'�'�'�'r�c��d|z}tjdd|��\}}|�||��|�||dz��dS)Nrsr�r])r:r�r5)rr�rVrL�ns     r�test_large_subnzReTests.test_large_subn5sZ��
�$�J���w�r�2�q�!�!���1�����A��������D�1�H�%�%�%�%�%rc���|�tjdd��dg��|�tjdd�����d��dS)Nz	(?i)(a)\1uaa Ārsz
(?s).{1,3}uĀĀrl)r5r:rUrgrerhs r�test_bug_16688zReTests.test_bug_16688=s\��	
�����L�+�>�>���F�F�F������-��@�@�E�E�G�G��P�P�P�P�Prc�>�ddz}|�tjd|�����d��|�tjd|�����d��|�tjd|�����d��|�tjd|�����d��|�tjd	|�����d��|�tjd
|�����d��|�t
tjddd
zz��|�t
tjddd
zz��|�t
tjddd
zz��|�t
tjdddzdd
zfz��dS)Nr1順z.{65535})rrz	.{,65535}z
.{65535,}?z.{65536})rr�z	.{,65536}z
.{65536,}?�.{%d}rmr��.{,%d}�.{%d,}?z.{%d,%d}�)r5r:rgrer9r�r<)rrGs  r�test_repeat_minmax_overflowz#ReTests.test_repeat_minmax_overflowCs����v��������+�v�6�6�;�;�=�=�z�J�J�J������,��7�7�<�<�>�>�
�K�K�K������-��8�8�=�=�?�?��L�L�L������+�v�6�6�;�;�=�=�z�J�J�J������,��7�7�<�<�>�>�
�K�K�K������-��8�8�=�=�?�?��L�L�L����-���X��3��5F�G�G�G����-���Y��C��5G�H�H�H����-���Z�!�S�&�5H�I�I�I����-���[�A�s�F�A�s�F�CS�5S�T�T�T�T�Trc��	ddlm}n%#t$r|�d��YnwxYwddz}|�tjd|dz
z|����|�tjd|dz
z|�����d	��|�tjd
|dz
z|����|�	tt
jd|z��|�	tt
jd|z��|�	tt
jd
|z��dS)Nr)�	MAXREPEATz requires _sre.MAXREPEAT constantr1rrr]r)rrr)r�r	�ImportError�skipTestrfr:rgr5rer9r�r<)rr	rGs   r�%test_repeat_minmax_overflow_maxrepeatz-ReTests.test_repeat_minmax_overflow_maxrepeatRsL��	>�&�&�&�&�&�&�&���	>�	>�	>��M�M�<�=�=�=�=�=�	>�����v������"�(�8�y�1�}�#=�v�F�F�G�G�G������)�y�1�}�"=�v�F�F�K�K�M�M�$�	&�	&�	&����"�(�:��Q��#?��H�H�I�I�I����-���X�	�5I�J�J�J����-���Y��5J�K�K�K����-���Z�)�5K�L�L�L�L�Ls�	�+�+c�4�|�ddd��dS)Nz
(?P=<foo>)z#bad character in group name '<foo>'r�rHrhs r�$test_backref_group_name_in_exceptionz,ReTests.test_backref_group_name_in_exceptionas0�����|�D�a�	I�	I�	I�	I�	Irc�4�|�ddd��dS)Nz
(?P<?foo>)z"bad character in group name '?foo'r�rHrhs r�test_group_name_in_exceptionz$ReTests.test_group_name_in_exceptionfs0�����|�C�Q�	H�	H�	H�	H�	Hrc�|�dD]�}dD]�}d|z|zdz}|�tj|tj���d��dg|���|���}|�tj|tj���d��dg|�������dS)N)r\r]r^z{1}r_r��yzr)r3r�)r5r:r<rrUr�)rr`rar8s    r�test_issue17998zReTests.test_issue17998ks���(�	8�	8�D��
8�
8����*�s�*�T�1��� � ���G�R�T�!:�!:�!B�!B�5�!I�!I�"'��g�!�7�7�7�!�.�.�*�*��� � ���G�R�T�!:�!:�!B�!B�6�!J�!J�"(��w�!�8�8�8�8�
8�	8�	8rc��dtd��fD]g}tjd|��}dt|��j�dt|��j�d�}|�t|��|���hdtd��td��td��fD]g}tjd|��}dt|��j�dt|��j�d�}|�t|��|���httjd	d
����\}}dt|��j�dt|��j�d�}|�t|��|��dt|��j�dt|��j�d�}|�t|��|��dS)
Nz
[abracadabra]z(.+)(.*?)\1z<(z\.)?z- object; span=\(1, 12\), match='abracadabra'>s
[abracadabra]s(.+)(.*?)\1z. object; span=\(1, 12\), match=b'abracadabra'>z	(aa)|(bb)zaa bbz# object; span=\(0, 2\), match='aa'>z# object; span=\(3, 5\), match='bb'>)
rr:rdr.rr�assertRegex�reprr#rLr�r+rM)rrGr�r8rkrls      r�test_match_reprzReTests.test_match_reprus���%�q��'9�'9�9�	/�	/�F��	�.�&�1�1�A�A��Q���"�"�"�D��G�G�$8�$8�$8��G�
���T�!�W�W�g�.�.�.�.�'��+;�)<�)<� �!1�2�2�!�"2�3�3�5�	/�	/�F��	�/�6�2�2�A�A��Q���"�"�"�D��G�G�$8�$8�$8��G�
���T�!�W�W�g�.�.�.�.��R�[��g�>�>�?�?�
��v�v���L�L�#�#�#�T�&�\�\�%>�%>�%>�
��	
����e���g�.�.�.�.���L�L�#�#�#�T�&�\�\�%>�%>�%>�
��	
����f���w�/�/�/�/�/rc���|�tjdd��gd���|�tjdd��gd���|�tjdd��gd���|�tjdd��gd	���|�tjdd
d��d��|�tjdd
d��d��|�tjd
dd��d��|�tjdd��gd���|�tjdd��gd���|�d�tjdd��D��gd���|�d�tjdd��D��gd���dS)Nrza::bc)r�rsrr(r�z\b|:+)r�rsr�r�r(r�z(?<!\w)(?=\w)|:+)r�rsr�r(z(?<=\w)(?!\w)|:+)rsr�r(r�r�z	-a-::-bc-z-a---bc-z(\b|:+)z[\1]z[]a[][::][]bc[])r�r�rr�r�z\b|\w+c�6�g|]}|�����Sr��re�r�r�s  rr�z*ReTests.test_zerowidth.<locals>.<listcomp>�s ��K�K�K�q�!�&�&�(�(�K�K�Kr)r[�r]r]r\�r^r^�r�r�c�6�g|]}|�����Sr�rrs  rr�z*ReTests.test_zerowidth.<locals>.<listcomp>�s ��L�L�L�q�!�&�&�(�(�L�L�Lr)r[rtrr)r^r�r)r5r:rrFrUrMrhs r�test_zerowidthzReTests.test_zerowidth�s��������%��1�1�3L�3L�3L�M�M�M������(�G�4�4�6Q�6Q�6Q�R�R�R������"5�w�?�?�AT�AT�AT�U�U�U������"5�w�?�?�AT�AT�AT�U�U�U�������s�G�4�4�k�B�B�B�������#�w�7�7��D�D�D������
�G�W�=�=�?P�Q�Q�Q������H�g�6�6�8N�8N�8N�O�O�O������I�w�7�7�4�4�4�	6�	6�	6�	
���K�K�B�K��'�,J�,J�K�K�K�A�A�A�	C�	C�	C����L�L�B�K�	�7�,K�,K�L�L�L�I�I�I�	K�	K�	K�	K�	Krc�n�dD]�}dD]�}tjd|�d|����}|�d��}|�|�d��d��|�|�d��d	��|�|�d
��d������dS)N)�{0,}r\r]z{1,187})r"r\r^z^((x|y)r��xyyzyr�xyyr]r�rmr2)r:r<rgr5ry)rrfrirLr�s     r�
test_bug_2537zReTests.test_bug_2537�s���5�	2�	2�H�.�
2�
2���J�J����8�8�D�E�E���G�G�G�$�$��� � �������U�3�3�3�� � �������R�0�0�0�� � �������S�1�1�1�1�
2�	2�	2rc��tjd��}|�|�ddd������d��|�|�ddd������d��|�|�ddd������d��|�|�ddd���d	g��|�|�dd
���gd���|�|�	ddd���������d��dS)
Nz(ab)�abracadabrar�r�)rGr?rJ)r�r�r�r^rkr])rGr)r�rk�	racadabra)
r:r<r5rgrerKrdrUrrpr�s  r�test_keyword_parameterszReTests.test_keyword_parameters�s����j��!�!������I�I�]��"�I�=�=�B�B�D�D�f�	N�	N�	N�����M�M��A�a�M�@�@�E�E�G�G��	Q�	Q�	Q�����J�J�m��2�J�>�>�C�C�E�E�v�	O�	O�	O�����K�K�}�!�B�K�?�?�$��	I�	I�	I�����I�I�]�Q�I�7�7�#�#�#�	%�	%�	%�	
����K�K�}�!�B�K�?�?�F�F�H�H�M�M�O�O��	�	�	�	�	rc��|�tjddtj�����d��dS)Nz[a-c]+r�rb)r5r:rKr�rerhs r�test_bug_20998zReTests.test_bug_20998�s<��	
�����h��r�t�<�<�A�A�C�C�V�L�L�L�L�Lrz-musl libc issue on Emscripten/WASI, bpo-46390c�(�tjtj��}|�tjtj|��dD]O}	tjtj|���##tj$r|�d|z��Y�LwxYwt
j��|���|�	��t
j��|�	��|���dS)N��en_US.iso88591�
en_US.utf8�test needs %s locale)
r��	setlocale�LC_CTYPE�
addCleanup�Errorrr:r��check_en_US_iso88591�check_en_US_utf8)r�	oldlocale�locs   r�test_locale_cachingzReTests.test_locale_caching�s����$�V�_�5�5�	�����(�&�/�9�E�E�E�1�	<�	<�C�
<�� ���#�6�6�6�6���<�
<�
<�
<��
�
�4�s�:�;�;�;�;�;�
<����	��
�
�
��!�!�#�#�#�������
��
�
�
��������!�!�#�#�#�#�#��A/�/'B�Bc��tjtjd��|�t	jddtjtjz����|�t	jddtjtjz����|�t	jddtjtjz����|�t	jdd����|�t	jdd����|�t	jdd����dS)Nr.��������(?Li)���(?Li)��(?Li)�)r�r1r2rur:rgrr�rhs rr5zReTests.check_en_US_iso88591�s�������*:�;�;�;�������k�2�4���9�E�E�F�F�F�������'�2�4���9�=�=�>�>�>�������'�2�4���9�=�=�>�>�>������!1�;�?�?�@�@�@�������w�7�7�8�8�8�������w�7�7�8�8�8�8�8rc��tjtjd��|�t	jddtjtjz����|�t	jddtjtjz����|�t	jddtjtjz����|�t	jdd����|�t	jdd����|�t	jdd����dS)Nr/r<r=r>r?r@rA)	r�r1r2rur:rgrr�rfrhs rr6zReTests.check_en_US_utf8�s�������,�7�7�7�������k�2�4���9�E�E�F�F�F����"�(�7�G�R�T�"�$�Y�?�?�@�@�@����"�(�7�G�R�T�"�$�Y�?�?�@�@�@������!1�;�?�?�@�@�@����"�(�<��9�9�:�:�:����"�(�<��9�9�:�:�:�:�:rc��tjtj��}|�tjtj|��dD]O}	tjtj|���##tj$r|�d|z��Y�LwxYwtjtjd��t
jdtjtj	z��}t
jdtjtj	z��}t
jdtjtj	z��}t
jdtjtj	z��}|||fD]z}|�
|�d����|�
|�d����|�
|�d	�����{|�|�d
����|�|�d����|�|�d	����tjtjd��|||fD]z}|�
|�d����|�|�d����|�|�d	�����{|�
|�d
����|�|�d����|�|�d	����dS)Nr-r0r.r<s[a�][a�]s
[az�][az�]s[^�][^�]s��s��s��r/)
r�r1r2r3r4rr:r<rr�rurgrf)rr7r8�p1�p2�p3�p4rVs        r�test_locale_compiledzReTests.test_locale_compiled�s���
�$�V�_�5�5�	�����(�&�/�9�E�E�E�1�	<�	<�C�
<�� ���#�6�6�6�6���<�
<�
<�
<��
�
�4�s�:�;�;�;�;�;�
<����	����*:�;�;�;�
�Z��R�T�"�$�Y�
/�
/��
�Z�)�2�4���9�
5�
5��
�Z�+�R�T�"�$�Y�
7�
7��
�Z�)�2�4���9�
5�
5���R���	2�	2�A��O�O�A�G�G�K�0�0�1�1�1��O�O�A�G�G�K�0�0�1�1�1��O�O�A�G�G�K�0�0�1�1�1�1����"�(�(�;�/�/�0�0�0����"�(�(�;�/�/�0�0�0����"�(�(�;�/�/�0�0�0�����,�7�7�7��R���	4�	4�A��O�O�A�G�G�K�0�0�1�1�1����a�g�g�k�2�2�3�3�3����a�g�g�k�2�2�3�3�3�3��������-�-�.�.�.����"�(�(�;�/�/�0�0�0����"�(�(�;�/�/�0�0�0�0�0r:c��|�tj��5}tjd��ddd��n#1swxYwY|j}|�|jt��|�|jd��|�|j	d��|�|j
d��|�|jd��|�|j
t|����|�dt|����|�d|j
��|�tj��5}tjd��ddd��n#1swxYwY|j}|�|jt��|�|jd��|�|j	d��|�tj��5}tjdtj��ddd��n#1swxYwY|j}|�|j	d��|�|j
d	��|�|jd
��|�|j
t|����|�dt|����|�dt|����dS)
Nu(€))r^r]r�z at position 3s(�))zq
                (
                    abc
                )
                )
                (
                �Mr��z at position 77z(line 5, column 17))r9r:r;r<r>r�r8rzr5r?�lineno�colno�assertInr3�assertNotInr�r)rrArBs   r�
test_errorzReTests.test_errorsA��
�
�
�r�x�
(�
(�	$�B��J�{�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$��l�����c�k�3�/�/�/������k�2�2�2������!�$�$�$������Q�'�'�'������A�&�&�&��
�
�c�g�s�3�x�x�(�(�(��
�
�&��C���1�1�1����)�3�7�3�3�3�
�
�
�r�x�
(�
(�	#�B��J�z�"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#��l�����c�k�5�1�1�1������j�1�1�1������!�$�$�$�
�
�
�r�x�
(�
(�	!�B��J���Z�

!�
!�
!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!��l�������"�%�%�%������Q�'�'�'������B�'�'�'��
�
�c�g�s�3�x�x�(�(�(��
�
�'��S���2�2�2��
�
�+�S��X�X�6�6�6�6�6s5�A�A�A�$F�F	�F	� H8�8H<�?H<c��|�ddd��|�ddd��|�ddd��|�dd	d
��|�ddd
��|�ddd
��|�ddd
��|�ddd��|�dd	d
��|�ddd
��|�dd	d��dS)NrrYrz((a|b)z(a|b))zunbalanced parenthesisr�z(?Pzunexpected end of patternr^z(?z)zunknown extension ?zr]z(?iz)r�r�r�z(?#abczmissing ), unterminated commentz(?<z(?<>)zunknown extension ?<>z(?rmrHrhs r�test_misc_errorszReTests.test_misc_errors4s�����t�%I�1�M�M�M����y�*N�PQ�R�R�R����y�*B�A�F�F�F����v�'B�A�F�F�F����w�(>��B�B�B����x���;�;�;����v�':�A�>�>�>����y�*K�Q�O�O�O����v�'B�A�F�F�F����x�)@�!�D�D�D����u�&A�1�E�E�E�E�Erc��|�dttj����|�dttj����dS)Nr�r�)rNrzr:r�rrhs r�	test_enumzReTests.test_enumAsB��	
�
�
�g�s�2�4�y�y�)�)�)��
�
�h��B�D�	�	�*�*�*�*�*rc��tjdtj��}|�||��|�||k��tj��tjdtj��}|�t
|��t
|����|�||��tj��tjdtj��}|�||��tj��tjd��}|�||��|�t��5||kddd��dS#1swxYwYdS)Nro�XYZ)
r:r<rr5r�r��hash�assertNotEqualr9rA)r�pattern1�pattern2�pattern3�pattern4s     r�test_pattern_comparezReTests.test_pattern_compareGs����:�e�R�]�3�3��	
����8�,�,�,�����X�-�.�.�.�	��
�
�
��:�e�R�]�3�3������h����h���8�8�8�����8�,�,�,�	��
�
�
��:�e�R�]�3�3��	
���H�h�/�/�/�	��
�
�
��:�e�$�$�����H�h�/�/�/��
�
�y�
)�
)�	 �	 ��x���	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 s�&E:�:E>�E>c��tjd��}tj��tjd��}|�t	|��t	|����|�||��tj��tjd��}tj��5tjdt��|�	||��ddd��dS#1swxYwYdS)Nr�ror;)
r:r<r�r5rWr�r�r�r�rX)rrYrZr[s    r�test_pattern_compare_bytesz"ReTests.test_pattern_compare_bytesds���:�f�%�%��	��
�
�
��:�f�%�%������h����h���8�8�8�����8�,�,�,�	��
�
�
��:�e�$�$��
�
$�
&�
&�	4�	4��!�'�<�8�8�8�����(�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s�<1C:�:C>�C>c���td��}tjd|��}tjd|��}|�|���d��|�|���d��d|dd�<|�|���d��|�|���d��dS)Nsabcdefghs[a-h]+s[e-h]+sefghr�r)rLr:rdr5ry)rrVr��m2s    r�test_bug_29444zReTests.test_bug_29444us����k�"�"���I�i��#�#��
�Y�y�!�
$�
$����������K�0�0�0���������W�-�-�-���!�!�!����������F�+�+�+���������S�)�)�)�)�)rc��d}d}|�tj||�����d��d}d}|�tj||��ddg��|�d�tj||��D��dd	g��d
}d}|�tj||��dd
g��|�d�tj||��D��ddd�ddd�g��d}|�d�tj||��D��ddd�ddd�g��d}|�d�tj||��D��ddd�ddd�ddd�g��dS)Nza	xz\b(?=(\t)|(x))x)Nr1rkz(?=(.)(.)?)rP)rPr�c�6�g|]}|�����Sr�)r.rs  rr�z*ReTests.test_bug_34294.<locals>.<listcomp>�s ��@�@�@��!�(�(�*�*�@�@�@rr�z1(?=<(?P<tag>\w+)/?>(?:(?P<text>.+?)</(?P=tag)>)?)z<test><foo2/></test>)r��<foo2/>)�foo2r�c�6�g|]}|�����Sr��rmrs  rr�z*ReTests.test_bug_34294.<locals>.<listcomp>�� ��C�C�C�A�!�+�+�-�-�C�C�Crr�re)�tagr�rfz<test>Hello</test><foo/>c�6�g|]}|�����Sr�rhrs  rr�z*ReTests.test_bug_34294.<locals>.<listcomp>�rir�Hellor{z<test>Hello</test><foo/><foo/>c�6�g|]}|�����Sr�rhrs  rr�z*ReTests.test_bug_34294.<locals>.<listcomp>�rir)r5r:rdr.rUrMr�s   r�test_bug_34294zReTests.test_bug_34294s���
���������1�a���/�/�1�1�;�?�?�?�
���������A�q�)�)�$�i�0�	2�	2�	2����@�@�b�k�!�Q�.?�.?�@�@�@�$�k�2�	4�	4�	4�
A��"�������A�q�)�)�-�|�<�	>�	>�	>����C�C���Q��1B�1B�C�C�C�"(�)�<�<�"(�$�7�7�9�	:�	:�	:�
'�����C�C���Q��1B�1B�C�C�C�"(�'�:�:�"'��6�6�8�	9�	9�	9�
-�����C�C���Q��1B�1B�C�C�C�"(�'�:�:�"'��6�6�"'��6�6�8�	9�	9�	9�	9�	9rc���|�tjdd�����d��|�tjdd�����d��|�tjdd�����d��|�tjdd�����d��dS)Nz	(ab|a)*?brkr%z	(ab|a)+?bz
(ab|a){0,2}?bz	(.b|a)*?br�rhs r�test_MARK_PUSH_macro_bugz ReTests.test_MARK_PUSH_macro_bug�s���	
�����,��5�5�<�<�>�>��G�G�G������,��5�5�<�<�>�>��G�G�G������"2�D�9�9�@�@�B�B�F�K�K�K������,��5�5�<�<�>�>��G�G�G�G�Grc��d}d}|�tj||�����d��d}d}tj||��}|�|���d��|�|�d��d��|�|���d	��dS)
N�axxzbczz(?:(?:a|bc)*?(xx)??z)*�r��xtcxyzxcz((x|yz)+?(t)??c)*)rr�rm)�r�)�xyzxcr1�t�r5r:rgr.re�rrVrVr�s    r�test_MIN_UNTIL_mark_bugzReTests.test_MIN_UNTIL_mark_bug�s���
��%�������!�Q���.�.�0�0�'�:�:�:�
�� ���H�Q��N�N����������6�*�*�*����������F�+�+�+���������%8�9�9�9�9�9rc���d}d}tj||��}|�|���d��|�|�d��d��|�|���d��d}d}tj||��}|�|���d	��|�|�d��d
��|�|���d��|�tjdd�����d
��dS)N�aabaabz(?:[^b]*a(?=(b)|(a))ab)*)rrurm)r�r�rO�ababz(?:[^b]*(?=(b)|(a))ab)*rG)rmr^z(ab?)*?brkr%�r:rgr5rer.rys    r�test_REPEAT_ONE_mark_bugz ReTests.test_REPEAT_ONE_mark_bug�s$��
��'���H�Q��N�N����������6�*�*�*����������F�+�+�+���������[�1�1�1�
��&���H�Q��N�N����������6�*�*�*����������F�+�+�+���������[�1�1�1������+�t�4�4�;�;�=�=�v�F�F�F�F�Frc��d}d}tj||��}|�|���d��|�|�d��d��|�|���d��d}d}|�tj||�����d	��dS)
Nr}z(?:.*?(?=(a)|(b))b)*rGrm�r^r�)NrP�axxzazz(?:a*?(xx)??z)*rsr~rys    r�test_MIN_REPEAT_ONE_mark_bugz$ReTests.test_MIN_REPEAT_ONE_mark_bug�s���
��#���H�Q��N�N����������6�*�*�*����������F�+�+�+���������[�1�1�1����������!�Q���.�.�0�0�'�:�:�:�:�:rc���|�tjdd�����d��tjdd��}|�|���d��|�|�d��d��|�|�d	��d��|�|���d
��dS)Nz	(?!(..)c)rkrz((?!(ab)c)(.))*r}rGr]r�r^)rPNrPrx)rr�s  r�test_ASSERT_NOT_mark_bugz ReTests.test_ASSERT_NOT_mark_bug�s���	
�����,��5�5�<�<�>�>��H�H�H�
�H�'��0�0����������6�*�*�*����������F�+�+�+����������F�+�+�+���������%5�6�6�6�6�6rc�2�|�td��5tjdd��ddd��n#1swxYwY|�td��5tjdt��ddd��dS#1swxYwYdS)Nz	got 'int'rYr�z
got 'type')r�rAr:rdr.rhs r�test_bug_40736zReTests.test_bug_40736�s��
�
#�
#�I�{�
;�
;�	�	��I�d�A����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
#�
#�I�|�
<�
<�	"�	"��I�d�D�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�	"�	"s!�>�A�A�$B�B�Bc	�N�ddz}tj��}dD]�}|�tj||����|�tj||��|g��|�tj||��g��|�ttj	||����g��|�tj
|d|��|����tj��|z
}|�|d��dS)Nr1i���)z\Ayz^yr�g�������?)�time�perf_counterrfr:rdr5rrUr+rMrF�
assertLess)rrVrKrVrws     r�test_search_anchor_at_beginningz'ReTests.test_search_anchor_at_beginning�s
����I���!�#�#���	2�	2�A����b�i��1�o�o�.�.�.����R�X�a��^�^�a�S�1�1�1����R�Z��1�-�-�r�2�2�2����T�"�+�a��"3�"3�4�4�b�9�9�9����R�V�A�r�1�-�-�q�1�1�1�1�����%�'��	
����3�����rc�F
�|�tjdd����|�tjdd���d��d��|�tjdd���d��d��|�tjdd���d��d��|�tjd	d
����|�tjdd�����d
��|�tjdd�����d
��|�tjdd�����d��|�tjdd�����d��|�tjdd�����d��|�tjdd�����d��|�tjdd�����d��|�tjdd�����d��|�tjdd����|�tjdd����|�tjdd����|�tjd d���d!��d"��|�tjd#d���d!��d"��|�tjd$d���d!��d"��|�tjd%d����|�tjd&d����|�tjd'd����|�tjd(d����|�tjd)d����|�tjd*d����|�tjd*d+����d,S)-aTest Possessive Quantifiers
        Test quantifiers of the form @+ for some repetition operator @,
        e.g. x{3,5}+ meaning match from 3 to 5 greadily and proceed
        without creating a stack frame for rolling the stack back and
        trying 1 or more fewer matches.ze*+e�eeeeze++a�eeearze?+a�eaze{2,4}+az(.)++.�eez(ae)*+a�aea)�aez
([ae][ae])?+az(e?){2,4}+a)r�z()*+arszx*+rZr[zx++r\�a*+r`rarb�a++z
^(\w){1}+$roz^(\w){1,2}+$z
^(\w){3}+$r]ruz^(\w){1,3}+$z^(\w){1,4}+$z^x{1}+$z	^x{1,2}+$z^x{3}+$z	^x{1,3}+$z	^x{1,4}+$z^x{}+$rtN)	rfr:rgr5ryr.rdrerurhs r�test_possessive_quantifiersz#ReTests.test_possessive_quantifiers�s ��	
���"�(�6�6�2�2�3�3�3������&�&�1�1�7�7��:�:�F�C�C�C������&�$�/�/�5�5�a�8�8�$�?�?�?������*�f�5�5�;�;�A�>�>��G�G�G����"�(�8�T�2�2�3�3�3������)�U�3�3�:�:�<�<�g�F�F�F������/�5�9�9�@�@�B�B� �	"�	"�	"������-��8�8�?�?�A�A��	 �	 �	 ������'�3�/�/�6�6�8�8�%�@�@�@������5�%�0�0�5�5�7�7��@�@�@������5�%�0�0�5�5�7�7��@�@�@������%��/�/�4�4�6�6��?�?�?������%��0�0�5�5�7�7��@�@�@����"�(�5�%�0�0�1�1�1����"�(�=�%�8�8�9�9�9����"�(�?�E�:�:�;�;�;������-��7�7�=�=�a�@�@�#�F�F�F������/�5�9�9�?�?��B�B�C�H�H�H������/�5�9�9�?�?��B�B�C�H�H�H����"�(�9�e�4�4�5�5�5����"�(�;��6�6�7�7�7�������E�2�2�3�3�3�������e�4�4�5�5�5�������e�4�4�5�5�5����"�(�8�U�3�3�4�4�4�������5�1�1�2�2�2�2�2rc��|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjd	d����|�tjd
d����|�tjdd����|�tjdd����|�tjd
d����|�tjdd����|�tjdd����|�tjdd����|�tjd
d����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����dS)Nr�rsr��a?+�a{1,3}+rkza++bza*+bza?+bza{1,3}+b�(?:ab)++�(?:ab)*+�(?:ab)?+�(?:ab){1,3}+roz	(?:ab)++cz	(?:ab)*+cz	(?:ab)?+cz
(?:ab){1,3}+c�rur:rKrfrhs r�%test_fullmatch_possessive_quantifiersz-ReTests.test_fullmatch_possessive_quantifiers!	s��������V�S�1�1�2�2�2������V�S�1�1�2�2�2������V�S�1�1�2�2�2������Z��5�5�6�6�6����"�,�v�t�4�4�5�5�5����"�,�v�t�4�4�5�5�5����"�,�v�t�4�4�5�5�5����"�,�z�4�8�8�9�9�9������W�d�3�3�4�4�4������W�d�3�3�4�4�4������W�d�3�3�4�4�4������[�$�7�7�8�8�8������[�$�7�7�8�8�8������[�$�7�7�8�8�8������[�$�7�7�8�8�8������_�d�;�;�<�<�<����"�,�{�E�:�:�;�;�;����"�,�{�E�:�:�;�;�;����"�,�{�E�:�:�;�;�;����"�,���>�>�?�?�?������\�5�9�9�:�:�:������\�5�9�9�:�:�:������\�5�9�9�:�:�:������%5�u�=�=�>�>�>�>�>rc��|�tjdd��dg��|�tjdd��gd���|�tjdd��gd���|�tjdd��dg��|�tjd	d
��dg��|�tjdd
��gd
���|�tjdd
��gd���|�tjdd
��dg��dS)Nr��aabrer��rer�r�r��rsrsr�r�r�r��ababcr}r��r}r�r�r��rkrkr�r�r�r!rhs r�#test_findall_possessive_quantifiersz+ReTests.test_findall_possessive_quantifiers<	s9�������F�E�2�2�T�F�;�;�;������F�E�2�2�N�N�N�C�C�C������F�E�2�2�4F�4F�4F�G�G�G������J��6�6���?�?�?������K��9�9�F�8�D�D�D������K��9�9�;K�;K�;K�L�L�L������K��9�9�;O�;O�;O�P�P�P������O�W�=�=��x�H�H�H�H�Hrc�^�tjd��}|�|�d����|�|�d����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjd	d����d
S)z�Test Atomic Grouping
        Test non-capturing groups of the form (?>...), which does
        not maintain any stack point created within the group once the
        group is finished being evaluated.z
a(?>bc|b)cro�abccz(?>.*).z(?>x)++r`z(?>x++)z(?>x)++xz(?>x++)xN)r:r<rfrgru)rrYs  r�test_atomic_groupingzReTests.test_atomic_groupingG	s���
�:�m�,�,�����(�.�.��/�/�0�0�0�������v�.�.�/�/�/����"�(�:�u�5�5�6�6�6�������U�3�3�4�4�4�������U�3�3�4�4�4����"�(�;��6�6�7�7�7����"�(�;��6�6�7�7�7�7�7rc��|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjd	d����|�tjd
d����|�tjdd����|�tjdd����|�tjd
d����|�tjdd����|�tjdd����|�tjdd����|�tjd
d����|�tjdd����|�tjdd����|�tjdd����|�tjdd����|�tjdd����dS)N�(?>a+)rs�(?>a*)�(?>a?)�
(?>a{1,3})rkz(?>a+)bz(?>a*)bz(?>a?)bz(?>a{1,3})b�(?>(?:ab)+)�(?>(?:ab)*)�(?>(?:ab)?)�(?>(?:ab){1,3})roz(?>(?:ab)+)cz(?>(?:ab)*)cz(?>(?:ab)?)cz(?>(?:ab){1,3})cr�rhs r�test_fullmatch_atomic_groupingz&ReTests.test_fullmatch_atomic_groupingU	s��������Y��4�4�5�5�5������Y��4�4�5�5�5������Y��4�4�5�5�5������]�C�8�8�9�9�9����"�,�y�$�7�7�8�8�8����"�,�y�$�7�7�8�8�8����"�,�y�$�7�7�8�8�8����"�,�}�d�;�;�<�<�<������Z��6�6�7�7�7������Z��6�6�7�7�7������Z��6�6�7�7�7������^�T�:�:�;�;�;������^�T�:�:�;�;�;������^�T�:�:�;�;�;������^�T�:�:�;�;�;������%7��>�>�?�?�?����"�,�~�u�=�=�>�>�>����"�,�~�u�=�=�>�>�>����"�,�~�u�=�=�>�>�>����"�,�'9�5�A�A�B�B�B������_�e�<�<�=�=�=������_�e�<�<�=�=�=������_�e�<�<�=�=�=������%8�%�@�@�A�A�A�A�Arc��|�tjdd��dg��|�tjdd��gd���|�tjdd��gd���|�tjdd��dg��|�tjd	d
��dg��|�tjdd
��gd
���|�tjdd
��gd���|�tjdd
��dg��dS)Nr�r�rer�r�r�r�r�r�r�r}r�r�r�r�r�r!rhs r�test_findall_atomic_groupingz$ReTests.test_findall_atomic_groupingp	s:�������I�u�5�5��v�>�>�>������I�u�5�5�~�~�~�F�F�F������I�u�5�5�7I�7I�7I�J�J�J������M�5�9�9�D�6�B�B�B������N�G�<�<�v�h�G�G�G������N�G�<�<�>N�>N�>N�O�O�O������N�G�<�<�>R�>R�>R�S�S�S������$6��@�@�6�(�K�K�K�K�Krc��|�tjdd����|�tjdd����dS)Nz(?s:(?>.*?\.).*)\Zza.txtz!(?s:(?=(?P<g0>.*?\.))(?P=g0).*)\Z)rur:rKrhs r�test_bug_gh91616zReTests.test_bug_gh91616{	sF�������%:�G�D�D�E�E�E������%I�7�S�S�T�T�T�T�Trc��|�t��5}tjd��}ddd��n#1swxYwY|�dt|j����|�dt|j����|�dt|j����|�dt|j����|�t��5}tjdtj	tj
z���}ddd��n#1swxYwY|�dt|j����|�dt|j����|�dt|j����|�dt|j����|�||��|�|�
d����|�|�
d	����dS)
Nrsz
re.template()z
is deprecated�functionr)ryzre.TEMPLATE�ahoy�nope)r�r�r:�templaterNrz�warningrOr<�TEMPLATErr5rurgr�)rrA�template_re1�template_re2s    r�-test_template_function_and_flag_is_deprecatedz5ReTests.test_template_function_and_flag_is_deprecated	sT��
�
�
�0�
1�
1�	-�R��;�t�,�,�L�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-��
�
�o�s�2�:���7�7�7��
�
�o�s�2�:���7�7�7��
�
�j�#�b�j�/�/�2�2�2������R�Z���1�1�1�
�
�
�0�
1�
1�	J�R�
�:�d�"�+�b�j�2H�I�I�I�L�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�	
�
�
�m�S���_�_�5�5�5��
�
�o�s�2�:���7�7�7��
�
�f�c�"�*�o�o�.�.�.�����S���_�_�5�5�5�	
����|�4�4�4�����*�*�6�2�2�3�3�3�����+�+�F�3�3�4�4�4�4�4s!�<�A�A�.D;�;D?�D?ztest requires multiprocessingc��tjd��}d}tj|jd|f���}|���|�t��	|�|�	��d��|�	��r*|�
��|���dSdS#|�	��r)|�
��|���wwxYw)Nz�(?<=[({}])(((//[^\n]*)?[\n])([\000-\040])*)*((/[^/\[\n]*(([^\n]|(\[\n]*(]*)*\]))[^/\[]*)*/))((((//[^\n]*)?[\n])([\000-\040]|(/\*[^*]*\*+([^/*]\*+)*/))*)+(?=[^\000-\040);\]}]))zja(function() {
            ///////////////////////////////////////////////////////////////////
        });r�)�target�argszpattern.sub() timed out)r:r<�multiprocessing�ProcessrFrKr�rr��is_alive�	terminate)rr8�input_jsrVs    r�test_regression_gh94675zReTests.test_regression_gh94675�	s����*�H�I�I��
��
�#�7�;�b�(�^�L�L�L��	���	�	�	�	���}����	����Q�Z�Z�\�\�+D�E�E�E��z�z�|�|�
����
�
�
���������
�
��q�z�z�|�|�
����
�
�
��������
���s�#(C�?D
r)�rrrr6rCrHrRrWrirvr}r�r�r�r�r�r�r�r�r�r�r�r�rrrrr"r/r=rCrMrWrZr_rcrgrnrrrvr~r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r:rKr�rGr��digitsr�r�r�r�r�rrrrr0r;rDrFrIrMrQrUrWrYrbrjrlrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr�r�rrrrrrrr r%r)r+�unittest�skipIfr	r
r9r5r6rHrPrRrTr]r_rbrnrprzrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr&r&%s
������ � � � �/�/�/�/�/�/�/�/�	�	�	�E�E�E�
1�
1�
1�H�H�H�""�"�"�)@�)@�)@�V%�%�%�
	'�	'�	'�A�A�A�,�,�,�. �. �. �`F�F�F�
(�(�(�@�@�@�+H�+H�+H�Z	H�	H�	H�01�01�01�dK�K�K�3J�3J�3J�j	6�	6�	6�9�9�9�4;�;�;�N�N�N�BB�B�B�**-�*-�*-�XR�R�R�<@�@�@�<&?�&?�&?�P3�3�3�
M�M�M�O�O�O�?�?�?�
���"H�"H�"H�H3�3�3�,N�N�N�@F�F�F�&&N�&N�&N�P9�9�9�4B�B�B�)�)�)�#�#�#�B�B�B�8K�K�K�4&=�&=�&=�P$A�$A�$A�L-F�-F�-F�^?�?�?��6�6��\�6�4H�H�H�+8�+8�+8�ZA�A�A�04�$��L�)�)�)�)��(�6�=�8�;L�L�M�
B�
B�
B�B�B�B�D�D�D�&�&�&� � � �+�+�+�+�+�+�<�<�<�K�K�K�@L�L�L�8F�F�F�*H�H�H�$	G�	G�	G�F�F�F�
?�?�?�
O�
O�
O�3�3�3�J�J�J�?�?�?�
F�
F�
F�:�:�:�/�/�/�(*�*�*�&�&�&�&,�,�,�,�,�,�'�'�'�24�4�4�(�(�(�
,�,�,�5�5�5�4�4�4�*D�D�D�:M�:M�:M�z9�9�9�9�9�9�<�<�<�:+:�+:�+:�Z;�;�;�B8�8�8�>�>�>�G�G�G�$/�/�/�I�I�I�4�4�4��Z�S��#�#�#�(�(�$�#�(��Z�S��(�(�(�&�&�)�(�&�Q�Q�Q�
U�
U�
U��M�M��\�M�I�I�I�
H�H�H�
8�8�8�0�0�0�4K�K�K�(2�2�2����$M�M�M�
�X�_�� ��7���$�$�	��$�$9�9�9�;�;�;��X�_�� ��7���1�1�	��1�@"7�"7�"7�HF�F�F�+�+�+� � � �:4�4�4�"*�*�*� 9� 9� 9�DH�H�H�
:�
:�
:�G�G�G�(;�;�;�
7�
7�
7�"�"�"� � � �%3�%3�%3�N?�?�?�6	I�	I�	I�8�8�8�B�B�B�6	L�	L�	L�U�U�U�5�5�5�0�X�_�_��,�.M�N�N���O�N���rr&c��t��5}tj|tj��ddd��n#1swxYwY|���Sr)rr:r<�DEBUG�getvalue)r��outs  r�
get_debug_outr��	s���	�	�	�"�c�
�
�3���!�!�!�"�"�"�"�"�"�"�"�"�"�"����"�"�"�"��<�<�>�>�s
� ;�?�?c�*�eZdZdZd�Zd�Zd�Zd�ZdS)�
DebugTestsNc��d}d}|�t|��|��|�t|��|��dS)Nz(\.)(?:[ch]|py)(?(1)$|: )a�SUBPATTERN 1 0 0
  LITERAL 46
BRANCH
  IN
    LITERAL 99
    LITERAL 104
OR
  LITERAL 112
  LITERAL 121
GROUPREF_EXISTS 1
  AT AT_END
ELSE
  LITERAL 58
  LITERAL 32

 0. INFO 8 0b1 2 5 (to 9)
      prefix_skip 0
      prefix [0x2e] ('.')
      overlap [0]
 9: MARK 0
11. LITERAL 0x2e ('.')
13. MARK 1
15. BRANCH 10 (to 26)
17.   IN 6 (to 24)
19.     LITERAL 0x63 ('c')
21.     LITERAL 0x68 ('h')
23.     FAILURE
24:   JUMP 9 (to 34)
26: branch 7 (to 33)
27.   LITERAL 0x70 ('p')
29.   LITERAL 0x79 ('y')
31.   JUMP 2 (to 34)
33: FAILURE
34: GROUPREF_EXISTS 0 6 (to 41)
37. AT END
39. JUMP 5 (to 45)
41: LITERAL 0x3a (':')
43. LITERAL 0x20 (' ')
45: SUCCESS
�r5r�)rr��dumps   r�test_debug_flagzDebugTests.test_debug_flag�	sU��*��(��R	
����s�+�+�T�2�2�2�	
����s�+�+�T�2�2�2�2�2rc�L�|�td��d��dS)Nz(?>ab?)z�ATOMIC_GROUP [(LITERAL, 97), (MAX_REPEAT, (0, 1, [(LITERAL, 98)]))]

 0. INFO 4 0b0 1 2 (to 5)
 5: ATOMIC_GROUP 11 (to 17)
 7.   LITERAL 0x61 ('a')
 9.   REPEAT_ONE 6 0 1 (to 16)
13.     LITERAL 0x62 ('b')
15.     SUCCESS
16:   SUCCESS
17: SUCCESS
r�rhs r�test_atomic_groupzDebugTests.test_atomic_group�	s3������z�2�2�5�	�	�	�	�	rc�L�|�td��d��dS)Nr�z�POSSESSIVE_REPEAT 0 1
  LITERAL 97

 0. INFO 4 0b0 0 1 (to 5)
 5: POSSESSIVE_REPEAT_ONE 6 0 1 (to 12)
 9.   LITERAL 0x61 ('a')
11.   SUCCESS
12: SUCCESS
r�rhs r�test_possesive_repeat_onez$DebugTests.test_possesive_repeat_one�	s3������v�.�.�	1�		�		�		�		�		rc�L�|�td��d��dS)Nr�z�POSSESSIVE_REPEAT 0 1
  LITERAL 97
  LITERAL 98

 0. INFO 4 0b0 0 2 (to 5)
 5: POSSESSIVE_REPEAT 7 0 1 (to 13)
 9.   LITERAL 0x61 ('a')
11.   LITERAL 0x62 ('b')
13: SUCCESS
14. SUCCESS
r�rhs r�test_possesive_repeatz DebugTests.test_possesive_repeat
s3������{�3�3�6�	�	�	�	�	r)rrr�maxDiffr�r�r�r�r�rrr�r��	sV�������G�.3�.3�.3�`���
�
�
�����rr�c�\�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�ZdS)�PatternReprTestsc�p�|�ttj|����|��dSr�r5rr:r<)rr8rs   r�checkzPatternReprTests.check
s0������b�j��1�1�2�2�H�=�=�=�=�=rc�r�|�ttj||����|��dSrr�)rr8ryrs    r�check_flagszPatternReprTests.check_flags
s2������b�j��%�8�8�9�9�8�D�D�D�D�Drc�2�|�dd��dS)Nr��re.compile('random pattern')�r�rhs r�test_without_flagsz#PatternReprTests.test_without_flags
s(���
�
�#�1�	3�	3�	3�	3�	3rc�H�|�dtjd��dS)Nr�z+re.compile('random pattern', re.IGNORECASE))r�r:rrhs r�test_single_flagz!PatternReprTests.test_single_flag
s.�����)�2�=�9�	;�	;�	;�	;�	;rc�|�|�dtjtjztjzd��dS)Nr�z@re.compile('random pattern', re.IGNORECASE|re.DOTALL|re.VERBOSE))r�r:r�rr�rhs r�test_multiple_flagsz$PatternReprTests.test_multiple_flags
s<�����)�2�4���9�R�T�>�
2�	3�	3�	3�	3�	3rc��|�dtjd��|�dtjtjztjzd��dS)Nr�r�z5re.compile('random pattern', re.IGNORECASE|re.DOTALL))r�r:rzr�rrhs r�test_unicode_flagz"PatternReprTests.test_unicode_flag#
s^�����)�2�4�7�	9�	9�	9����)�2�4���9�R�T�>�4�	5�	5�	5�	5�	5rc�2�|�dd��dS)Nz(?i)patternz(re.compile('(?i)pattern', re.IGNORECASE)r�rhs rr�z"PatternReprTests.test_inline_flags*
s'���
�
�=�=�	?�	?�	?�	?�	?rc�|�|�ddd��|�ddtjzd��dS)Nr�i0z&re.compile('random pattern', 0x123000)z4re.compile('random pattern', re.IGNORECASE|0x123000))r�r:r�rhs r�test_unknown_flagsz#PatternReprTests.test_unknown_flags.
sZ�����)�8�A�	C�	C�	C����)�8�B�D�=�B�	D�	D�	D�	D�	Drc�t�|�dd��|�dtjd��dS)N�
bytes patternzre.compile(b'bytes pattern')z&re.compile(b'bytes pattern', re.ASCII))r�r�r:r�rhs r�
test_byteszPatternReprTests.test_bytes4
sO���
�
�#�1�	3�	3�	3����)�2�4�A�	C�	C�	C�	C�	Crc�H�|�dtjd��dS)Nr�z're.compile(b'bytes pattern', re.LOCALE))r�r:rrhs r�test_localezPatternReprTests.test_locale:
s3�����)�2�4�B�	D�	D�	D�	D�	Drc��|�dd��|�dd��|�dd��dS)Nzrandom "double quoted" patternz,re.compile('random "double quoted" pattern')zrandom 'single quoted' patternz,re.compile("random 'single quoted' pattern")z!both 'single' and "double" quotesz1re.compile('both \'single\' and "double" quotes')r�rhs r�test_quoteszPatternReprTests.test_quotes>
sk���
�
�3�>�	@�	@�	@��
�
�3�>�	@�	@�	@��
�
�:�E�	G�	G�	G�	G�	Grc���dddzz}ttj|����}|�t	|��d��|�|dd�d��ttj|tj����}|�t	|��d��|�|dd�d��|�|dd�d��dS)	NzVery %spatternzlong r;i,�zre.compile('Very long long loni�z, re.IGNORECASE))rr:r<r�rBr5r�)rr8rLs   r�test_long_patternz"PatternReprTests.test_long_patternF
s���"�g��n�5�����G�$�$�%�%������A����$�$�$�����3�B�3��!A�B�B�B����G�R�T�*�*�+�+������A����$�$�$�����3�B�3��!A�B�B�B�����3�4�4��"4�5�5�5�5�5rc��|�ttj��d��|�ttjtjztjz��d��|�ttjtjztjzdz��d��|�ttj��d��|�ttjtjztjz��d��|�ttjtjztjzdz��d��dS)Nz
re.IGNORECASEz"re.IGNORECASE|re.DOTALL|re.VERBOSEiz+re.IGNORECASE|re.DOTALL|re.VERBOSE|0x100000zTre.ASCII|re.LOCALE|re.UNICODE|re.MULTILINE|re.DOTALL|re.VERBOSE|re.TEMPLATE|re.DEBUGz?re.ASCII|re.LOCALE|re.UNICODE|re.MULTILINE|re.TEMPLATE|re.DEBUGzGre.ASCII|re.LOCALE|re.UNICODE|re.MULTILINE|re.TEMPLATE|re.DEBUG|0xffe00)r5rr:r�rr�rhs r�test_flags_reprz PatternReprTests.test_flags_reprP
s>������b�d���_�5�5�5�����b�d�2�4�i���n�-�-�=�	?�	?�	?�����b�d�2�4�i���n�e�4�5�5�F�	H�	H�	H�����b�d�U���f�	h�	h�	h�	
������R�T�	�"�$��/�0�0�Z�	\�	\�	\�������R�T�	�"�$��� 6�7�8�8�b�	d�	d�	d�	d�	drN)rrrr�r�r�r�r�r�r�r�r�r�r�r�rr�rrr�r�
s�������>�>�>�E�E�E�3�3�3�;�;�;�3�3�3�
5�5�5�?�?�?�D�D�D�C�C�C�D�D�D�G�G�G�6�6�6�d�d�d�d�drr�c�P�eZdZdZed���Zd�Zd�Zed���Zd�Z	dS)�ImplementationTestz7
    Test implementation details of the re module.
    c���|�t��5dtj_ddd��n#1swxYwY|�t��5dtj_ddd��n#1swxYwY|�t��5tjd��}t|�d����}d|_ddd��dS#1swxYwYdS)Nr]r�)	r9rAr:�Matchr{r�r<r.rp)rr��tps   r�test_immutablez!ImplementationTest.test_immutabled
s����
�
�y�
)�
)�	�	��B�H�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	��B�J�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	��*�R�.�.�C��c�k�k�"�o�o�&�&�B��B�F�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s1�9�=�=�A<�<B�B�!>C,�,C0�3C0c��tjj}|�|d��g��|�|d��dg��|�|d��gd���|�|d��gd���|�|d��gd	���|�|d
��gd���dS)Nr�rsrrH)rrrr�aaaa)rr]rmr^�ababba)rrr]rmrr]�abcabdac)rrrr]rmrr]r)r:�	_compiler�_generate_overlap_tabler5)r�fs  r�test_overlap_tablez%ImplementationTest.test_overlap_tablep
s����L�0�������2����#�#�#������3���!��%�%�%������6���L�L�L�1�1�1������6���L�L�L�1�1�1������8���&8�&8�&8�9�9�9������:���(@�(@�(@�A�A�A�A�Arc��|�tjjd��|�tjjd��dS)Nr)�assertGreaterEqualr:rr	rarhs r�test_signednessz"ImplementationTest.test_signednessy
s>������� 6��:�:�:������ 6��:�:�:�:�:rc��t|tj��t|tj��tjd��}t|t|�d������dS)Nr�)rr:rr�r<r.rpr�s  r�test_disallow_instantiationz.ImplementationTest.test_disallow_instantiation}
s]��	%�T�2�8�4�4�4�$�T�2�:�6�6�6��j��n�n��$�T�4����B���+@�+@�A�A�A�A�Arc	�(�gd�gd�gd�d�}|D�]�}|�|���5tj�|d��|�t
��5}t
|��ddd��n#1swxYwY|�t|j	��d|�d���|�|j
t��|�|tj��tj|}|�|j
|��|�|jd��||D]%}|�t!||�����&tj|=ddd��n#1swxYwY���dS)	N)r<r;�SRE_FLAG_IGNORECASE�
SUBPATTERN�
_compile_info)r;rr�_NamedIntConstant)�
SubPattern�parserr�
_parse_sub)�sre_compile�
sre_constants�	sre_parse)�modulezmodule z is deprecatedr�)r=�sys�modules�popr�r��
__import__r5rzr�r�r�rNr�__package__ru�hasattr)r�
deprecated�namer�ra�attrs      r�test_deprecated_modulesz*ImplementationTest.test_deprecated_modules�
s%��-�-�-�3�3�3�(�(�(�
	
�	
�
��	&�	&�D����T��*�*�

&�

&������d�+�+�+��%�%�&8�9�9�%�Q��t�$�$�$�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%�� � ��Q�Y���!A�4�!A�!A�!A�C�C�C�� � ���X�6�6�6��
�
�d�C�K�0�0�0��k�$�'��� � ���t�4�4�4�� � ���"�5�5�5�&�t�,�8�8�D��O�O�G�C��$6�$6�7�7�7�7��K��%�

&�

&�

&�

&�

&�

&�

&�

&�

&�

&�

&����

&�

&�

&�

&��	&�	&s6�;F�#A?�3F�?B�F�B�C2F�F		�F		N)
rrr�__doc__rrrrrr)r�rrrr_
s����������	�	��\�	�B�B�B�;�;�;��B�B��\�B�&�&�&�&�&rrc��eZdZd�Zd�ZdS)�
ExternalTestsc�B�ddlm}|D�]�\}}|�||���5tj|��}|�|�|����|�|�|����|�|�|����ddz|zddzz}|�|�|����|�|�|d����|�|�|ddt|��z����|�|�|ddt|��z����ddd��n#1swxYwY���dS)zre_tests benchmarksr)�
benchmarks�r8rGrpr�N)
�
test.re_testsr.r=r:r<rurdrgrKrB)rr.r8rVrV�s2s      r�test_re_benchmarksz ExternalTests.test_re_benchmarks�
s���,�,�,�,�,�,�$�
	H�
	H�J�G�Q����g�a��8�8�	
H�	
H��J�w�'�'�����������,�,�,��������
�
�+�+�+�������A���/�/�/���Y��]�S��Y�.�����������-�-�-��������E� 2� 2�3�3�3��������E�5�3�q�6�6�>� B� B�C�C�C�������B��u�s�1�v�v�~� F� F�G�G�G�	
H�	
H�	
H�	
H�	
H�	
H�	
H�	
H�	
H�	
H�	
H����	
H�	
H�	
H�	
H��
	H�
	Hs�E F�F	�F	c�*
�ddlm}m}m}|D�]}dx}x}x}x}}	t	|��dkr	|\}}}}}	n*t	|��dkr|\}}}ntd|���|�||���5||krX|�tj	��5tj
|��ddd��n#1swxYwY	ddd����tj
|��}
|
�|��}||kr$|�|d��	ddd����|���5|�
|d	��|�d��\}}
|�d��|���|jjd
�}t#dd��D]7}	|�|��}|�d
}n#t$$rd}YnwxYw||d|z<�8|jj���D]4}	|�|��}|�d
}n#t$$rd}YnwxYw|||<�5|�t-||��|	d��ddd��n#1swxYwY	t/|d��}t/|d��}|�d��5tj
|��}
|�
|
�|����ddd��n#1swxYwY|�d��5tj
|tj��}
|
�|��}|�t3d|��ddd��n#1swxYwYn#t4$rYnwxYw|dd�dkr~|dd�dkrp|�n|�d��5tj
|��}
|�
|
�|||
dz����ddd��n#1swxYwY|�d��5tj
|tj��}
|�
|
�|����ddd��n#1swxYwY|�d��5tj
|tj��}
|�
|
�|����ddd��n#1swxYwYddd��n#1swxYwY��dS)zre_tests test suiter)�tests�FAIL�SYNTAX_ERRORNr�r^z%Test tuples should have 3 or 5 fieldsr/zSucceeded incorrectlyzFailed incorrectly)�foundr.ryr]�d�Noner4zg%dzgrouping errorr�zbytes pattern matchzlocale-sensitive matchz#=== Fails on locale-sensitive matchrmr����zrange-limited matchzcase-insensitive matchzunicode-sensitive match)r0r4r5r6rBr�r=r9r:r;r<rdrfrureryryr�r�r{�keysr5�evalr�r��print�UnicodeEncodeErrorrr)rr4r5r6rwr8rV�outcomerEr�obj�resultrKrL�vardictr��gir��bss                   r�
test_re_testszExternalTests.test_re_tests�
s���;�;�;�;�;�;�;�;�;�;��Z	3�Z	3�A�6:�:�G�:�a�:�'�:�D�8��1�v�v��{�{�67�3���G�T�8�8��Q���1���&'�#���G�G� �!H�!�L�L�L����g�a��8�8�Q
3�Q
3��l�*�*��*�*�2�8�4�4�,�,��
�7�+�+�+�,�,�,�,�,�,�,�,�,�,�,����,�,�,�,��	Q
3�Q
3�Q
3�Q
3�Q
3�Q
3�Q
3��j��)�)�����A�����d�?�?��%�%�f�.E�F�F�F��Q
3�Q
3�Q
3�Q
3�Q
3�Q
3�Q
3��\�\�^�^�7�7��O�O�F�,@�A�A�A�"(���Q���J�E�3�(.���Q���)/�����(.�	��9�9�G�#�1�c�]�]�0�0��)�!'���a���B�!�z�%+����)�)�)�)�!(�B�B�B�)����-/����	�*�*�#�Y�1�6�6�8�8�(�(��)�!'���a���B�!�z�%+����)�)�)�)�!(�B�B�B�)����%'���
�
��$�$�T�$��%8�%8�(�%5�7�7�7�37�7�7�7�7�7�7�7�7�7�7����7�7�7�7�<L� ��'�2�2�D��q�'�*�*�B�
���&;�<�<�8�8� �j��.�.������
�
�2���7�7�7�8�8�8�8�8�8�8�8�8�8�8����8�8�8�8����&>�?�?�L�L� �j��r�y�9�9��!$���B����!�>�!�"G��K�K�K�	L�L�L�L�L�L�L�L�L�L�L����L�L�L�L���*�����D�����(�B�Q�B�K�5�(�(�W�R�S�S�\�U�-B�-B� &� 2����&;�<�<�G�G� �j��1�1������
�
�1�e�S�1�W�(E�(E�F�F�F�G�G�G�G�G�G�G�G�G�G�G����G�G�G�G��\�\�":�;�;�3�3��*�W�b�m�<�<�C��O�O�C�J�J�q�M�M�2�2�2�3�3�3�3�3�3�3�3�3�3�3����3�3�3�3��\�\�";�<�<�3�3��*�W�b�j�9�9�C��O�O�C�J�J�q�M�M�2�2�2�3�3�3�3�3�3�3�3�3�3�3����3�3�3�3�_Q
3�Q
3�Q
3�Q
3�Q
3�Q
3�Q
3�Q
3�Q
3�Q
3�Q
3����Q
3�Q
3�Q
3�Q
3��Z	3�Z	3s��7&T�B>�2T�>C�T�C�T�AT�)T�=A6I-�4G�
I-�G�I-�G�,I-�
H$�#I-�$H3�0I-�2H3�3.I-�!T�-I1�1T�4I1�5T�9 M6�T�.=K7�+T�7K;�;T�>K;�?T�AM*�T�*M.�.T�1M.�2T�6
N�T�N�6T�9AP�;T�P�T�P�T�'AQ;�/T�;Q?�?T�Q?�T�AS/�#T�/S3�3T�6S3�7T�T
	�
T
	N)rrrr2rEr�rrr,r,�
s:������
H�
H�
H�]3�]3�]3�]3�]3rr,�__main__)$�test.supportrrrrrrr	r
rr�r:rGr r�r�r�r�weakrefr
�_multiprocessingr�r
rzrr�r#�TestCaser&r�r�r�rr,r�mainr�rr�<module>rLs���)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)��
�
�
�	�	�	�	�
�
�
�
�
�
�
�
�����������������������������������������O�O�O�����-�-�-�-�-��-�-�-�-�-�-�-�-��-�-�-�D&�D&�D&�D&�D&�h��D&�D&�D&�NL����Y�Y�Y�Y�Y��"�Y�Y���Y�xMd�Md�Md�Md�Md�x�(�Md�Md�Md�`?&�?&�?&�?&�?&��*�?&�?&�?&�Bn3�n3�n3�n3�n3�H�%�n3�n3�n3�b�z����H�M�O�O�O�O�O��s�A	�	A�A