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

�KeoW����ddlZddlZddlmZGd�dej��ZGd�d��ZGd�d��ZGd	�d
ej��Zedkrej	��dSdS)�N)�Templatec�b�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�ZdS)�
ModuleTestc�
�|�tjd��|�tjd��|�tjd��|�tjtjtjz��|�tjd��|�tjtjdz��|�tjd��|�tj	d��|�tj
tjtjztjztj	ztjz��dS)Nz 	

�abcdefghijklmnopqrstuvwxyz�ABCDEFGHIJKLMNOPQRSTUVWXYZ�
0123456789�abcdefABCDEF�01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)�assertEqual�string�
whitespace�ascii_lowercase�ascii_uppercase�
ascii_letters�digits�	hexdigits�	octdigits�punctuation�	printable��selfs �:/usr/local/apps/python3/lib/python3.11/test/test_string.py�
test_attrszModuleTest.test_attrss?��
	
����*�,=�>�>�>�����/�1M�N�N�N�����/�1M�N�N�N�����-�v�/E��H^�/^�_�_�_�������5�5�5�����)�6�=�>�+I�J�J�J�����)�:�6�6�6�����+�-Q�R�R�R�����)�6�=�6�;Q�+Q�TZ�Tj�+j�ms�m�+�CI�CT�,T�	U�	U�	U�	U�	U�c���|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjdd��d��|�tjd	��d
��|�tjd��d��|�tjd
��d��|�tjd
d��d��dS)Nzabc def ghizAbc Def Ghizabc	def
ghizabc	   def  
ghizABC DEF GHIzABC-DEF-GHI�-zAbc-Def-GhizABC-def DEF-ghi GHIzAbc-def Def-ghi Ghiz   aBc  DeF   zAbc Defz		aBc	DeF	�	z		Abc	Def	)rr
�capwordsrs r�
test_capwordszModuleTest.test_capwordss0��������7�7��G�G�G�������9�9�=�I�I�I������)=�>�>�
�N�N�N�������7�7��G�G�G��������<�<�m�L�L�L������)>�?�?�AV�W�W�W������)9�:�:�I�F�F�F�������8�8�)�D�D�D��������>�>��O�O�O�O�Orc��tj��}|�|�d��d��|�|�dd��d��|�|�ddd��d��|�t
|j��|�t
tjj��dS)N�foozfoo{0}�bar�foobarz
foo{1}{0}-{1}�z	foo6bar-6)r
�	Formatterr�format�assertRaises�	TypeError�r�fmts  r�test_basic_formatterzModuleTest.test_basic_formatter"s����� � ��������E�*�*�E�2�2�2�������H�e�4�4�h�?�?�?�������O�U�A�>�>��L�L�L����)�S�Z�0�0�0����)�V�%5�%<�=�=�=�=�=rc��tj��}|�|�dd���d��|�t
|jd��|�|�dd���d��|�t
|jd��|�|�dd���d��|�t
|jd��|�td	��5|�dd�
��ddd��dS#1swxYwYdS)Nz-{arg}-�test��argz-test-z-{self}-rz-{format_string}-)�
format_stringr1)r1r0)r
r&rr'r(�KeyError�assertRaisesRegexr)r*s  r�test_format_keyword_argumentsz(ModuleTest.test_format_keyword_arguments*si���� � ��������I�6��:�:�H�E�E�E����(�C�J�	�:�:�:�������J�V��<�<�h�G�G�G����(�C�J�
�;�;�;�������$7�v��N�N�!�	#�	#�	#����(�C�J�0C�D�D�D�
�
#�
#�I��
?�
?�	<�	<��J�J�Y�F�J�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s�D8�8D<�?D<c���tj��}|�|�ddd��d�dd����|�|�dddd���d�ddd�����|�|�ddd��d�dd����|�|�dddd��d�ddd����|�|�d	d
dd���d	�d
dd�����|�t
��5|�ddd��ddd��n#1swxYwY|�t
��5|�d
dd��ddd��dS#1swxYwYdS)Nzfoo{}{}r#r%zfoo{1}{num}{1})�numz{:^{}}z	{:^{}} {}�Xz{:^{pad}}{}r")�padzfoo{1}{}zfoo{}{1}�r
r&rr'r(�
ValueErrorr*s  r�test_auto_numberingzModuleTest.test_auto_numbering6sm���� � ��������I�u�a�8�8�"�)�)�%��3�3�	5�	5�	5�������$4�d�E�q��I�I�)�0�0��u�!�0�D�D�	F�	F�	F�������H�e�Q�7�7�!�����2�2�	4�	4�	4�������K���3�?�?�$�+�+�E�1�c�:�:�	<�	<�	<�������M�5�%�Q��G�G�&�-�-�e�U��-�B�B�	D�	D�	D��
�
�z�
*�
*�	-�	-��J�J�z�5�!�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-��
�
�z�
*�
*�	-�	-��J�J�z�5�!�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s$�3F�F�F�<G!�!G%�(G%c��tj��}|�|�dd���d��|�|�dd��d��|�t
|jdd��|�|�dd��d	��|�|�dtj��d
��|�|�dtd����d��|�|�dtd
����d��dS)Nz	-{arg!r}-r.r/z-'test'-z{0!s}z{0!h}z{0!a}�*�42z6'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'�z'\xff'�z'\u0100')r
r&rr'r(r:r�chrr*s  r�test_conversion_specifiersz%ModuleTest.test_conversion_specifiersIs%���� � ��������K�V��<�<�j�I�I�I�������G�V�4�4�f�=�=�=����*�c�j�'�6�B�B�B�������G�R�0�0�$�7�7�7�������G�f�.B�C�C�D�	F�	F�	F�������G�c�#�h�h�7�7��C�C�C�������G�c�#�h�h�7�7��E�E�E�E�Erc�@�tj��}Gd�d��}|��}|�|�d|��d��|�t
��5|�dd��ddd��dS#1swxYwYdS)Nc��eZdZd�ZdS)�,ModuleTest.test_name_lookup.<locals>.AnyAttrc��|S�N�)r�attrs  r�__getattr__z8ModuleTest.test_name_lookup.<locals>.AnyAttr.__getattr__Xs���rN)�__name__�
__module__�__qualname__rJrHrr�AnyAttrrEWs#������
�
�
�
�
rrNz{0.lumber}{0.jack}�
lumberjack�)r
r&rr'r(�AttributeError)rr+rN�xs    r�test_name_lookupzModuleTest.test_name_lookupUs����� � ��	�	�	�	�	�	�	�	�
�G�I�I��������$8�!�<�<�l�K�K�K�
�
�
�~�
.�
.�	1�	1��J�J�+�R�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s�/B�B�Bc��tj��}gd�}|�|�d|��d��|�t
��5|�dg��ddd��n#1swxYwY|�t��5|�di��ddd��dS#1swxYwYdS)N)�eggs�and�spamz{0[2]}{0[0]}�spameggs)r
r&rr'r(�
IndexErrorr2)rr+�lookups   r�test_index_lookupzModuleTest.test_index_lookup_sH���� � ��(�(�(��������N�F�;�;�Z�H�H�H�
�
�
�z�
*�
*�	+�	+��J�J�~�r�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�
�
�
�x�
(�
(�	+�	+��J�J�~�r�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	+�	+s$�A?�?B�B�$C�C�Cc��Gd�dtj��}|ddi��}|�|�d��d��dS)Nc��eZdZifd�Zd�ZdS)�>ModuleTest.test_override_get_value.<locals>.NamespaceFormatterc�R�tj�|��||_dSrG)r
r&�__init__�	namespace)rras  rr`zGModuleTest.test_override_get_value.<locals>.NamespaceFormatter.__init__js$��� �)�)�$�/�/�/�!*����rc��t|t��r&	||S#t$r|j|cYSwxYwtj�|||��dSrG)�
isinstance�strr2rar
r&�	get_value)r�key�args�kwdss    rrezHModuleTest.test_override_get_value.<locals>.NamespaceFormatter.get_valuensu���c�3�'�'�@�3�#�C�y�(��#�3�3�3�#�~�c�2�2�2�2�3�����$�.�.�s�D�$�?�?�?�?�?s��9�9N)rKrLrMr`rerHrr�NamespaceFormatterr^is?������)+�
+�
+�
+�
+�
@�
@�
@�
@�
@rri�greeting�helloz{greeting}, world!z
hello, world!�r
r&rr')rrir+s   r�test_override_get_valuez"ModuleTest.test_override_get_valuehsw��
	@�
	@�
	@�
	@�
	@��!1�
	@�
	@�
	@�!� �*�W�!5�6�6��������$8�9�9�?�K�K�K�K�Krc��Gd�dtj��}|��}|�|�dd���d��dS)Nc��eZdZd�ZdS)�<ModuleTest.test_override_format_field.<locals>.CallFormatterc�2�t|��|��SrG)r')r�value�format_specs   r�format_fieldzIModuleTest.test_override_format_field.<locals>.CallFormatter.format_field~s���e�e�g�g�{�3�3�3rN)rKrLrMrtrHrr�
CallFormatterrp}s#������
4�
4�
4�
4�
4rruz*{0}*c��dS)N�resultrHrHrr�<lambda>z7ModuleTest.test_override_format_field.<locals>.<lambda>�s��h�rz*result*rl)rrur+s   r�test_override_format_fieldz%ModuleTest.test_override_format_field|sj��	4�	4�	4�	4�	4�F�,�	4�	4�	4��m�o�o��������G�->�->�?�?��L�L�L�L�Lrc��Gd�dtj��}|��}|�|�ddd��d��dS)Nc���eZdZ�fd�Z�xZS)�:ModuleTest.test_override_convert_field.<locals>.XFormatterc�X��|dkrdSt���||��S)NrR)�super�
convert_field)rrr�
conversion�	__class__s   �rrzHModuleTest.test_override_convert_field.<locals>.XFormatter.convert_field�s-�����$�$��4��w�w�,�,�U�J�?�?�?r)rKrLrMr�
__classcell__)r�s@r�
XFormatterr|�sA�������
@�
@�
@�
@�
@�
@�
@�
@�
@rr�z{0!r}:{0!x}r"z
'foo':Nonerl)rr�r+s   r�test_override_convert_fieldz&ModuleTest.test_override_convert_field�sp��	@�	@�	@�	@�	@��)�	@�	@�	@��j�l�l��������M�5�%�@�@�,�O�O�O�O�Orc��Gd�dtj��}|��}|�|�dd��d��dS)Nc��eZdZd�ZdS)�4ModuleTest.test_override_parse.<locals>.BarFormatterc3�K�|�d��D]@}|ddkr*|dd��d��\}}}d||dfV��8|dddfV��AdS)N�|r�+��:rP)�split�	partition)rr1�field�
field_name�_rss      r�parsez:ModuleTest.test_override_parse.<locals>.BarFormatter.parse�s�����*�0�0��5�5�6�6�E��Q�x�3���5:�1�2�2�Y�5H�5H��5M�5M�2�
�A�{� �*�k�4�?�?�?�?�?�#�T�4��5�5�5�5�5�
6�6rN)rKrLrMr�rHrr�BarFormatterr��s#������
6�
6�
6�
6�
6rr�z*|+0:^10s|*r"z*   foo    *rl)rr�r+s   r�test_override_parsezModuleTest.test_override_parse�sf��
	6�
	6�
	6�
	6�
	6�6�+�
	6�
	6�
	6��l�n�n��������M�5�9�9�>�J�J�J�J�Jrc	�v�Gd�dtj��}|��}|�|�dd��d��|�|�ddd���d	��|�|�d
ddd���d��|�t
|jd
dddd
���|�t
|jddd��|�t
|jdddd���|�t
|jdddd���dS)Nc��eZdZd�ZdS)�@ModuleTest.test_check_unused_args.<locals>.CheckAllUsedFormatterc��t|�����}|�tdt	|������|D]}|�|���|rt
d���dS)Nrzunused arguments)�set�keys�update�range�len�remover:)r�	used_argsrg�kwargs�unused_argsr0s      r�check_unused_argszRModuleTest.test_check_unused_args.<locals>.CheckAllUsedFormatter.check_unused_args�s���!�&�+�+�-�-�0�0���"�"�5��C��I�I�#6�#6�7�7�7�$�,�,�C��&�&�s�+�+�+�+��9�$�%7�8�8�8�9�9rN)rKrLrMr�rHrr�CheckAllUsedFormatterr��s#������	
9�	
9�	
9�	
9�	
9rr�z{0}�
�10z{0}{i}�d��i�10100z	{0}{i}{1}��1010020r)r��j�{i}r9)rr�r+s   r�test_check_unused_argsz!ModuleTest.test_check_unused_args�sE��
	9�
	9�
	9�
	9�
	9�F�$4�
	9�
	9�
	9�$�#�%�%��������E�2�.�.��5�5�5�������H�b�C��8�8�'�B�B�B�������K��R�3��?�?��K�K�K����*�c�j�+�r�2��PQ��R�R�R����*�c�j�%��R�@�@�@����*�c�j�%��R�3��G�G�G����*�c�j�%��R�3��G�G�G�G�Grc�N�tj��}d}td���}|�t��5}|�d||t
��d��ddd��n#1swxYwY|�dt|j	����dS)NrHr�r�r�����	recursion)
r
r&�dictr(r:�_vformatr��assertInrd�	exception)rr+rgr��errs     r�test_vformat_recursion_limitz'ModuleTest.test_vformat_recursion_limit�s����� � ����������
�
�
�z�
*�
*�	9�c��L�L���f�c�e�e�R�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9��
�
�k�3�s�}�#5�#5�6�6�6�6�6s�&A2�2A6�9A6N)rKrLrMrr r,r4r;rBrSr[rmryr�r�r�r�rHrrrrs�������
U�
U�
U�	P�	P�	P�>�>�>�
<�
<�
<�-�-�-�&
F�
F�
F�1�1�1�+�+�+�L�L�L�(M�M�M�P�P�P�K�K�K� H�H�H�,7�7�7�7�7rrc��eZdZdS)�BagN)rKrLrMrHrrr�r��s�������Drr�c��eZdZd�ZdS)�Mappingc��|}|�d��D]0}	t||��}�#t$rt|���wxYw|S)N�.)r��getattrrQr2)r�name�obj�parts    r�__getitem__zMapping.__getitem__�sb�����J�J�s�O�O�	%�	%�D�
%��c�4�(�(����!�
%�
%�
%��t�n�n�$�
%�����
s	�,�AN)rKrLrMr�rHrrr�r��s#����������rr�c��eZdZd�Zd�Zd�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�ZdS)�TestTemplatec�<�td��}|�|�tdd�����d��|�t
|jtd�����|�ttj��dS)Nz,$who likes to eat a bag of $what worth $$100�tim�ham��who�what�(tim likes to eat a bag of ham worth $100�r�)rr�
substituter�r(r2r))r�ss  r�test_regular_templatesz#TestTemplate.test_regular_templates�s����C�D�D��������d�u�5�&A�&A�&A�B�B�C�	E�	E�	E����(�A�L�$�5�/�/�/�B�B�B����)�X�%8�9�9�9�9�9rc��td��}tddd���}|�|�|��d��|�t
|jtdd�����dS)N�$who likes ${what} for ${meal}r�r��dinner�r�r��meal�tim likes ham for dinnerr�)rr�rr�r(r2�rr��ds   r�"test_regular_templates_with_bracesz/TestTemplate.test_regular_templates_with_braces�s}���5�6�6���U��X�6�6�6��������a���*D�E�E�E����(�A�L��5�u�5�5�5�	7�	7�	7�	7�	7rc��td��}tddd���}|�|�|��d��dS)Nz$WHO likes ${WHAT} for ${MEAL}r�r�r�)�WHO�WHAT�MEALr��rr�rr�r�s   r�&test_regular_templates_with_upper_casez3TestTemplate.test_regular_templates_with_upper_case�sK���5�6�6���U��X�6�6�6��������a���*D�E�E�E�E�Erc��td��}tddd���}|�|�|��d��dS)Nz%$_wh0_ likes ${_w_h_a_t_} for ${mea1}r�r�r�)�_wh0_�	_w_h_a_t_�mea1r�r�r�s   r�'test_regular_templates_with_non_lettersz4TestTemplate.test_regular_templates_with_non_letters�sK���<�=�=���u��H�=�=�=��������a���*D�E�E�E�E�Erc��|j}td��}||�tdd�����d��td��}||�tdd�����d��dS)Nz-$who likes to eat a bag of $$what worth $$100r�r�r�z*tim likes to eat a bag of $what worth $100z
$who likes $$ztim likes $�rrr�r��r�eqr�s   r�test_escapeszTestTemplate.test_escapes�s���
�
���D�E�E��
��1�<�<���U�3�3�3�4�4�7�	9�	9�	9��_�%�%��
��1�<�<���U�3�3�3�4�4�m�D�D�D�D�Drc���|j}td��}td���}||�|��d��||�|��d��dS)Nz%(foo)s $foo ${foo}�baz�r"z%(foo)s baz baz�rrr�r��safe_substitute�rr�r�r�s    r�
test_percentszTestTemplate.test_percents�si��
�
���*�+�+���U�O�O�O��
��1�<�<��?�?�-�.�.�.�
��1���Q���!2�3�3�3�3�3rc�*�|j}td��}td���}||�|��d��||�|��d��td��}||�|��d��dS)Nz&tim has eaten $count bags of ham today�)�countz!tim has eaten 7 bags of ham todayz(tim has eaten ${count} bags of ham todayr�r�s    r�test_stringificationz!TestTemplate.test_stringification�s���
�
���=�>�>���q�M�M�M��
��1�<�<��?�?�?�@�@�@�
��1���Q���!D�E�E�E��?�@�@��
��1�<�<��?�?�?�@�@�@�@�@rc���|j}td��}tdd���}||�|��d��||�|��d��dS)Nz$who ate ${meal})r��fred)r��kung pao)r�r�z'('tim', 'fred') ate ('ham', 'kung pao')r�r�s    r�test_tupleargszTestTemplate.test_tupleargsso��
�
���'�(�(���_�+>�?�?�?��
��1�<�<��?�?�E�F�F�F�
��1���Q���!J�K�K�K�K�Krc	��|j}td��}||�td�����d��||�td�����d��||�tdd�	����d
��||�tdd�����d��||�tddd�
����d��dS)Nr�r�r�ztim likes ${what} for ${meal}r��r�z$who likes ham for ${meal}r�)r�r�z$who likes ham for dinnerr�ztim likes ham for ${meal}r�r�)rrr�r�r�s   r�test_SafeTemplatezTestTemplate.test_SafeTemplates��
�
���5�6�6��
��1���T�e�_�_�_�-�-�/N�O�O�O�
��1���T�u�-�-�-�.�.�0L�M�M�M�
��1���T�u�8�<�<�<�=�=�&�	(�	(�	(�
��1���T�e�%�8�8�8�9�9�&�	(�	(�	(�
��1���T�e�%�h�G�G�G�H�H�%�	'�	'�	'�	'�	'rc��|j}td��}|t|jt	d�����td��}|t|jt	d�����td��}|t|jt	d�����td��}|t|jt	d�����td��}|t|jt	d�����dS)Nz$who likes $r�r�z$who likes ${what)z$who likes $100u$who likes $ıu$who likes $İ)r(rr:r�r�)r�raisesr�s   r�test_invalid_placeholdersz&TestTemplate.test_invalid_placeholderss����"���^�$�$����z�1�<��%����9�9�9��)�*�*����z�1�<��%����9�9�9��&�'�'����z�1�<��%����9�9�9�
�)�*�*����z�1�<��%����9�9�9��)�*�*����z�1�<��%����9�9�9�9�9rc�@�Gd�dt��}t��}t��|_t��|j_d|jj_d|j_|d��}|�|�|��d��dS)Nc��eZdZdZdS)�9TestTemplate.test_idpattern_override.<locals>.PathPatternz[_a-z][._a-z0-9]*N)rKrLrM�	idpatternrHrr�PathPatternr#s������,�I�I�Irrr�r�z,$bag.foo.who likes to eat a bag of $bag.what�tim likes to eat a bag of ham)	rr�r��bagr"r�r�rr�)rr�mr�s    r�test_idpattern_overridez$TestTemplate.test_idpattern_override"s���	-�	-�	-�	-�	-�(�	-�	-�	-��I�I��������E�E���	����	�
����
��K�F�G�G��������a���*I�J�J�J�J�Jrc��Gd�dt��}|d��}tdddd���}|�t|j|��|�|�|��d	��dS)
Nc��eZdZdZdS)�3TestTemplate.test_flags_override.<locals>.MyPatternrN)rKrLrM�flagsrHrr�	MyPatternr	.s�������E�E�Errz$wHO likes ${WHAT} for ${meal}r�r�r�r�)�wHOr�r��wzfredHO likes ${WHAT} for dinner)rr�r(r:r�rr�)rrr�r�s    r�test_flags_overridez TestTemplate.test_flags_override-s���	�	�	�	�	��	�	�	��I�6�7�7���U��X��@�@�@�����*�a�l�A�6�6�6�����*�*�1�-�-�/P�Q�Q�Q�Q�Qrc��Gd�dt��}tdd���}|d��}|�|�|��d��dS)Nc��eZdZdZdZdZdS)�FTestTemplate.test_idpattern_override_inside_outside.<locals>.MyPattern�[a-z]+�[A-Z]+rN�rKrLrMr�braceidpatternr
rHrrrr8�������!�I�&�N��E�E�Errr"�BAR�r"rz$foo ${BAR}zfoo BARr��rrrr�s    r�&test_idpattern_override_inside_outsidez3TestTemplate.test_idpattern_override_inside_outside5su��	�	�	�	�	��	�	�	�
�U��&�&�&���I�m�$�$��������a���)�4�4�4�4�4rc��Gd�dt��}tdd���}|d��}|�t|j|��|d��}|�t|j|��dS)Nc��eZdZdZdZdZdS)�WTestTemplate.test_idpattern_override_inside_outside_invalid_unbraced.<locals>.MyPatternrrrNrrHrrrrCrrrr"rrz$FOOz${bar})rr�r(r:r�rs    r�7test_idpattern_override_inside_outside_invalid_unbracedzDTestTemplate.test_idpattern_override_inside_outside_invalid_unbraced@s���	�	�	�	�	��	�	�	�
�U��&�&�&���I�f�������*�a�l�A�6�6�6��I�h�������*�a�l�A�6�6�6�6�6rc��Gd�dt��}t��}t��|_t��|j_d|jj_d|j_|d��}|�|�|��d��Gd�dt��}|d��}|�	t|ji��|�	t|ji��dS)	Nc��eZdZdZdS)�5TestTemplate.test_pattern_override.<locals>.MyPatternz�
            (?P<escaped>@{2})                   |
            @(?P<named>[_a-z][._a-z0-9]*)       |
            @{(?P<braced>[_a-z][._a-z0-9]*)}    |
            (?P<invalid>@)
            N�rKrLrM�patternrHrrrr!Ns�������G�G�Grrr�r��,@bag.foo.who likes to eat a bag of @bag.whatrc��eZdZdZdS)�6TestTemplate.test_pattern_override.<locals>.BadPatterna
            (?P<badname>.*)                     |
            (?P<escaped>@{2})                   |
            @(?P<named>[_a-z][._a-z0-9]*)       |
            @{(?P<braced>[_a-z][._a-z0-9]*)}    |
            (?P<invalid>@)                      |
            Nr"rHrr�
BadPatternr&]��������G�G�Grr')rr�r�rr"r�r�rr�r(r:r�)rrrr�r's     r�test_pattern_overridez"TestTemplate.test_pattern_overrideMs��	�	�	�	�	��	�	�	�
�I�I��������E�E���	����	�
����
��I�D�E�E��������a���*I�J�J�J�	�	�	�	�	��	�	�	�
�J�E�F�F�����*�a�l�B�7�7�7����*�a�&7��<�<�<�<�<rc���Gd�dt��}d}||��}|�t|ji��|�ddi��}|�|d��dS)Nc��eZdZdZdS)�5TestTemplate.test_braced_override.<locals>.MyTemplate��
            \$(?:
              (?P<escaped>$)                     |
              (?P<named>[_a-z][_a-z0-9]*)        |
              @@(?P<braced>[_a-z][_a-z0-9]*)@@   |
              (?P<invalid>)                      |
           )
           Nr"rHrr�
MyTemplater,j��������G�G�Grr.�PyCon in $@@location@@�location�	Cleveland�PyCon in Cleveland)rr(r2r�r�rr.�tmpl�t�vals     r�test_braced_overridez!TestTemplate.test_braced_overrideis���	�	�	�	�	��	�	�	�(���J�t�������(�A�L�"�5�5�5��l�l�J��4�5�5������2�3�3�3�3�3rc���Gd�dt��}d}||��}|�|���|��|�ddi��}|�|d��dS)Nc��eZdZdZdS)�:TestTemplate.test_braced_override_safe.<locals>.MyTemplater-Nr"rHrrr.r;{r/rr.r0r1r2r3)rrr�r4s     r�test_braced_override_safez&TestTemplate.test_braced_override_safezs���	�	�	�	�	��	�	�	�(���J�t��������*�*�,�,�d�3�3�3�����[� 9�:�:������2�3�3�3�3�3rc� �Gd�dt��}|d��}|�t��5}|�i��ddd��n#1swxYwY|�dt|j����dS)Nc��eZdZdZdS)�;TestTemplate.test_invalid_with_no_lines.<locals>.MyTemplatez�
              (?P<invalid>) |
              unreachable(
                (?P<named>)   |
                (?P<braced>)  |
                (?P<escaped>)
              )
            Nr"rHrrr.r?�s�������G�G�Grr.rPz
line 1, col 1)rr(r:r�r�rdr�)rr.r�r�s    r�test_invalid_with_no_linesz'TestTemplate.test_invalid_with_no_lines�s���	�	�	�	�	��	�	�	�
�J�r�N�N��
�
�
�z�
*�
*�	�c�
�L�L�����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�o�s�3�=�'9�'9�:�:�:�:�:s�A�A�"Ac��td��}tdd���}|�|�|��d��dS)N�$who likes $whatutÿmufþedr�utÿm likes fþedr�r�s   r�test_unicode_valuesz TestTemplate.test_unicode_values�sI���'�(�(���X�K�0�0�0��������a���*D�E�E�E�E�Erc�l�|j}td��}||�dd���d��||�td���d���d��||�tdd	���dd���d��td
��}||�td���d
���d��||�td���d���d��td��}||�d
���d��dS�NrBr�r�r�z
tim likes hamr�r�r�r�zthe mapping is $mapping�noner��bozo)�mappingzthe mapping is bozo�one�twozthe mapping is twozthe self is $selfrzthe self is bozor�r�s   r�test_keyword_argumentsz#TestTemplate.test_keyword_arguments�sS��
�
���'�(�(��
��1�<�<�E��<�.�.��@�@�@�
��1�<�<������e�<�4�4�o�F�F�F�
��1�<�<���j�9�9�9�!���/�/��	�	�	�
�.�/�/��
��1�<�<���(�(�(�&�<�9�9� �	"�	"�	"�
��1�<�<��U�+�+�+�U�<�;�;��	!�	!�	!�
�(�)�)��
��1�<�<�V�<�$�$�&8�9�9�9�9�9rc��|j}|j}td��}||�dd���d��||�t	d���d���d��||�t	dd	���dd���d��td
��}||�t	d���d
���d��||�t	d���d���d��t	d���}|t
|j|i��|t
|j|i��td��}||�d
���d��dSrE)rr(rr�r�r)r�)rr�r�r�r�s     r�test_keyword_arguments_safez(TestTemplate.test_keyword_arguments_safe�s���
�
���"���'�(�(��
��1����U��3�3�_�E�E�E�
��1���T�e�_�_�_�5��9�9�?�K�K�K�
��1���T�f�:�>�>�>�!���/�/��	�	�	�
�.�/�/��
��1���T�f�-�-�-�v��>�>� �	"�	"�	"�
��1���T�%�0�0�0�%��@�@��	!�	!�	!���������y�!�,��2�.�.�.���y�!�+�Q��3�3�3��(�)�)��
��1���&��)�)�+=�>�>�>�>�>rc��|j}|j}Gd�dt��}|d��}||�dd���d��|t|j��||�dd���d��||���d��|d��}|t|jtdd�����||���d��Gd	�d
t��}|d��}|�|�tdd
�����d��dS)Nc��eZdZdZdS)�?TestTemplate.test_delimiter_override.<locals>.AmpersandTemplate�&N�rKrLrM�	delimiterrHrr�AmpersandTemplaterP���������I�I�IrrTzthis &gift is for &{who} &&�bud�you)�giftr�zthis bud is for you &zthis &gift is for &{who} &c��eZdZdZdS)�7TestTemplate.test_delimiter_override.<locals>.PieDelims�@NrRrHrr�	PieDelimsrZ�rUrr\z-@who likes to eat a bag of @{what} worth $100r�r�r�r�)rr(rr�r2r�r:r�)rr�r�rTr�r\s      r�test_delimiter_overridez$TestTemplate.test_delimiter_override�s���
�
���"��	�	�	�	�	��	�	�	���;�<�<��
��1�<�<�U��<�.�.�0G�H�H�H���x���&�&�&�
��1���%�U��3�3�5L�M�M�M�
��1����� <�=�=�=���:�;�;����z�1�<��5�e�)D�)D�)D�E�E�E�
��1����� <�=�=�=�	�	�	�	�	��	�	�	��I�E�F�F��������d�u�5�&A�&A�&A�B�B�C�	E�	E�	E�	E�	Erc�h�|j}td��}|�|�����td��}|�|�����Gd�dt��}|d��}|�t|j��dS)N�.$who likes to eat a bag of ${what} worth $$100�-$who likes to eat a bag of ${what} worth $100c��eZdZdZdS)�.TestTemplate.test_is_valid.<locals>.BadPattern�
            (?P<badname>.*)                  |
            (?P<escaped>@{2})                   |
            @(?P<named>[_a-z][._a-z0-9]*)       |
            @{(?P<braced>[_a-z][._a-z0-9]*)}    |
            (?P<invalid>@)                      |
            Nr"rHrrr'rb�r(rr'r$)rr�
assertTrue�is_valid�assertFalser(r:)rr�r�r's    r�
test_is_validzTestTemplate.test_is_valid�s���
�
���E�F�F������
�
���%�%�%��D�E�E����������&�&�&�	�	�	�	�	��	�	�	�
�J�E�F�F�����*�a�j�1�1�1�1�1rc���|j}|j}td��}|���}||ddg��td��}|���}||ddg��td��}|���}||ddg��Gd�dt��}|d��}|�t|j��dS)	Nr_r�r�z^$who likes to eat a bag of ${what} worth $$100; ${who} likes to eat a bag of $what worth $$100r`c��eZdZdZdS)�5TestTemplate.test_get_identifiers.<locals>.BadPatternrcNr"rHrrr'rjr(rr'r$)rr(r�get_identifiersr:)rr�r�r��idsr's      r�test_get_identifiersz!TestTemplate.test_get_identifiers�s��
�
���"���E�F�F�����!�!��
��3���� � � �
�u�v�v�����!�!��
��3���� � � �
�D�E�E�����!�!��
��3���� � � �	�	�	�	�	��	�	�	�
�J�E�F�F�����*�a�&7�8�8�8�8�8rN)rKrLrMr�r�r�r�r�r�r�r�r�r�rrrrr)r8r<r@rCrKrMr]rgrmrHrrr�r��s�������:�:�:�7�7�7�F�F�F�
F�F�F�
E�E�E�4�4�4�A�A�A�L�L�L�
'�
'�
'�
:�
:�
:�	K�	K�	K�R�R�R�	5�	5�	5�7�7�7�=�=�=�84�4�4�"4�4�4�";�;�;�(F�F�F�
:�:�:�"?�?�?�*E�E�E�(2�2�2�*9�9�9�9�9rr��__main__)
�unittestr
r�TestCaserr�r�r�rK�mainrHrr�<module>rrs������
�
�
�
�������v7�v7�v7�v7�v7��"�v7�v7�v7�v	�	�	�	�	�	�	�	���������@9�@9�@9�@9�@9�8�$�@9�@9�@9�F
�z����H�M�O�O�O�O�O��r