Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.11/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.11/test/__pycache__/test_logging.cpython-311.opt-2.pyc

�

SԚg<���&�	ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlmZmZddlmZddlmZddlmZddlmZddlmZddlm Z ddl!Z!ddl"Z"ddl#Z#ddl$Z$ddl%Z%ddl&Z&dd	l'm(Z(m)Z)dd
l*m+Z+m,Z,ddl-m.Z.m/Z/m0Z0m1Z1ej2d��Z3ej2d
��Z4	ddl5Z5ddl6Z6ddl7Z7n#e8$r	dxZ5xZ6Z7YnwxYw	ddl9Z9n#e8$rYnwxYwe$j:ej;d��Z<Gd�de$j=��Z>Gd�de>��Z?Gd�de>��Z@dZAdZBdZCdZDdZEdZFdZGdZHdZIdZJeKeJeAdz��ZLeAd eBd!eCd"eDd#eEd$eFd%eGd&eHd'eId(eJd)i
ZMGd*�d+ejN��ZOGd,�d-ejN��ZPGd.�d/e>��ZQGd0�d1e>��ZRGd2�d3eS��ZTGd4�d5ejU��ZVGd6�d7eS��ZWGd8�d9e>��ZXGd:�d;e4jY��ZZGd<�d=eS��Z[Gd>�d?e[e(��Z\Gd@�dAe[e0��Z]GdB�dCe[e.��Z^e_edD��rGdE�dFe]��Z`GdG�dHe^��Zaejb��ejc��GdI�dJe>������ZdGdK�dLe>��ZeGdM�dNejf��ZgGdO�dPe>��Zhejb��ejc��GdQ�dRe>������ZidS�Zje$jke_edD��dT��GdU�dVei����Zlejb��ejc��GdW�dXe>������Zme$jke_edD��dT��GdY�dZem����Znejb��ejc��Gd[�d\e>������Zoe$jke_edD��dT��Gd]�d^eo����Zpe$jkejqd_��Gd`�daeo����Zrejb��ejc��Gdb�dce>������ZsGdd�dee>��ZtGdf�dge>��ZuGdh�die>��Zvd�dj�ZwGdk�dl��Zxdm�ZyGdn�doejU��ZzGdp�dqe>��Z{Gdr�dse>��Z|Gdt�due>��Z}Gdv�dwej~��ZGdx�dye>��Z�ejc��Gdz�d{e>����Z�e_ej�d|��r-ddl�Z�dd}l�m�Z�ejc��Gd~�de>����Z�ej�d��Z�Gd��d�ej���Z�e���Z�Gd��d���Z�Gd��d�e$j=e���Z�Gd��d�ej���Z�Gd��d�e$j=��Z�Gd��d�e>��Z�Gd��d�e>��Z�Gd��d���Z�Gd��d�ej���Z�Gd��d�e>��Z�Gd��d�e>��Z�Gd��d�e>��Z�Gd��d�e$j=��Z�Gd��d�e$j=��Z�Gd��d�ej���Z�Gd��d���Z�Gd��d�ej���Z�Gd��d�e>e���Z�Gd��d�e>��Z�Gd��d�e���Z�Gd��d�e���Z�Gd��d�e���Z�d��Z�d�d�d�d�d�d�e�d�d�����ffD]5\Z�Z�d�D]-Z�e�e�e�fd��Z�d�e�zZ�e�dkre�d�z
Z�e�e�_�e�e�e�e����.�6e$jke5d���Gd��d�e>����Z�Gd��d�e$j=��Z�d��Z�e�d�kre$j���dSdS)��N)�assert_python_ok�assert_python_failure)�support)�	os_helper)�
socket_helper)�threading_helper)�warnings_helper)�TestHandler)�
HTTPServer�BaseHTTPRequestHandler)�urlparse�parse_qs)�ThreadingUDPServer�DatagramRequestHandler�ThreadingTCPServer�StreamRequestHandler�asyncore�smtpdz?libasan has a pthread_create() dead lock related to thread+forkc�6�eZdZ	dZdZdZd�Zd�Zd	d�Zd�Z	dS)
�BaseTestz&%(name)s -> %(levelname)s: %(message)sz^([\w.]+) -> (\w+): (\d+)$rc�|�	tj��|_tj��jj}tj��	tj�	��|_
tjdd�|_|�	��x|_
}tj�	��|_tj�	��|_ix|_}|D]}t'||dd��||<�	tj��n#tj��wxYwtjd��|_tjd��|_tjd��|_|j���|_t5j��|_|j�tj��tj|j��|_ tj!|j"��|_#|j �$|j#��|j�%��r+|jj&|jj&z}tOd|z���|j�%��r+|jj&|jj&z}tOd|z���|j�(|j ��|�)|j�%����|�)|j�%����dS)N�disabledu«×»uĿÖG�zUnexpected handlers: %s)*r�threading_setup�_threading_key�logging�	getLogger�manager�
loggerDict�_acquireLock�	_handlers�copy�saved_handlers�_handlerList�saved_handler_list�
saved_loggers�_nameToLevel�saved_name_to_level�_levelToName�saved_level_to_name�
logger_states�getattr�_releaseLock�logger1�logger2�root_logger�getEffectiveLevel�original_logging_level�io�StringIO�stream�setLevel�DEBUG�
StreamHandler�	root_hdlr�	Formatter�
log_format�root_formatter�setFormatter�hasHandlers�handlers�AssertionError�
addHandler�
assertTrue)�self�logger_dictr&r+�name�hlists      �./usr/local/lib/python3.11/test/test_logging.py�setUpzBaseTest.setUp^s���	9�.�>�@�@����'�)�)�1�<�������	#�")�"3�"8�"8�":�":�D��&-�&:�1�1�1�&=�D�#�1<�1A�1A�1C�1C�C�D���'.�';�'@�'@�'B�'B�D�$�'.�';�'@�'@�'B�'B�D�$�13�3�D���%�
@�
@��&-�m�D�.A�.8�$�'@�'@�
�d�#�#�
@�
� �"�"�"�"��G� �"�"�"�"�����(��8�8����(�)=�>�>���"�,�R�0�0���&*�&6�&H�&H�&J�&J��#��k�m�m�����!�!�'�-�0�0�0� �.�t�{�;�;���%�/���@�@�����#�#�D�$7�8�8�8��<�#�#�%�%�	D��L�)�D�,<�,E�E�E� �!:�U�!B�C�C�C��<�#�#�%�%�	D��L�)�D�,<�,E�E�E� �!:�U�!B�C�C�C���#�#�D�N�3�3�3������0�0�2�2�3�3�3������0�0�2�2�3�3�3�3�3s
�CD%�%D:c��	|j���|j�|j��|jjrL|jjd}|j�|��|���|jj�L|j�|j��tj	��	tj
���tj
�|j
��tj���tj�|j��tj���tj�|j��|jtjdd�<tj��j}d|_|j}|���|�|j��|j}|jD]"}||�|||j|_�#	tj��n#tj��wxYw|���t;j|j�dS)Nr) r5�closer0�
removeHandlerr9r?r6r2rr r)�clear�updater*r'r(r!r#r%r$rr�disablerr&r+rr-�
doCleanupsr�threading_cleanupr)rC�hrrr+rEs      rG�tearDownzBaseTest.tearDown�s3��	����������&�&�t�~�6�6�6���'�	�� �)�!�,�A���*�*�1�-�-�-�
�G�G�I�I�I���'�	�	
��!�!�$�"=�>�>�>������	#�� �&�&�(�(�(�� �'�'��(@�A�A�A�� �&�&�(�(�(�� �'�'��(@�A�A�A���#�#�%�%�%���$�$�T�%8�9�9�9�&*�&=�G� ����#��'�)�)�1�G��G�O� �+�J����������d�0�1�1�1� �.�M��*�
L�
L�� ��&�2�8E�d�8K�D�&�t�,�5��
L�
� �"�"�"�"��G� �"�"�"�"�����������*�D�,?�@�@�@�@s
�E!H;�;INc�P�	|p|j}tj|p|j��}|������}|�t|��t|����t||��D]i\}}|�	|��}|s|�
d|z��|�t|�����|���j|�
��}|r|�
d|z��dSdS)Nz*Log line does not match expected pattern:
z'Remaining output at end of log stream:
)r5�re�compile�expected_log_pat�getvalue�
splitlines�assertEqual�len�zip�search�fail�tuple�groups�read)	rC�expected_valuesr5�pat�actual_lines�actual�expected�match�ss	         rG�assert_log_lineszBaseTest.assert_log_lines�s.��	/��&�4�;���j��5�� 5�6�6�����(�(�3�3�5�5������\�*�*�C��,@�,@�A�A�A� #�L�/� B� B�	>�	>��F�H��J�J�v�&�&�E��
$��	�	�G�"�#�$�$�$����U�5�<�<�>�>�2�2�H�=�=�=�=��K�K�M�M���	F��I�I�@�1�D�E�E�E�E�E�	F�	F�c�8�	|xjdz
c_d|jzS)N�z%d)�message_num�rCs rG�next_messagezBaseTest.next_message�s)��	����A�����d�&�&�&ri�NN)
�__name__�
__module__�__qualname__r;rVrlrHrRrhrn�rirGrrVsq������'�9�J�4���K�(4�(4�(4�T A� A� A�DF�F�F�F�$'�'�'�'�'rirc�:�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�BuiltinLevelsTestc�B�|j}tjd��}|�tj��tjtjd��i��}|�tj��tjd��}|�tj��|�tj	|����|�
|����|�tj	|����|�
|����|�|����|�|����|�tj	|����|�
|����|�|����|�|����|�
|����|�|����|�|����|�
|����|�
|����|�gd���dS)N�ERR�INF�DEB))rw�CRITICAL�1)rw�ERROR�2)rxrz�3)rxr|�4)rx�WARNING�5)rx�INFO�6)ryrz�7)ryr|�8)ryr��9)ryr��10)ryr7�11)rnrrr6r|�
LoggerAdapterr�r7�logrz�error�warning�info�debugrh)rC�mrwrxrys     rG�	test_flatzBuiltinLevelsTest.test_flat�s��������&�&�����W�]�#�#�#��#�G�$5�e�$<�$<�b�A�A�����W�\�"�"�"����&�&�����W�]�#�#�#�	���� �!�!�#�#�&�&�&��	�	�!�!�#�#�������� �!�!�#�#�&�&�&��	�	�!�!�#�#�������A�A�C�C�����������
�
�
����� �!�!�#�#�&�&�&��	�	�!�!�#�#�������A�A�C�C�����������
�
�
��	�	�!�!�#�#����	���A�A�C�C�����������
�
�
��	�	�!�!�#�#�����	�	�!�!�#�#�������
�
�
�	�	�	�	�	ric�F�|j}tjd��}|�tj��tjd��}|�tj��|�tj|����|�|����|�	|����|�
|����|�|����|�ddg��dS)Nrx�INF.ERR)r�rzr{)r�r|r}�
rnrrr6r�r|r�rzr�r�r�r�rh)rCr�rx�INF_ERRs    rG�test_nested_explicitz&BuiltinLevelsTest.test_nested_explicit�s��������&�&�����W�\�"�"�"��$�Y�/�/�������'�'�'�	���G�$�a�a�c�c�*�*�*��
�
�a�a�c�c����	�������������Q�Q�S�S�����
�
�a�a�c�c�������(�%�
�	�	�	�	�	ric��|j}tjd��}|�tj��tjd��}|�tj��tjd��}tjd��}tjd��}|�tj|����|�|����|�	|����|�
|����|�tj|����|�|����|�|����|�	|����|�
|����|�|����|�gd���dS)Nrxr��	INF.UNDEF�
INF.ERR.UNDEF�UNDEF))r�rzr{)r�r|r})r�r�r~)r�r�r)r�rzr�)r�r|r�r�)rCr�rxr��	INF_UNDEF�
INF_ERR_UNDEFr�s       rG�test_nested_inheritedz'BuiltinLevelsTest.test_nested_inheriteds���������&�&�����W�\�"�"�"��$�Y�/�/�������'�'�'��%�k�2�2�	��)�/�:�:�
��!�'�*�*��	�
�
�g�&�����,�,�,��������������!�!�#�#�������q�q�s�s�������'�*�A�A�C�C�0�0�0����A�A�C�C� � � �	�������������a�a�c�c�"�"�"����1�1�3�3�������A�A�C�C� � � ����
�
�
�	�	�	�	�	ric��|j}tjd��}tjd��}tjd��}|�tj��|�tj|����|�|����|�tj|����|�|����|�|����|�|����|�	gd���dS)Nrx�INF.BADPARENT.UNDEF�
INF.BADPARENT))r�rzr{)r�r�r})r�rzr~)r�r�r)
rnrrr6r�r��FATALr�r�rh)rCr�rx�
GRANDCHILD�CHILDs     rG�test_nested_with_virtual_parentz1BuiltinLevelsTest.test_nested_with_virtual_parent/s��������&�&���&�'<�=�=�
��!�/�2�2�����W�\�"�"�"�	���w�}�a�a�c�c�*�*�*�����������
�	�	�'�-�����%�%�%�
�
�
�1�1�3�3����	����������
���A�A�C�C�������
�
�
�	�	�	�	�	ric���	|�tjd��tj��|�tjtj��d��dS)Nr�)rYr�getLevelNamer�rms rG�test_regression_22386z'BuiltinLevelsTest.test_regression_22386IsQ��4�����-�f�5�5�w�|�D�D�D�����-�g�l�;�;�V�D�D�D�D�Dric�n�tjd��}|�|tj��dS)Nr�)rr�rYr�)rC�fatals  rG�test_issue27935z!BuiltinLevelsTest.test_issue27935Ns0���$�W�-�-�������
�.�.�.�.�.ric���	tjtjd��|�tjtjd��|�tjtj��d��|�tjtj��d��|�tjd��tj��dS)Nrr��NOTSET)r�addLevelNamer��
addCleanuprYr�r�rms rG�test_regression_29220z'BuiltinLevelsTest.test_regression_29220Rs���4���W�\�2�.�.�.�����,�g�l�F�C�C�C�����-�g�l�;�;�R�@�@�@�����-�g�n�=�=�x�H�H�H�����-�h�7�7���H�H�H�H�HriN)
rprqrrr�r�r�r�r�r�r�rsrirGruru�s�������4�-�-�-�^���.!�!�!�F���4E�E�E�
/�/�/�I�I�I�I�Iriruc�"�eZdZ	d�Zd�Zd�ZdS)�BasicFilterTestc���tjd��}|jjd}	|�|��tjd��}tjd��}tjd��}tjd��}|�|�����|�|�����|�|�����|�|�����|�ddg��|�	|��dS#|�	|��wxYw)N�	spam.eggsr�spam�spam.eggs.fish�spam.bakedbeans�r�r�r}�r�r�r~)
r�Filterr0r?�	addFilterrr�rnrh�removeFilter)rC�filter_�handlerr��	spam_eggs�spam_eggs_fish�spam_bakedbeanss       rG�test_filterzBasicFilterTest.test_filter^sS���.��-�-���"�+�A�.��	*����g�&�&�&��$�V�,�,�D��)�+�6�6�I�$�.�/?�@�@�N�%�/�0A�B�B�O��I�I�d�'�'�)�)�*�*�*��N�N�4�,�,�.�.�/�/�/����� 1� 1� 3� 3�4�4�4�� � ��!2�!2�!4�!4�5�5�5��!�!�*�/�#�
�
�
�

� � ��)�)�)�)�)��G� � ��)�)�)�)���s�DE�E.c��d�}|jjd}	|�|��tjd��}tjd��}tjd��}tjd��}|�|�����|�|�����|�|�����|�|�����|�ddg��|�|��dS#|�|��wxYw)	Nc�|�|j�d��}d�|dd���}|dkS)N�.�r�)rE�split�join)�record�parts�prefixs   rG�
filterfuncz8BasicFilterTest.test_callable_filter.<locals>.filterfunczs;���K�%�%�c�*�*�E��X�X�e�B�Q�B�i�(�(�F��[�(�(rirr�r�r�r�r�r�)	r0r?r�rrr�rnrhr�)rCr�r�r�r�r�r�s       rG�test_callable_filterz$BasicFilterTest.test_callable_filtervsS��	)�	)�	)�
�"�+�A�.��	-����j�)�)�)��$�V�,�,�D��)�+�6�6�I�$�.�/?�@�@�N�%�/�0A�B�B�O��I�I�d�'�'�)�)�*�*�*��N�N�4�,�,�.�.�/�/�/����� 1� 1� 3� 3�4�4�4�� � ��!2�!2�!4�!4�5�5�5��!�!�*�/�#�
�
�
�

� � ��,�,�,�,�,��G� � ��,�,�,�,���s�DE�Ec��tj��}tjddi��}|�|�|����dS)NrEr�)rr��
makeLogRecordrB�filter)rC�f�rs   rG�test_empty_filterz!BasicFilterTest.test_empty_filter�sF���N�����!�6�;�"7�8�8�����������$�$�$�$�$riN)rprqrrr�r�r�rsrirGr�r�ZsD������(�*�*�*�0-�-�-�:%�%�%�%�%rir��x�w�v�u�t�s�r�q�p�ork�Silent�Taciturn�Terse�Effusive�Sociable�Verbose�	Talkative�	Garrulous�
Chatterbox�Boringc��eZdZ	d�ZdS)�GarrulousFilterc�"�|jtkS�N)�levelno�	GARRULOUS�rCr�s  rGr�zGarrulousFilter.filter�s���~��*�*riN�rprqrrr�rsrirGr�r��s&������3�+�+�+�+�+rir�c��eZdZ	d�ZdS)�VerySpecificFilterc�,�|jttfvSr�)r��SOCIABLE�TACITURNr�s  rGr�zVerySpecificFilter.filter�s���~�h��%9�9�9riNr�rsrirGr�r��s&������?�:�:�:�:�:rir�c�2�eZdZ	dZd�Zd�Zd�Zd�Zd�ZdS)�CustomLevelsAndFiltersTest�^[\w.]+ -> (\w+): (\d+)$c��t�|��t���D]\}}t	j||���dSr�)rrH�my_logging_levels�itemsrr�)rC�k�vs   rGrHz CustomLevelsAndFiltersTest.setUp�sS�����t����%�+�+�-�-�	'�	'�D�A�q�� ��A�&�&�&�&�	'�	'ric�j�tD]*}|�||������+dSr�)�LEVEL_RANGEr�rn)rC�logger�lvls   rG�log_at_all_levelsz,CustomLevelsAndFiltersTest.log_at_all_levels�s>���	1�	1�C��J�J�s�D�-�-�/�/�0�0�0�0�	1�	1ric��|j�t��|�|j��|�gd���dS)N)�r�r��r�r��r�r��r�r��r�r��r�r�)r0r6�VERBOSEr�rhrms rG�test_logger_filterz-CustomLevelsAndFiltersTest.test_logger_filter�sa����!�!�'�*�*�*����t�/�0�0�0����
�
�
�	�	�	�	�	ric��|jjd�t��	|�|j��|�gd���|jjd�tj��dS#|jjd�tj��wxYw)Nr)rrrrr)r0r?r6r�r�rhrr�rms rG�test_handler_filterz.CustomLevelsAndFiltersTest.test_handler_filter�s�����!�!�$�-�-�h�7�7�7�	B��"�"�4�#3�4�4�4��!�!�#�#�#�
�
�
�
��%�a�(�1�1�'�.�A�A�A�A�A��D��%�a�(�1�1�'�.�A�A�A�A���s�1B�1B?c�b�|jjd}d}t��}|�|��	|�|j��gd�}|�|��t
��}|j�|��|�|j��|�|gd�z��|r|j�|��|�|��dS#|r|j�|��|�|��wxYw)Nr)	)r�r{)r�r})r�rrrrrrr))r�r�)r��12)r��14)r��15)r��17)r��18)r��20)r0r?r�r�r�rhr�r�)rCr��specific_filter�garr�first_liness     rG�test_specific_filtersz0CustomLevelsAndFiltersTest.test_specific_filters�sY���"�+�A�.����� � �����$����!	'��"�"�4�#3�4�4�4����K�
�!�!�+�.�.�.�0�2�2�O���&�&��7�7�7��"�"�4�#3�4�4�4��!�!�+�
1
�
1
�
1
�
#
�

�

�

��
?�� �-�-�o�>�>�>�� � ��&�&�&�&�&���
?�� �-�-�o�>�>�>�� � ��&�&�&�&���s�BC;�;3D.N)	rprqrrrVrHr�rr
rrsrirGr�r��sm������J�3��'�'�'�
1�1�1����B�B�B� ('�('�('�('�('rir�c�^�eZdZd�Zd�Zd�Zejej	dkd��eje
jd��ej
��e
jd��d���������Ze
j��ej
��ed	�������Zd
S)�HandlerTestc��tj��}d|_|�|jd��d|_|�|jd��|�t
|jd��dS)N�generic�anothergeneric)r�HandlerrErY�assertRaises�NotImplementedError�emit�rCrQs  rG�	test_namezHandlerTest.test_name'so���O�������������+�+�+�!��������!1�2�2�2����-�q�v�t�<�<�<�<�<ric�8�tjdv�rRdD�]�}tj��\}}t	j|��|st	j|��tj�	|dd���}|r�|j
|j}}|�|d��|�|d��tj
ddi��}|�|��t	j|��|�tj�|����|�|��|�tj�|����n6|�|j
d��|�|jd��|���|rt	j|�����tjd	krd
}nd}	tj�|��}|�|j|j��|�|j��|���n#t.$rYnwxYwdD]k}	|	d
kr.|�t2tjjdd|	���6tj�dd|	��}|����ltj�d��}tj
i��}|�|�|����|���tj�d��}|�|�|����|���dS)N��linux�darwin)TF�utf-8T��encoding�delay����msg�Testr$z/var/run/syslogz/dev/log)�GET�POST�PUTr.�	localhostz/logrrk)�sys�platform�tempfile�mkstemp�osrJ�unlinkrr?�WatchedFileHandler�dev�inorYr��handle�assertFalse�path�existsrB�
SysLogHandler�facility�LOG_USER�
unixsocket�OSErrorr�
ValueError�HTTPHandler�BufferingHandler�shouldFlush)
rC�existing�fd�fnrQr7r8r��sockname�methods
          rG�test_builtin_handlersz!HandlerTest.test_builtin_handlers/s%���<�.�.�.�)�
"�
"��!�)�+�+���B��������"��I�b�M�M�M��$�7�7��W�TX�7�Y�Y���0� �u�a�e��C��$�$�S�"�-�-�-��$�$�S�"�-�-�-��-�u�f�o�>�>�A��H�H�Q�K�K�K��I�b�M�M�M��$�$�R�W�^�^�B�%7�%7�8�8�8��H�H�Q�K�K�K��O�O�B�G�N�N�2�$6�$6�7�7�7�7��$�$�Q�U�B�/�/�/��$�$�Q�U�B�/�/�/����	�	�	��"��I�b�M�M�M���|�x�'�'�,���%��
��$�2�2�8�<�<��� � ���Q�Z�8�8�8������-�-�-����	�	�	�	���
�
�
���
����,�	�	�F������!�!�*�g�.>�.J�"-�v�v�?�?�?�?��$�0�0��f�f�M�M�����	�	�	�	���-�-�a�0�0���!�"�%�%������
�
�a�(�(�)�)�)�	���	�	�	���-�-�a�0�0��������q�)�)�*�*�*�	���	�	�	�	�	s�$A-I�
I�Ic�@�	tj��\}}tj|��tj|��tj|��}tj|dfftj	j
|dfftj	j|dfff}tj
dvr|tj	j|dfffz
}|D]g\}}||ddi�}|�tj�|����|���tj|���hdS)N�w�arQr"r'r%)r2r3r4rJr5�pathlib�Pathr�FileHandlerr?�RotatingFileHandler�TimedRotatingFileHandlerr0r1r6rBr;r<)rCrGrH�pfn�cases�cls�argsrQs        rG�test_path_objectszHandlerTest.test_path_objectses��	�
�!�#�#���B�
������
�	�"�
�
�
��l�2�����(�3��*�5��%�9�C��:�F��%�>��c�
�K���
�<�.�.�.��w�'�:�S�#�J�G�I�I�E��	�	�I�C����T�,�G�,�,�A��O�O�B�G�N�N�2�.�.�/�/�/�
�G�G�I�I�I��I�b�M�M�M�M�		�	ri�ntz/WatchedFileHandler not appropriate for Windows.z'Emscripten cannot fstat unlinked files.�walltimec	�D���fd�}d}d}d�_d�_dD�]}tjdd��\}}t	j|��t
j|||f���}d|_|�	��tj�|d|�	��}tj
d
��}	|�|	��	t|��D]�}
t!jd��tjdd
i��}	t!j���_|�|���[#t($r!t+d�j�d�j�����wxYw	|���|���tj�|��rt	j|�����#|���|���tj�|��rt	j|��wwxYwdS)Nc���t|��D]j}	tj|��tj���_n#t
$rYnwxYwtjdtjdd��z���kdS)Ng����Mbp?r�)	�ranger4r5�time�
deletion_timerA�sleep�random�randint)�fname�tries�_rCs   �rG�remove_loopz*HandlerTest.test_race.<locals>.remove_loop�s�����5�\�\�
9�
9����I�e�$�$�$�)-����D�&�&�������D������
�5�6�>�!�Q�#7�#7�7�8�8�8�8�

9�
9s�,A�
A�
Ai��FT�.logztest_logging-3-��targetrWTr%r&z'%(asctime)s: %(levelname)s: %(message)s�{�G�zt?r*�testingzDeleted at z, opened at )�handle_timer`r2r3r4rJ�	threading�Thread�daemon�startrr?r6r:r=r^r_rar�r9�	Exception�printr�r;r<r5)rCrg�	del_count�	log_countr(rGrH�removerrQr�rfr�s`           rG�	test_racezHandlerTest.test_race|s)���	9�	9�	9�	9�	9��	��	����!���"�	"�	"�E��%�f�.?�@�@�F�B���H�R�L�L�L��&�k��Y��P�P�P�G�!�G�N��M�M�O�O�O�� �3�3�B��PU�3�V�V�A��!�"K�L�L�A�
�N�N�1����
"��y�)�)�
�
�A��J�u�%�%�%��-�u�i�.A�B�B�A��+/�9�;�;��(����������$������04�0B�0B�0B�04�0@�0@�B�C�C�C��	����
����������	�	�	��7�>�>�"�%�%�"��I�b�M�M�M������������	�	�	��7�>�>�"�%�%�"��I�b�M�M�M�M�"����1	"�	"s%�	;F?�-D3�2F?�3+E�F?�?AHc�~����	Gd�dtj��}|�ttj��d��|���|��jjj��d�_	|�
ttj��d��|�
ttj��d��tjd��}|�
���|�tj��t!j���t!j������fd�}t!j|d�	��}|�������t+j��}|dkrE	|�d
��t+jd��dS#t+jd��wxYw|�d������|���t7j|d���dS)
Nc�$��eZdZ�fd�Zd�Z�xZS)�AHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandlerc���t�����tjt	ddd������|_dS)Nz	/dev/null�wtr%�r'�r5)�super�__init__rr8�open�sub_handler�rC�	__class__s �rGr�zJHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.__init__�sN������ � �"�"�"�#*�#8���T�G�D�D�D�$F�$F�$F�� � � ric���|j���	|j�|��|j���dS#|j���wxYwr�)r��acquirer�releaser�s  rGrzFHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.emit�si��� �(�(�*�*�*�/��$�)�)�&�1�1�1��$�,�,�.�.�.�.�.��D�$�,�,�.�.�.�.���s�A�A+�rprqrrr�r�
__classcell__�r�s@rG�_OurHandlerr{�sL�������
F�
F�
F�
F�
F�

/�
/�
/�
/�
/�
/�
/rir�rz*because we need at least one for this testrk� test_post_fork_child_no_deadlockc�`��tj��	����	������d������n#����wxYw	tj��dS#tj��wxYw)N��?)rr r��set�waitr�r-)�+fork_happened__release_locks_and_end_thread�locks_held__ready_to_fork�refed_hs���rG�lock_holder_thread_fnzKHandlerTest.test_post_fork_child_no_deadlock.<locals>.lock_holder_thread_fn�s����� �"�"�"�
'����!�!�!�&�-�1�1�3�3�3�@�D�D�S�I�I�I��O�O�%�%�%�%��G�O�O�%�%�%�%����%��$�&�&�&�&�&���$�&�&�&�&���s"�B�)A)�B�)A?�?B�B-z,test_post_fork_child_no_deadlock lock holder)rkrEz#Child process did not deadlock. \o/z&Parent process returned from fork. \o/)�exitcode)rrrYrZr!r�r�r5rJrE�
assertGreater�_at_fork_reinit_lock_weaksetrrAr6r7ro�Eventrprrr�r4�forkr��_exitr�r�r�wait_process)	rCr��test_loggerr��lock_holder_thread�pidr�r�r�s	      @@@rGr�z,HandlerTest.test_post_fork_child_no_deadlock�s4�����	M�	/�	/�	/�	/�	/�'�/�	/�	/�	/�	
����W�.�/�/��3�3�3��+�-�-������+�2�8�9�9�9�C������3�w�0�1�1�1�5�5�5����3�w�C�D�D�a�H�H�H��'�(J�K�K�����w�'�'�'����W�]�+�+�+�$-�O�$5�$5�!�6?�o�6G�6G�3�	'�	'�	'�	'�	'�	'�	'�2'�-�,�C�E�E�E��	� � �"�"�"�!�&�&�(�(�(��g�i�i���!�8�8�
�� � �!G�H�H�H��������������������
���F�G�G�G�7�;�;�=�=�=��#�#�%�%�%�� ��q�1�1�1�1�1�1s�&G�G'N)rprqrrr rKrX�unittest�skipIfr4rEr�
is_emscriptenr�requires_working_threading�requires_resourcerx�
requires_fork�skip_if_asan_forkr�rsrirGrr&s������=�=�=�4�4�4�l���.�X�_�R�W��_�&W�X�X��X�_���H���1��0�2�2��W��z�*�*�*"�*"�+�*�3�2���Y�X�*"�`�W����0��0�2�2��H2�H2���3�2���H2�H2�H2rirc��eZdZd�ZdS)�	BadStreamc� �td���)N�deliberate mistake)�RuntimeError)rC�datas  rG�writezBadStream.writes���/�0�0�0riN)rprqrrr�rsrirGr�r�s#������1�1�1�1�1rir�c��eZdZd�ZdS)�TestStreamHandlerc��||_dSr�)�error_recordr�s  rG�handleErrorzTestStreamHandler.handleErrors��"����riN)rprqrrr�rsrirGr�r�s#������#�#�#�#�#rir�c� �eZdZejZdZdS)�StreamWithIntNamer�N)rprqrrrr��levelrErsrirGr�r�s�������N�E��D�D�Drir�c� �eZdZd�Zd�Zd�ZdS)�StreamHandlerTestc��tt����}tji��}tj}	|�|��|�|j|��tjt����}tj
��5}|�|��d}|�||�����ddd��n#1swxYwYdt_tj
��5}|�|��|�
d|�����ddd��n#1swxYwY|t_dS#|t_wxYw)Nz"
RuntimeError: deliberate mistake
Fr)r�r�rr��raiseExceptionsr9�assertIsr�r8r�captured_stderr�assertInrWrY)rCrQr��	old_raise�stderrr*s      rG�test_error_handlingz%StreamHandlerTest.test_error_handling
s����i�k�k�*�*���!�"�%�%���+�	�	0�
�H�H�Q�K�K�K��M�M�!�.�!�,�,�,��%�i�k�k�2�2�A��(�*�*�
6�f��������<���
�
�c�6�?�?�#4�#4�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6�
',�G�#��(�*�*�
8�f��������� � ��V�_�_�%6�%6�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�'0�G�#�#�#��i�G�#�/�/�/�/sU�A#E9� AC,� E9�,C0�0E9�3C0�4"E9�>E �E9� E$�$E9�'E$�(E9�9Fc�h�	tj��}tj��}|�|��}|�|tj��|�|��}|�||��|�|��}|�|��dSr�)	rr8r3r4�	setStreamr�r0r��assertIsNone)rCrQr5�oldrds     rG�test_stream_settingz%StreamHandlerTest.test_stream_setting#s���	�
�!�#�#��������k�k�&�!�!���
�
�c�3�:�&�&�&����S�!�!���
�
�f�f�%�%�%����S�!�!�����&�!�!�!�!�!ric��tjt����}|�t	|��d��dS)Nz<StreamHandler 2 (NOTSET)>)rr8r�rY�reprrs  rG�'test_can_represent_stream_with_int_namez9StreamHandlerTest.test_can_represent_stream_with_int_name1s<���!�"3�"5�"5�6�6������a���">�?�?�?�?�?riN)rprqrrr�r�r�rsrirGr�r�sF������0�0�0�,"�"�"�@�@�@�@�@rir�c�.�eZdZ	d�Zd�Zd�Zd�Zd�ZdS)�TestSMTPServerc���tj�||d|d���|j���d|_||_d|_d|_||_	dS)NT)�map�decode_datarkF)
r�
SMTPServerr��socket�getsockname�port�_handler�_thread�_quit�
poll_interval)rC�addrr�r��sockmaps     rGr�zTestSMTPServer.__init__Msj��
��!�!�$��d��.2�	"�	4�	4�	4��K�+�+�-�-�a�0��	���
������
�*����ric�8�	|�||||��dSr�)r�)rC�peer�mailfrom�rcpttosr�s     rG�process_messagezTestSMTPServer.process_messageVs'��	�	
�
�
�d�H�g�t�4�4�4�4�4ric��	tj|j|jf���x|_}d|_|���dS�NrjT�rorp�
serve_foreverr�r�rqrr�rC�ts  rGrrzTestSMTPServer.startb�S��	�%�+�4�3E�26�2D�1F�H�H�H�	H���q����	���	�	�	�	�	ric�l�	|js+t�||jd���|j�)dSdS)Nrk)r��count)r�r�loop�_map)rCr�s  rGr�zTestSMTPServer.serve_foreverksS��	��*�	A��M�M�-�T�Y�a�M�@�@�@��*�	A�	A�	A�	A�	Aric��	d|_tj|j��d|_|���t
�|jd���dS)NT)r��
ignore_all)r�r�join_threadr�rJr�	close_allr�rms rG�stopzTestSMTPServer.stopvsX��	���
��$�T�\�2�2�2�����
�
�������t�y�T��:�:�:�:�:riN)rprqrrr�r�rrr�r�rsrirGr�r�8sg�������(+�+�+�
5�
5�
5����	A�	A�	A�	;�	;�	;�	;�	;rir�c�2��eZdZ	d�Zd�Z�fd�Zd�Z�xZS)�ControlMixinc�`�d|_||_||_tj��|_dSr�)r�r�r�ror��ready)rCr�r�s   rGr�zControlMixin.__init__�s+�����*�����
��_�&�&��
�
�
ric��	tj|j|jf���x|_}d|_|���dSr�r�r�s  rGrrzControlMixin.start�r�ric���	|j���tt|���|��dSr�)r�r�r�r�r�)rCr�r�s  �rGr�zControlMixin.serve_forever�s@���	�	
�
������
�l�D�!�!�/�/�
�>�>�>�>�>ric���	|���|j� tj|j��d|_|���|j���dSr�)�shutdownr�rr��server_closer�rLrms rGr�zControlMixin.stop�sd��	�	
�
�
�����<�#��(���6�6�6��D�L��������
�������ri)rprqrrr�rrr�r�r�r�s@rGr�r��sj��������'�'�'����?�?�?�?�?�	�	�	�	�	�	�	rir�c�"�eZdZ			dd�Zd�ZdS)�TestHTTPServerr�FNc����G��fd�dt���tj||���t�|||��||_dS)Nc�2���eZdZdd�Zd�Z���fd�Z�xZS)�=TestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandlerNc�X�|�d��r|jSt|���)N�do_)�
startswith�process_request�AttributeError)rCrE�defaults   rG�__getattr__zITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.__getattr__�s-���?�?�5�)�)�0��/�/�$�T�*�*�*ric�:�|j�|��dSr���serverr�rms rGr�zMTestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.process_request������$�$�T�*�*�*�*�*ric�H���rt�|��j|g|�R�dSdSr�)r��log_message)rC�formatrW�DelegatingHTTPRequestHandlerr�r�s   ���rGrzITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.log_message�sW����;�,�E�6�� � � +�F�;�59�;�;�;�;�;�;�;�;rir�)rprqrrrr�rr�)r�rr�s@��rGrr��sf��������
+�
+�
+�
+�

+�
+�
+�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;rir)rrr�r��sslctx)rCr�r�r�r�r	rs    ` @rGr�zTestHTTPServer.__init__�sy����	;�	;�	;�	;�	;�	;�	;�	;�+A�	;�	;�	;�	��D�$�(D�E�E�E����d�G�]�;�;�;�����ric��	|j���\}}|jr|j�|d���}n5#t$r(}t
j�d|z���d}~wwxYw||fS)NT)�server_sidezGot an error:
%s
)r��acceptr	�wrap_socketrAr0r�r�)rC�sockr��es    rG�get_requestzTestHTTPServer.get_request�s���	���+�+�-�-�J�D�$��{�
G��{�.�.�t��.�F�F�����	�	�	��J���2�Q�6�7�7�7������	�����T�z�s�?A�
A4�#A/�/A4)r�FN)rprqrrr�rrsrirGr�r��sD������	�58�#'�����&	�	�	�	�	rir�c�0��eZdZ	dZ		dd�Z�fd�Z�xZS)�
TestTCPServerTr�c��Gd�dt��}tj||||��t�|||��dS)Nc��eZdZd�ZdS)�;TestTCPServer.__init__.<locals>.DelegatingTCPRequestHandlerc�:�|j�|��dSr�rrms rGr9zBTestTCPServer.__init__.<locals>.DelegatingTCPRequestHandler.handle�rriN)rprqrrr9rsrirG�DelegatingTCPRequestHandlerr�s#������
+�
+�
+�
+�
+rir)rrr�r�)rCr�r�r��bind_and_activaters      rGr�zTestTCPServer.__init__�sl��	+�	+�	+�	+�	+�*>�	+�	+�	+�	�#�D�$�0K�$5�	7�	7�	7����d�G�]�;�;�;�;�;ric���tt|�����|j���d|_dS�Nrk)r�r�server_bindr�r�r�r�s �rGrzTestTCPServer.server_bind��=���
�m�T�"�"�.�.�0�0�0��K�+�+�-�-�a�0��	�	�	ri�r�T)rprqrr�allow_reuse_addressr�rr�r�s@rGrr�s_����������47�#'�<�<�<�<�1�1�1�1�1�1�1�1�1rirc�6��eZdZ			dd�Z�fd�Z�fd�Z�xZS)�
TestUDPServerr�Tc���G�fd�dt���tj||�|��t�|||��d|_dS)Nc�(���eZdZd�Z��fd�Z�xZS)�;TestUDPServer.__init__.<locals>.DelegatingUDPRequestHandlerc�:�|j�|��dSr�rrms rGr9zBTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.handlerric����|j���}|rC	t�|�����dS#t$r|jjs�YdSwxYwdSr�)�wfilerWr��finishrAr�_closed)rCr��DelegatingUDPRequestHandlerr�s  ��rGr'zBTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.finishs�����z�*�*�,�,���"�"��9�4�@�@�G�G�I�I�I�I�I��"�"�"�"�#�{�2�"�!�"�"�"�"����"�"s�"A�A�A)rprqrrr9r'r�)r�r)s@�rGr)r#sM��������
+�
+�
+�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"rir)F)rrr�r�r()rCr�r�r�rr)s     @rGr�zTestUDPServer.__init__
s~���	"�	"�	"�	"�	"�	"�	"�*@�	"�	"�	"�	�#�D�$�$?�$5�	7�	7�	7�	���d�G�]�;�;�;�����ric���tt|�����|j���d|_dSr)r�r rr�r�r�r�s �rGrzTestUDPServer.server_bind#rric�d��tt|�����d|_dS)NT)r�r r�r(r�s �rGr�zTestUDPServer.server_close's*���
�m�T�"�"�/�/�1�1�1�����rir)rprqrrr�rr�r�r�s@rGr r �sr�������� 58�#'�����,1�1�1�1�1���������rir �AF_UNIXc��eZdZejZdS)�TestUnixStreamServerN�rprqrrr�r,�address_familyrsrirGr.r.,�����������rir.c��eZdZejZdS)�TestUnixDatagramServerNr/rsrirGr3r3/r1rir3c�(�eZdZejZd�Zd�ZdS)�SMTPHandlerTestc���i}ttjdf|jd|��}|���tj|jf}tj�|ddd|j	���}|�
|jdg��g|_t
j
ddi��}tj��|_|�|��|j�|j	��|���|�|j�����|�
t-|j��d	��|jd\}}}}	|�
|d��|�
|dg��|�d
|	��|�|	�d����|���dS)Nr���MbP?�me�you�Log)�timeoutr*u	Hello ✓rkz
Subject: Log
u

Hello ✓)r�r�HOSTr�rrr�rr?�SMTPHandler�TIMEOUTrY�toaddrs�messagesr�ror��handledr9r�r�rB�is_setrZr��endswithrJ)
rCr�rr�rQr�r�r�r�r�s
          rG�
test_basiczSMTPHandlerTest.test_basic:s�������!3�Q� 7��9M�u� '�)�)���������"�F�K�0����(�(��t�U�E�15��
)�
?�
?�������U�G�,�,�,���
��!�5�.�"9�:�:�� ��(�(���	�����������$�,�'�'�'����
�
�
������+�+�-�-�.�.�.�����T�]�+�+�Q�/�/�/�(,�
�a�(8�%��h�������4�(�(�(�����5�'�*�*�*��
�
�(�$�/�/�/�����
�
�&8�9�9�:�:�:�	���	�	�	�	�	ric�l�|j�|��|j���dSr�)r@�appendrAr�)rCrWs  rGr�zSMTPHandlerTest.process_messageRs2���
���T�"�"�"���������riN)rprqrrr�LONG_TIMEOUTr>rDr�rsrirGr5r54s<�������"�G����0����rir5c�\�eZdZ	dZd�Zd�Zd�Zd�Zej	��d���Z
dS)�MemoryHandlerTestr�c�,�t�|��tj�dtj|j��|_tjd��|_	d|j	_
|j	�|j��dS)N�
�memr)rrHrr?�
MemoryHandlerr�r9�mem_hdlrr�
mem_logger�	propagaterArms rGrHzMemoryHandlerTest.setUp]su�����t�����(�6�6�r�7�?�7;�~�G�G��
�!�+�E�2�2���$%���!���"�"�4�=�1�1�1�1�1ric�l�|j���t�|��dSr�)rNrJrrRrms rGrRzMemoryHandlerTest.tearDowne�0���
���������$�����ric��|j�|�����|�g��|j�|�����|�g��|j�|�����gd�}|�|��dD]�}t
d��D].}|j�|������/|�|��|j�|�����|d�t
||dz��D��z}|�|����|j�|�����|�|��dS)N)�r7r{�r�r})r�r~)r]��	c�0�g|]}dt|��f��S)r7)�str)�.0�is  rG�
<listcomp>z0MemoryHandlerTest.test_flush.<locals>.<listcomp>s#��I�I�I�1�g�s�1�v�v�.�I�I�IrirK)rOr�rnrhr�r�r^)rC�lines�nr[s    rG�
test_flushzMemoryHandlerTest.test_flushis���	
����d�/�/�1�1�2�2�2����b�!�!�!�����T�.�.�0�0�1�1�1����b�!�!�!������ 1� 1� 3� 3�4�4�4�
�
�
��
	
���e�$�$�$��	)�	)�A��1�X�X�
;�
;����%�%�d�&7�&7�&9�&9�:�:�:�:��!�!�%�(�(�(�
�O�!�!�$�"3�"3�"5�"5�6�6�6��I�I��a��R��8H�8H�I�I�I�I�E��!�!�%�(�(�(�(�����d�/�/�1�1�2�2�2����e�$�$�$�$�$ric��	|j�|�����|�g��|j�|�����|�g��|j�|j��|j���ddg}|�|��tj	�
dtj|jd��|_|j�
|j��|j�|�����|�|��|j�|�����|�|��|j�|j��|j���|�|��dS)NrTrUrKF)rOr�rnrhr�rKrNrJrr?rMr�r9rA)rCr]s  rG�test_flush_on_closez%MemoryHandlerTest.test_flush_on_close�s���	�	
����d�/�/�1�1�2�2�2����b�!�!�!�����T�.�.�0�0�1�1�1����b�!�!�!���%�%�d�m�4�4�4��
��������
��	
���e�$�$�$��(�6�6�r�7�?�7;�~�7<�>�>��
�	
��"�"�4�=�1�1�1�����d�/�/�1�1�2�2�2����e�$�$�$�����T�.�.�0�0�1�1�1����e�$�$�$���%�%�d�m�4�4�4��
���������e�$�$�$�$�$ric��Gd�d��}||j��}	|j�|��td��D]J}tjd��|j�d��|j�d���K	|jD]}tj
|���dS#|jD]}tj
|���wxYw)Nc� �eZdZd�Zd�Zd�ZdS)�ZMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandlerc�"�||_g|_dSr�)rN�threads)rCrNs  rGr�zcMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.__init__�s�� (��
�!����ric�:�|j�d��dSr�)rN�	setTargetrms rG�removeTargetzgMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.removeTarget�s���
�'�'��-�-�-�-�-ric��tj|j���}|j�|��|���dS)N)rk)rorprirfrFrr)rCr*�threads   rGr9zaMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.handle�s?��"�)��1B�C�C�C����#�#�F�+�+�+��������riN)rprqrrr�rir9rsrirG�MockRaceConditionHandlerrd�sA������
"�
"�
"�
.�
.�
.�
�
�
�
�
rirlrKrlznot flushed�flushed)rNrhr^r_rarOr�r�rfrr�)rCrlrkrfrks     rG�&test_race_between_set_target_and_flushz8MemoryHandlerTest.test_race_between_set_target_and_flush�s��	�	�	�	�	�	�	�	�*�)�$�-�8�8��		5��M�#�#�F�+�+�+��2�Y�Y�
3�
3���
�5�!�!�!���$�$�]�3�3�3���'�'�	�2�2�2�2�
3�
!�.�
5�
5�� �,�V�4�4�4�4�
5�
5��&�.�
5�
5�� �,�V�4�4�4�4�
5���s�A4B4�4 CN)rprqrrrVrHrRr_rarr�rnrsrirGrIrIVs�������&�3��2�2�2� � � �%�%�%�8%�%�%�<1��0�2�2�5�5�3�2�5�5�5rirIc��eZdZ	d�ZdS)�ExceptionFormatterc�"�d|djzS)Nz
Got a [%s]r)rp)rC�eis  rG�formatExceptionz"ExceptionFormatter.formatException�s���b��e�n�,�,riN)rprqrrrsrsrirGrprp�s&������(�-�-�-�-�-rirpc�<�eZdZ	ejZdZdZdZdZe�	dd��Z
e�	dd��Zd	ezd
zZe�	dd��Z
d
ZdZdZdZd�Zd�Zd�Zefd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d �Z!d!�Z"d"S)#�ConfigFileTest�^(\w+) \+\+ (\w+)$aN
    [loggers]
    keys=root

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=hand1

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=
    a�
    [loggers]
    keys=root,parser

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=

    [logger_parser]
    level=DEBUG
    handlers=hand1
    propagate=1
    qualname=compiler.parser

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=
    a�
    [loggers]
    keys=root,parser

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=hand1

    [logger_parser]
    level=DEBUG
    handlers=
    propagate=1
    qualname=compiler.parser

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=
    z
sys.stdoutz
sys.stboutzformatter=form1zformatter=misspelled_namea
    [loggers]
    keys=root

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=NOTSET
    handlers=hand1

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [formatter_form1]
    class=zS.ExceptionFormatter
    format=%(levelname)s:%(name)s:%(message)s
    datefmt=
    zclass=StreamHandlerzclass=logging.StreamHandlerag
    [loggers]
    keys=root,parser

    [handlers]
    keys=hand1, hand2

    [formatters]
    keys=form1, form2

    [logger_root]
    level=WARNING
    handlers=

    [logger_parser]
    level=DEBUG
    handlers=hand1
    propagate=1
    qualname=compiler.parser

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stdout,)

    [handler_hand2]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    args=(sys.stderr,)

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=

    [formatter_form2]
    format=%(message)s
    datefmt=
    a%
    [loggers]
    keys=root,parser,compiler

    [handlers]
    keys=hand1

    [formatters]
    keys=form1

    [logger_root]
    level=WARNING
    handlers=hand1

    [logger_compiler]
    level=DEBUG
    handlers=
    propagate=1
    qualname=compiler

    [logger_parser]
    level=DEBUG
    handlers=
    propagate=1
    qualname=compiler.parser

    [handler_hand1]
    class=StreamHandler
    level=NOTSET
    formatter=form1
    kwargs={'stream': sys.stdout,}

    [formatter_form1]
    format=%(levelname)s ++ %(message)s
    datefmt=
    a
    [loggers]
    keys=root

    [handlers]
    keys=file

    [formatters]
    keys=

    [logger_root]
    level=DEBUG
    handlers=file

    [handler_file]
    class=FileHandler
    level=DEBUG
    args=("{tempfile}",)
    kwargs={{"encoding": "utf-8"}}
    z�
    [loggers]
    keys=root

    [handlers]
    keys=screen

    [formatters]
    keys=

    [logger_root]
    level=DEBUG
    handlers=screen

    [handler_screen]
    level=DEBUG
    class=StreamHandler
    args=(sys.stdout,)
    formatter=
    c��tjtj|����}t	jj|fddi|��dS)Nr'r%)r3r4�textwrap�dedentr�config�
fileConfig)rC�conf�kwargs�files    rG�apply_configzConfigFileTest.apply_config�sA���{�8�?�4�0�0�1�1����!�$�C�C��C�F�C�C�C�C�Cric��tj��5}|�|j��t	j��}|�|�����|�|�����|�	dg|���|�	g��ddd��dS#1swxYwYdS�N�r|r}r�
r�captured_stdoutr�config0rrr�rnr�rh�rC�outputr�s   rG�test_config0_okzConfigFileTest.test_config0_ok����
�
$�
&�
&�	&�&����d�l�+�+�+��&�(�(�F��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-��!�!��#��
"�
�
�
�
�!�!�"�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&��B)C
�
C�Cc�^�tj��5}tjt	j|j����}tj��}|�	|��tj�|��tj
��}|�|�����|�|�����|�dg|���|�g��ddd��dS#1swxYwYdSr�)rr�r3r4rxryr��configparser�ConfigParser�	read_filerrzr{rr�rnr�rh)rCr�r~�cpr�s     rG�test_config0_using_cp_okz'ConfigFileTest.test_config0_using_cp_ok�sK��
�
$�
&�
&�	&�&��;�x��t�|�<�<�=�=�D��*�,�,�B��L�L������N�%�%�b�)�)�)��&�(�(�F��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-��!�!��#��
"�
�
�
�
�!�!�"�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&s�DD"�"D&�)D&c��tj��5}|�|��tjd��}|�|�����|�|�����|�ddg|���|�g��ddd��dS#1swxYwYdS�N�compiler.parser�r�r{r�r�	rr�rrrr�rnr�rh�rCrzr�r�s    rG�test_config1_okzConfigFileTest.test_config1_ok����
�
$�
&�
&�	&�&����f�%�%�%��&�'8�9�9�F��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-��!�!���#��
"�
�
�
�

�!�!�"�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&��B&C�C�Cc�R�|�t|j|j��dSr��rrsr�config2rms rG�test_config2_failurez#ConfigFileTest.test_config2_failure��%�����)�T�%6���E�E�E�E�Eric�R�|�t|j|j��dSr��rrsr�config3rms rG�test_config3_failurez#ConfigFileTest.test_config3_failure�r�ric���tj��5}|�|j��t	j��}	t
���#t$rt	jd��YnwxYwtj	�
d��|�|���d��|�
g��ddd��dS#1swxYwYdS�Nzjust testingrz-ERROR:root:just testing
Got a [RuntimeError]
)rr�r�config4rrr��	exceptionr0�stdout�seekrYrWrhr�s   rG�test_config4_okzConfigFileTest.test_config4_oks+��
�
$�
&�
&�	&�&����d�l�+�+�+��&�(�(�F�
2�"�n�n�$���
2�
2�
2��!�.�1�1�1�1�1�
2�����J�O�O�A�������V�_�_�.�.�A�
C�
C�
C�
�!�!�"�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&s0�.C�A�A2�/C�1A2�2AC�C"�%C"c�<�|�|j���dS�N)rz�r��config5rms rG�test_config5_okzConfigFileTest.test_config5_ok�!�����D�L��1�1�1�1�1ric�<�|�|j���dSr�)r��config6rms rG�test_config6_okzConfigFileTest.test_config6_okr�ric��tj��5}|�|j��t	jd��}t	jd��}|�|�����|�|�����|�	|�����|�
gd�|���|�
g��ddd��n#1swxYwYtj��5}|�|j��t	jd��}|�|j
��|�|�����|�|�����t	jd��}|�|�����|�|�����|�	|�����|�
gd�|���|�
g��ddd��dS#1swxYwYdS�Nr�zcompiler-hyphenated)r�r�)rzr~r�compiler.lexer))r�r)r|r�)r�r�)r|r�)rr�r�config1arrr�rnr��criticalrh�config7r:r�rCr�r��
hyphenateds    rG�test_config7_okzConfigFileTest.test_config7_oks���
�
$�
&�
&�	&�&����d�m�,�,�,��&�'8�9�9�F�!�*�+@�A�A�J��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-����� 1� 1� 3� 3�4�4�4��!�!�#�#�#��	
"�
�
�
�
�!�!�"�%�%�%�'	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�(�
$�
&�
&�	&�&����d�l�+�+�+��&�'8�9�9�F����V�_�-�-�-��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-��&�'7�8�8�F��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-����� 1� 1� 3� 3�4�4�4��!�!�#�#�#�
�
"�
�
�
�
�!�!�"�%�%�%�)	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&�%�C&D�D
�
D
�$EI?�?J�Jc���d�}|���5tjdd��\}}tj|��tjdkr|�dd��}|j�|���}|�	|��|�	|��ddd��n#1swxYwYtjjd}|�
|||��dS)	Nc�V�|���tj|��dSr��rJr4�remove��h1rHs  rG�cleanupz/ConfigFileTest.test_config8_ok.<locals>.cleanupC� ���H�H�J�J�J��I�b�M�M�M�M�Mriri�test_logging-X-rY�\z\\)r2r)�check_no_resource_warningr2r3r4rJrE�replace�config8rrr�rootr?r�)rCr�rGrHr�r�s      rG�test_config8_okzConfigFileTest.test_config8_okAs+��	�	�	��
+�
+�
-�
-�	'�	'��%�f�.?�@�@�F�B���H�R�L�L�L��w�$����Z�Z��f�-�-���l�)�)�2�)�6�6�G����g�&�&�&����g�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'��,�'��*�������"�-�-�-�-�-s�BB<�<C�Cc�j�|�|j��tjd��}|�|j��|�|j��|�|j��|�|jd���|�|j��dS)N�some_pristine_loggerF)�disable_existing_loggers)r�disable_testrrr:rrB�rCr�s  rG�test_logger_disablingz$ConfigFileTest.test_logger_disablingXs������$�+�,�,�,��"�#9�:�:�������)�)�)����$�+�,�,�,������(�(�(����$�+�e��L�L�L������)�)�)�)�)ric��d}|�|��|�tj��jdjd��dS)Naw
            [loggers]
            keys=root

            [handlers]
            keys=hand1

            [formatters]
            keys=form1

            [logger_root]
            handlers=hand1

            [handler_hand1]
            class=StreamHandler
            formatter=form1

            [formatter_form1]
            format=%(levelname)s ++ %(message)s
            r�hand1)rrYrrr?rE)rC�test_configs  rG�test_config_set_handler_namesz,ConfigFileTest.test_config_set_handler_namesasO����(	
���+�&�&�&�����*�,�,�5�a�8�=�w�G�G�G�G�Gric��d}tjtj|����}|�t
tjj|��dS)Na�
            [loggers]
            keys=root

            [handlers]
            keys=hand1

            [formatters]
            keys=form1

            [logger_root]
            handlers=hand1

            [handler_hand1]
            class=StreamHandler
            formatter=form1

            [formatter_form1]
            format=%(levelname)s ++ %(message)s

            prince
            )	r3r4rxryrr�rrzr{)rCr�r~s   rG�'test_exception_if_confg_file_is_invalidz6ConfigFileTest.test_exception_if_confg_file_is_invalidysG����.�{�8�?�;�7�7�8�8�����,���(A�4�H�H�H�H�Hric���tjdd���\}}tj|��|�t
tjj|��tj	|��dS)N�test_empty_�.ini�r��suffix)
r2r3r4rJrr�rrzr{r�)rCrGrHs   rG�%test_exception_if_confg_file_is_emptyz4ConfigFileTest.test_exception_if_confg_file_is_empty�sV���!��v�F�F�F���B�
���������,���(A�2�F�F�F�
�	�"�
�
�
�
�
ric�\�|�ttjjd��dS)N�filenotfound)r�FileNotFoundErrorrrzr{rms rG�,test_exception_if_config_file_does_not_existz;ConfigFileTest.test_exception_if_config_file_does_not_exist�s&�����+�W�^�-F��W�W�W�W�Wric
���	tjd�����}tjdd���\}}	tj||�d����tj|��tj
�|dtddd	d
ddd
�i������tj
|��dS#tj
|��wxYw)Nat
            [formatters]
            keys=default

            [formatter_default]

            [handlers]
            keys=console

            [handler_console]
            class=logging.StreamHandler
            args=tuple()

            [loggers]
            keys=root

            [logger_root]
            formatter=default
            handlers=console
            �
test_logging_r�r��asciir%rkFrz5%(asctime)s [%(process)d] [%(levelname)s] %(message)sz[%Y-%m-%d %H:%M:%S %z]zlogging.Formatter)r�datefmt�class)�versionr��
formatters)r'�defaults)rxry�stripr2r3r4r��encoderJrrzr{�dictr5)rC�inirGrHs    rG�!test_defaults_do_no_interpolationz0ConfigFileTest.test_defaults_do_no_interpolation�s���<��o����&����'	�(�!���H�H�H���B�	��H�R����G�,�,�-�-�-��H�R�L�L�L��N�%�%�� ���-2�!�&]�'?�%8�$�$� �
�
�
�
&�
�
�
� 
�I�b�M�M�M�M�M��B�I�b�M�M�M�M���s
�A4C�C"N)#rprqrrr	r�rVr��config1r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rsrirGruru�s�������?� /� I��,���G�4�G�@�H�@�o�o�l�L�9�9�G��o�o�/�1L�M�M�G��*�+�*�+�G�6�o�o�3�5R�S�S�G�'�G�T#�G�L�G�*�L�*D�D�D�
&�
&�
&�&�&�&�$&-�
&�
&�
&�
&�F�F�F�F�F�F�
&�
&�
&�2�2�2�2�2�2�)&�)&�)&�V.�.�.�.*�*�*�H�H�H�0I�I�I�6���X�X�X�*�*�*�*�*riruc�6�eZdZ	eZdZd�Zd�Zd�Zd�Z	d�Z
dS)�SocketHandlerTest�r/rc���	t�|��dx|_x|_|_	|�|j|jd��x|_}|���n#t$r}||_Yd}~dSd}~wwxYw|j
���tj
j}t|jt"��r|d|j��|_n||jd��|_d|_|j�|jj
d��|j�|j��t/jd��|_dS�N�{�G�z�?r/rr)rrHr�	sock_hdlr�server_exception�server_class�address�
handle_socketrrrAr�r�rr?�
SocketHandler�
isinstance�server_addressr^r��
log_outputr0rKrAro�	SemaphorerA�rCrr�hclss    rGrHzSocketHandlerTest.setUp�sa��	7����t����?C�C���C�d�n�t�'<�	�#'�#4�#4�T�\�59�5G��$O�$O�
O�D�K�&��L�L�N�N�N�N���	�	�	�$%�D�!��F�F�F�F�F�����	����	���������-���f�+�U�3�3�	?�!�T�+�v�{�;�;�D�N�N�!�T�&�"7��>�>�D�N������&�&�t�'7�'@��'C�D�D�D���#�#�D�N�3�3�3� �*�1�-�-������<A/�/
B�9B�Bc�:�		|jr8|j�|j��|j���|jr|j���t�|��dS#t�|��wxYwr�)r�r0rKrJrr�rrRrms rGrRzSocketHandlerTest.tearDown�s���&�	$��~�
'�� �.�.�t�~�>�>�>���$�$�&�&�&��{�
#��� � �"�"�"����d�#�#�#�#�#��H���d�#�#�#�#�����AA>�>Bc��|j}	|�d��}t|��dkrdStjd|��d}|�|��}t|��|kr;||�|t|��z
��z}t|��|k�;tj|��}tj|��}|xj	|j
dzz
c_	|j�����)NTr]�>Lr�
)
�
connection�recvrZ�struct�unpack�pickle�loadsrr�r�r*rAr�)rC�request�conn�chunk�slen�objr�s       rGr�zSocketHandlerTest.handle_socket�s����!��	#��I�I�a�L�L�E��5�z�z�A�~�~����=��u�-�-�a�0�D��I�I�d�O�O�E��e�*�*�t�#�#���	�	�$��U���*;� <� <�<���e�*�*�t�#�#��,�u�%�%�C��*�3�/�/�F��O�O�v�z�D�0�0�O�O��L� � �"�"�"�	#ric�^�|jr|�|j��tjd��}|�d��|j���|�d��|j���|�|j	d��dS)N�tcpr��eggs�
spam
eggs
)
r��skipTestrrr�rAr�r�rYr�r�s  rG�test_outputzSocketHandlerTest.test_outputs���� �	1��M�M�$�/�0�0�0��"�5�)�)�����V��������������V����������������.�9�9�9�9�9ric��|jr|�|j��d|j_|j���	t
d���#t$r|j�d��YnwxYw|j�	d��tj
��}|�|jj|��tj
|jj|z
dz��|j�	d��dS)Ng@zDeliberate mistakez
Never sentzNever sent, eitherr7zNor this)r�rr��
retryStartrr�r�r0r�r�r_r��	retryTimera)rC�nows  rG�
test_noserverzSocketHandlerTest.test_noservers��� �	1��M�M�$�/�0�0�0�%(���!��������	5��3�4�4�4���	5�	5�	5���&�&�|�4�4�4�4�4�	5��������3�4�4�4��i�k�k�����4�>�3�S�9�9�9��
�4�>�+�c�1�E�9�:�:�:�����z�*�*�*�*�*s�A�$A>�=A>N)rprqrrrr�r�rHrRr�rrrsrirGr�r��sn������*� �L��G�.�.�.�4	$�	$�	$�
#�
#�
#�	:�	:�	:�+�+�+�+�+rir�c��tjdd���\}}tj|��tj|��|S)Nr�z.sockr�)r2r3r4rJr�)rGrHs  rG�_get_temp_domain_socketr%s<��
�
�_�W�
E�
E�
E�F�B���H�R�L�L�L��I�b�M�M�M�
�IrizUnix sockets requiredc�8�eZdZ	eed��reZd�Zd�ZdS)�UnixSocketHandlerTestr,c�`�t��|_t�|��dSr�)rr�r�rHrms rGrHzUnixSocketHandlerTest.setUp5�)��.�0�0�������%�%�%�%�%ric�l�t�|��tj|j��dSr�)r�rRrr5r�rms rGrRzUnixSocketHandlerTest.tearDown:�/���"�"�4�(�(�(�����&�&�&�&�&riN)	rprqrr�hasattrr�r.r�rHrRrsrirGr!r!-sP������4��w�v�y�!�!�,�+��&�&�&�
'�'�'�'�'rir!c�0�eZdZ	eZdZd�Zd�Zd�Zd�Z	dS)�DatagramHandlerTestr�c���	t�|��dx|_x|_|_	|�|j|jd��x|_}|���n#t$r}||_Yd}~dSd}~wwxYw|j
���tj
j}t|jt"��r|d|j��|_n||jd��|_d|_|j�|jj
d��|j�|j��t/j��|_dSr�)rrHrr�r�r�r��handle_datagramrrrAr�r�rr?�DatagramHandlerr�r�r^r�r�r0rKrAror�rArs    rGrHzDatagramHandlerTest.setUpGs^��	7����t����?C�C���C�d�n�t�'<�	�#'�#4�#4�T�\�59�5I�4�$Q�$Q�
Q�D�K�&��L�L�N�N�N�N���	�	�	�$%�D�!��F�F�F�F�F�����	����	���������/���f�+�U�3�3�	?�!�T�+�v�{�;�;�D�N�N�!�T�&�"7��>�>�D�N������&�&�t�'7�'@��'C�D�D�D���#�#�D�N�3�3�3� ��(�(����rc�:�		|jr|j���|jr8|j�|j��|j���t�|��dS#t�|��wxYwr�)rr�r�r0rKrJrrRrms rGrRzDatagramHandlerTest.tearDownas���&�	$��{�
#��� � �"�"�"��~�
'�� �.�.�t�~�>�>�>���$�$�&�&�&����d�#�#�#�#�#��H���d�#�#�#�#���rc��tjdd��}|jt|��d�}t	j|��}t
j|��}|xj|j	dzz
c_|j
���dS)Nrrr)r
�pack�packetrZrr
rr�r�r*rAr�)rCrrr/rr�s      rGr*z#DatagramHandlerTest.handle_datagramlsy���{�4��#�#�����D�	�	�
�
�+���l�6�"�"���&�s�+�+�����6�:��,�,�����������ric��|jr|�|j��tjd��}|�d��|j���|j���|�d��|j���|�|j	d��dS)N�udpr�rr)
r�rrrr�rAr�rLrYr�r�s  rGrzDatagramHandlerTest.test_outputts���� �	1��M�M�$�/�0�0�0��"�5�)�)�����V���������������������V����������������.�9�9�9�9�9riN)
rprqrrr r�r�rHrRr*rrsrirGr(r(>s_������$� �L��G�)�)�)�4	$�	$�	$����
:�
:�
:�
:�
:rir(c�8�eZdZ	eed��reZd�Zd�ZdS)�UnixDatagramHandlerTestr,c�`�t��|_t�|��dSr�)rr�r(rHrms rGrHzUnixDatagramHandlerTest.setUp�s)��.�0�0����!�!�$�'�'�'�'�'ric�l�t�|��tj|j��dSr�)r(rRrr5r�rms rGrRz UnixDatagramHandlerTest.tearDown�s/���$�$�T�*�*�*�����&�&�&�&�&riN�	rprqrrr&r�r3r�rHrRrsrirGr3r3�sP������7��w�v�y�!�!�.�-��(�(�(�
'�'�'�'�'rir3c�6�eZdZ	eZdZd�Zd�Zd�Zd�Z	d�Z
dS)�SysLogHandlerTestr�c���	t�|��dx|_x|_|_	|�|j|jd��x|_}|���n#t$r}||_Yd}~dSd}~wwxYw|j
���tj
j}t|jt"��r#||jd|jf��|_n||j��|_d|_|j�|jj
d��|j�|j��t/j��|_dS)Nr�rri)rrHr�sl_hdlrr�r�r�r*rrrAr�r�rr?r=r�r�r^r�r�r0rKrAror�rArs    rGrHzSysLogHandlerTest.setUp�sg��	7����t����=A�A���A�d�l�T�%:�	�#'�#4�#4�T�\�59�5I�4�$Q�$Q�
Q�D�K�&��L�L�N�N�N�N���	�	�	�$%�D�!��F�F�F�F�F�����	����	���������-���f�+�U�3�3�	7��4��!6�q�!9�6�;� G�H�H�D�L�L��4�� 5�6�6�D�L������&�&�t�'7�'@��'C�D�D�D���#�#�D�L�1�1�1� ��(�(����rc�:�		|jr|j���|jr8|j�|j��|j���t�|��dS#t�|��wxYwr�)rr�r:r0rKrJrrRrms rGrRzSysLogHandlerTest.tearDown�s���"�	$��{�
#��� � �"�"�"��|�
%�� �.�.�t�|�<�<�<���"�"�$�$�$����d�#�#�#�#�#��H���d�#�#�#�#���rc�P�|j|_|j���dSr�)r/r�rAr�)rCrs  rGr*z!SysLogHandlerTest.handle_datagram�s%��!�.�����������ric��|jr|�|j��tjd��}|�d��|j�tj��|�	|j
d��|j���d|j_
|�d��|j�tj��|�	|j
d��|j���d|j_|�d��|j�tj��|�	|j
d��dS)N�slh�späm�
<11>spämFs	<11>spämuhäm-s<11>häm-späm)r�rrrr�rAr�rrGrYr�rLr:�
append_nul�identr�s  rGrzSysLogHandlerTest.test_output�s@��� �	1��M�M�$�/�0�0�0��"�5�)�)�����Y��������'�.�/�/�/������*@�A�A�A��������"'�������Y��������'�.�/�/�/������*<�=�=�=��������&�������Y��������'�.�/�/�/������*G�H�H�H�H�Hric�:�tjd��}|j���|j���|�d��|j�tj	��|�
|jd��dS)Nr>r?r@)rrr:rJrArLr�r�rrGrYr�r�s  rG�test_udp_reconnectionz'SysLogHandlerTest.test_udp_reconnection�s����"�5�)�)�������������������Y��������'�.�/�/�/������*@�A�A�A�A�AriN)rprqrrr r�r�rHrRr*rrDrsrirGr8r8�sv������,� �L��G�)�)�)�4	$�	$�	$����I�I�I�&B�B�B�B�Brir8c�8�eZdZ	eed��reZd�Zd�ZdS)�UnixSysLogHandlerTestr,c�`�t��|_t�|��dSr�)rr�r8rHrms rGrHzUnixSysLogHandlerTest.setUp�r#ric�l�t�|��tj|j��dSr�)r8rRrr5r�rms rGrRzUnixSysLogHandlerTest.tearDown�r%riNr6rsrirGrFrF�sP������4��w�v�y�!�!�.�-��&�&�&�
'�'�'�'�'rirFz$IPv6 support required for this test.c�2��eZdZ	eZdZ�fd�Z�fd�Z�xZS)�IPv6SysLogHandlerTest)z::1rc���tj|j_t	t
|�����dSr�)r��AF_INET6r�r0r�rJrHr�s �rGrHzIPv6SysLogHandlerTest.setUp�s3���+1�?���(�
�#�T�*�*�0�0�2�2�2�2�2ric���tj|j_t	t
|�����dSr�)r��AF_INETr�r0r�rJrRr�s �rGrRzIPv6SysLogHandlerTest.tearDown�s3���+1�>���(�
�#�T�*�*�3�3�5�5�5�5�5ri)	rprqrrr r�r�rHrRr�r�s@rGrJrJ�s`�������1� �L��G�3�3�3�3�3�6�6�6�6�6�6�6�6�6rirJc�"�eZdZ	d�Zd�Zd�ZdS)�HTTPHandlerTestc�l�	t�|��tj��|_dSr�)rrHror�rArms rGrHzHTTPHandlerTest.setUps,��	7����t���� ��(�(����ric�|�|j|_t|j��|_|jdkrI	t	|jd��}|j�|��|_n#d|_YnxYw|�	d��|�
��|j���dS)Nr-zContent-Length��)
�commandr
r;�log_data�int�headers�rfiler`�	post_data�
send_response�end_headersrAr�)rCr�rlens   rG�handle_requestzHTTPHandlerTest.handle_requests������� ���.�.��
��<�6�!�!�
&��7�?�+;�<�=�=��!(��!3�!3�D�!9�!9�����
&�!%�����������c�"�"�"���������������s�9A,�,	A7c�<�tjd��}|j}|�|jjd��dD�]�}d}|r�	ddl}tj�t��}tj�
|dd��}|�|j��}|�
|��|�|���}	n#t$rd}YnwxYwd}d}	t!||jd|�	��x|_}
|
���|
j���d
|
jz}|o|}tj�|d||	d�
��|_d|_|�|j��dD�]1}
|
|j_|j���d}|�|��|j���|�|jjd��|�|j |
��|
dkrtC|jj"��}n'tC|j#�$d����}|�|ddg��|�|ddg��|�|d|g����3|j�%��|j�|j��|j�&�����dS)N�httprrhr��certdatazkeycert.pem)�cafiler�)r	zlocalhost:%dz/frob)�foo�bar)�secure�context�credentials)r,r-r?r,r%rE�funcNamerr*)'rrr0rKr?�sslr4r;�dirname�__file__r��
SSLContext�PROTOCOL_TLS_SERVER�load_cert_chain�create_default_context�ImportErrorr�r]rrrr�r��server_portrC�h_hdlrrUrArJrArLr�rYrTr�queryrY�decoder�rJ)rCr�r0rdr�rh�here�localhost_certr	rer�host�
secure_clientrJr*�ds                rGrzHTTPHandlerTest.test_outputs���"�6�*�*���&���!�!�$�"2�";�A�">�?�?�?�#�0	 �0	 �F�#�D��
�
P��J�J�J��7�?�?�8�4�4�D�%'�W�\�\�$�
�M�%R�%R�N� �^�^�C�,C�D�D�F��*�*�>�:�:�:�!�8�8��8�O�O�G�G��#�"�"�"�!�F�F�F�"��������#1�$��8K�48��$I�$I�$I�
I�D�K�&��L�L�N�N�N��L������!�F�$6�6�D�"�-�v�M�!�*�6�6�t�W�>K�?F�CQ�7�S�S�D�K�!�D�M��"�"�4�;�/�/�/�)�
2�
2��%+���"���"�"�$�$�$������S�!�!�!���!�!�#�#�#�� � ���!3�W�=�=�=�� � ���v�6�6�6��U�?�?� ���!4�5�5�A�A� ���!6�!6�w�!?�!?�@�@�A�� � ��6��V�H�5�5�5�� � ��:����@�@�@�� � ��5��C�5�1�1�1�1��K��������*�*�4�;�7�7�7��K�������a0	 �0	 s�C�C)�(C)N)rprqrrrHr]rrsrirGrPrPsF������ �)�)�)����5 �5 �5 �5 �5 rirPc�(�eZdZ	d�Zd�Zd�Zd�ZdS)�
MemoryTestc�J�	t�|��i|_dSr�)rrH�
_survivorsrms rGrHzMemoryTest.setUpSs"��F����t��������ric��	|D]<}t|��t|��f}tj|��|j|<�=dSr�)�idr��weakref�refr|)rCrWr�keys    rG�_watch_for_survivalzMemoryTest._watch_for_survivalXsO��	��	4�	4�C��S�'�'�4��9�9�$�C�#*�;�s�#3�#3�D�O�C� � �	4�	4ric�0�	tj��g}|j���D]'\\}}}|���|�|���(|r<|�dt
|��d�|��fz��dSdS)Nz;%d objects should have survived but have been destroyed: %sz, )�gc�collectr|r�rFr]rZr�)rC�dead�id_�repr_r�s     rG�_assertTruesurvivalzMemoryTest._assertTruesurvival_s���I�
�
������!%��!6�!6�!8�!8�	#�	#��L�S�%�#��s�u�u�}����E�"�"�"���	N��I�I�.�14�T���D�I�I�d�O�O�0L�M�
N�
N�
N�
N�
N�	N�	Nric�~�|j�tj��tjd��}|�|��|�tj��|j�|�����|�|�����|�	dg��~|�
��tjd��}|�|�����|�	ddg��dS)Nrb)rbr7r})rbr7r~)r0r6rr�rr�r7r�rnrhr�)rCrbrcs   rG�test_persistent_loggersz"MemoryTest.test_persistent_loggersks(��	
��!�!�'�,�/�/�/����&�&��� � ��%�%�%����W�]�#�#�#�����t�0�0�2�2�3�3�3��	�	�$�#�#�%�%�&�&�&����!�
�	�	�	�
�� � �"�"�"����&�&���	�	�$�#�#�%�%�&�&�&����!�!�
�	�	�	�	�	riN)rprqrrrHr�r�r�rsrirGrzrzOsV������4����
4�4�4�
N�
N�
N�����rirzc��eZdZd�Zd�ZdS)�EncodingTestc��tjd��}tjdd��\}}t	j|��d}	tj|d���}|�|��	|�|��|�	|��|���n.#|�	|��|���wxYwt|d���}	|�|����
��|��|���n#|���wxYw	tj�|��rt	j|��dSdS#tj�|��rt	j|��wwxYw)N�testriztest_logging-1-ufoo€r%r~)rrr2r3r4rJrQrAr�rKr�rYr`�rstripr;�isfiler�)rCr�rGrHr�r�r�s       rG�test_encoding_plain_filez%EncodingTest.test_encoding_plain_file�s������'�'���!�&�*;�<�<���B�
��������	��)�"�w�?�?�?�G��N�N�7�#�#�#�
 ����D�!�!�!��!�!�'�*�*�*��
�
�������!�!�'�*�*�*��
�
���������R�'�*�*�*�A�
�� � ��������!2�!2�D�9�9�9����	�	�	�	�����	�	�	�	����	��w�~�~�b�!�!�
��	�"�
�
�
�
�
�
�
��r�w�~�~�b�!�!�
��	�"�
�
�
�
�
���s<�+F�0B/�*F�/+C�F�/:D>�)F�>E�F�6Gc�(�tjd��}d}tjd��}d|_tj��}||d��}tj|��}|�|��	|�	|��|�
|��|���n.#|�
|��|���wxYw|���}|�
|d��dS)Nr�uдо свидания�cp1251�stricts�� �������
)rr�codecs�	getwriterr'r3�BytesIOr8rAr�rKrJrWrY)rCr��message�writer_classr5�writerr�rgs        rG�test_encoding_cyrillic_unicodez+EncodingTest.test_encoding_cyrillic_unicode�s������'�'��Q���'��1�1�� (����������f�h�/�/���'��/�/�����w����	��K�K�� � � ����g�&�&�&��M�M�O�O�O�O��
���g�&�&�&��M�M�O�O�O�O�����O�O��������J�K�K�K�K�Ks�;B:�:+C%N)rprqrrr�r�rsrirGr�r��s7���������4L�L�L�L�Lrir�c��eZdZd�Zd�ZdS)�WarningsTestc	�n�tj��5tjd��|�tjd��tjdt���tj��}tj	|��}tj
d��}|�|��tjd��|�
|��|���}|���|�|�d��d��tj��}tjd	td
d|d��|���}|���|�|d
��ddd��dS#1swxYwYdS)NTF�always)�category�py.warningszI'm warning you...z UserWarning: I'm warning you...
r�Explicit�dummy.py�*z
Dummy linez0dummy.py:42: UserWarning: Explicit
  Dummy line
)�warnings�catch_warningsr�captureWarningsr��filterwarnings�UserWarningr3r4r8rrA�warnrKrWrJr��find�showwarningrY)rCr5rQr�rg�a_files      rG�
test_warningszWarningsTest.test_warnings�s���
�
$�
&�
&�	F�	F��#�D�)�)�)��O�O�G�3�U�;�;�;��#�H�{�C�C�C�C��[�]�]�F��%�f�-�-�A��&�}�5�5�F����a� � � ��M�.�/�/�/�� � ��#�#�#����!�!�A�
�G�G�I�I�I����q�v�v�&I�J�J�A�N�N�N��[�]�]�F�� ��[�*�b�!'��
7�
7�
7����!�!�A��L�L�N�N�N����Q�D�
F�
F�
F�)	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F����	F�	F�	F�	F�	F�	Fs�F	F*�*F.�1F.c��tj��5tjd��|�tjd��tjd��}|�|jg��tjdtdd��|�t|j��d��|�|jdtj��ddd��dS#1swxYwYdS)	NTFr�r�r�r�rkr)
r�r�rr�r�rrYr?r�r�rZ�assertIsInstance�NullHandlerr�s  rG�test_warnings_no_handlersz&WarningsTest.test_warnings_no_handlers�s2��
�
$�
&�
&�
	K�
	K��#�D�)�)�)��O�O�G�3�U�;�;�;��&�}�5�5�F����V�_�b�1�1�1�� ��[�*�b�I�I�I����S���1�1�1�5�5�5��!�!�&�/�!�"4�g�6I�J�J�J�
	K�
	K�
	K�
	K�
	K�
	K�
	K�
	K�
	K�
	K�
	K�
	K����
	K�
	K�
	K�
	K�
	K�
	Ks�CC4�4C8�;C8N)rprqrrr�r�rsrirGr�r��s:������F�F�F�0K�K�K�K�Krir�c�,�tj||��Sr�)rr:)rr�s  rG�
formatFuncr��s����V�W�-�-�-ric��eZdZdd�ZdS)�myCustomFormatterNc��dSr�rs)rC�fmtr�s   rGr�zmyCustomFormatter.__init__�s���rir�)rprqrrr�rsrirGr�r��s(������
�
�
�
�
�
rir�c�(�tj��Sr�)rr8rsrirG�handlerFuncr��s��� �"�"�"ric��eZdZdS)�
CustomHandlerN�rprqrrrsrirGr�r����������Drir�c
���eZdZ	ejZdZddddiiddddd	d
�iddgd�d
�Zddddiiddddd	d
�idddgd�iddid�Zddddiiddddd	d
�idddiiddgd�d�Zddddiidddddd
�idddgd�iddid�Z	ddddiiddddd	d
�idddgd�iddid�Z
ddddiiddddd	d
�idddgd�iddid�Zddddiiddddd	d
�idddgd�iddid�Zddedzdd�iddddd	d
�iddgd�d
�Z
dedd�edzdd�edd�d�dddd	d
�deid�ddgd�d
�Zddddiidedzddd	d
�idddgd�iddid�Zddddiidedzddd	dd�idddgd�iddid�Zddddiiddddd	d
�id ddgd�iddid�Zdd!dddiiddddd	d
�iddgd�id"�ddid#�Zdd$dddiiddddd	d
�iddgd�id"�ddid#�Zddddiiddddd	d
�idddgd�iddid�Zdd$dddiiddd%iid&�Zdd$ddd%iiddd%iid&�Zddddiid'd(diiddddd	d'gd)�iddd'gd*�iddgd�d+�Zddddiiddddd	d
�id,dd-idddgd�iddid.�Zdddiiddddd	d
�id,dd-idddgd�iddid/�Zd0dddiiddddd	d
�id,dd-idddgd�iddid.�Zddddiiddddd	d1d2d3�d4�iddgd�d
�ZGd5�d6ej ��Z!dd7e!d8d9d:d;d<id=�iddd7dd	d
�iddgd�d
�Z"dd>d?d@dA�iddd>dB�dCdDd>dEddF�dG�dHddIgdJdK�idL�Z#ddedzdd!dM�iddddd	d
�idNddgdJdK�idL�Z$ddedzdd!dO�iddddd	d
�idNddgdJdK�idL�Z%ddedPzdd!dO�iddddd	d
�idNddgdJdK�idL�Z&ddedd!dM�iddddd	d
�idNddgdJdK�idL�Z'dQ�Z(dR�Z)efdS�Z*dT�Z+dU�Z,dV�Z-dW�Z.dX�Z/dY�Z0dZ�Z1d[�Z2d\�Z3d]�Z4d^�Z5d_�Z6d`�Z7da�Z8db�Z9dc�Z:dd�Z;de�Z<df�Z=dzdh�Z>e?j@��di���ZAe?j@��dj���ZBe?j@��dk���ZCdl�ZDdm�ZEdn�ZFdo�ZGdp�ZHdq�ZIdr�ZJds�ZKdt�ZLdu�ZMdv�ZNdw�ZOdx�ZPdy�ZQdgS){�ConfigDictTestrvrk�form1rz%(levelname)s ++ %(message)sr��logging.StreamHandlerr�zext://sys.stdout)r��	formatterr�r5r��r�r?)r�r�r?r�r�r7r�)r�r�r?�loggersr�zext://sys.stdbout�NTOSET�WRANING�misspelled_namez.ExceptionFormatterz"%(levelname)s:%(name)s:%(message)s)�()rz.formatFunc)r��form2�form3r�)r��hand2z.CustomHandlerzinvalid parameter name)r�r�r�r5r�r�F)�compilerr�)r�r�r�r?r�r�Tr�)r��incrementalr?r��filt1rE)r�r�r�r5�filters�r�r�)r�r�r�r?r�r�zcfg://true_formatterszcfg://handler_configs[hand1])r��true_formatters�handler_configsr�r?r�r�)r�r�r�r?r�r�r�rc�!
)rb�
terminator)r�r�r�r5r�c�"��eZdZdZ�fd�Z�xZS)�ConfigDictTest.CustomFormatterr�c�F��t���|��Sr�)r�r�rCr�r�s  �rGrz%ConfigDictTest.CustomFormatter.formatGs����7�7�>�>�&�)�)�)ri)rprqrr�custom_propertyrr�r�s@rG�CustomFormatterr�Ds=���������	*�	*�	*�	*�	*�	*�	*�	*�	*rir��custom�{�%Y-%m-%d %H:%M:%S�	{message}r��value)r��styler�rr��mySimpleFormatterz1%(asctime)s (%(name)s) %(levelname)s: %(message)s�$)rr�)r�r�r�zlogging.handlers.MemoryHandler��
fileGlobal)r��capacityr�rkr�)r��bufferGlobal�mymoduler��true)r�r?rP)r�r�r?r�)r�r�validate�my_test_logger_custom_formatter)r�rr�z.myCustomFormatterc�D�tj�|��dSr�)rrz�
dictConfig)rCr|s  rGrzConfigDictTest.apply_config�s����!�!�$�'�'�'�'�'ric��tj��5}|�|j��t	j��}|�|�����|�|�����|�	dg|���|�	g��ddd��dS#1swxYwYdSr�r�r�s   rGr�zConfigDictTest.test_config0_ok�r�r�c��tj��5}|�|��tjd��}|�|�����|�|�����|�ddg|���|�g��ddd��dS#1swxYwYdSr�r�r�s    rGr�zConfigDictTest.test_config1_okr�r�c�R�|�t|j|j��dSr�r�rms rGr�z#ConfigDictTest.test_config2_failurer�ric�R�|�t|j|j��dSr�)rrsr�config2arms rG�test_config2a_failurez$ConfigDictTest.test_config2a_failure�%�����)�T�%6��
�F�F�F�F�Fric�R�|�t|j|j��dSr�)rrsr�config2brms rG�test_config2b_failurez$ConfigDictTest.test_config2b_failurer�ric�R�|�t|j|j��dSr�r�rms rGr�z#ConfigDictTest.test_config3_failurer�ric��tj��5}|�|j��	t	���#t$rtjd��YnwxYwtj�	d��|�
|���d��|�g��ddd��dS#1swxYwYdSr�)
rr�rr�r�rr�r0r�r�rYrWrh�rCr�s  rGr�zConfigDictTest.test_config4_ok!s��
�
$�
&�
&�	&�&����d�l�+�+�+�
2�"�n�n�$���
2�
2�
2��!�.�1�1�1�1�1�
2�����J�O�O�A�������V�_�_�.�.�A�
C�
C�
C�
�!�!�"�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&�-�C�>�A�C�A�AC�C�Cc��tj��5}|�|j��	t	���#t$rtjd��YnwxYwtj�	d��|�
|���d��|�g��ddd��dS#1swxYwYdSr�)
rr�r�config4ar�rr�r0r�r�rYrWrhr�s  rG�test_config4a_okzConfigDictTest.test_config4a_ok0s��
�
$�
&�
&�	&�&����d�m�,�,�,�
2�"�n�n�$���
2�
2�
2��!�.�1�1�1�1�1�
2�����J�O�O�A�������V�_�_�.�.�A�
C�
C�
C�
�!�!�"�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&r�c�<�|�|j���dSr�r�rms rGr�zConfigDictTest.test_config5_ok?r�ric�R�|�t|j|j��dSr�)rrsrr�rms rG�test_config6_failurez#ConfigDictTest.test_config6_failureBs%�����)�T�%6���E�E�E�E�Eric��tj��5}|�|j��t	jd��}|�|�����|�|�����|�	ddg|���|�	g��ddd��n#1swxYwYtj��5}|�|j
��t	jd��}|�|j��t	jd��}|�|�����|�|�����|�	ddg|���|�	g��ddd��dS#1swxYwYdS)Nr�r�r�rr��r�r~�r|r)
rr�rr�rrr�rnr�rhr�rBrr�s   rGr�zConfigDictTest.test_config7_okEsF��
�
$�
&�
&�	&�&����d�l�+�+�+��&�'8�9�9�F��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-��!�!���#��
"�
�
�
�

�!�!�"�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&��
$�
&�
&�
	&�&����d�l�+�+�+��&�'8�9�9�F��O�O�F�O�,�,�,��&�'7�8�8�F��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-��!�!���#��
"�
�
�
�

�!�!�"�%�%�%�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&�
	&����
	&�
	&�
	&�
	&�
	&�
	&s%�B+C�C�C�)CG�G�Gc�T�tj��5}|�|j��t	jd��}|�|�����|�|�����|�	ddg|���|�	g��ddd��n#1swxYwYtj��5}|�|j
��t	jd��}|�|j��|�|�����|�|�����t	jd��}|�|�����|�|�����|�	gd�|���|�	g��ddd��dS#1swxYwYdS)Nr�r�r�rr�)rr�r�r��r|r�)
rr�rr�rrr�rnr�rhr�r:rr�s   rG�test_config_8_okzConfigDictTest.test_config_8_okbs���
�
$�
&�
&�	&�&����d�l�+�+�+��&�'8�9�9�F��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-��!�!���#��
"�
�
�
�

�!�!�"�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&��
$�
&�
&�	&�&����d�l�+�+�+��&�'8�9�9�F����V�_�-�-�-��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-��&�'7�8�8�F��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-��!�!�#�#�#�
�
"�
�
�
�
�!�!�"�%�%�%�%	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&s%�B+C�C�C�)D'H�H!�$H!c��tj��5}|�|j��t	jd��}t	jd��}|�|�����|�|�����|�	|�����|�
gd�|���|�
g��ddd��n#1swxYwYtj��5}|�|j��t	jd��}|�|j
��|�|�����|�|�����t	jd��}|�|�����|�|�����|�	|�����|�
gd�|���|�
g��ddd��dS#1swxYwYdSr�)rr�rr�rrr�rnr�r�rh�config8ar:rr�s    rG�test_config_8a_okz ConfigDictTest.test_config_8a_ok�s���
�
$�
&�
&�	&�&����d�m�,�,�,��&�'8�9�9�F�!�*�+@�A�A�J��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-����� 1� 1� 3� 3�4�4�4��!�!�#�#�#��	
"�
�
�
�
�!�!�"�%�%�%�'	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�(�
$�
&�
&�	&�&����d�m�,�,�,��&�'8�9�9�F����V�_�-�-�-��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-��&�'7�8�8�F��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-����� 1� 1� 3� 3�4�4�4��!�!�#�#�#�
�
"�
�
�
�
�!�!�"�%�%�%�)	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&r�c��tj��5}|�|j��t	jd��}|�|�����|�g|���|�|j	��|�|�����|�g|���|�|j
��|�|�����|�dg|���ddd��dS#1swxYwYdS)Nr�rr)rr�r�config9rrr�rnrh�config9a�config9br�s   rG�test_config_9_okzConfigDictTest.test_config_9_ok�sy��
�
$�
&�
&�	�&����d�l�+�+�+��&�'8�9�9�F��K�K��)�)�+�+�,�,�,��!�!�"�V�!�4�4�4����d�m�,�,�,��K�K��)�)�+�+�,�,�,��!�!�"�V�!�4�4�4����d�m�,�,�,��K�K��)�)�+�+�,�,�,��!�!��#��
"�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�DD?�?E�Ec��tj��5}|�|j��t	jd��}|�|�����t	jd��}|�|�����t	jd��}|�|�����t	jd��}|�|�����|�	ddg|���ddd��dS#1swxYwYdS�Nr�r�r�zcompiler.parser.codegen)r�r{rr)
rr�r�config10rrr�rnr�rhr�s   rG�test_config_10_okz ConfigDictTest.test_config_10_ok�sp��
�
$�
&�
&�	�&����d�m�,�,�,��&�'8�9�9�F��N�N�4�,�,�.�.�/�/�/��&�z�2�2�F��N�N�4�,�,�.�.�/�/�/��&�'7�8�8�F��N�N�4�,�,�.�.�/�/�/��&�'@�A�A�F��L�L��*�*�,�,�-�-�-��!�!� ��#��
"�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�D E�E�Ec�:�|�|j��dSr�)r��config11rms rG�test_config11_okzConfigDictTest.test_config11_ok�s�����T�]�+�+�+�+�+ric�R�|�t|j|j��dSr�)rrsr�config12rms rG�test_config12_failurez$ConfigDictTest.test_config12_failure��%�����)�T�%6��
�F�F�F�F�Fric�R�|�t|j|j��dSr�)rrsr�config13rms rG�test_config13_failurez$ConfigDictTest.test_config13_failure�rric��tj��5}|�|j��tjd}|�|jd��|�|jd��t	j	d��|�
|����d����ddd��dS#1swxYwYdS)Nr�rcr��Exclamationz
Exclamation!
)
rr�r�config14rr!rYrbr�r�rBrWrC)rCr�rQs   rG�test_config14_okzConfigDictTest.test_config14_ok�s��
�
$�
&�
&�	J�&����d�m�,�,�,��!�'�*�A����Q�U�E�*�*�*����Q�\�5�1�1�1��O�M�*�*�*��O�O�F�O�O�-�-�6�6�7G�H�H�I�I�I�
	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�	J�	Js�B1C�C�Cc��d�}|���5tjdd��\}}tj|��ddd|dd�id	dgid
�}|�|��|�|��ddd��n#1swxYwYtjjd}|�	|||��dS)Nc�V�|���tj|��dSr�r�r�s  rGr�z0ConfigDictTest.test_config15_ok.<locals>.cleanup�r�ririr�rkr~zlogging.FileHandlerr%)r��filenamer'r?�r�r?r�r)
r�r2r3r4rJrrr�r?r�)rCr�rGrHrzr�s      rG�test_config15_okzConfigDictTest.test_config15_ok�s/��	�	�	��
+�
+�
-�
-�	&�	&��%�f�.?�@�@�F�B���H�R�L�L�L���!6�$&�$+����������F�
���f�%�%�%����f�%�%�%�'	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�*�,�'��*�������"�-�-�-�-�-s�A&B
�
B�Bc��|�|j��tjd}|�|jjd��dS)Nr�r�)r�config17rr!rYr�r�rs  rG�test_config17_okzConfigDictTest.test_config17_ok
sF�����$�-�(�(�(���g�&�������4�g�>�>�>�>�>riNc���|�d��}tj�d|��}|���|j���|j}|j���	tj	tj
tj��}|�d��|�
d|f��tjdt!|����}||z}d}t!|��}	|	dkr-|�||d���}
||
z
}|	|
z}	|	dk�-|���|j�d��tj���t)j|��dS#|j�d��tj���t)j|��wxYw)Nr%rg@r/r)r�rrz�listenrrr�r�r�rLr�rN�SOCK_STREAM�
settimeout�connectr
r.rZ�sendrJ�
stopListeningrr�)rC�text�verifyr�r�rrrg�	sentsofar�left�sents           rG�setup_via_listenerz!ConfigDictTest.setup_via_listener
s����{�{�7�#�#���N�!�!�!�V�,�,��	���	�	�	�	��������v��	��
�
����	,��=����1C�D�D�D��O�O�C� � � ��L�L�+�t�,�-�-�-��;�t�S��Y�Y�/�/�D��t��A��I��q�6�6�D���(�(��y�y��9�:�:��/�/���T�!�	�������(�(�
�J�J�L�L�L�
�G�L�L������N�(�(�*�*�*��(��+�+�+�+�+��
�G�L�L������N�(�(�*�*�*��(��+�+�+�+���s�CF&�&AG4c��tj��5}|�tj|j����t
jd��}|�|�	����t
jd��}|�|�	����t
jd��}|�|�	����t
jd��}|�
|�	����|�ddg|���ddd��dS#1swxYwYdSr)rr�r8�json�dumpsrrrr�rnr�rhr�s   rG�test_listen_config_10_okz'ConfigDictTest.test_listen_config_10_ok$
sz��
�
$�
&�
&�	�&��#�#�D�J�t�}�$=�$=�>�>�>��&�'8�9�9�F��N�N�4�,�,�.�.�/�/�/��&�z�2�2�F��N�N�4�,�,�.�.�/�/�/��&�'7�8�8�F��N�N�4�,�,�.�.�/�/�/��&�'@�A�A�F��L�L��*�*�,�,�-�-�-��!�!� ��#��
"�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�D2E�E�Ec���tj��5}|�tjt
j����tjd��}|�	|�
����|�|�
����|�ddg|���|�g��ddd��dS#1swxYwYdSr�)
rr�r8rxryrur�rrr�rnr�rhr�s   rG�test_listen_config_1_okz&ConfigDictTest.test_listen_config_1_ok8
s#��
�
$�
&�
&�	&�&��#�#�H�O�N�4J�$K�$K�L�L�L��&�'8�9�9�F��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-��!�!���#��
"�
�
�
�

�!�!�"�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&s�CC#�#C'�*C'c�X�d�}d�}tjd��}tjtj��}t
j��5}|�||��|�	|�
����|�|�
����ddd��n#1swxYwY|�g|���|�ddgd���t
j��5}|�|��tjd��}|�	|�
����|�|�
����ddd��n#1swxYwY|�d	d
g|���|�ddgd���t
j��5}|�|ddd�|��tjd��}|�	|�
����|�|�
����ddd��n#1swxYwY|�dd
g|���|�ddgd���dS)Nc��dSr�rs��stuffs rG�verify_failz6ConfigDictTest.test_listen_verify.<locals>.verify_failJ
s���4ric��|ddd�S)Nr)rsrAs rG�verify_reversez9ConfigDictTest.test_listen_verify.<locals>.verify_reverseM
s�����2��;�rir�rr�r�r�)rbrrr)rr)
rrrxryrur�rr�r8r�rnr�rh)rCrCrEr��to_sendr�s      rG�test_listen_verifyz!ConfigDictTest.test_listen_verifyG
s���	�	�	�	�	�	��"�#4�5�5���/�.�"8�9�9���
$�
&�
&�	.�&��#�#�G�[�9�9�9��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-�		.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�
	
���b���0�0�0������
�+�	�	,�	,�	,��
$�
&�
&�	.�&��#�#�G�,�,�,��&�'8�9�9�F��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	
�����
��	�	�	�	�
	
�����
�+�	�	,�	,�	,��
$�
&�
&�	.�&��#�#�G�D�D�b�D�M�>�B�B�B��&�'8�9�9�F��K�K��)�)�+�+�,�,�,��L�L��*�*�,�,�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	
�����
��	�	�	�	�
	
�����
�+�	�	,�	,�	,�	,�	,s9�A%B=�=C�C�A8F�F�F�BI-�-I1�4I1c�R�|�t|j|j��dSr�)rrBr�out_of_orderrms rG�test_out_of_orderz ConfigDictTest.test_out_of_order�
s&�����*�d�&7��9J�K�K�K�K�Kric�`�tj|j��}d|ddd<|�|��t	jd��jd}|�|jtj	��|�|j
jtj��dS)Nz-${asctime} (${name}) ${levelname}: ${message}r�r�rr�r)
r"�deepcopyrIrrrr?r�rkrr��_style�StringTemplateStyle�rCrzr�s   rG�#test_out_of_order_with_dollar_stylez2ConfigDictTest.test_out_of_order_with_dollar_style�
s�����t�0�1�1��>m��|��0�1�(�;����&�!�!�!��#�J�/�/�8��;�����g�n�g�o�>�>�>����g�/�6�%�9�	;�	;�	;�	;�	;ric��|�|j��tjd��jd}|�|jt��dS�Nr�r)r�custom_formatter_class_validaterrr?r�r�rp�rCr�s  rG�)test_custom_formatter_class_with_validatez8ConfigDictTest.test_custom_formatter_class_with_validate�
sS�����$�>�?�?�?��#�$E�F�F�O�PQ�R�����g�/�1C�D�D�D�D�Dric��|�|j��tjd��jd}|�|jt��dSrR)r� custom_formatter_class_validate2rrr?r�r�rprTs  rG�*test_custom_formatter_class_with_validate2z9ConfigDictTest.test_custom_formatter_class_with_validate2�
sS�����$�?�@�@�@��#�$E�F�F�O�PQ�R�����g�/�1C�D�D�D�D�Dric��|j���}d|ddd<|�|��tjd��jd}|�|jt��dS)Nr�r�r�r�r�r)	rSr"rrrr?r�r�rprOs   rG�9test_custom_formatter_class_with_validate2_with_wrong_fmtzHConfigDictTest.test_custom_formatter_class_with_validate2_with_wrong_fmt�
sz���5�:�:�<�<��14��|��W�%�g�.�	
���&�!�!�!��#�$E�F�F�O�PQ�R�����g�/�1C�D�D�D�D�Dric�R�|�t|j|j��dSr�)rrBr� custom_formatter_class_validate3rms rG�*test_custom_formatter_class_with_validate3z9ConfigDictTest.test_custom_formatter_class_with_validate3�
s&�����*�d�&7��9^�_�_�_�_�_ric�R�|�t|j|j��dSr�)rrBr�custom_formatter_with_functionrms rG�,test_custom_formatter_function_with_validatez;ConfigDictTest.test_custom_formatter_function_with_validate�
s&�����*�d�&7��9\�]�]�]�]�]ric��dgd�ddd�dddd	gd
ggd�d�}tj�|��}|�|�d
��d��|�|�d��d��|�|�d��d��|�|�d��d	��|�|�d��d��|�|�d��d��|�d��}|�|�d��gd���|�t|jd��|�t|jd��|�t|jd��dS)N)rkr��)rN�b�crrb)rxr�)�g)rQr[�jr��lr�r^)�ozcfg://alist�p)�atuple�alist�adict�nest1�nest2�nest3zcfg://atuple[1]r�zcfg://alist[1]rczcfg://nest1[1][0]rQzcfg://nest2[1][1]z
cfg://adict.dzcfg://adict[f]zcfg://nest3rkzcfg://nosuchzcfg://!zcfg://adict[2])	rrz�BaseConfiguratorrY�convert�popr�KeyErrorrB)rCrx�bcr�s    rG�test_baseconfigzConfigDictTest.test_baseconfig�
s����$�_�_��Q�(�(�+��C��:�s�+�.�.�.�

�
���^�
,�
,�Q�
/�
/��������$5�6�6��:�:�:�������$4�5�5�s�;�;�;�������$7�8�8�#�>�>�>�������$7�8�8�#�>�>�>�������O�4�4�c�:�:�:�������$4�5�5�q�9�9�9��J�J�}�%�%��������q���?�?�?�3�3�3����(�B�J��?�?�?����*�b�j�)�<�<�<����(�B�J�0@�A�A�A�A�Aric���ddlm�G�fd�dtj��}�dddg��}|dd	g�
��}dd||d
�iddgd�d�}t	j��5}|�|��tjd��ddd��n#1swxYwY|�|�	��d��dS)Nr)�
namedtuplec�,���eZdZ��fd�Z�fd�Z�xZS)�1ConfigDictTest.test_namedtuple.<locals>.MyHandlerc�H��t��j|i|��||_dSr�)r�r��resource)rCr{rWr}r�rws    ��rGr�z:ConfigDictTest.test_namedtuple.<locals>.MyHandler.__init__�
s*��� ���� �$�1�&�1�1�1�,4��
�
�
ric���|xjd|jj��z
c_t���|��S�N� )r*r{�typer�rr�s  �rGrz6ConfigDictTest.test_namedtuple.<locals>.MyHandler.emit�
s7����
�
�6�$�-�"4�6�6�6�
�
��w�w�|�|�F�+�+�+rir�)r�rws@�rG�	MyHandlerry�
sW��������
5�
5�
5�
5�
5�
5�
,�
,�
,�
,�
,�
,�
,�
,�
,rir��Resourcer�labels�my_typerN)rr�rk�	myhandler)r�r{r�r�r'zsome logzsome log my_type
)
�collectionsrwrr8rr�rr�rYrW)rCr�r�r{rzr�rws      @rG�test_namedtuplezConfigDictTest.test_namedtuple�
sb���*�*�*�*�*�*�	,�	,�	,�	,�	,�	,�	,��-�	,�	,�	,��:�j�6�8�*<�=�=���8��C�5�9�9�9����#� (���� &�K�=�A�A�	
�	
���
$�
&�
&�	%�&����f�%�%�%��L��$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�	
������*�*�,@�A�A�A�A�As� *B�B�Bc�t�d�}|�dd|gd�d���gtj��_dS)Nc��dSrrs)rfs rGr�zAConfigDictTest.test_config_callable_filter_works.<locals>.filter_�
s���1rirkr7r��r�r��rrrr��rCr�s  rG�!test_config_callable_filter_worksz0ConfigDictTest.test_config_callable_filter_works�
s[��	�	�	�����G��	�"J�"J�
�
�	�	�	�')�����#�#�#ric��tjd��}|�dd|gd�d���gtj��_dS)Nr�rkr7r�r�)rr�rrr�r�s  rG�test_config_filter_worksz'ConfigDictTest.test_config_filter_works�
s[���.��-�-������G��	�"J�"J�
�
�	�	�	�')�����#�#�#ric��Gd�d��}|��}|�dd|gd�d���gtj��_dS)Nc��eZdZd�ZdS)�BConfigDictTest.test_config_filter_method_works.<locals>.FakeFilterc��dSrrs)rCrfs  rGr�zIConfigDictTest.test_config_filter_method_works.<locals>.FakeFilter.filter�
s���qriNr�rsrirG�
FakeFilterr��
s#������
�
�
�
�
rir�rkr7r�r�r�)rCr�r�s   rG�test_config_filter_method_worksz.ConfigDictTest.test_config_filter_method_works�
s���	�	�	�	�	�	�	�	��*�,�,������G��	�"J�"J�
�
�	�	�	�')�����#�#�#ric	��Gd�d��}dd|��fD]*}|�t|jdd|gd�d����+dS)Nc��eZdZdS)�;ConfigDictTest.test_invalid_type_raises.<locals>.NotAFilterNr�rsrirG�
NotAFilterr��
s�������rir�rkr7r�r�)rrBr)rCr�r�s   rG�test_invalid_type_raisesz'ConfigDictTest.test_invalid_type_raises�
s{�����������a�����.�	�	�G������!���g�Y�'O�'O�P�P�
�
�
�
�	�	ric��dddddd�idddgd�id	�}tjd��}|�|j��|�|��|�|j��|�d
di��|�|j��|d=|�|��|�|j��dS)NrkF�consoler7r�)r�r�rNr�)r�r�r?r�r�r�)rrr:rrrB)rCrzr�s   rG�
test_90195zConfigDictTest.test_90195s���(-��$�4�����$�!*�����
�
�� �"�3�'�'�������)�)�)����&�!�!�!������)�)�)����9�a�.�)�)�)������(�(�(��-�.����&�!�!�!������)�)�)�)�)rir�)Rrprqrrr	r�rVr�r�r�r�r�r�r�r�rpr�r�r�r�r�r�r�rrrrrrrrr"rr:r�r*rIrSrWr\r_rr�r�r�r�r�r�r�r�r�rr�r	rrrrrrr#r(r+r8r�requires_working_socketr<r>rGrJrPrUrXrZr]r`rur�r�r�r�r�r�rsrirGr�r��sM������3� /� I��,�����9��
�
�1�%�"�.�	��
� �!��
�
���G�.���9��
�
�1�%�"�.�	��
�
�!�%�Y�!�!�
�
�i�
�+��G�8���9��
�
�1�%�"�.�	��
�
��'�!�
� �!��
�
�)��H�8���9��
�
�1�%�"�/�	��
�
�!�%�Y�!�!�
�
�i�
�+��G�8���9��
�
�1�%�"�.�	��
�
�!�%�Y�!�!�
�
�i�
�+��H�:���9��
�
�1�%�"�.�	��
�
�!�%�Y�!�!�
�
�i�
�+��H�8���9��
�
�1�/�"�.�	��
�
�!�%�Y�!�!�
�
�i�
�+��G�8���"7�7�?���
�
�1�%�"�.�	��
��%�Y�
�
�!��G�0�*�?���
 �-�/�?���
"�?���

�

� 2�%�"�.�	���{��

�

��%�Y�
�
�7��H�F���9��
�
�"�%5�5�%�"�.�	��
�
�!�%�Y�!�!�
�
�i�
�+��G�:���9��
�
�"�%5�5�%�"�.�.���
�
�!�%�Y�!�!�
�
�i�
�-��G�<���9��
�
�1�%�"�.�	��
�
�!�%�Y� � �
�
�i�
�+��G�<�%*���9��
�
�1�%�"�.�	��
�"�%�Y��� �
�
�
�i�
�1��G�>�%)���9��
�
�1�%�"�.�	��
�"�%�Y��� �
�
�
�i�
�1��H�<���9��
�
�1�%�#�.�	��
�
�#�%�Y�!�!�
�
�h�
�+��G�6����)��
�
��&�!�
�
�
�H� ����&��
�
��&�!�
�
�
�H�"���9��
�
��*��
�
�1�%�"�.�$�I���
�
�!�$�I�!�!�
� �!��
�
�7��H�F���9��
�
�1�%�"�.�	��
�/��4�
�
�!�%�Y�!�!�
�
�i�
�3��H�B
��9��
�
�1�%�"�.�	��
�/��4�
�
�!�%�Y�!�!�
�
�i�
�1��H�>���9��
�
�1�%�"�.�	��
�/��4�
�
�!�%�Y�!�!�
�
�i�
�3��H�@���9��
�
�1�%�"�.� �"'���	�	�
� �!��
�
�'��H�2*�*�*�*�*�'�+�*�*�*���%��.�%�%�w����

�
�1�&�"�.�	��
� �!��
�
�+��H�8��M��"�"�
�1� �0���:��0�&� ���


�

�
� �+�,�#���
�-��L�B���!6�6�>�!���
�
�0�$�!�,�	��
�
.� �$�I�#�0�0�
�#'�'�#�8��!�$9�9�>�!���
�
�0�$�!�,�	��
�
.� �$�I�#�0�0�
�#(�(�$�8��!�$8�8�>�!���
�
�0�$�!�,�	��
�
.� �$�I�#�0�0�
�#(�(�$�8�� �>�!���
�
�0�$�!�,�	��
�
.� �$�I�#�0�0�
�#&�&�"�4(�(�(�
&�
&�
&�&-�
&�
&�
&�
&�F�F�F�G�G�G�G�G�G�F�F�F�
&�
&�
&�
&�
&�
&�2�2�2�F�F�F�&�&�&�:&�&�&�B)&�)&�)&�V���$���&,�,�,�G�G�G�G�G�G�J�J�J�.�.�.�<?�?�?�
,�,�,�,�8%�W�$�&�&���'�&��&%�W�$�&�&�&�&�'�&�&�%�W�$�&�&�<,�<,�'�&�<,�|L�L�L�;�;�;�E�E�E�
E�E�E�
E�E�E�`�`�`�^�^�^�B�B�B�,B�B�B�>)�)�)�)�)�)�	)�	)�	)����*�*�*�*�*rir�c��eZdZd�Zd�ZdS)�ManagerTestc���g�G�fd�dtj��}tjd��}|�t|jt��|�|��|�d��}|�d��tjd��|�	�dg��dS)Nc���eZdZd�fd�	ZdS)�6ManagerTest.test_manager_loggerclass.<locals>.MyLoggerNc�2����|��dSr��rF)rCr�r*rW�exc_info�extra�loggeds      �rG�_logz;ManagerTest.test_manager_loggerclass.<locals>.MyLogger._log)s����
�
�c�"�"�"�"�"riro)rprqrrr�)r�s�rG�MyLoggerr�(s3�������
#�
#�
#�
#�
#�
#�
#�
#rir�r�zshould appear in loggedzshould not appear in logged)
r�Logger�Managerr�	TypeError�setLoggerClassrVrr�rY)rCr��manr�r�s    @rG�test_manager_loggerclassz$ManagerTest.test_manager_loggerclass%s������	#�	#�	#�	#�	#�	#�	#�w�~�	#�	#�	#��o�d�#�#�����)�S�%7��=�=�=����8�$�$�$����v�&�&�����0�1�1�1���5�6�6�6�����";�!<�=�=�=�=�=ric��tjd��}t��}|�|��|�|j|��dSr�)rr��object�setLogRecordFactoryrY�logRecordFactory)rCr�res   rG�test_set_log_record_factoryz'ManagerTest.test_set_log_record_factory5sM���o�d�#�#���8�8������)�)�)�����-�x�8�8�8�8�8riN)rprqrrr�r�rsrirGr�r�$s2������>�>�>� 9�9�9�9�9rir�c��eZdZd�ZdS)�ChildLoggerTestc��tj��}tjd��}tjd��}|�d��}|�d��}|�|tjd����|�|tjd����|�d��}|�d��}|�d��}|�|tjd����|�|tjd����|�||��dS)	N�abczdef.ghi�xyzzuvw.xyz�def�ghi�abc.defzabc.def.ghi)rr�getChildr�)rCr��l1�l2�c1�c2�c3s       rG�test_child_loggersz"ChildLoggerTest.test_child_loggers<s�������
�
�u�
%�
%��
�
�y�
)�
)��
�Z�Z��
�
��
�Z�Z�	�
"�
"���
�
�b�'�+�E�2�2�3�3�3��
�
�b�'�+�I�6�6�7�7�7�
�[�[��
�
��
�[�[��
�
��
�[�[��
#�
#���
�
�b�'�+�I�6�6�7�7�7��
�
�b�'�+�M�:�:�;�;�;��
�
�b�"�����riN)rprqrrr�rsrirGr�r�;s#������
�
�
�
�
rir�c��eZdZdS)�DerivedLogRecordNr�rsrirGr�r�Lr�rir�c� �eZdZd�Zd�Zd�ZdS)�LogRecordFactoryTestc��Gd�dtj��}t�|��|t��|_|j�|j��tj��|_	dS)Nc��eZdZd�Zd�ZdS)�2LogRecordFactoryTest.setUp.<locals>.CheckingFilterc��||_dSr�)rV)rCrVs  rGr�z;LogRecordFactoryTest.setUp.<locals>.CheckingFilter.__init__Ss
������ric�n�t|��}||jurd|�d|j��}t|���dS)NzUnexpected LogRecord type z, expected T)rrVr�)rCr�r�r*s    rGr�z9LogRecordFactoryTest.setUp.<locals>.CheckingFilter.filterVsC����L�L���D�H�$�$�$�IJ��� �H�H�&�C�#�C�.�.�(��triN)rprqrrr�r�rsrirG�CheckingFilterr�Rs2������
�
�
�
�
�
�
�
rir�)
rr�rrHr�r�r0r��getLogRecordFactory�orig_factory)rCr�s  rGrHzLogRecordFactoryTest.setUpQs���
	�
	�
	�
	�
	�W�^�
	�
	�
	�	���t����$�n�%5�6�6�����"�"�4�;�/�/�/�#�7�9�9����ric��|j�|j��t�|��tj|j��dSr�)r0r�r�rrRrr�r�rms rGrRzLogRecordFactoryTest.tearDowncsI����%�%�d�k�2�2�2����$�����#�D�$5�6�6�6�6�6ric�,�|�t|jj|�����tjt��|j�|�����|�	dg��dS)N)r�r|r})
rr�r0r�rnrr�r�r�rhrms rG�test_logrecord_classz)LogRecordFactoryTest.test_logrecord_classhs������)�T�%5�%=��+�+�-�-�	/�	/�	/��#�$4�5�5�5�����t�0�0�2�2�3�3�3����!�
�	�	�	�	�	riN)rprqrrrHrRr�rsrirGr�r�OsA������:�:�:�$7�7�7�
����rir�c� �eZdZdZd�Zd�Zd�Zd�Zej	e
ejd��d��d���Z
ej	e
ejd��d��d	���Zej	e
ejd��d��d
���ZdS)�QueueHandlerTestr�c��t�|��tjd��|_tj�|j��|_d|_t	j	d��|_
d|j
_|j
�tj
��|j
�|j��dS)Nr)�queF)rrH�queue�Queuerr?�QueueHandler�que_hdlrrEr�
que_loggerrPr6r�rArms rGrHzQueueHandlerTest.setUpws������t�����[��_�_��
��(�5�5�d�j�A�A��
���	�!�+�E�2�2���$)���!��� � ���1�1�1���"�"�4�=�1�1�1�1�1ric�l�|j���t�|��dSr�)r�rJrrRrms rGrRzQueueHandlerTest.tearDown�rRric���|j�|�����|�tj|jj��|j�|�����|�tj|jj��|���}|j�|��|j���}|�	t|tj����|�
|j|jj��|�
|j|jf|df��dSr�)r�r�rnrr��Empty�
get_nowaitr�r�rBr�r�	LogRecordrYrEr*rW)rCr*r�s   rG�test_queue_handlerz#QueueHandlerTest.test_queue_handler�s������d�/�/�1�1�2�2�2����%�+�t�z�'<�=�=�=�����T�.�.�0�0�1�1�1����%�+�t�z�'<�=�=�=����!�!�������$�$�$��z�$�$�&�&�����
�4��):�;�;�<�<�<������D�O�$8�9�9�9����$�(�D�I�.��d��<�<�<�<�<ric���|���}tjtj��}d}|�|j||���}tj|j��}|j�	|��|j
�|��|j�
��}|�||j��|�||j��dS)Nz {name} -> {levelname}: {message})rE�	levelnamer�)rnrr�r�rrEr:r;r�r=r�r�r�r�rYr*r�)rCr*r��log_format_str�
formatted_msgr��
log_records       rG�test_formattingz QueueHandlerTest.test_formatting�s������!�!���(���9�9�	�;��&�-�-�4�9�8A�3�.�P�P�
��%�d�o�6�6�	��
�"�"�9�-�-�-������$�$�$��Z�*�*�,�,�
�����
��7�7�7�����
�(:�;�;�;�;�;ri�
QueueListenerz5logging.handlers.QueueListener required for this testc�8�ttj����}tj�|j|��}|���	|j�	|�
����|j�|�
����|j�|�
����|�
��n#|�
��wxYw|�|�tjd�����|�|�tjd�����|�|�tjd�����|���ttj����}|�tj��tj�|j|d���}|���	|j�	|�
����|j�|�
����|j�|�
����|�
��n#|�
��wxYw|�|�tjd�����|�|�tjd�����|�|�tjd	�����|���dS)
Nr{)r�r�r}r~T)�respect_handler_levelrr�r�)r
r�Matcherrr?r�r�rrr�r�rnr�r�r�rB�matchesr�r|rzrJr6r:)rCr��listeners   rG�test_queue_listenerz$QueueHandlerTest.test_queue_listener�s����g�o�/�/�0�0���#�1�1�$�*�g�F�F��������	��O�#�#�D�$5�$5�$7�$7�8�8�8��O�!�!�$�"3�"3�"5�"5�6�6�6��O�$�$�T�%6�%6�%8�%8�9�9�9��M�M�O�O�O�O��H�M�M�O�O�O�O��������������M�M�N�N�N��������
�s��K�K�L�L�L��������0@�#��N�N�O�O�O��
�
�����g�o�/�/�0�0������)�*�*�*��#�1�1�$�*�g�HL�2�N�N��������	��O�#�#�D�$5�$5�$7�$7�8�8�8��O�!�!�$�"3�"3�"5�"5�6�6�6��O�$�$�T�%6�%6�%8�%8�9�9�9��M�M�O�O�O�O��H�M�M�O�O�O�O������������#��N�N�O�O�O�����������L�L�M�M�M��������0@�#��N�N�O�O�O��
�
�����s�BC4�4D
�8BK�K'c���tj�|j|j��}|���	ddznG#t$r:}|}|j�|�	��|���Yd}~nd}~wwxYw|j�
|�	��d���|���|�|j
�������d��d��|�|j
�������d��d��dS)Nrkr�r�T��
stack_info�	Traceback�Stack)rr?r�r�r9rr�ZeroDivisionErrorr�r�rnr�r�rYr5rWr�r�)rCr�r�excs    rG�&test_queue_listener_with_StreamHandlerz7QueueHandlerTest.test_queue_listener_with_StreamHandler�sW���#�1�1�$�*�d�n�M�M��������	I�
��E�E�E�� �	I�	I�	I��C��O�%�%�d�&7�&7�&9�&9�C�%�H�H�H�H�H�H�H�H�����	I����	
����d�/�/�1�1�d��C�C�C��
�
���������-�-�/�/�5�5�7�7�=�=�k�J�J�A�N�N�N������-�-�/�/�5�5�7�7�=�=�g�F�F��J�J�J�J�Js�A�
B
�0B�B
c���|j�|j��|j�|j��tj�|j	|j��}|�
��|j�d��|���|�
|j������d��dS)Nr�zque -> ERROR: error)r�r=r<r�rAr9rr?r�r�rrr�r�rYr5rWr�)rCr�s  rG�*test_queue_listener_with_multiple_handlersz;QueueHandlerTest.test_queue_listener_with_multiple_handlers�s���	
�
�"�"�4�#6�7�7�7���"�"�4�>�2�2�2��#�1�1�$�*�d�m�L�L������������g�&�&�&��
�
���������-�-�/�/�5�5�7�7�9N�O�O�O�O�OriN)rprqrrrVrHrRr�r�r��
skipUnlessr&rr?r�r�r�rsrirGr�r�rs0������3��2�2�2� � � �
=�
=�
=�<�<�<��X�����!1�?�C�C�P�R�R���R�R��B�X�����!1�?�C�C�P�R�R�K�K�R�R�K��X�����!1�?�C�C�P�R�R�	P�	P�R�R�	P�	P�	Prir�r�)�patchc���eZdZ	dZed���Zejej	j
d��d���Zejej	j
d��d���Zed���Z
d�Zd�Zd	S)
�QueueListenerTest�c��	tjd|z��}|�tj��tj�|��}|�|��tj�|��}|���|�	d��|�	d��|�	d��|�	d��|�	d��|�
��|�|��|���dS)Nztest_logger_with_id_%s�one�two�three�four�five)
rrr6r7r?r�rAr�rrr�r�rKrJ)�	log_queuerBr�r�r�s     rG�
setup_and_logzQueueListenerTest.setup_and_log�s��
�
�&�'?�%�'G�H�H�F��O�O�G�M�*�*�*��&�3�3�I�>�>�G����g�&�&�&��'�5�5�i�@�@�H��N�N�����K�K������K�K������K�K�� � � ��K�K������K�K������M�M�O�O�O�� � ��)�)�)��M�M�O�O�O�O�Orir9c��t|j��D]B}tj��}|�||����d|�����C|�|jd|jzd��dS�Nrfr�z&correct number of handled log messages)r^�repeatr�r�rr~rY�
call_count�rC�mock_handler[rs    rG�#test_handle_called_with_queue_queuez5QueueListenerTest.test_handle_called_with_queue_queues����4�;�'�'�
H�
H��!�K�M�M�	��"�"�9��������A�A�.F�G�G�G�G����[�3�Q���_�E�
G�
G�
G�
G�
Gric�r�tj��t|j��D]j}t	j��}|�||����d|����|���|�	���k|�
|jd|jzd��dSr)r�*skip_if_broken_multiprocessing_synchronizer^r	�multiprocessingr�rr~rJr�rYr
rs    rG� test_handle_called_with_mp_queuez2QueueListenerTest.test_handle_called_with_mp_queues���
�>�@�@�@��4�;�'�'�
(�
(��+�1�3�3�	��"�"�9��������A�A�.F�G�G�G����!�!�!��%�%�'�'�'�'����[�3�Q���_�E�
G�
G�
G�
G�
Gric#�fK�		|���V��#tj$rgcYSwxYwr�)r�r�r�)rs rG�get_all_from_queuez$QueueListenerTest.get_all_from_queuesS����
�1�#�.�.�0�0�0�0�0�1���;�
�
�
��	�	�	�
���s��0�0c���	tj��t|j��D]�}t	j��}|�||����d|����t|�	|����}|j
��|j��gtj
jjgg}|�||dd�|D��z����dS)Nrfz&Found unexpected messages in queue: %sc�T�g|]%}t|tj��r|jn|��&Srs)r�rr�r*)rZr�s  rGr\zJQueueListenerTest.test_no_messages_in_queue_after_stop.<locals>.<listcomp>5sC��%<�%<�%<�01�/9��G�<M�.N�.N�&,�Q�U�U�*+�%<�%<�%<ri)rrr^r	rr�rr~�listrrJr�rr?r��	_sentinelr�)rCr[r�r�res     rG�$test_no_messages_in_queue_after_stopz6QueueListenerTest.test_no_messages_in_queue_after_stop s��
�
�>�@�@�@��4�;�'�'�
>�
>��'�-�/�/���"�"�5�D�G�G�I�I�I�I�q�q�*A�B�B�B��T�4�4�U�;�;�<�<�����
�
�
�!��!�#�#�#���!1�!?�!I� J�K���
�
�e�X�F�%<�%<�5:�%<�%<�%<�=�>�>�>�>�
>�
>ric�H�tj��}tj�|��}|���|���|�t��5|�	��ddd��dS#1swxYwYdSr�)
r�r�rr?r�rrr�rrB�	task_done)rCrr�s   rG�test_calls_task_done_after_stopz1QueueListenerTest.test_calls_task_done_after_stop8s�����
�
�I��'�5�5�i�@�@�H��N�N�����M�M�O�O�O��"�"�:�.�.�
&�
&��#�#�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&�
&�
&s�5B�B�BN)rprqrrr	�staticmethodrr�r�rr?r�r
rrrrrsrirGr�r��s�������	�
��	�	�	�
��	�.
���g�&�4�h�	?�	?�	G�	G�
@�	?�	G�
���g�&�4�h�	?�	?�
	G�
	G�
@�	?�
	G�
�	�	�
��	�	>�	>�	>�0	&�	&�	&�	&�	&rir�c��eZdZd�ZeZd�ZdS)�UTCc��tSr�)�ZERO�rC�dts  rG�	utcoffsetz
UTC.utcoffsetFs���ric��dS)Nrrsr!s  rG�tznamez
UTC.tznameKs���uriN)rprqrrr#�dstr%rsrirGrrEs9����������C�����rirc��eZdZd�ZdS)�AssertErrorMessagec��	|jdg|�Ri|��dS#|$r.}|�|t|����Yd}~dSd}~wwxYw)Nrs)rrYrY)rCr�r�rWr}rs      rG�assert_error_messagez'AssertErrorMessage.assert_error_messageRs}��	.��D��b�2�4�2�2�2�6�2�2�2�2�2���	.�	.�	.����W�c�!�f�f�-�-�-�-�-�-�-�-�-�����	.���s��A�#A�AN)rprqrrr*rsrirGr(r(Ps#������.�.�.�.�.rir(c�R�eZdZd�Zd
d�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
dS)�
FormatterTestc	��dtjtj�ddd��dddddd�|_d	d	d
ii|_dS)Nzformatter.testr;�toz	dummy.extr�zMessage with %d %s)r��placeholders)rEr��pathname�linenor��funcr*rWr�i�)rr7r4r;r��common�variantsrms rGrHzFormatterTest.setUpYsX��$��]�����V�T�;�?�?����'�'�	
�	
���
��$��
��
�
�
riNc��t|j��}|� |�|j|��t	j|��Sr�)r�r3rMr4rr�)rCrE�results   rG�
get_recordzFormatterTest.get_recordjsA���d�k�"�"�����M�M�$�-��-�.�.�.��$�V�,�,�,ric���|���}tjd��}|�|�|��d��tjd��}|�t|j|��|�|�����tjd��}|�	|�����tjd��}|�	|�����tjd��}|�	|�����dS)Nz${%(message)s}z${Message with 2 placeholders}z
%(random)s�%(asctime)sz%(asctime)-15sz%(asctime)#15s�
r7rr:rYrrrBr:�usesTimerB�rCr�r�s   rG�test_percentzFormatterTest.test_percentps���O�O������.�/�/��������!���&F�G�G�G���l�+�+�����*�a�h��2�2�2���������&�&�&���m�,�,������
�
���%�%�%���.�/�/������
�
���%�%�%���.�/�/������
�
���%�%�%�%�%ric��|���}tjdd���}|�|�|��d��tjdd���}|�t|j|��tjdd���}|�|�����tjdd���}|�	|�����tjdd���}|�	|�����tjd	d���}|�	|�����dS)
Nz
$%{message}%$r��r��$%Message with 2 placeholders%$z{random}r��	{asctime}z{asctime!s:15}z{asctime:15}r:r<s   rG�test_braceszFormatterTest.test_bracess;���O�O������o�S�9�9�9��������!���&G�H�H�H���j��4�4�4�����*�a�h��2�2�2���k��5�5�5����������&�&�&���k��5�5�5������
�
���%�%�%���.�c�:�:�:������
�
���%�%�%���n�C�8�8�8������
�
���%�%�%�%�%ric�L�|���}tjdd���}|�|�|��d��tjdd���}|�|�|��d��tjdd���}|�|�|��d��tjdd���}|�t|j|��|�|�����tjd	d���}|�	|�����tjd
d���}|�	|�����tjdd���}|�|�����tjdd���}|�	|�����dS)N�
${message}r�r?zMessage with 2 placeholdersz$messagez$$%${message}%$$r@z	${random}z
${asctime}z$asctimez${asctime}--r:r<s   rG�test_dollarszFormatterTest.test_dollars�s����O�O������l�#�6�6�6��������!���&C�D�D�D���j��4�4�4��������!���&C�D�D�D���0��<�<�<��������!���&G�H�H�H���k��5�5�5�����*�a�h��2�2�2���������&�&�&���l�#�6�6�6������
�
���%�%�%���j��4�4�4������
�
���%�%�%���l�#�6�6�6����������&�&�&���n�C�8�8�8������
�
���%�%�%�%�%ric�h�tjd��}|�|jd��tjd��}|�|jd��tjd��}|�|jd��tjd��}|�|jd��tjdd���}|�|jd��tjdd���}|�|jd��tjd	d���}|�|jd	��tjd
d���}|�|jd
��tjdd���}|�|jd��tjdd���}|�|jd��tjd
d���}|�|jd
��tjdd���}|�|jd��tjdd���}|�|jd��tjdd���}|�|jd��tjdd���}|�|jd��tjdd���}|�|jd��tjdd���}|�|jd��tjdd���}|�|jd��tjdd���}|�|jd��tjdd���}|�|jd��tjdd���}|�|jd��|�t
tjd��|�t
tjd��|�t
tjd��|�t
tjd��|�t
tjd��|�t
tjd��|�t
tjd��|�t
tjd ��|�t
tjd!��|�t
d"tjd#d���|�t
d$tjd%d���|�t
d&��|�t
tjd'd���|�t
d(tjd)d���|�t
d*tjd+d���|�t
tjd,d���|�t
tjd-d���|�t
tjd.d���|�t
tjd/d���|�t
d0tjd1d���|�t
d2tjd3d���|�t
tjd4d���|�t
tjd5d���|�t
tjd6d���|�t
tjd7d���|�t
tjd8d���|�t
tjd9d���|�t
tjd:d���|�t
tjd;d���|�t
tjd<d���|�t
d=tjd>d���|�t
d=tjd?d���|�t
d=tjd@d���|�t
d$tjdd���|�t
tjd%d���|�t
d$tjdAd���|�t
tjdBd���dS)CNzM%(levelname)-15s - %(message) 5s - %(process)03d - %(module) - %(asctime)*.3sz1%(asctime)*s - %(asctime)*.3s - %(process)-34.33oz%(process)#+027.23Xz
%(foo)#.*gz5$%{message}%$ - {asctime!a:15} - {customfield['key']}r�r?z{process:.2f} - {custom.f:.4f}z{customfield!s:#<30}z{message!r}z{message!s}z{message!a}z{process!r:4.2}z8{process!s:<#30,.12f}- {custom:=+#30,.1d} - {module:^30}z{process!s:{w},.{p}}z{foo:12.{p}}z{foo:{w}.6}z{foo[0].bar[1].baz}z{foo[k1].bar[k2].baz}z{12[k1].bar[k2].baz}z${asctime} - $messager�z$bar $$z	$bar $$$$z%(asctime)Zz%(asctime)bz%(asctime)*z
%(asctime)*3sz%(asctime)_rArDz
%(foo)#12.3*fz%(foo)0*.8*fz;invalid format: invalid field name/expression: 'name-thing'z{name-thing}zinvalid format: no fieldsr9zinvalid conversion: 'Z'z{asctime!s:#30,15f}z7invalid format: expected ':' after conversion specifierz{asctime!aa:15}z%invalid format: bad specifier: '.2ff'z{process:.2ff}z
{process:.2Z}z{process!s:<##30,12g}z{process!s:<#30#,12g}z{process!s:{{w}},{{p}}}z1invalid format: expected '}' before end of stringz{processz7invalid format: Single '}' encountered in format stringzprocess}z{{foo!r:4.2}z
{{foo!r:4.2}}z	{foo/bar}z{foo:{{w}}.{{p}}}}z{foo!X:{{w}}.{{p}}}z{foo!a:random}z{foo!a:ran{dom}z{foo!a:ran{d}om}z
{foo.!a:d}z$invalid format: bare '$' not allowedz$bar $$$zbar $zfoo $.rbz	${asctime)rr:rY�_fmtrrBr*�rCr�s  rG�test_format_validatez"FormatterTest.test_format_validate�s���
��m�n�n�������!p�q�q�q���Q�R�R�������!T�U�U�U���3�4�4�������!6�7�7�7���l�+�+��������.�.�.�
��U�]`�a�a�a�������!X�Y�Y�Y���>�c�J�J�J�������!A�B�B�B���4�C�@�@�@�������!7�8�8�8���m�3�7�7�7��������/�/�/���m�3�7�7�7��������/�/�/���m�3�7�7�7��������/�/�/���/�s�;�;�;�������!2�3�3�3���X�`c�d�d�d�������![�\�\�\���4�C�@�@�@�������!7�8�8�8���n�C�8�8�8��������0�0�0���m�3�7�7�7��������/�/�/���3�3�?�?�?�������!6�7�7�7���5�S�A�A�A�������!8�9�9�9���4�C�@�@�@�������!7�8�8�8�
��5�S�A�A�A�������!8�9�9�9���i�s�3�3�3��������+�+�+���k��5�5�5��������-�-�-�	
���*�g�&7��G�G�G����*�g�&7��G�G�G����*�g�&7��G�G�G����*�g�&7��I�I�I����*�g�&7��G�G�G����*�g�&7��E�E�E����*�g�&7��F�F�F����*�g�&7��I�I�I����*�g�&7��H�H�H�	
�!�!��I���~�S�	"�	
�	
�	
�	
�!�!��'���}�C�	"�	
�	
�	
�	
�!�!��%�	
�	
�	
�	
���*�g�&7�9N�VY��Z�Z�Z��!�!��E���0��	"�	
�	
�	
�	
�!�!��3���/�s�	"�	
�	
�	
�
	
���*�g�&7��PS��T�T�T����*�g�&7�9P�X[��\�\�\����*�g�&7�9P�X[��\�\�\����*�g�&7�9R�Z]��^�^�^��!�!��?���z��	"�	
�	
�	
�
	
�!�!��E���z��	"�	
�	
�	
�
	
���*�g�&7��s��S�S�S����*�g�&7��PS��T�T�T����*�g�&7��C��P�P�P����*�g�&7�9M�UX��Y�Y�Y����*�g�&7�9N�VY��Z�Z�Z����*�g�&7�9I�QT��U�U�U����*�g�&7�9J�RU��V�V�V����*�g�&7�9K�SV��W�W�W����*�g�&7��S��Q�Q�Q�	
�!�!��4���z��	"�	
�	
�	
�
	
�!�!��4���w�c�	"�	
�	
�	
�
	
�!�!��4���x�s�	"�	
�	
�	
�	
�!�!��'���{�#�	"�	
�	
�	
�
	
���*�g�&7��c��R�R�R�	
�!�!��'���u�C�	"�	
�	
�	
�
	
���*�g�&7��C��P�P�P�P�Pric��gd�}gd�}t||��D�]<\}}tj||ddi���}|���}|�|�|��d��|�d��}|�|�|��d��tj||���}|���}|�t|j|��tj||d	di���}|�d��}|�|�|��d����>dS)
N)z%(custom)s %(message)sz{custom} {message}z$custom $message)�%r�r�r��Default)r�r�z#Default Message with 2 placeholdersz 1234 Message with 2 placeholdersr?zNon-existing)r[rr:r7rYrrrB)rC�fmts�stylesr�r�r�r�s       rG�test_defaults_parameterz%FormatterTest.test_defaults_parameter:sR��S�S�S�� �����d�F�+�+�	N�	N�J�C���!�#�U�h�	�=R�S�S�S�A����!�!�A����Q�X�X�a�[�[�*O�P�P�P�����)�)�A����Q�X�X�a�[�[�*L�M�M�M��!�#�U�3�3�3�A����!�!�A����j�!�(�A�6�6�6��!�#�U�n�i�=X�Y�Y�Y�A�����)�)�A����Q�X�X�a�[�[�*L�M�M�M�M�	N�	Nric�V�|�ttjddd��dS)N�x)rrBrr:rms rG�test_invalid_stylez FormatterTest.test_invalid_styleNs'�����*�g�&7��t�S�I�I�I�I�Iric
�H�|���}tjdddddddt��}tj|�d�������|_d|_tj
d��}tj|_|�
|�|��d	��|�
|�|d
��d��|�|��|�
|jd	��dS)N��r]��rbr�{�%(asctime)s %(message)sz1993-04-21 08:03:00,123z%Y:%dz1993:21)r7�datetime�utcr_�mktime�
astimezone�	timetuple�created�msecsrr:�gmtime�	converterrY�
formatTimer�asctime)rCr�r"r�s    rG�	test_timezFormatterTest.test_timeQs����O�O����
�
�t�Q��A�q�!�Q��
<�
<���K��
�
�d� 3� 3� =� =� ?� ?�@�@��	������7�8�8���k���������a���*C�D�D�D�������a��1�1�9�=�=�=�	������������$=�>�>�>�>�>ric
��Gd�dtj��}|���}tjddddddd	t��}tj|�d�������|_	|��}t
j
|_|�|�
|��d
��dS)Nc��eZdZdZdZdS)�DFormatterTest.test_default_msec_format_none.<locals>.NoMsecFormatterNz%d/%m/%Y %H:%M:%S)rprqrr�default_msec_format�default_time_formatrsrirG�NoMsecFormatterrg`s������"&��"5���rirjrTr]rUrVrbrrWz21/04/1993 08:03:00)rr:r7rYrZr_r[r\r]r^r`rarYrb)rCrjr�r"r�s     rG�test_default_msec_format_nonez+FormatterTest.test_default_msec_format_none_s���	6�	6�	6�	6�	6�g�/�	6�	6�	6�
�O�O����
�
�t�Q��A�q�!�S�#�
>�
>���K��
�
�d� 3� 3� =� =� ?� ?�@�@��	��O�����k���������a���*?�@�@�@�@�@ric��tjddd���}td��D]]}tjd��tjdd|d	zzi��}|�|��}|�d
|���^dS)Nz!{asctime}.{msecs:03.0f} {message}r�r�)r�r�r�i�	g-C��6:?r*z
Message %drkz.1000)rr:r^r_rar�r�assertNotIn)rCr�r[r�rgs     rG�test_issue_89047zFormatterTest.test_issue_89047ks�����"E�S�Zm�n�n�n���t���	)�	)�A��J�v�����%�u�l�a�!�e�.D�&E�F�F�A�������A����W�a�(�(�(�(�		)�	)rir�)rprqrrrHr7r=rBrErIrOrRrdrkrnrsrirGr,r,Xs�������
�
�
�"-�-�-�-�
&�
&�
&�&�&�&� &�&�&�*TQ�TQ�TQ�lN�N�N�(J�J�J�?�?�?�
A�
A�
A�)�)�)�)�)rir,c��eZdZd�Zd�ZdS)�TestBufferingFormatterc�&�dt|��zS)Nz[(%d)�rZ�rC�recordss  rG�formatHeaderz#TestBufferingFormatter.formatHeaderu�����W���%�%ric�&�dt|��zS)Nz(%d)]rrrss  rG�formatFooterz#TestBufferingFormatter.formatFooterxrvriN)rprqrrrurxrsrirGrprpts2������&�&�&�&�&�&�&�&rirpc� �eZdZd�Zd�Zd�ZdS)�BufferingFormatterTestc�h�tjddi��tjddi��g|_dS)Nr*rr)rr�rtrms rGrHzBufferingFormatterTest.setUp|s3���!�5�%�.�1�1��!�5�%�.�1�1�
����ric���tj��}|�d|�g����|�d|�|j����dS)Nr�onetwo)r�BufferingFormatterrYrrtrHs  rG�test_defaultz#BufferingFormatterTest.test_default�sZ���&�(�(������Q�X�X�b�\�\�*�*�*�����1�8�8�D�L�#9�#9�:�:�:�:�:ric� �t��}|�d|�|j����t	jd��}t|��}|�d|�|j����dS)Nz[(2)onetwo(2)]z
<%(message)s>z[(2)<one><two>(2)])rprYrrtrr:)rCr��lfs   rG�test_customz"BufferingFormatterTest.test_custom�sz��"�$�$�����)�1�8�8�D�L�+A�+A�B�B�B�
�
��
/�
/��"�2�&�&�����-�q�x�x���/E�/E�F�F�F�F�FriN)rprqrrrHrr�rsrirGrzrz{sF������
�
�
�;�;�;�
G�G�G�G�Grirzc��eZdZd�ZdS)�
ExceptionTestc��|j}t��}|�|��	td���#t	jdd���YnxYw|�|��|���|jd}|�	|j
�d����|�	|j
�d����|�	|j
�d����|�	|j
�d	����dS)
Nr��failedTr�rz#Traceback (most recent call last):
z!
RuntimeError: deliberate mistake�Stack (most recent call last):
z,logging.exception('failed', stack_info=True))r0�RecordingHandlerrAr�rr�rKrJrtrB�exc_textr�rCr�)rCr�rQs   rGr�zExceptionTest.test_formatting�s`���������	���Q����	9��3�4�4�4��	9���h�4�8�8�8�8�8�8����	�������	���	�	�	�
�I�a�L������
�-�-�/>�?�?�	@�	@�	@�����
�+�+�-A�B�B�	C�	C�	C������/�/�1>�?�?�	@�	@�	@������-�-�/?�@�@�	A�	A�	A�	A�	As	�;�AN)rprqrrr�rsrirGr�r��s(������A�A�A�A�Arir�c��eZdZd�ZdS)�LastResortTestc�R�|j}|�|j��tj}tj}	t
j��5}|�d��|�	|�
��d��|�d��|�	|�
��d��ddd��n#1swxYwYdt_t
j��5}|�d��d}|�	|�
��|��ddd��n#1swxYwYt
j��5}|�d��|�	|�
��d��ddd��n#1swxYwYd|j_
dt_t
j��5}|�d��|�	|�
��d��ddd��n#1swxYwY|�|j��|t_|t_dS#|�|j��|t_|t_wxYw)NzThis should not appearrz
Final chance!zFinal chance!
z-No handlers could be found for logger "root"
F)r0rKr9r�
lastResortr�rr�r�rYrWr�r�emittedNoHandlerWarningrA)rCr��old_lastresort�old_raise_exceptionsr�r*s      rG�test_last_resortzLastResortTest.test_last_resort�sJ��������4�>�*�*�*� �+��&�6��	;��(�*�*�
G�f��
�
�3�4�4�4�� � ����!2�!2�B�7�7�7����_�-�-�-�� � ����!2�!2�4E�F�F�F�	
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G�"&�G���(�*�*�
9�f����_�-�-�-�F��� � ����!2�!2�C�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9��(�*�*�
8�f����_�-�-�-�� � ����!2�!2�B�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�
49�D�L�0�&+�G�#��(�*�*�
8�f����_�-�-�-�� � ����!2�!2�B�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�
�O�O�D�N�+�+�+�!/�G��&:�G�#�#�#��
�O�O�D�N�+�+�+�!/�G��&:�G�#�:�:�:�:s��I2�A;C�	I2�C�I2�C�"I2�?AE�?I2�E�I2�E�I2�)>F3�'I2�3F7�7I2�:F7�;.I2�)>H3�'I2�3H7�7I2�:H7�;I2�24J&N)rprqrrr�rsrirGr�r��s#������#;�#;�#;�#;�#;rir�c��eZdZd�Zd�ZdS)�FakeHandlerc
�\�dD](}t|||�|||�����)dS)N)r��flushrJr�)�setattr�record_call)rC�
identifier�calledrJs    rGr�zFakeHandler.__init__�sF��>�	P�	P�F��D�&�$�"2�"2�:�v�v�"N�"N�O�O�O�O�	P�	Pric��������fd�}|S)Nc�Z����d�������dS)Nz{} - {})rFr)r�r��method_names���rG�innerz&FakeHandler.record_call.<locals>.inner�s+����M�M�)�*�*�:�{�C�C�D�D�D�D�Drirs)rCr�r�r�r�s ``` rGr�zFakeHandler.record_call�s4�����	E�	E�	E�	E�	E�	E�	E��riN)rprqrrr�r�rsrirGr�r��s5������P�P�P�����rir�c�$��eZdZ�fd�Zd�Z�xZS)r�c�V��tt|��j|i|��g|_dSr�)r�r�r�rt)rCrWr}r�s   �rGr�zRecordingHandler.__init__�s1���.����%�%�.��?��?�?�?�����ric�<�	|j�|��dSr�)rtrFr�s  rGr9zRecordingHandler.handle�s!��4�����F�#�#�#�#�#ri)rprqrrr�r9r�r�s@rGr�r��sG������������$�$�$�$�$�$�$rir�c�z��eZdZ	�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Z�xZS)�ShutdownTestc���tt|�����g|_tj}|�ttd|��dS)Nr�)r�r�rHr�rr�r�r�)rC�raise_exceptionsr�s  �rGrHzShutdownTest.setUp�sO���
�l�D�!�!�'�'�)�)�)����"�2�������*;�=M�N�N�N�N�Nric����fd�}|S)Nc�������r�rs)r�s�rGr�z'ShutdownTest.raise_error.<locals>.inner�s����%�'�'�Mrirs)rCr�r�s ` rG�raise_errorzShutdownTest.raise_error�s!���	�	�	�	�	��ric�J�td|j��}td|j��}td|j��}ttjj|||g��}tjt|�����gd�}|�||j��dS)Nrrkr���handlerList)z2 - acquirez	2 - flushz	2 - closez2 - releasez1 - acquirez	1 - flushz	1 - closez1 - releasez0 - acquirez	0 - flushz	0 - close�0 - release)	r�r�r�rrr�r�rrY)rC�handler0�handler1�handler2r?res      rG�test_no_failurezShutdownTest.test_no_failure�s����q�$�+�.�.���q�$�+�.�.���q�$�+�.�.���w��*�X�x��,J�K�K����T�(�^�^�4�4�4�4�L�L�L��	
����4�;�/�/�/�/�/ric�>�td|j��}t|||�|����tj�|��g}t	jt|�����|�	d|jd��dS)Nrr�r�r))
r�r�r�r�rrr�r�rrY)rCrJr�r�r?s     rG�_test_with_failure_in_methodz)ShutdownTest._test_with_failure_in_methods����a���-�-������!1�!1�%�!8�!8�9�9�9��O�'�'��0�0�1����T�(�^�^�4�4�4�4�������B��8�8�8�8�8ric�<�|�dt��dS�Nr��r�rArms rG�test_with_ioerror_in_acquirez)ShutdownTest.test_with_ioerror_in_acquires���)�)�)�W�=�=�=�=�=ric�<�|�dt��dS�Nr�r�rms rG�test_with_ioerror_in_flushz'ShutdownTest.test_with_ioerror_in_flush����)�)�'�7�;�;�;�;�;ric�<�|�dt��dS�NrJr�rms rG�test_with_ioerror_in_closez'ShutdownTest.test_with_ioerror_in_closer�ric�<�|�dt��dSr��r�rBrms rG�test_with_valueerror_in_acquirez,ShutdownTest.test_with_valueerror_in_acquires���)�)�)�Z�@�@�@�@�@ric�<�|�dt��dSr�r�rms rG�test_with_valueerror_in_flushz*ShutdownTest.test_with_valueerror_in_flush����)�)�'�:�>�>�>�>�>ric�<�|�dt��dSr�r�rms rG�test_with_valueerror_in_closez*ShutdownTest.test_with_valueerror_in_closer�ric�T�dt_|�dt��dS)NFr��rr�r��
IndexErrorrms rG�.test_with_other_error_in_acquire_without_raisez;ShutdownTest.test_with_other_error_in_acquire_without_raises&��"'����)�)�)�Z�@�@�@�@�@ric�T�dt_|�dt��dS)NFr�r�rms rG�,test_with_other_error_in_flush_without_raisez9ShutdownTest.test_with_other_error_in_flush_without_raise!�&��"'����)�)�'�:�>�>�>�>�>ric�T�dt_|�dt��dS)NFrJr�rms rG�,test_with_other_error_in_close_without_raisez9ShutdownTest.test_with_other_error_in_close_without_raise%r�ric�l�dt_|�t|jdt��dS)NTr��rr�rr�r�rms rG�+test_with_other_error_in_acquire_with_raisez8ShutdownTest.test_with_other_error_in_acquire_with_raise)s8��"&������*�d�&G�#�Z�	1�	1�	1�	1�	1ric�l�dt_|�t|jdt��dS)NTr�r�rms rG�)test_with_other_error_in_flush_with_raisez6ShutdownTest.test_with_other_error_in_flush_with_raise.�8��"&������*�d�&G�!�:�	/�	/�	/�	/�	/ric�l�dt_|�t|jdt��dS)NTrJr�rms rG�)test_with_other_error_in_close_with_raisez6ShutdownTest.test_with_other_error_in_close_with_raise3r�ri)rprqrrrHr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�s@rGr�r��s'�������-�O�O�O�O�O����
0�0�0� 9�9�9�>�>�>�<�<�<�<�<�<�A�A�A�?�?�?�?�?�?�A�A�A�?�?�?�?�?�?�1�1�1�
/�/�/�
/�/�/�/�/�/�/rir�c�f�eZdZ	d�Zdd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�ZdS)�ModuleLevelMiscTestc��tjjj}|�|d��|�tj|��tjd��|�tjjjd��|�ttjd��Gd�d��}|�ttj|����tjd��tj��|�tjjjtj	��dS)Nr�S�
doesnotexistsc��eZdZdS)�;ModuleLevelMiscTest.test_disable.<locals>._NotAnIntOrStringNr�rsrirG�_NotAnIntOrStringr�H��������Drir��WARN)
rr�rrNrYr�rrBr�rz)rC�old_disabler�s   rG�test_disablez ModuleLevelMiscTest.test_disable=s���l�*�2������a�(�(�(�������5�5�5������������-�5�r�:�:�:����*�g�o��G�G�G�	�	�	�	�	�	�	�	�	
���)�W�_�6G�6G�6I�6I�J�J�J�������	����������-�5�w�7G�H�H�H�H�HriNc�~��g�tj|td�fd���t��}tj�|��t
t|��}|�||d|��n|d|��|�t|j	��d��|j	d}|�|�
��d|z��|�|n&t
t|�����}|�|j|��|��g��dS)N�basicConfigc�2����||f��Sr�r�)rN�kwr�s  �rG�<lambda>z/ModuleLevelMiscTest._test_log.<locals>.<lambda>Ws���v�}�}�a��W�'=�'=�riztest me: %rrkr)
rr�rr�r�rAr,rYrZrt�
getMessage�upperr�)rCrJr��	recording�
log_methodr��expected_levelr�s       @rG�	_test_logzModuleLevelMiscTest._test_logTs:������
�d�G�]�=�=�=�=�	?�	?�	?�%�&�&�	�����	�*�*�*��W�f�-�-�
����J�u�m�Y�7�7�7�7��J�}�i�0�0�0�����Y�.�/�/��3�3�3��"�1�%������*�*�,�,�m�i�.G�H�H�H�"'�"3�����&�,�,�.�.�9Y�9Y��������8�8�8�	
�����$�$�$�$�$ric�F�|�dtj��dS�Nr�)r�rr|rms rG�test_logzModuleLevelMiscTest.test_logls�����u�g�m�,�,�,�,�,ric�0�|�d��dS�Nr��r�rms rG�
test_debugzModuleLevelMiscTest.test_debugo������w�����ric�0�|�d��dS�Nr�r�rms rG�	test_infozModuleLevelMiscTest.test_infor������v�����ric�0�|�d��dS�Nr�r�rms rG�test_warningz ModuleLevelMiscTest.test_warningu������y�!�!�!�!�!ric�0�|�d��dS�Nr�r�rms rG�
test_errorzModuleLevelMiscTest.test_errorxr�ric�0�|�d��dS�Nr�r�rms rG�
test_criticalz!ModuleLevelMiscTest.test_critical{������z�"�"�"�"�"ric��|�ttjt��Gd�dtj��}tj|��|�tj��|��tjtj��|�tj��tj��dS)Nc��eZdZdS)�;ModuleLevelMiscTest.test_set_logger_class.<locals>.MyLoggerNr�rsrirGr�r�r�rir�)rr�rr�r�r�rY�getLoggerClass)rCr�s  rG�test_set_logger_classz)ModuleLevelMiscTest.test_set_logger_class~s������)�W�%;�V�D�D�D�	�	�	�	�	�w�~�	�	�	�	��x�(�(�(�����/�1�1�8�<�<�<���w�~�.�.�.�����/�1�1�7�>�B�B�B�B�Bric�T��g�G�fd�dtj����}tj|��tjd��}|��dg��tj��}tj|��}|�|��	|�	tj
��|�d��|�|����
��d��|�d��|�d��|�	tj��|�d��|�|���d��|�|��|���tjtj��dS#|�|��|���tjtj��wxYw)Nc�2���eZdZdejf��fd�	Z�xZS)�@ModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLoggerr�c�v��t���||����d��dS)N�initialized)r�r�rF)rCrEr�r�r�s   ��rGr�zIModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLogger.__init__�s5������ � ��u�-�-�-����}�-�-�-�-�-ri)rprqrrrr�r�r�)r�r�s@�rGr�r�sJ��������$.�g�n�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.rir��just_some_loggerr
�hellorr)rrr�rrYr3r4r8rAr6r7r�rWr��truncater�r�rKrJr�)rCr�r�r5rQr�s     @rG�test_subclass_logger_cachez.ModuleLevelMiscTest.test_subclass_logger_cache�s������	.�	.�	.�	.�	.�	.�	.�w�-�/�/�	.�	.�	.�
	��x�(�(�(��"�#5�6�6������=�/�2�2�2�������!�&�)�)�����!����	3��O�O�G�M�*�*�*��L�L��!�!�!����V�_�_�.�.�4�4�6�6��@�@�@��O�O�A�����K�K��N�N�N��O�O�G�L�)�)�)��L�L��!�!�!����V�_�_�.�.��3�3�3�� � ��#�#�#�
�G�G�I�I�I��"�7�>�2�2�2�2�2��
� � ��#�#�#�
�G�G�I�I�I��"�7�>�2�2�2�2���s�!C4G�A	H'c���tjd��}td|��\}}}|���}|�d|��|�d|��dS)Na*
            import logging

            class A:
                def __del__(self):
                    try:
                        raise ValueError("some error")
                    except Exception:
                        logging.exception("exception in __del__")

            a = A()
        �-czexception in __del__zValueError: some error)rxryrrsr��rC�code�rc�out�errs     rG�test_logging_at_shutdownz,ModuleLevelMiscTest.test_logging_at_shutdown�sl���� �
�
��(��d�3�3���C���j�j�l�l���
�
�,�c�2�2�2��
�
�.��4�4�4�4�4ric�v�tj}|�tj|��t	jd|�d���}t
d|��t|d���5}|�|�	���
��d��ddd��dS#1swxYwYdS)Na�
            import builtins
            import logging

            class A:
                def __del__(self):
                    logging.error("log in __del__")

            # basicConfig() opens the file, but logging.shutdown() closes
            # it at Python exit. When A.__del__() is called,
            # FileHandler._open() must be called again to re-open the file.
            logging.basicConfig(filename=z�, encoding="utf-8")

            a = A()

            # Simulate the Python finalization which removes the builtin
            # open() function.
            del builtins.open
        rr%r~zERROR:root:log in __del__)r�TESTFNr�r5rxryrr�rYr`r�)rCr&r�fps    rG�test_logging_at_shutdown_openz1ModuleLevelMiscTest.test_logging_at_shutdown_open�s���#�����	�(�(�3�3�3��� �+3� � � �
�
��&	��t�$�$�$�
�(�W�
-�
-�
-�	N�����R�W�W�Y�Y�-�-�/�/�1L�M�M�M�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N����	N�	N�	N�	N�	N�	Ns�&;B.�.B2�5B2c���tjd��}td|��\}}}|���}|�d|��|�|d��dS)Nz�
            import logging

            def rec():
                logging.error("foo")
                rec()

            rec()
        rz#Cannot recover from stack overflow.rk)rxryrrsrmrYrs     rG�test_recursion_errorz(ModuleLevelMiscTest.test_recursion_error�so���� �
�
��-�T�4�8�8���C���j�j�l�l�����>��D�D�D�����Q�����ric�*�tj��}|�tj|��|�tj|��tj��}|�||��|�||��dSr�)r�getLevelNamesMappingrYr'�assertIsNot)rC�mapping�new_mappings   rG�test_get_level_names_mappingz0ModuleLevelMiscTest.test_get_level_names_mapping�s����.�0�0������-�w�7�7�7�����-�w�7�7�7��2�4�4������+�.�.�.�����+�.�.�.�.�.rir�)rprqrrr�r�r�r�r�r�r�rrrrrrr%rsrirGr�r�9s�������3�I�I�I�.%�%�%�%�0-�-�-� � � ����"�"�"� � � �#�#�#�
C�
C�
C�3�3�3�>5�5�5�&N�N�N�> � � � /�/�/�/�/rir�c�>�eZdZd�Zd�Zedd���Zd�Zd�ZdS)�
LogRecordTestc���tji��}t|��}|�|�d����|�|�d����dS)Nz<LogRecord: �>)rr�rYrBr�rC)rCr�rgs   rG�test_str_repzLogRecordTest.test_str_rep�s]���!�"�%�%����F�F��������^�4�4�5�5�5�����
�
�3���(�(�(�(�(ric��t��}tj��}|�|��ddi}tjd|��|�|jdj|��|�|jdj	d��|�
|��|���dS)N�less�morezless is %(less)srzless is more)r�rrrAr�r�rtrWrYr�rKrJ)rCrQr�rxs    rG�
test_dict_argzLogRecordTest.test_dict_arg�s������������	���Q����
�f�����*�A�.�.�.��
�
�a�i��l�'��+�+�+������1��-�~�>�>�>�	�������	���	�	�	�	�	riNc���tj}|t_	ddl}|���j}tjdd|��i��}t
jtj	dd��5tjdd|��i��}ddd��n#1swxYwY||j
|j
d�}|t_n#|t_wxYw|r|�|��dS|S)Nrr*�msg1_r�msg2_)�processName�r1.processName�r2.processName)r�logMultiprocessingr�current_processrEr�r�	swap_itemr0�modulesr2r1)	r�r5r�prev_logMultiprocessing�mprE�r1�r2�resultss	         rG�_extract_logrecord_process_namez-LogRecordTest._extract_logrecord_process_namesR��")�"<��%7��"�	A�(�(�(�(��%�%�'�'�,�D��&��}�s�}�}�'=�>�>�B��"�3�;�0A�4�H�H�
C�
C��*�E�=�3�=�=�+A�B�B��
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C����
C�
C�
C�
C�)-�)+��)+����G�
*A�G�&�&��)@�G�&�@�@�@�@��	��I�I�g�������Ns0�AB>�0B�
B>�B�B>�B�B>�>Cc�r�tj��dtjv}	|�t
jd��d}tji��}|�|jd��|�	d|��}|�d|d��|�d|d��|�d|d��ddl
}|j��\}}|j|j	d	||f�
��}|�
��|���}|�d|d��|�|d|d��|�d|d��|���|rddl
}dSdS#|rddl
}wxYw)NrT�MainProcessrkr2r3r4rr�rj)rrr0r8rYrr5r�r2r>r�Pipe�Processrrr	�assertNotEqualr�)	rC�multiprocessing_imported�LOG_MULTI_PROCESSINGr�r=r�parent_conn�
child_connris	         rG�test_multiprocessingz"LogRecordTest.test_multiprocessings����:�<�<�<�#4���#C� � 	'����W�7��>�>�>�#'� ��%�b�)�)�A����Q�]�M�:�:�:��:�:�1�>R�S�S�G����]�G�M�,B�C�C�C����]�G�4D�,E�F�F�F����]�G�4D�,E�F�F�F�
#�"�"�"�&:�o�&:�&<�&<�#�K��'��'��;��-�z�;����A�
�G�G�I�I�I�!�&�&�(�(�G����
�w�}�/E�F�F�F����W�]�3�W�=M�5N�O�O�O����]�G�4D�,E�F�F�F�
�F�F�H�H�H�(�
'�&�&�&�&�&�&�
'�
'��'�
'�&�&�&�&�&�&�&�&s�FF.�.F6c��tji��}|j}||j��||j��||j��||j��tj}tj}tj	}	dt_dt_dt_	tji��}|j
}||j��||j��||j��||j��|t_|t_|t_	dS#|t_|t_|t_	wxYw)NF)rr��assertIsNotNonerk�
threadName�processr2�
logThreads�logProcessesr5r�)rCr��NOT_NONE�log_threads�
log_processes�log_multiprocessing�NONEs       rG�
test_optionalzLogRecordTest.test_optionalDs7���!�"�%�%���'�������������������������������(���,�
�%�8��
	=�!&�G��#(�G� �).�G�&��%�b�)�)�A��$�D��D���N�N�N��D�������D���O�O�O��D������!,�G��#0�G� �)<�G�&�&�&��"-�G��#0�G� �)<�G�&�<�<�<�<s
�A?D&�&&Er�)	rprqrrr*r.rr>rHrTrsrirGr'r'�sq������)�)�)�	�	�	������\��0#'�#'�#'�J=�=�=�=�=rir'c����eZdZ	�fd�Z�fd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zdd�Zd�Zd�Zd�Zd�Zd�Zd�Z�xZS)�BasicConfigTestc�|��tt|�����tjj|_tj���|_tj	dd�|_
tjj|_|�
|j��gtj_dSr�)r�rVrHrr�r?r!r"r#r$r%r�r2r�r�r�s �rGrHzBasicConfigTest.setUpas����
�o�t�$�$�*�*�,�,�,���-��
�%�/�4�4�6�6���")�"6�q�q�q�"9���&-�l�&8��#������%�%�%� "�����ric����tjjdd�D]5}tj�|��|����6tt|�����dSr�)rr�r?rKrJr�rVrR)rCrQr�s  �rGrRzBasicConfigTest.tearDownjsg�����&�q�q�q�)�	�	�A��L�&�&�q�)�)�)�
�G�G�I�I�I�I�
�o�t�$�$�-�-�/�/�/�/�/ric�>�ttjd|j��tj���tj�|j��|jtj	dd�<tj�
|j��dS)Nr?)r�rr�r?r!rLrMr#r%r$r6r2rms rGr�zBasicConfigTest.cleanuppsz�����j�$�-�8�8�8�����!�!�!��� � ��!4�5�5�5�"&�"9���Q�Q�Q������d�9�:�:�:�:�:ric�|�tj��|�ttjj��d��tjjd}|�|tj��|�|jtj
��|j}|�|jj
tj��|�|j��|�|jtj��|�tjj|j��dS)Nrkr)rr�rYrZr�r?r�r8r5r0r�r�rMrG�BASIC_FORMATr�r��PercentStyler�r2)rCr�r�s   rG�test_no_kwargszBasicConfigTest.test_no_kwargsws��������	
����W�\�2�3�3�Q�7�7�7��,�'��*�����g�w�'<�=�=�=��������4�4�4��%�	�����)�.��0D�E�E�E����)�+�,�,�,����i�.��0D�E�E�E�	
�����+�T�-H�I�I�I�I�Iric�x�tj��5}tjtjd���tjd��tj�d��|�|�	���
��d��ddd��dS#1swxYwYdS)Nr��r5r��Log an errorr�ERROR:root:Log an error�rr�rr�r0r�r�r�rYrWr�r�s  rG�test_strformatstylez#BasicConfigTest.test_strformatstyle�����
�
$�
&�
&�	+�&���s�z��=�=�=�=��M�.�)�)�)��J�O�O�A�������V�_�_�.�.�4�4�6�6�)�
+�
+�
+�		+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	+�	+��BB/�/B3�6B3c�x�tj��5}tjtjd���tjd��tj�d��|�|�	���
��d��ddd��dS#1swxYwYdS)Nr�r_r`rrarbr�s  rG�test_stringtemplatestylez(BasicConfigTest.test_stringtemplatestyle�rdrec��d�}tjdd���|�ttjj��d��tjjd}|�|tj��tjddd���}|�|jj	|jj	��|�|jj
|jj
��|�|||d��dS)	Nc�~�|���|���tj|��dSr�r��r��h2rHs   rGr�z.BasicConfigTest.test_filename.<locals>.cleanup��-���H�H�J�J�J��H�H�J�J�J��I�b�M�M�M�M�Mri�test.logr%)r&r'rkrrNr~)rr�rYrZr�r?r�rQr5�moderEr��rCr�r�res    rG�
test_filenamezBasicConfigTest.test_filename�s���	�	�	�
	��Z�'�B�B�B�B�����W�\�2�3�3�Q�7�7�7��,�'��*�����g�w�':�;�;�;��&�z�3��I�I�I�������,�h�o�.B�C�C�C������,�h�o�.B�C�C�C������(�J�?�?�?�?�?ric��d�}tjdd���tjjd}tjdd��}|�|jj|jj��|�|||d��dS)Nc�~�|���|���tj|��dSr�r�rjs   rGr�z.BasicConfigTest.test_filemode.<locals>.cleanup�rlrirm�wb�r&�filemoder)	rr�r�r?rQrYr5rnr�ros    rG�
test_filemodezBasicConfigTest.test_filemode�s���	�	�	�
	��Z�$�?�?�?�?��,�'��*���&�z�4�8�8�������,�h�o�.B�C�C�C������(�J�?�?�?�?�?ric��tj��}|�|j��t	j|���|�ttjj	��d��tjj	d}|�
|tj��|�|j|��dS)Nrrkr)
r3r4r�rJrr�rYrZr�r?r�r8r5)rCr5r�s   rG�test_streamzBasicConfigTest.test_stream�s�������������%�%�%���6�*�*�*�*�����W�\�2�3�3�Q�7�7�7��,�'��*�����g�w�'<�=�=�=�������0�0�0�0�0ric��tjd���tjjdj}|�|jjd��dS)Nz%(asctime)s - %(message)s)rr)rr�r�r?r�rYrMrG�rCr�s  rG�test_formatzBasicConfigTest.test_format�sL����#>�?�?�?�?��L�)�!�,�6�	�����)�.�0K�L�L�L�L�Lric��tjd���tjjdj}|�|jd��dS)Nrc)r�r)rr�r�r?r�rYr�rzs  rG�test_datefmtzBasicConfigTest.test_datefmt�sG����E�*�*�*�*��L�)�!�,�6�	�����*�E�2�2�2�2�2ric��tjd���tjjdj}|�|jtj��dS)Nr�r?r)rr�r�r?r�r�rMrNrzs  rG�
test_stylezBasicConfigTest.test_style�sJ����#�&�&�&�&��L�)�!�,�6�	����i�.��0K�L�L�L�L�Lric�Z�tjj}|�tjj|��tjd���|�tjjd��tjd���|�tjjd��dS)N�9)r��:)rr�r�r�r6r�rY)rC�	old_levels  rG�
test_levelzBasicConfigTest.test_level�s����L�&�	������-�y�9�9�9���"�%�%�%�%������+�R�0�0�0���"�%�%�%�%������+�R�0�0�0�0�0ric��|j}tj��g}tj}|t
tjd|���|t
tjd|���|t
tj||���|t
tjtj���tjdd���dS)Nrm)r&r5)r&r?)r5r?)�loglevelrNrt)rrr8r0r�rBr�r�)rCrr?r5s    rG�test_incompatiblez!BasicConfigTest.test_incompatible�s����(���)�+�+�,�������Z��!4�z�=C�	E�	E�	E�	E���Z��!4�z�?G�	I�	I�	I�	I���Z��!4�V�?G�	I�	I�	I�	I�	��Z��!4�w�|�L�L�L�L���T�C�8�8�8�8�8�8ric�R�tj��tjtj��tj��g}tj��}|d�|��tj|���|�|dtjj	d��|�|dtjj	d��|�|dtjj	d��|�
|dj��|�
|dj��|�|dj|��|�|dj|dj��dS)Nr�)r?rrk)rr8r0r�r:r=r�r�r�r?rJr�)rCr?r�s   rG�
test_handlerszBasicConfigTest.test_handlers�sL���!�#�#��!�#�*�-�-��!�#�#�
��

�������� � ��#�#�#���X�.�.�.�.��
�
�h�q�k�7�<�#8��#;�<�<�<��
�
�h�q�k�7�<�#8��#;�<�<�<��
�
�h�q�k�7�<�#8��#;�<�<�<����X�a�[�2�3�3�3����X�a�[�2�3�3�3��
�
�h�q�k�+�Q�/�/�/��
�
�h�q�k�+�X�a�[�-B�C�C�C�C�Cric���tj��}tj��}tj|��g}tj|��g}tjtj|���tjd��tjd��tjd��|�	ttjj��d��tjtj
|d���tjd��tjd��tjd��|�	ttjj��d��|�	|������d��|�	|������d	��dS)
Nr�r�r�r�rkT)r�r?�forcezWARNING:root:warnz WARNING:root:warn
INFO:root:info)r3r4rr8r�r�r�r�r�rYrZr�r?r�rWr�)rC�
old_string_io�
new_string_io�old_handlers�new_handlerss     rG�
test_forcezBasicConfigTest.test_forces�����
�
�
���
�
�
��-�m�<�<�=���-�m�<�<�=����'�/�L�I�I�I�I���������V�����
�g��������W�\�2�3�3�Q�7�7�7���'�,��"&�	(�	(�	(�	(���������V�����
�g��������W�\�2�3�3�Q�7�7�7�����/�/�1�1�7�7�9�9�,�	.�	.�	.�����/�/�1�1�7�7�9�9�<�	>�	>�	>�	>�	>ric��	d}tjd|ddtj���|�t	tjj��d��tjjd}|�|tj��|�|j	|��tj
d��|���tdd�	��5}|�
�����}ddd��n#1swxYwYtjd��|�|d��dS#|���tdd�	��5}|�
�����}ddd��n#1swxYwYtjd��|�|d��wxYw)
Nr%rmr��%(message)s�r&r'�errorsrr�rkr�.The Øresund Bridge joins Copenhagen to Malmör~�rr�r7rYrZr�r?r�rQr'r�rJr�r`r�r4r��rCr'r�r�r�s     rG�
test_encodingzBasicConfigTest.test_encodings:��	O��H����h�'/�'4�G�M�
K�
K�
K�
K�
���S���!6�7�7��;�;�;��l�+�A�.�G��!�!�'�7�+>�?�?�?����W�-�x�8�8�8��M�J�K�K�K��M�M�O�O�O��j�7�3�3�3�
(�q��v�v�x�x�~�~�'�'��
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��I�j�!�!�!����T�M�
O�
O�
O�
O�
O��	
�M�M�O�O�O��j�7�3�3�3�
(�q��v�v�x�x�~�~�'�'��
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��I�j�!�!�!����T�M�
O�
O�
O�
O����B�B=E�$'D�D�D�&G�4'F'�G�'F+�+G�.F+�/.Gc��	d}tjd|ddtj���|�t	tjj��d��tjjd}|�|tj��|�|j	|��tj
d��|���tdd	�
��5}|�
�����}ddd��n#1swxYwYtjd��|�|d��dS#|���tdd	�
��5}|�
�����}ddd��n#1swxYwYtjd��|�|d��wxYw)Nr�rm�ignorer�r�rkrr�r%r~z*The resund Bridge joins Copenhagen to Malmr�r�s     rG�test_encoding_errorsz$BasicConfigTest.test_encoding_errors*s��	Q��H����h�'/�'4�G�M�
K�
K�
K�
K�
���S���!6�7�7��;�;�;��l�+�A�.�G��!�!�'�7�+>�?�?�?����W�-�x�8�8�8��M�J�K�K�K��M�M�O�O�O��j�7�3�3�3�
(�q��v�v�x�x�~�~�'�'��
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��I�j�!�!�!����T�#O�P�P�P�P�P��	
�M�M�O�O�O��j�7�3�3�3�
(�q��v�v�x�x�~�~�'�'��
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��I�j�!�!�!����T�#O�P�P�P�P���r�c���	d}tjd|dtj���|�t	tjj��d��tjjd}|�|tj��|�|j	|��|�|j
d��tjd��|���tdd	�
��5}|������}ddd��n#1swxYwYt!jd��|�|d��dS#|���tdd	�
��5}|������}ddd��n#1swxYwYt!jd��|�|d��wxYw)Nr�rmr�)r&r'rr�rkr�backslashreplaceu<😂: ☃️: The Øresund Bridge joins Copenhagen to Malmör%r~zL\U0001f602: \u2603\ufe0f: The \xd8resund Bridge joins Copenhagen to Malm\xf6)rr�r7rYrZr�r?r�rQr'r�r�rJr�r`r�r4r�r�s     rG�test_encoding_errors_defaultz,BasicConfigTest.test_encoding_errors_default=sV��	K��H����h�'4�G�M�
K�
K�
K�
K�
���S���!6�7�7��;�;�;��l�+�A�.�G��!�!�'�7�+>�?�?�?����W�-�x�8�8�8����W�^�-?�@�@�@��M�X�Y�Y�Y��M�M�O�O�O��j�7�3�3�3�
(�q��v�v�x�x�~�~�'�'��
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��I�j�!�!�!����T�$J�
K�
K�
K�
K�
K��	
�M�M�O�O�O��j�7�3�3�3�
(�q��v�v�x�x�~�~�'�'��
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��I�j�!�!�!����T�$J�
K�
K�
K�
K���sB�CE(�>'D1�1D5�8D5�(&G7�'G�5G7�G�G7�G�	.G7c�t��	d}tjd|ddtj���|�t	tjj��d��tjjd}|�|tj��|�|j	|��|�
|j��g��fd�}||_tj
d��|����|�d	�d��|���t#dd
���5}|������}ddd��n#1swxYwYt)jd��|�|d��dS#|���t#dd
���5}|������}ddd��n#1swxYwYt)jd��|�|d��wxYw)
Nr�rmr�r�rkrc�z��tj��\}}}��t|����dSr�)r0r�rFrY)r�rfr�r�s   �rG�dummy_handle_errorzEBasicConfigTest.test_encoding_errors_none.<locals>.dummy_handle_erroras2����,�.�.���1�a����s�1�v�v�&�&�&�&�&rir�z:'ascii' codec can't encode character '\xd8' in position 4:r%r~r)rr�r7rYrZr�r?r�rQr'r�r�r�r�rBr�rJr�r`r�r4r�)rCr'r�r�r�r�r�s      @rG�test_encoding_errors_nonez)BasicConfigTest.test_encoding_errors_noneQs����	(��H����h�'+�'4�G�M�
K�
K�
K�
K�
���S���!6�7�7��;�;�;��l�+�A�.�G��!�!�'�7�+>�?�?�?����W�-�x�8�8�8����g�n�-�-�-��G�
'�
'�
'�
'�
'�#5�G���M�J�K�K�K��O�O�G�$�$�$��M�M�=�>E�a�j�
J�
J�
J�
�M�M�O�O�O��j�7�3�3�3�
(�q��v�v�x�x�~�~�'�'��
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��I�j�!�!�!����T�3�'�'�'�'�'��
�M�M�O�O�O��j�7�3�3�3�
(�q��v�v�x�x�~�~�'�'��
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��I�j�!�!�!����T�3�'�'�'�'���sB�DF(�>'E1�1E5�8E5�(&H7�'H�5H7�H�H7�H�	.H7Nc�����g�tj����fd�}tj�td|��t	t|��}|�
||d��n|d�����difg��dS)Nc�������tjj}tj�d����tjj|����||f��dS)N�d)rr�r�r6r�rF)rNr�r�r��old_basic_configrCs   ���rG�my_basic_configz2BasicConfigTest._test_log.<locals>.my_basic_configxsg����������*�I��L�!�!�#�&�&�&��O�O�G�L�1�9�=�=�=��M�M�1�b�'�"�"�"�"�"rir�ztest mers)rr�rr�r,rY)rCrJr�r�r�r�r�s`    @@rGr�zBasicConfigTest._test_logss��������"�.��	#�	#�	#�	#�	#�	#�	#�	�
�d�G�]�O�D�D�D��W�f�-�-�
����J�u�i�(�(�(�(��J�y�!�!�!�	
����2�r�(��,�,�,�,�,ric�F�|�dtj��dSr�)r�rr�rms rGr�zBasicConfigTest.test_log�s�����u�g�o�.�.�.�.�.ric�0�|�d��dSr�r�rms rGr�zBasicConfigTest.test_debug�r�ric�0�|�d��dSr�r�rms rGr�zBasicConfigTest.test_info�r�ric�0�|�d��dSr�r�rms rGr�zBasicConfigTest.test_warning�r�ric�0�|�d��dSr�r�rms rGr�zBasicConfigTest.test_error�r�ric�0�|�d��dSrr�rms rGrzBasicConfigTest.test_critical�rrir�)rprqrrrHrRr�r]rcrgrprvrxr{r}rr�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r�s@rGrVrV]s��������-�#�#�#�#�#�0�0�0�0�0�;�;�;�J�J�J�(+�+�+�+�+�+�@�@�@�$@�@�@�1�1�1�M�M�M�3�3�3�M�M�M�1�1�1�
9�
9�
9�D�D�D�">�>�>�*O�O�O�(Q�Q�Q�&K�K�K�((�(�(�D-�-�-�-�./�/�/� � � ����"�"�"� � � �#�#�#�#�#�#�#rirVc�`��eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Z�xZS)
�LoggerAdapterTestc�@���tt|�����tjdd��t��|_tj|_|j�	|j��|�
|jj|j��|�
|jj���fd�}|�
|��|�
tj
��tj|jd���|_dS)Nc�*���tjdd�<dSr�)rr$)�old_handler_lists�rGr�z(LoggerAdapterTest.setUp.<locals>.cleanup�s���&6�G� ����#�#�#ri�r�r�)r�r�rHrr$r�r�r�r�rAr�rKrJr�r��adapter)rCr�r�r�s  @�rGrHzLoggerAdapterTest.setUp�s�����
���&�&�,�,�.�.�.�"�/����2��)�+�+����l�������t�~�.�.�.������1�4�>�B�B�B������,�-�-�-�	7�	7�	7�	7�	7�	
���� � � �����(�)�)�)��,�D�K�t�L�L�L����ric��d}d}	ddzn9#t$r,}|}|j�||j��Yd}~nd}~wwxYw|�t|jj��d��|jjd}|�|jtj	��|�|j
|��|�|j|jf��|�|j|j
||jf��dS�Nztesting exception: %rrkr)r�r�r�r�rYrZrtr�rr|r*rWr�r��
__traceback__�rCr*r�rr�s     rG�test_exceptionz LoggerAdapterTest.test_exception�s&��%����	8�
��E�E�E�� �	8�	8�	8��C��L�"�"�3���7�7�7�7�7�7�7�7�����	8����	
����T�^�3�4�4�a�8�8�8���'��*���������7�7�7������S�)�)�)������t�~�&7�8�8�8�������-��c�.?�@�	B�	B�	B�	B�	B���
A�"=�Ac�L�	ddzn#t$r}|}Yd}~nd}~wwxYw|j�d|���|�t	|jj��d��|jjd}|�|j|j||j	f��dS)Nrkrz
exc_info testr�)
r�r�r�rYrZr�rtr�r�r�)rCrr�r�s    rG�test_exception_excinfoz(LoggerAdapterTest.test_exception_excinfo�s���	�
��E�E�E�� �	�	�	��C�C�C�C�C�C�����	����	
�������=�=�=�����T�^�3�4�4�a�8�8�8���'��*��������-��c�.?�@�	B�	B�	B�	B�	Bs��
��c��d}|j�||j��|�t	|jj��d��|jjd}|�|jtj��|�|j	|��|�|j
|jf��|�|jd��dS)Nzcritical test! %rrkrr)r�r�r�rYrZrtr�rrzr*rWrg)rCr*r�s   rGrzLoggerAdapterTest.test_critical�s���!������c�4�>�2�2�2�����T�^�3�4�4�a�8�8�8���'��*��������)9�:�:�:������S�)�)�)������t�~�&7�8�8�8������/�:�:�:�:�:ric��|jjjj}d|jjj_|�t
|jjjd|��|�|j�d����dS)N�!rN� )r�r�rrNr�r�r:�isEnabledFor�rCr�s  rG�test_is_enabled_forz%LoggerAdapterTest.test_is_enabled_for�ss���l�)�1�9��.0����#�+�������!4�!<�i�#�	%�	%�	%������2�2�2�6�6�7�7�7�7�7ric�`�|�|j�����|jjD]}|j�|���|�|j�����|�|j�����dSr�)rBr�r>r�r?rKr:rTs  rG�test_has_handlersz#LoggerAdapterTest.test_has_handlers�s��������0�0�2�2�3�3�3��{�+�	/�	/�G��K�%�%�g�.�.�.�.������0�0�2�2�3�3�3������1�1�3�3�4�4�4�4�4ric��d}t|jd���}t|d���}d|_|�t	|��t	|����|�tj||j��|�t|jj
��d��|jj
d}|�|jtj��|�|jd|����|�|j
|jf��|�|jd��|j}|�|j|��|�|jj|��t#��}	||_|�|j|��|�|j|��|�|jj|��||_n#||_wxYw|�|j|��|�|j|��|�|jj|��dS)NzAdapters can be nested, yo.r��AdapterAdapterrkrzAdapter AdapterAdapter �test_nested)�
PrefixAdapterr�r�rYr�r�rrzr�rZrtr�r*rWrgrr�r�)rCr*r��adapter_adapterr��orig_manager�temp_managers       rGr�zLoggerAdapterTest.test_nested�s��+���t�{�$�?�?�?��'�w�d�C�C�C��!1�������g����_�(=�(=�>�>�>����G�,�c�4�>�B�B�B�����T�^�3�4�4�a�8�8�8���'��*��������)9�:�:�:������%D�s�%D�%D�E�E�E������t�~�&7�8�8�8������-�8�8�8�&�.���
�
�g�o�|�4�4�4��
�
�d�k�)�<�8�8�8��x�x��	3�&2�O�#��M�M�/�1�<�@�@�@��M�M�'�/�<�8�8�8��M�M�$�+�-�|�<�<�<�&2�O�#�#��l�O�#�2�2�2�2��
�
�o�-�|�<�<�<��
�
�g�o�|�4�4�4��
�
�d�k�)�<�8�8�8�8�8s
�AG;�;	Hc���|jj}t|j��}|�dd��|�t
|dj��d��|�|djd��|�	tjdd��|�t
|dj��d��|�|djd��dS)N�
Hello, {}!�worldr)z
Hello, world!�test_styled_adapter�Goodbye {}.zGoodbye world.)r�rt�StyleAdapterr�r�rYrYr*rgr�rr�)rCrtr�s   rGr�z%LoggerAdapterTest.test_styled_adapters����.�(���t�{�+�+������g�.�.�.�����W�R�[�_�-�-��?�?�?�������-�/D�E�E�E����G�O�]�G�<�<�<�����W�R�[�_�-�-�/?�@�@�@�������-�/D�E�E�E�E�Eric��|jj}t|j��}d|_t|��}|�dd��|�t|dj	��d��|�|dj
d��|�tj
dd��|�t|dj	��d��|�|dj
d��dS)	Nz{}r�r�r)z{} Hello, world!�test_nested_styled_adapterr�z{} Goodbye world.)r�rtr�r�r�r�r�rYrYr*rgr�rr�)rCrtr��adapter2s    rGr�z,LoggerAdapterTest.test_nested_styled_adapters����.�(�����,�,�������(�(������w�/�/�/�����W�R�[�_�-�-�/A�B�B�B�������-�/K�L�L�L����W�_�m�W�=�=�=�����W�R�[�_�-�-�/B�C�C�C�������-�/K�L�L�L�L�Lric�������d�|jj���fd���fd���fd�}|jj}|��|�|djd��|dj}�dz
�|��|�|djd��|�|dj|��|dj}�dz
�|��|�|djd��|�|dj|��|dj}�dz
�|��|�|djd	��|�|dj|��dS)
Nrkc�"���d����dS�Nr���
stacklevelrs��	the_level�triggers��rG�	innermostzELoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.innermost�����G�F�y�1�1�1�1�1�1ric������dSr�rs�r�s�rGr�zALoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.inner"�����I�K�K�K�K�Kric������dSr�rs�r�s�rG�outerzALoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.outer%�����E�G�G�G�G�Grir)r�r�r�� test_find_caller_with_stacklevel)r�r�r�rtrYrgr1r�)rCr�rtr1r�r�r�r�s    @@@@rGr�z2LoggerAdapterTest.test_find_caller_with_stacklevels��������	��,�&��	2�	2�	2�	2�	2�	2�	�	�	�	�	�	�	�	�	�	��.�(��
�����������-�{�;�;�;����#���Q��	�
�����������-�w�7�7�7����7�2�;�-�v�6�6�6����#���Q��	�
�����������-�w�7�7�7����7�2�;�-�v�6�6�6����#���Q��	�
�����������-�/Q�R�R�R����7�2�;�-�v�6�6�6�6�6ric�x�tj|jddi���|_|j�d��|�t
|jj��d��|jjd}|�	t|d����|�|jd��dS)Nrbr{r�zfoo should be hererkr)rr�r�r�r�rYrZr�rtrBr&rbr�s  rG�test_extra_in_recordsz'LoggerAdapterTest.test_extra_in_records;s����,�D�K�49�3�<�A�A�A���	
����2�3�3�3�����T�^�3�4�4�a�8�8�8���'��*��������.�.�/�/�/������S�)�)�)�)�)ric��|j�dddi���|�t|jj��d��|jjd}|�t|d����dS)Nzfoo should NOT be hererb�nope)r�rkr)r�r�rYrZr�rtr:r&r�s  rG� test_extra_not_merged_by_defaultz2LoggerAdapterTest.test_extra_not_merged_by_defaultEsx������6�u�f�o��N�N�N�����T�^�3�4�4�a�8�8�8���'��*��������/�/�0�0�0�0�0ri)rprqrrrHr�r�rr�r�r�r�r�r�r�r�r�r�s@rGr�r��s��������M�M�M�M�M�"B�B�B�"B�B�B�	;�	;�	;�8�8�8�5�5�5�9�9�9�8	F�	F�	F�
M�
M�
M�7�7�7�@*�*�*�1�1�1�1�1�1�1rir�c��eZdZdZd�ZdS)r��Adapterc��|j�d|��|fSr}�r�)rCr*r}s   rGrLzPrefixAdapter.processOs���+�%�%��%�%�v�-�-riN)rprqrrr�rLrsrirGr�r�Ls(������
�F�.�.�.�.�.rir�c��eZdZd�Zd�ZdS)�Messagec�"�||_||_dSr�)r�rW)rCr�rWs   rGr�zMessage.__init__Ts�������	�	�	ric�*�|jj|j�Sr�)r�rrWrms rG�__str__zMessage.__str__Xs���t�x���	�*�*riN)rprqrrr�r�rsrirGr�r�Ss2���������+�+�+�+�+rir�c��eZdZdd�d�ZdS)r�rkr�c��|�|��rD|�||��\}}|jj|t	||��fi|�d|dzi��dSdS)Nr�rk)r�rLr�r�r�)rCr�r*r�rWr}s      rGr�zStyleAdapter.log]s������U�#�#�	5��,�,�s�F�3�3�K�C���D�K�O�E�7�3��#5�#5�
5�
5��
5�
5�'1�!�|�
5�
5�
5�
5�
5�
5�	5�	5riN)rprqrrr�rsrirGr�r�\s0������34�5�5�5�5�5�5�5rir�c�~��eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Z�xZS)�
LoggerTestc���tt|�����t��|_tjd���|_|j�|j��|�	|jj
|j��|�	|jj��|�	t
j��dS)N�blah�rE)
r�r�rHr�r�rr�r�rAr�rKrJr�r�s �rGrHzLoggerTest.setUpfs����
�j�$���%�%�'�'�'�)�+�+����n�&�1�1�1�������t�~�.�.�.������1�4�>�B�B�B������,�-�-�-�����(�)�)�)�)�)ric��|�td|jjd��|�td|jjd��dS)Nz,Level not an integer or a valid string: Nonez.Level not an integer or a valid string: (0, 0))rr)r*r�r�r6rms rG�test_set_invalid_levelz!LoggerTest.test_set_invalid_levelos^���!�!��E��K� �$�	(�	(�	(�	
�!�!��G��K� �&�	*�	*�	*�	*�	*ric��d}d}	ddzn9#t$r,}|}|j�||j��Yd}~nd}~wwxYw|�t|jj��d��|jjd}|�|jtj	��|�|j
|��|�|j|jf��|�|j|j
||jf��dSr�)r�r�r�r�rYrZrtr�rr|r*rWr�r�r�r�s     rGr�zLoggerTest.test_exceptionws&��%����	7�
��E�E�E�� �	7�	7�	7��C��K�!�!�#�t�~�6�6�6�6�6�6�6�6�����	7����	
����T�^�3�4�4�a�8�8�8���'��*���������7�7�7������S�)�)�)������t�~�&7�8�8�8�������-��c�.?�@�	B�	B�	B�	B�	Br�c��tjtdd��5|�t|jjdd��ddd��dS#1swxYwYdS)Nr�Tr��test message)r�	swap_attrrrr�r�r�rms rG�!test_log_invalid_level_with_raisez,LoggerTest.test_log_invalid_level_with_raise�s���
�
�w�(9�4�
@�
@�	P�	P����i����$��O�O�O�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P����	P�	P�	P�	P�	P�	Ps�(A�A�Ac��tjtdd��5|j�dd��ddd��dS#1swxYwYdS)Nr�Fr�r)rrrr�r�rms rG�test_log_invalid_level_no_raisez*LoggerTest.test_log_invalid_level_no_raise�s���
�
�w�(9�5�
A�
A�	2�	2��K�O�O�D�.�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s�A�A	�A	c���g�tj|tjd�fd���|j�d���|�t���d��|�d�d��dS)N�print_stackc�R����|�����Sr�)rFrW)r�r~r�s  �rGr�z=LoggerTest.test_find_caller_with_stack_info.<locals>.<lambda>�s���f�m�m�D�M�M�O�O�&D�&D�riTr�rkr�r)rr�r�	tracebackr��
findCallerrYrZ)rCr�s @rG� test_find_caller_with_stack_infoz+LoggerTest.test_find_caller_with_stack_info�s�������
�d�G�-�}�D�D�D�D�	F�	F�	F�	
����$��/�/�/�����V���a�(�(�(����;�V�A�Y�G�G�G�G�Gric������d�|jj���fd���fd���fd�}|jj}|��|�|djd��|dj}�dz
�|��|�|djd��|�|dj|��|dj}�dz
�|��|�|djd��|�|dj|��|dj}tj	��}|�
|j��tj�|��|�|djd��|�|j��|jj��dz
�|��|�|djd	��|�|dj|��dS)
Nrkc�"���d����dSr�rsr�s��rGr�z>LoggerTest.test_find_caller_with_stacklevel.<locals>.innermost�r�ric������dSr�rsr�s�rGr�z:LoggerTest.test_find_caller_with_stacklevel.<locals>.inner�r�ric������dSr�rsr�s�rGr�z:LoggerTest.test_find_caller_with_stacklevel.<locals>.outer�r�rir)r�r�r�r�)r�r�r�rtrYrgr1r�rrrArK)	rCr�rtr1r0r�r�r�r�s	     @@@@rGr�z+LoggerTest.test_find_caller_with_stacklevel�s!�������	��+�%��	2�	2�	2�	2�	2�	2�	�	�	�	�	�	�	�	�	�	��.�(��
�����������-�{�;�;�;����#���Q��	�
�����������-�w�7�7�7����7�2�;�-�v�6�6�6����#���Q��	�
�����������-�w�7�7�7����7�2�;�-�v�6�6�6����#���'�)�)�����t�~�.�.�.��/��
�����������-�w�7�7�7��!�!�$�.�1�1�1��+�%���Q��	�
�����������-�/Q�R�R�R����7�2�;�-�v�6�6�6�6�6ric� �d}d}dx}x}x}x}x}x}}	tj|||||||||	�	�	}
dt|
j�����zD]5}|di}|�t|jj|||||||||	����6dS)N�	my record�
)r�rc�
some value�r��sinfo)	r�_logRecordFactoryr^�__dict__�keysrrsr��
makeRecord)
rCrEr�rH�lnor*rWr�r2r�rvr�r�s
             rG�%test_make_record_with_extra_overwritez0LoggerTest.test_make_record_with_extra_overwrite�s�������:>�>��>�S�>�3�>��>��>�4�%�
�
&�t�U�B��S�$�'/��u�>�>��*�E�"�+�2B�2B�2D�2D�,E�,E�E�	8�	8�C��,�'�E����h���(>��e� �#�s�D�(�$)��
�
8�
8�
8�
8�	8�	8ric��d}d}dx}x}x}x}x}x}}	ddi}
|j�||||||||
|	��	�	}|�d|j��dS)Nrr�	valid_keyrr)r�rr�r)rCrEr�rHrr*rWr�r2rr�r6s            rG�(test_make_record_with_extra_no_overwritez3LoggerTest.test_make_record_with_extra_no_overwrite�s�������:>�>��>�S�>�3�>��>��>�4�%��l�+����'�'��e�R��c�4�(0��U�(�L�L���
�
�k�6�?�3�3�3�3�3ric��|�|j�����|jjD]}|j�|���|�|j�����dSr�)rBr�r>r?rKr:rTs  rGr�zLoggerTest.test_has_handlers�sw�������/�/�1�1�2�2�2��{�+�	/�	/�G��K�%�%�g�.�.�.�.������0�0�2�2�3�3�3�3�3ric��tjd��}d|_|�|�����dS)Nz
blah.childF)rrrPr:r>)rC�child_loggers  rG�test_has_handlers_no_propagatez)LoggerTest.test_has_handlers_no_propagate�s@���(��6�6��!&�������1�1�3�3�4�4�4�4�4ric���|jjj}d|jj_|�t|jjd|��|�|j�d����dS)N�rN�)r�rrNr�r�r:r�r�s  rGr�zLoggerTest.test_is_enabled_for�sc���k�)�1��&(����#�������!4�i��M�M�M������1�1�"�5�5�6�6�6�6�6ric�f�|jj}|jjj}d|j_d|jj_|�t
|jd|��|�t
|jjd|��|�|j�d����dS)NTrUrrNr')r�rrrNr�r�r:r�)rC�old_disabledr�s   rG�#test_is_enabled_for_disabled_loggerz.LoggerTest.test_is_enabled_for_disabled_logger�s����{�+���k�)�1��#����&(����#�������j�,�G�G�G�������!4�i��M�M�M������1�1�"�5�5�6�6�6�6�6ric��tj��}|�|tj��|�|tjd����|�|tjd����|�|tjd����|�|tjd��j��|�|tjd��j��|�|tjd��j��|�|tjd����|�|tjd��j��dS)Nrr�rb�foo.bar�)rrr�r��parentr")rCr�s  rG�test_root_logger_aliasesz#LoggerTest.test_root_logger_aliases�s4��� �"�"���
�
�d�G�L�)�)�)��
�
�d�G�-�d�3�3�4�4�4��
�
�d�G�-�b�1�1�2�2�2��
�
�d�G�-�f�5�5�6�6�6��
�
�d�G�-�e�4�4�9�:�:�:��
�
�d�G�-�i�8�8�=�>�>�>��
�
�d�G�-�e�4�4�;�<�<�<�����w�0��6�6�7�7�7�����w�0��;�;�B�C�C�C�C�Cric��|�ttjt��|�ttjd��dS)Nsfoo)rr�rr�anyrms rG�test_invalid_nameszLoggerTest.test_invalid_namess>�����)�W�%6��<�<�<����)�W�%6��?�?�?�?�?ric���ttjdz��D]Z}dD]U}tj|��}tj||��}tj|��}|�||���V�[dS)Nrk)rr�rbr,zbaz.bar)r^r�HIGHEST_PROTOCOLrrr;r
r�)rC�protorEr�rg�	unpickleds      rG�
test_picklingzLoggerTest.test_picklings����6�2�Q�6�7�7�	1�	1�E�A�
1�
1�� �*�4�0�0���L���/�/��"�L��O�O�	��
�
�i��0�0�0�0�	
1�	1�	1ric�
�|j}tjd��}tjd��}|�tj��|�|���tj��|�|ji��|�|�	tj����|�
|�	tj����|�|jtjdtjdi��|�|ji��|�|�	tj����|�|ji��|�|�	tj����|�|jtjdi��|�tj��|�|���tj��|�|ji��|�
|�	tj����|�tj
��|�|���tj��|�|ji��|�|ji��|�|ji��|�
|�	tj����|�|�	tj����|�
|�	tj����|�|�	tj����|�|�	tj����tj��|�|���tj��|�|ji��|�|ji��|�|ji��|�
|�	tj����|�
|�	tj����|�
|�	tj����dS)Nr�r�TF)r0rrr6r|rYr1�_cacherBr�r:r7rzr�rN)rCr�r.r/s    rG�test_cachingzLoggerTest.test_cachings%������#�E�*�*���#�I�.�.��	
�
�
�g�m�$�$�$�����2�2�4�4�g�m�D�D�D�������,�,�,�	
����,�,�W�]�;�;�<�<�<�����-�-�g�m�<�<�=�=�=������'�-��w�}�e�)T�U�U�U������b�)�)�)�����,�,�W�]�;�;�<�<�<�	
�����b�)�)�)�����)�)�'�-�8�8�9�9�9������w�}�d�&;�<�<�<�	����)�*�*�*�����2�2�4�4�g�6F�G�G�G�������,�,�,�	
����-�-�g�m�<�<�=�=�=�	�����(�(�(�����2�2�4�4�g�6F�G�G�G�������,�,�,�������,�,�,������b�)�)�)�	
����-�-�g�m�<�<�=�=�=�����,�,�W�-=�>�>�?�?�?�����-�-�g�m�<�<�=�=�=�����,�,�W�-=�>�>�?�?�?�����)�)�'�-�8�8�9�9�9�	���������2�2�4�4�g�6F�G�G�G�������,�,�,�������,�,�,������b�)�)�)�	
����-�-�g�.>�?�?�@�@�@�����-�-�g�.>�?�?�@�@�@�����*�*�7�+;�<�<�=�=�=�=�=ri)rprqrrrHr�r�rrrr�rr r�r$r�r*r/r2r7r:r�r�s@rGr�r�ds8�������*�*�*�*�*�*�*�*�B�B�B�"P�P�P�2�2�2�H�H�H�%7�%7�%7�N8�8�8�4�4�4�4�4�4�5�5�5�
7�7�7�
7�
7�
7�D�D�D�@�@�@�1�1�1�6>�6>�6>�6>�6>�6>�6>rir�c�(�eZdZ	d�Zd�Zd�Zd�ZdS)�BaseFileTestc��t�|��tjdd��\}|_tj|��g|_dS)Nriztest_logging-2-)rrHr2r3rHr4rJ�rmfiles)rCrGs  rGrHzBaseFileTest.setUpJsE�����t�����&�v�/@�A�A���D�G�
����������ric���|jD]}tj|���tj�|j��rtj|j��t�|��dSr�)r>r4r5r;r<rHrrR)rCrHs  rGrRzBaseFileTest.tearDownPsf���,�	�	�B��I�b�M�M�M�M�
�7�>�>�$�'�"�"�	��I�d�g�������$�����ric��	|�tj�|��d|z���|j�|��dS)NzLog file %r does not exist�r*)rBr4r;r<r>rF)rCr&s  rG�
assertLogFilezBaseFileTest.assertLogFileWsW��A��������x�0�0�8�8�C�	�	E�	E�	E�����H�%�%�%�%�%ric
�p�tjdtjdd|���ddd��S)Nr^rirk)rr�r7rnrms rG�next_reczBaseFileTest.next_rec]s9��� ��g�m�S�!�!%�!2�!2�!4�!4�d�D�$�H�H�	HriN)rprqrrrHrRrBrDrsrirGr<r<GsX������7���� � � �&�&�&�H�H�H�H�Hrir<c��eZdZd�Zd�ZdS)�FileHandlerTestc�*�tj|j��tj|jdd���}|�|j��|�tj�	|j����|�
tji����|�|j��|�
tj�	|j����|���dS)Nr%Tr&)r4r5rHrrQr�r5r:r;r<r9r�rJrBrJ)rC�fhs  rG�
test_delayzFileHandlerTest.test_delaybs���
�	�$�'����
�
 ���7�$�
G�
G�
G�����"�)�$�$�$����������0�0�1�1�1�
�	�	�'�'��+�+�,�,�,����R�Y�'�'�'��������t�w�/�/�0�0�0�
���
�
�
�
�
ric�P�tj|j��tj|jdd���}|�tjd����|�|�����|�	��|�|�����t|j��5}|�|����
��d��ddd��dS#1swxYwYdS)Nr%rM)r'rnr�r{)r4r5rHrrQr=r:rrDrJr�rYr`r�)rCrHrs   rG�%test_emit_after_closing_in_write_modez5FileHandlerTest.test_emit_after_closing_in_write_models"��
�	�$�'����
�
 ���7��
E�
E�
E��
����)�-�8�8�9�9�9�
����
�
��� � � �
���
�
�
�
����
�
��� � � �
�$�'�]�]�	5�b����R�W�W�Y�Y�_�_�.�.��4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s�;D�D�"DN)rprqrrrIrKrsrirGrFrFas2���������	5�	5�	5�	5�	5rirFc��eZdZejejd��d���Zd�Zd�Z	d�Z
d�Zej��d���Z
dS)	�RotatingFileHandlerTest�WASI does not have /dev/null.c��tj�|jdd���}|�|�d����|���tj�tjdd���}|�|�|�	������|���dS)Nr%r�r'�maxBytesrk)
rr?rRrHr:�shouldRolloverrJr4�devnullrD�rC�rhs  rG�test_should_not_rolloverz0RotatingFileHandlerTest.test_should_not_rolloverxs����
�
1�
1���'�A�2�7�7������*�*�4�0�0�1�1�1�
���
�
�
��
�
1�
1��
�W�q�2�:�:������*�*�4�=�=�?�?�;�;�<�<�<�
���
�
�
�
�
ric���tj�|jdd���}|�|�|�������|���dS)Nr%rkrP)rr?rRrHrBrRrDrJrTs  rG�test_should_rolloverz,RotatingFileHandlerTest.test_should_rollover�s[��
�
�
1�
1�$�'�G�VW�
1�
X�
X������)�)�$�-�-�/�/�:�:�;�;�;�
���
�
�
�
�
ric��tj�|jd���}|�|�����|�|j��|���dS)Nr%r~)rr?rRrHrrDrBrJrTs  rG�test_file_createdz)RotatingFileHandlerTest.test_file_created�sb���
�
1�
1�$�'�G�
1�
L�
L��
����
�
��� � � ����4�7�#�#�#�
���
�
�
�
�
ric���d�}tj�|jddd���}||_|�|�����|�|j��|�|�����|�||jdz����|�|�����|�||jdz����|�tj
�||jdz������|���dS)	Nc��|dzS�N�.testrsr�s rG�namerz>RotatingFileHandlerTest.test_rollover_filenames.<locals>.namer�s���'�>�!rir%r�rk�r'�backupCountrQ�.1�.2�.3)
rr?rRrHr_rrDrBr:r4r;r<rJ)rCr_rUs   rG�test_rollover_filenamesz/RotatingFileHandlerTest.test_rollover_filenames�s1��	"�	"�	"�
�
�
1�
1��G�g�1�q�2�B�B�����
����
�
��� � � ����4�7�#�#�#�
����
�
��� � � ����5�5���4��0�0�1�1�1�
����
�
��� � � ����5�5���4��0�0�1�1�1����������d�g��n�(=�(=�>�>�?�?�?�
���
�
�
�
�
ric���Gd�dtjj��}||jddd���}|�|�|j��|jdz��|�|�����|�|j��|�|�����|�|�|jdz��d	z��|�	tj�|�|jdz������|�
��dS)
Nc��eZdZd�Zd�ZdS)�ZRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotatorc��|dzSr]rs)rCrEs  rGr_z`RotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.namer�s���g�~�%ric�x�tj�|��rtj||dz��dSdS)N�.rotated)r4r;r<r�)rC�source�dests   rG�rotatorzbRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.rotator�s?���7�>�>�&�)�)�:��J�v�t�j�'8�9�9�9�9�9�:�:riN)rprqrrr_rnrsrirG�HandlerWithNamerAndRotatorrh�s2������
&�
&�
&�
:�
:�
:�
:�
:riror%r�rkr`r^rbrk)rr?rRrHrYr_rrDrBr:r4r;r<rJ)rCrorUs   rG�test_namer_rotator_inheritancez6RotatingFileHandlerTest.test_namer_rotator_inheritance�s>��	:�	:�	:�	:�	:��)9�)M�	:�	:�	:�(�
'��G�g�1�q�B�B�B��������$�'�*�*�D�G�g�,=�>�>�>�
����
�
��� � � ����4�7�#�#�#�
����
�
��� � � ����2�8�8�D�G�d�N�3�3�j�@�A�A�A�������������4��(@�(@�A�A�B�B�B�
���
�
�
�
�
ric��d�}d�}tj�|jddd���}||_||_|���}|�|��|�|j��|���}|�|��||jdz��}|�|��tj
}t|d��5}|���}	tj|	��}
|�|
�d	��|j|z��ddd��n#1swxYwY|�|�����||jd
z��}|�|��t|d��5}|���}	tj|	��}
|�|
�d	��|j|z��ddd��n#1swxYwY|�|�����||jd
z��}t|d��5}|���}	tj|	��}
|�|
�d	��|j|z��ddd��n#1swxYwY|�tj�||jdz������|���dS)Nc��|dzS)Nz.gzrsr�s rGr_z3RotatingFileHandlerTest.test_rotator.<locals>.namer�s���%�<�ric�J�t|d��5}|���}tj|d��}t|d��5}|�|��ddd��n#1swxYwYddd��n#1swxYwYtj|��dS)N�rbrWrs)r�r`�zlib�compressr�r4r�)rlrm�sfr��
compressed�dfs      rGrnz5RotatingFileHandlerTest.test_rotator.<locals>.rotator�s���f�d�#�#�
)�r��w�w�y�y��!�]�4��3�3�
��$��%�%�)���H�H�Z�(�(�(�)�)�)�)�)�)�)�)�)�)�)����)�)�)�)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)�

�I�f�����s5�:B�A-�!B�-A1	�1B�4A1	�5B�B�Br%r�rkr`rbrtr�rcrd)rr?rRrHrnr_rDrrBr4�linesepr�r`ru�
decompressrYrsr*r:r;r<rJ)rCr_rnrU�m1�m2rH�newliner�rxr�s           rG�test_rotatorz$RotatingFileHandlerTest.test_rotator�s���	 �	 �	 �	�	�	��
�
1�
1��G�g�1�q�2�B�B����
����
�]�]�_�_��
����������4�7�#�#�#�
�]�]�_�_��
�������
�U�4�7�T�>�
"�
"�����2�����*��
�"�d�^�^�	E�q������J��?�:�.�.�D����T�[�[��1�1�2�6�G�3C�D�D�D�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	����
�
��� � � �
�U�4�7�T�>�
"�
"�����2����
�"�d�^�^�	E�q������J��?�:�.�.�D����T�[�[��1�1�2�6�G�3C�D�D�D�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	����
�
��� � � �
�U�4�7�T�>�
"�
"��
�"�d�^�^�	E�q������J��?�:�.�.�D����T�[�[��1�1�2�6�G�3C�D�D�D�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	
���������d�g��n�(=�(=�>�>�?�?�?�
���
�
�
�
�
s9�-AE�E�E�=AH#�#H'�*H'�8AK�K"�%K"N)rprqrrr�r�r�is_wasirVrXrZrerp�
requires_zlibrrsrirGrMrMws��������X�_�W�_�&E�F�F���G�F�����
���
�
�
����&�W����*�*���*�*�*rirMc�F�eZdZejejd��d���Zd�Zdd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zejd��d
���Zejd��d���Zejd��d���Zejd��d���ZdS)�TimedRotatingFileHandlerTestrNc�,�tj�tjddd���}tjd��tjddi��}|�|�	|����|�
��dS)N�Sr%rk�r'ra皙�����?r*ztesting - device file)rr?rSr4rSr_rar�r:rRrJ)rCrHr�s   rGrVz5TimedRotatingFileHandlerTest.test_should_not_rollover�s����
�
6�
6��
�C�'�q�7�B�B���
�3�����!�5�*A�"B�C�C������*�*�1�-�-�.�.�.�
���
�
�
�
�
ric���tj�|jddd���}tjd��}|�|��tjddi��}|�|��|�|j��tj
d��tjdd	i��}|�|��|���d
}tj�
��}d}t|��D]t}|tj|���z
}	|j|	�d
��z�t"j����}|r|j����n�ud|z}
|�st"j�|j��\}��fd�t#j|��D��}t1d|�d��zt2j���t1d|zt2j���|D]}}
t1d|
z��t"j�||
��}t9|d��5}t1|�����ddd��n#1swxYwY�~|�||
���dS)Nr�r%rkr�rXr*ztesting - initialr�ztesting - after delayFi,��secondsz.%Y-%m-%d_%H-%M-%Sz,No rotated files found, went back %d secondsc�>��g|]}|�����|��Srs)r�)rZr�rHs  �rGr\z>TimedRotatingFileHandlerTest.test_rollover.<locals>.<listcomp>s*���C�C�C�1�!�,�,�r�2B�2B�C�Q�C�C�Criz
Test time: %sz%Y-%m-%d %H-%M-%S�r~zThe only matching files are: %szContents of %s:r�rA)rr?rSrHr:r=r�rrBr_rarJrYrr^�	timedelta�strftimer4r;r<r>rFr��listdirrtr0r�r�r�r`rB)rCrHr�r;r<�foundr�GO_BACK�secs�prevr*�dn�filesr�r;�tfrHs                @rG�
test_rolloverz*TimedRotatingFileHandlerTest.test_rollover�s����
�
�
6�
6����w�A�7�?�?���� 9�:�:��
�������
�
"�E�+>�#?�
@�
@��
����������4�7�#�#�#��
�3����
�
"�E�+B�#C�
D�
D��
�������
���
�
�
�����#�#�%�%�����'�N�N�	�	�D���+�D�9�9�9�9�D���4�=�=�)=�>�>�>�B��G�N�N�2�&�&�E��
���#�#�B�'�'�'���
�=�w�F���
	%��W�]�]�4�7�+�+�F�B��C�C�C�C��
�2���C�C�C�E��/�C�L�L�1D�$E�$E�E�C�J�W�W�W�W��3�e�;�#�*�M�M�M�M��
%�
%���'�!�+�,�,�,��w�|�|�B��*�*���$��_�_�%���"�'�'�)�)�$�$�$�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%������3��'�'�'�'�'s�5"J#�#J'	�*J'	Fc�|�tj|j��tj���}|���}d|jdzcxkrdksVntjd|jdzz
dz��tj���}|���}|�d���}tj
d��}|rd|�����nd	}td
��D]�}tj
�|jd||���}|�|��tjd
d|��i��}|�|��|�����|�|j��t)|jd���5}	t+|	��D]\}}
|�d|��|
���	ddd��n#1swxYwYt/j|j|���dz
fdz��td��D]�}tj
�|jd||���}|�|��tjd
d|��i��}|�|��|�����|tj|rdnd���z
}|j�d|d��}|�|��t)|jd���5}	t+|	��D]\}}
|�d|��|
���	ddd��n#1swxYwYt)|d���5}	t+|	��D]\}}
|�d|��|
���	ddd��dS#1swxYwYdS)Ng�������?g��.Ag�������?g�?r)�microsecondrX�W�MIDNIGHTrbr%)r'�when�atTimer*z	testing1 r~rkr�z	testing2 ���daysr�z%Y-%m-%d)rr5rHrYrr_r�rar�rr:�weekdayr^r?rSr=r�rrJrBr��	enumerater�r4�utime�	timestampr�)
rC�weeklyrr�r�r�r[rHr<r��line�rolloverDate�otherfns
             rG�test_rollover_at_midnightz6TimedRotatingFileHandlerTest.test_rollover_at_midnights}������!�!�!���#�#�%�%���������V�'��+�1�1�1�1�c�1�1�1�1�
�J��f�0��4�4��;�<�<�<��#�'�'�)�)�C��X�X�Z�Z�F����A��.�.���� 9�:�:��&,�<�"�3�;�;�=�=�"�"�"�*���q���	�	�A��!�:�:���'��V�;�E�E�B��O�O�C� � � ��&���1���'?�@�@�B��G�G�B�K�K�K��H�H�J�J�J�J����4�7�#�#�#�
�$�'�G�
,�
,�
,�	5��$�Q�<�<�
5�
5���4��
�
�o�!�o�o�t�4�4�4�4�
5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	����3�=�=�?�?�Q�.�0��2�3�3�3��q���	�	�A��!�:�:���'��V�;�E�E�B��O�O�C� � � ��&���1���'?�@�@�B��G�G�B�K�K�K��H�H�J�J�J�J��X�/�&�5G�Q�Q�a�H�H�H�H���W�6�6�|�6�6�6�����7�#�#�#�
�$�'�G�
,�
,�
,�	5��$�Q�<�<�
5�
5���4��
�
�o�!�o�o�t�4�4�4�4�
5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5��'�G�
,�
,�
,�	5��$�Q�<�<�
5�
5���4��
�
�o�!�o�o�t�4�4�4�4�
5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s6�=/G9�9G=�G=�/M�M�M�4/N1�1N5�8N5c�2�|�d���dS)NT)r�)r�rms rG�test_rollover_at_weekdayz5TimedRotatingFileHandlerTest.test_rollover_at_weekdayDs���&�&�d�&�3�3�3�3�3ric��|j}|ttjj|jddd���|ttjj|jddd���|ttjj|jddd���dS)N�Xr%Tr&r��W7)rrBrr?rSrH)rCrs  rG�test_invalidz)TimedRotatingFileHandlerTest.test_invalidGs����(����Z��!1�!J��W�c�G�4�	A�	A�	A�	A���Z��!1�!J��W�c�G�4�	A�	A�	A�	A���Z��!1�!J��W�d�W�D�	B�	B�	B�	B�	B�	Bric��d}tj�|jdddd���}	|�|��}|�||dz��|�|dzdz
��}|�||dz��|�|dz��}|�||dz��|�|d	z��}|�||dz��|���n#|���wxYwtjd
dd��}tj�|jddd|���}	|�|��}|�||dz��|�|dzdz
��}|�||dz��|�|dz��}|�||dz��|�|d
z��}|�||dz��|���dS#|���wxYw)Nrr%r�T�r'r�rZr��Qrki�i�_��i@��ж)	rr?rSrH�computeRolloverrYrJrYr_)rC�currentTimerUrdr�s     rG�"test_compute_rollover_daily_attimez?TimedRotatingFileHandlerTest.test_compute_rollover_daily_attimeQsV����
�
�
6�
6��G�g�J��T�7�#�#��
	��'�'��4�4�F����V�[�<�%?�@�@�@��'�'��l�(B�Q�(F�G�G�F����V�[�<�%?�@�@�@��'�'��l�(B�C�C�F����V�[�<�%?�@�@�@��'�'��l�(B�C�C�F����V�[�<�%?�@�@�@��H�H�J�J�J�J��B�H�H�J�J�J�J������r�1�a�(�(��
�
�
6�
6��G�g�J��V�7�%�%��
	��'�'��4�4�F����V�[�<�%?�@�@�@��'�'��l�(B�Q�(F�G�G�F����V�[�<�%?�@�@�@��'�'��l�(B�C�C�F����V�[�<�%?�@�@�@��'�'��l�(B�C�C�F����V�[�<�%?�@�@�@��H�H�J�J�J�J�J��B�H�H�J�J�J�J���s�CD�D�CH9�9Ic
�`�ttj����}||dzz
}tjddd��}tj|��j}td��D�]E}tj�|j	dd|zddd|�	��}	||kr	d|z
|z}n||z
}|dz}|d
z
}||z
}|�
|��}||kr:tdtjz��tdt��z��|�||��|�
|d
zdz
��}||kr:tdtjz��tdt��z��|�||��||kr|d
z
}|�
|d
z��}||kr:tdtjz��tdt��z��|�||��|�
|dz��}||kr:tdtjz��tdt��z��|�||��|�����.#|���wxYwdS)Nr�r�rr�r%zW%drkT)r'r��intervalrarZr�r�zfailed in timezone: %dzlocal vars: %si�:	r�)rVr_rYr`�tm_wdayr^rr?rSrHr�rt�timezone�localsrYrJ)	rCr��todayr��wday�dayrUrerds	         rG�#test_compute_rollover_weekly_attimez@TimedRotatingFileHandlerTest.test_compute_rollover_weekly_attimeys����$�)�+�+�&�&���k�E�1�1����r�1�a�(�(���{�5�!�!�)����8�8�-	�-	�C��!�:�:���'����a�UV���;�)�)�B�)
��#�:�:�!"�D��3��H�H� #�d�
�H��L�(���L�(���E�!���+�+�E�2�2���X�%�%��2�T�]�B�C�C�C��*�V�X�X�5�6�6�6�� � ���2�2�2��+�+�E�L�,@�1�,D�E�E���X�%�%��2�T�]�B�C�C�C��*�V�X�X�5�6�6�6�� � ���2�2�2��$�;�;�� 0�0�H��+�+�E�L�,@�A�A���X�%�%��2�T�]�B�C�C�C��*�V�X�X�5�6�6�6�� � ���2�2�2��+�+�E�L�,@�A�A���X�%�%��2�T�]�B�C�C�C��*�V�X�X�5�6�6�6�� � ���2�2�2����
�
�
�
�����
�
�
�
����[-	�-	s
�G&J�J+c�.�tjd���}|�tj|��g}t
j���}td��D]B}|�|�	d����|tj
d���z
}�Cd}g}g}|D�]}tj�
|d|z��}	tj�|	d	dd
d���}
|�|
��|�d
��r |D]}|�|�d|�������|�d��r+d�}||
_|D]}|�|�d|�d������|dkr'd�}||
_|D]}|�d|z�����|D]K}
tj�
||
��}	t'|	d��5}	ddd��n#1swxYwY�Lt)|��D�]\}}||}
|
���}|�t/|��d|��|�d
��rUd|z}	|D]L}tj�|��\}}
|�|
�|	�����M��|�d��r�|D]�}tj�|��\}}
|�|
�d��|
��|�|
�|dz��o)|
t/|��dz���������l|dkr�|D]�}tj�|��\}}
|�|
�d����|�|
�d��o|
d���������dS)Nr�r�rK�%Y-%m-%d_%H-%M-%Sr�r�)�a.bza.b.c�d.ezd.e.frez%s.logrgr�T�r�r�rar(r�z.log.r�c��tj�|��\}}|�dd��dz}tj�||��S)Nrir)r4r;r�r�r��r&ri�basenames   rGr_zHTimedRotatingFileHandlerTest.test_compute_files_to_delete.<locals>.namer�sJ��(*��
�
�h�(?�(?�%�G�X�'�/�/���;�;�f�D�H��7�<�<���:�:�:rir�rirec��tj�|��\}}d|dd�zdz}tj�||��S)Nre��.oldlog)r4r;r�r�r�s   rGr_zHTimedRotatingFileHandlerTest.test_compute_files_to_delete.<locals>.namer�sG��(*��
�
�h�(?�(?�%�G�X�"�X�a�b�b�\�1�I�=�H��7�<�<���:�:�:riz
g%s.oldlogrsrbz%s.log.r�r�rk)r2�mkdtempr��shutil�rmtreerYrr^rFr�r�r4r;r�rr?rSr�r_r�r��getFilesToDeleterYrZr�rBrC�isdigit)rC�wd�timesr"r[�prefixesr��rotatorsr�rirnr�r_rHr��
candidatesrdrxs                  rG�test_compute_files_to_deletez9TimedRotatingFileHandlerTest.test_compute_files_to_delete�s���
�
�_�
5�
5�
5������
�r�*�*�*���
�
�
"�
"�
$�
$���r���	0�	0�A��L�L����%8�9�9�:�:�:��(�$�Q�/�/�/�/�B�B�8�������	3�	3�F�����R��F�!2�3�3�A��&�?�?���IJ�LM�FJ�@�L�L�G�
�O�O�G�$�$�$�� � ��'�'�
3��<�<�A��L�L������!:�;�;�;�;�<��"�"�5�)�)�
3�;�;�;�!&��
��<�<�A��L�L�������!:�;�;�;�;�<��3���;�;�;�!&��
��3�3�A��L�L���!1�2�2�2�2���	�	�B�����R��$�$�A��a����
�!��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��#�8�,�,�	L�	L�I�A�v��q�k�G� �1�1�3�3�J����S��_�_�a��<�<�<�� � ��'�'�
L���&��#�6�6�A��G�M�M�!�,�,�E�A�r��O�O�B�M�M�!�$4�$4�5�5�5�5�6��"�"�5�)�)�

L�#�C�C�A��G�M�M�!�,�,�E�A�r��O�O�B�K�K��$7�$7��<�<�<��O�O�B�M�M�&�3�,�$?�$?�%B�$&�s�6�{�{�Q��$7�$?�$?�$A�$A�C�C�C�C�C�
�3���#�L�L�A��G�M�M�!�,�,�E�A�r��O�O�B�K�K�	�$:�$:�;�;�;��O�O�B�M�M�#�$6�$6�$J�2�a�5�=�=�?�?�K�K�K�K��'	L�	Ls�'G5�5G9	�<G9	c���tjtjd�����}|�t
j|��g}tj���}d}t|��D]B}|�
|�d����|tjd���z
}�Cd}g}g}t|��D]e\}	}
|	dz}tj�||
zd	d|d
���}|�
|��|D]}
|�
|
�d|
������f|D]}
|�
d
|
z���|D]}||z����t|��D]�\}	}
|	dz}||	}|���}|�t)|��||z
|��t+jd��}|D]}t.j�|��\}}|�|�|
dz����|t)|
��dzd�}|�||������dS)Nr�r�rKr�r�r�)za.logza.log.brkrgTr�r�z
a.log.%s.cz&^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}\Z)rOrPr2r�r�r�r�rYrr^rFr�r�r�rr?rS�touchr�rYrZrTrUr4r;r�rBr��assertRegex)rCr�r�r"�n_filesrfr�r�r�r[r�rarnr�r�r��matcherrdrxrHr�s                     rG�?test_compute_files_to_delete_same_filename_different_extensionsz\TimedRotatingFileHandlerTest.test_compute_files_to_delete_same_filename_different_extensions�s���
�\�(�*�/�B�B�B�
C�
C������
�r�*�*�*���
�
�
"�
"�
$�
$�����w���	0�	0�A��L�L����%8�9�9�:�:�:��(�$�Q�/�/�/�/�B�B�'������"�8�,�,�	4�	4�I�A�v��A�#�K��&�?�?��V��RU�IJ�LW�FJ�@�L�L�G�
�O�O�G�$�$�$��
4�
4����������2�3�3�3�3�
4��	+�	+�A��L�L���)�*�*�*�*��	�	�A�
�!�V�N�N�����"�8�,�,�
	2�
	2�I�A�v��A�#�K��q�k�G� �1�1�3�3�J����S��_�_�g��.C�Z�P�P�P��j�!J�K�K�G��
2�
2����
�
�a�(�(���2�����
�
�f�S�j� 9� 9�:�:�:��S��[�[��]�,�,�-��� � ���1�1�1�1�	
2�
	2�
	2rizEST+05EDT,M3.2.0,M11.1.0c����tj}��fd�}tj��jddd����||dddd	d
d
��|ddddd����||ddddd��|ddd
dd����||ddddd��|ddd
dd����||dddd	d
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd��������tj��jdddtjd
dd������||ddddd
d
��|dddd
d����||dddd
d��|dddd
d����||ddddd��|dddd
d����||ddddd
d
��|dddd
d����||dddd
d��|dddd
d����||ddddd��|dddd
d��������tj��jdddtjddd������||ddddd
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||ddddd
d
��|ddddd����||ddddd��|ddd
dd����||ddddd��|ddd
dd����||ddddd
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||ddddd
d
��|ddddd����||ddddd
d
d���|ddddd����||ddddd��|ddddd����||ddddd��|ddddd��������tj��jdddtjddd������||dddddd
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||ddddd
d
��|ddddd����||ddddd��|ddd
dd����||ddddd��|ddd
dd����||dddddd
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd��������tj��jdddtjddd������||dddddd
��|ddddd����||ddddd��|ddd
dd����||ddddd
d
��|ddd
dd����||ddddd��|ddd
dd����||ddddd��|ddd
dd����||ddddd��|ddddd����||dddddd
��|ddddd����||ddddd��|ddddd����||ddddd
d
��|ddddd����||dddddd���|dddddd�����||dddddd
d���|dddddd�����||dddddd���|ddddd����||ddddd
d
d���|ddddd����||ddddd��|ddddd����||ddddd��|ddddd��������dS)Nc������|�����}||���z
}|r,��|dtj|�����dSdS�Nrr��r�r�rYrYr���currentrerd�diffrHrCs    ��rGr�zOTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local.<locals>.test�y����'�'��(9�(9�(;�(;�<�<�F��H�.�.�0�0�0�D��
L�� � ��q�(�*<�T�*J�*J�*J�K�K�K�K�K�
L�
Lrir%r�F�r'r�rZ��rbrKr&�;�rr�rkr]r�r�rr���fold���rYrr?rSrHrJr_�rC�DTr�rHs`  @rG�$test_compute_rollover_MIDNIGHT_localzATimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_locals4�����
��	L�	L�	L�	L�	L�	L��
�
6�
6��G�g�J�E�7�C�C��	
��R�R��a��R��R�
(�
(�"�"�T�1�b�!�Q�*?�*?�@�@�@���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��b�!�R��R�
(�
(�"�"�T�2�q�!�Q�*?�*?�@�@�@���R�R��b�!�Q��
"�
"�B�B�t�R��A�q�$9�$9�:�:�:���R�R��b�!�Q��
"�
"�B�B�t�R��A�q�$9�$9�:�:�:�
���
�
�
�
�
�
6�
6��G�g�J�E��=��Q��*�*�7�,�,��	
��R�R��a��R��R�
(�
(�"�"�T�1�b�"�a�*@�*@�A�A�A���R�R��a��R��
#�
#�R�R��a��R��%;�%;�<�<�<���R�R��a��R��
#�
#�R�R��a��R��%;�%;�<�<�<���R�R��b�!�R��R�
(�
(�"�"�T�2�q�"�a�*@�*@�A�A�A���R�R��b�!�R��
#�
#�R�R��b�!�R��%;�%;�<�<�<���R�R��b�!�R��
#�
#�R�R��b�!�R��%;�%;�<�<�<�
���
�
�
�
�
�
6�
6��G�g�J�E��=��A�q�)�)�7�+�+��	
��R�R��a��Q��B�
'�
'���D�!�R��A�)>�)>�?�?�?���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��a��Q��B�
'�
'���D�!�R��A�)>�)>�?�?�?���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��b�!�Q��B�
'�
'���D�"�a��A�)>�)>�?�?�?���R�R��b�!�Q��
"�
"�B�B�t�R��A�q�$9�$9�:�:�:���R�R��b�!�Q��
"�
"�B�B�t�R��A�q�$9�$9�:�:�:�	
��R�R��b�!�Q��B�
'�
'���D�"�a��A�)>�)>�?�?�?���R�R��b�!�Q��B�Q�
/�
/�
/���D�"�a��A�1F�1F�G�G�G���R�R��b�!�Q��
"�
"�B�B�t�R��A�q�$9�$9�:�:�:���R�R��b�!�Q��
"�
"�B�B�t�R��A�q�$9�$9�:�:�:�
���
�
�
�
�
�
6�
6��G�g�J�E��=��B��*�*�7�,�,��	
��R�R��a��Q��B�
'�
'���D�!�R��B�)?�)?�@�@�@���R�R��a��Q��
#�
#�R�R��a��Q��%;�%;�<�<�<���R�R��a��Q��
"�
"�B�B�t�Q��A�r�$:�$:�;�;�;���R�R��a��Q��B�
'�
'���D�!�R��B�)?�)?�@�@�@���R�R��a��Q��
"�
"�B�B�t�Q��A�r�$:�$:�;�;�;���R�R��a��Q��
#�
#�R�R��a��Q��%;�%;�<�<�<���R�R��b�!�Q��B�
'�
'���D�"�a��B�)?�)?�@�@�@���R�R��b�!�Q��
#�
#�R�R��b�!�Q��%;�%;�<�<�<���R�R��b�!�Q��
"�
"�B�B�t�R��A�r�$:�$:�;�;�;�
���
�
�
�
�
�
6�
6��G�g�J�E��=��B��*�*�7�,�,��	
��R�R��a��Q��B�
'�
'���D�!�R��B�)?�)?�@�@�@���R�R��a��Q��
#�
#�R�R��a��Q��%;�%;�<�<�<���R�R��a��Q��B�
'�
'���D�!�R��B�)?�)?�@�@�@���R�R��a��Q��
"�
"�B�B�t�Q��A�r�$:�$:�;�;�;���R�R��a��Q��
#�
#�R�R��a��Q��%;�%;�<�<�<�	
��R�R��b�!�Q��
"�
"�B�B�t�R��A�r�$:�$:�;�;�;���R�R��b�!�Q��B�
'�
'���D�"�a��B�)?�)?�@�@�@���R�R��b�!�Q��
#�
#�R�R��b�!�Q��%;�%;�<�<�<���R�R��b�!�Q��B�
'�
'���D�"�a��B�)?�)?�@�@�@�	
��R�R��b�!�Q���
*�
*�
*�B�B�t�R��A�r��,J�,J�,J�K�K�K���R�R��b�!�Q��B�Q�
/�
/�
/���D�"�a��B�Q�1O�1O�1O�P�P�P���R�R��b�!�Q���
+�
+�
+�R�R��b�!�Q��-C�-C�D�D�D���R�R��b�!�Q��B�Q�
/�
/�
/���D�"�a��B�1G�1G�H�H�H���R�R��b�!�Q��
"�
"�B�B�t�R��A�r�$:�$:�;�;�;���R�R��b�!�Q��
#�
#�R�R��b�!�Q��%;�%;�<�<�<�
���
�
�
�
�
ric�h���tj}��fd�}tj��jddd����||dddd	d
d
��|ddddd����||ddddd��|ddd
dd����||ddddd��|ddd
dd����||dddd	d
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd��������tj��jdddtjddd������||dddd	d
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||dddd	d
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd��������tj��jdddtjd
dd������||ddddd
d
��|dddd
d����||dddd
d��|dddd
d����||ddddd��|dddd
d����||ddddd
d
��|dddd
d����||dddd
d��|dddd
d����||ddddd��|dddd
d��������tj��jdddtjddd������||ddddd
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||ddddd
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||ddddd
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||ddddd
d
��|ddddd����||ddddd
d
d���|ddddd����||ddddd��|ddddd����||ddddd��|ddddd��������tj��jdddtjddd������||dddddd
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||ddddd
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||dddddd
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd��������tj��jdddtjddd������||dddddd
��|ddddd����||ddddd��|ddddd����||ddddd
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||dddddd
��|ddddd����||ddddd��|ddddd����||ddddd
d
��|ddddd����||dddddd���|dddddd�����||dddddd
d���|dddddd�����||dddddd���|ddddd����||ddddd
d
d���|ddddd����||ddddd��|ddddd����||ddddd��|ddddd��������dS)Nc������|�����}||���z
}|r,��|dtj|�����dSdSr�r�r�s    ��rGr�zITimedRotatingFileHandlerTest.test_compute_rollover_W6_local.<locals>.test�r�rir%�W6Fr�r�rbr]r&r�r�rr�rkrK�r�r�r��rr�r�r�r�r�s`  @rG�test_compute_rollover_W6_localz;TimedRotatingFileHandlerTest.test_compute_rollover_W6_local�s�
�����
��	L�	L�	L�	L�	L�	L��
�
6�
6��G�g�D�e�7�=�=��	
��R�R��a��B��B�
'�
'���D�!�Q��1�)=�)=�>�>�>���R�R��a��A�q�
!�
!�2�2�d�A�r�1�a�#8�#8�9�9�9���R�R��a��A�q�
!�
!�2�2�d�A�r�1�a�#8�#8�9�9�9���R�R��b�"�b�"�b�
)�
)�2�2�d�B��A�q�+A�+A�B�B�B���R�R��b�"�a��
#�
#�R�R��b�!�Q��%:�%:�;�;�;���R�R��b�"�a��
#�
#�R�R��b�!�Q��%:�%:�;�;�;�
���
�
�
�
�
�
6�
6��G�g�D�e��=��A�q�)�)�7�+�+��	
��R�R��a��R��R�
(�
(�"�"�T�1�b�!�Q�*?�*?�@�@�@���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��b�!�R��R�
(�
(�"�"�T�2�q�!�Q�*?�*?�@�@�@���R�R��b�!�Q��
"�
"�B�B�t�R��Q��$:�$:�;�;�;���R�R��b�!�Q��
"�
"�B�B�t�R��Q��$:�$:�;�;�;�
���
�
�
�
�
�
6�
6��G�g�D�e��=��Q��*�*�7�,�,��	
��R�R��a��B��B�
'�
'���D�!�Q��A�)>�)>�?�?�?���R�R��a��B��
"�
"�B�B�t�Q��B��$:�$:�;�;�;���R�R��a��B��
"�
"�B�B�t�Q��B��$:�$:�;�;�;���R�R��b�"�b�"�b�
)�
)�2�2�d�B��B��+B�+B�C�C�C���R�R��b�"�b�!�
$�
$�b�b��r�1�b�!�&<�&<�=�=�=���R�R��b�"�b�!�
$�
$�b�b��r�1�b�!�&<�&<�=�=�=�
���
�
�
�
�
�
6�
6��G�g�D�e��=��A�q�)�)�7�+�+��	
��R�R��a��A�r�2�
&�
&���4��A�q�!�(<�(<�=�=�=���R�R��a��A�q�
!�
!�2�2�d�A�r�1�a�#8�#8�9�9�9���R�R��a��A�q�
!�
!�2�2�d�A�r�1�a�#8�#8�9�9�9���R�R��a��Q��B�
'�
'���D�!�R��A�)>�)>�?�?�?���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��b�"�a��R�
(�
(�"�"�T�2�r�1�a�*@�*@�A�A�A���R�R��b�"�a��
#�
#�R�R��b�!�Q��%:�%:�;�;�;���R�R��b�"�a��
#�
#�R�R��b�!�Q��%:�%:�;�;�;�	
��R�R��b�!�Q��B�
'�
'���D�"�a��A�)>�)>�?�?�?���R�R��b�!�Q��B�Q�
/�
/�
/���D�"�a��A�1F�1F�G�G�G���R�R��b�!�Q��
"�
"�B�B�t�R��Q��$:�$:�;�;�;���R�R��b�!�Q��
"�
"�B�B�t�R��Q��$:�$:�;�;�;�
���
�
�
�
�
�
6�
6��G�g�D�e��=��B��*�*�7�,�,��	
��R�R��a��A�r�2�
&�
&���4��A�q�"�(=�(=�>�>�>���R�R��a��A�r�
"�
"�B�B�t�Q��A�r�$:�$:�;�;�;���R�R��a��A�q�
!�
!�2�2�d�A�r�1�b�#9�#9�:�:�:���R�R��a��Q��B�
'�
'���D�!�R��B�)?�)?�@�@�@���R�R��a��Q��
"�
"�B�B�t�Q��A�r�$:�$:�;�;�;���R�R��a��Q��
#�
#�R�R��a��Q��%;�%;�<�<�<���R�R��b�"�a��R�
(�
(�"�"�T�2�r�1�b�*A�*A�B�B�B���R�R��b�"�a��
$�
$�b�b��r�1�a��&<�&<�=�=�=���R�R��b�"�a��
#�
#�R�R��b�!�Q��%;�%;�<�<�<�
���
�
�
�
�
�
6�
6��G�g�D�e��=��B��*�*�7�,�,��	
��R�R��a��Q��B�
'�
'���D�!�R��B�)?�)?�@�@�@���R�R��a��Q��
#�
#�R�R��a��Q��%;�%;�<�<�<���R�R��a��Q��B�
'�
'���D�!�R��B�)?�)?�@�@�@���R�R��a��Q��
"�
"�B�B�t�Q��A�r�$:�$:�;�;�;���R�R��a��Q��
#�
#�R�R��a��Q��%;�%;�<�<�<�	
��R�R��b�!�Q��
"�
"�B�B�t�R��A�r�$:�$:�;�;�;���R�R��b�!�Q��B�
'�
'���D�"�a��B�)?�)?�@�@�@���R�R��b�!�Q��
#�
#�R�R��b�"�a��%<�%<�=�=�=���R�R��b�!�Q��B�
'�
'���D�"�b�!�R�)@�)@�A�A�A�	
��R�R��b�!�Q���
*�
*�
*�B�B�t�R��A�r��,J�,J�,J�K�K�K���R�R��b�!�Q��B�Q�
/�
/�
/���D�"�a��B�Q�1O�1O�1O�P�P�P���R�R��b�!�Q���
+�
+�
+�R�R��b�"�a��-D�-D�E�E�E���R�R��b�!�Q��B�Q�
/�
/�
/���D�"�b�!�R�1H�1H�I�I�I���R�R��b�!�Q��
"�
"�B�B�t�R��Q��$;�$;�<�<�<���R�R��b�!�Q��
#�
#�R�R��b�"�a��%<�%<�=�=�=�
���
�
�
�
�
ric�|���tj}��fd�}tj��jdddd����||dddd	d
d
��|ddddd����||ddd
dd��|ddddd����||ddd
dd��|ddddd����||dddd	d
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||dddd	d
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||dddd	d
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd��������tj��jddddtjddd������||ddddd
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||ddddd
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||ddddd
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd����||ddddd
d
��|ddddd����||ddddd��|ddddd����||ddddd��|ddddd��������dS)Nc������|�����}||���z
}|r,��|dtj|�����dSdSr�r�r�s    ��rGr�zXTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_interval.<locals>.testr�rir%r�Frb�r'r�rZr�r�rVr&r�r�rrWr�rkrKrrVr]r�r�r�r��r'r�rZr�r�r�r�s`  @rG�-test_compute_rollover_MIDNIGHT_local_intervalzJTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_intervals������
��	L�	L�	L�	L�	L�	L��
�
6�
6��G�g�J�E�A�7�O�O��	
��R�R��a��B��B�
'�
'���D�!�R��A�)>�)>�?�?�?���R�R��a��A�q�
!�
!�2�2�d�A�r�1�a�#8�#8�9�9�9���R�R��a��A�q�
!�
!�2�2�d�A�r�1�a�#8�#8�9�9�9���R�R��a��R��R�
(�
(�"�"�T�1�b�!�Q�*?�*?�@�@�@���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��b�!�R��R�
(�
(�"�"�T�2�q�!�Q�*?�*?�@�@�@���R�R��b�!�Q��
"�
"�B�B�t�R��A�q�$9�$9�:�:�:���R�R��b�!�Q��
"�
"�B�B�t�R��A�q�$9�$9�:�:�:���R�R��b�!�R��R�
(�
(�"�"�T�2�q�!�Q�*?�*?�@�@�@���R�R��b�!�Q��
"�
"�B�B�t�R��A�q�$9�$9�:�:�:���R�R��b�!�Q��
"�
"�B�B�t�R��A�q�$9�$9�:�:�:�
���
�
�
�
�
�
6�
6��G�g�J�E�A��=��Q��*�*�7�,�,��	
��R�R��a��B��B�
'�
'���D�!�R��Q�)?�)?�@�@�@���R�R��a��B��
"�
"�B�B�t�Q��B��$:�$:�;�;�;���R�R��a��B��
"�
"�B�B�t�Q��B��$:�$:�;�;�;���R�R��a��R��R�
(�
(�"�"�T�1�b�"�a�*@�*@�A�A�A���R�R��a��R��
#�
#�R�R��a��R��%;�%;�<�<�<���R�R��a��R��
#�
#�R�R��a��R��%;�%;�<�<�<���R�R��b�!�R��R�
(�
(�"�"�T�2�q�"�a�*@�*@�A�A�A���R�R��b�!�R��
#�
#�R�R��b�!�R��%;�%;�<�<�<���R�R��b�!�R��
#�
#�R�R��b�!�R��%;�%;�<�<�<���R�R��b�!�R��R�
(�
(�"�"�T�2�q�"�a�*@�*@�A�A�A���R�R��b�!�R��
#�
#�R�R��b�!�R��%;�%;�<�<�<���R�R��b�!�R��
#�
#�R�R��b�!�R��%;�%;�<�<�<�
���
�
�
�
�
ric����tj}��fd�}tj��jdddd����||ddd	d
dd��|dddd
d
����||dddd
d
��|dddd
d
����||ddddd
��|dddd
d
����||dddd
dd��|ddd	d
d
����||dddd
d
��|dddd
d
����||ddddd
��|dddd
d
����||dddd
dd��|dddd
d
����||dddd
d
��|dddd
d
����||ddddd
��|dddd
d
����||dddd
dd��|dddd
d
����||dddd
d
��|ddd	d
d
����||ddddd
��|ddd	d
d
��������tj��jddddtjd
d
d
������||dddd
dd��|dddd
d
����||dddd
d
��|dddd
d
����||ddddd
��|dddd
d
����||dddd
dd��|dddd
d
����||dddd
d
��|dddd
d
����||ddddd
��|dddd
d
����||dddd
dd��|dddd
d
����||dddd
d
��|dddd
d
����||ddddd
��|dddd
d
����||dddd
dd��|dddd
d
����||dddd
d
��|dddd
d
����||ddddd
��|dddd
d
��������tj��jddddtjdd
d
������||dddddd��|ddddd
����||ddd	dd
��|ddddd
����||ddd	dd
��|ddddd
����||dddddd��|ddddd
����||ddddd
��|ddddd
����||ddddd
��|ddddd
����||dddddd��|ddddd
����||ddddd
��|ddddd
����||ddddd
��|ddddd
����||dddddd��|ddddd
����||ddddd
��|ddddd
����||ddddd
��|ddddd
��������dS)Nc������|�����}||���z
}|r,��|dtj|�����dSdSr�r�r�s    ��rGr�zRTimedRotatingFileHandlerTest.test_compute_rollover_W6_local_interval.<locals>.test?r�rir%r�Frbr�r�r��r&r�r�rr�r�rkr]�rKrVr��r�r�r��r�rUrr�r�s`  @rG�'test_compute_rollover_W6_local_intervalzDTimedRotatingFileHandlerTest.test_compute_rollover_W6_local_interval;s������
��	L�	L�	L�	L�	L�	L��
�
6�
6��G�g�D�e�a�7�I�I��	
��R�R��a��R��R�
(�
(�"�"�T�1�a��A�*>�*>�?�?�?���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��a��B��B�
'�
'���D�!�R��A�)>�)>�?�?�?���R�R��a��A�q�
!�
!�2�2�d�A�r�1�a�#8�#8�9�9�9���R�R��a��A�q�
!�
!�2�2�d�A�r�1�a�#8�#8�9�9�9���R�R��b�"�b�"�b�
)�
)�2�2�d�B��A�q�+A�+A�B�B�B���R�R��b�"�a��
#�
#�R�R��b�!�Q��%:�%:�;�;�;���R�R��b�"�a��
#�
#�R�R��b�!�Q��%:�%:�;�;�;���R�R��b�"�b�"�b�
)�
)�2�2�d�B��A�q�+A�+A�B�B�B���R�R��b�"�a��
#�
#�R�R��b�"�a��%;�%;�<�<�<���R�R��b�"�a��
#�
#�R�R��b�"�a��%;�%;�<�<�<�
���
�
�
�
�
�
6�
6��G�g�D�e�a��=��A�q�)�)�7�+�+��	
��R�R��a��R��R�
(�
(�"�"�T�1�b�!�Q�*?�*?�@�@�@���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��a��Q��
"�
"�B�B�t�Q��A�q�$9�$9�:�:�:���R�R��a��R��R�
(�
(�"�"�T�1�b�!�Q�*?�*?�@�@�@���R�R��a��Q��
"�
"�B�B�t�Q��1�a�$8�$8�9�9�9���R�R��a��Q��
"�
"�B�B�t�Q��1�a�$8�$8�9�9�9���R�R��b�"�b�"�b�
)�
)�2�2�d�B��1�a�+@�+@�A�A�A���R�R��b�"�a��
#�
#�R�R��b�"�a��%;�%;�<�<�<���R�R��b�"�a��
#�
#�R�R��b�"�a��%;�%;�<�<�<���R�R��b�!�R��R�
(�
(�"�"�T�2�r�1�a�*@�*@�A�A�A���R�R��b�!�Q��
"�
"�B�B�t�R��Q��$:�$:�;�;�;���R�R��b�!�Q��
"�
"�B�B�t�R��Q��$:�$:�;�;�;�
���
�
�
�
�
�
6�
6��G�g�D�e�a��=��Q��*�*�7�,�,��	
��R�R��a��R��R�
(�
(�"�"�T�1�a��Q�*?�*?�@�@�@���R�R��a��R��
#�
#�R�R��a��R��%;�%;�<�<�<���R�R��a��R��
#�
#�R�R��a��R��%;�%;�<�<�<���R�R��a��B��B�
'�
'���D�!�R��Q�)?�)?�@�@�@���R�R��a��B��
"�
"�B�B�t�Q��B��$:�$:�;�;�;���R�R��a��B��
"�
"�B�B�t�Q��B��$:�$:�;�;�;���R�R��b�"�b�"�b�
)�
)�2�2�d�B��B��+B�+B�C�C�C���R�R��b�"�b�!�
$�
$�b�b��r�1�b�!�&<�&<�=�=�=���R�R��b�"�b�!�
$�
$�b�b��r�1�b�!�&<�&<�=�=�=���R�R��b�"�b�"�b�
)�
)�2�2�d�B��B��+B�+B�C�C�C���R�R��b�"�b�!�
$�
$�b�b��r�2�r�1�&=�&=�>�>�>���R�R��b�"�b�!�
$�
$�b�b��r�2�r�1�&=�&=�>�>�>�
���
�
�
�
�
riN)F)rprqrrr�r�rr�rVr�r�r�r�r�r�r�r��run_with_tzr�r�r�rrsrirGr�r��s�������X�_�W�_�&E�F�F���G�F��((�((�((�T)5�)5�)5�)5�V4�4�4�B�B�B�%�%�%�P4�4�4�l?L�?L�?L�B&2�&2�&2�T�W��3�4�4�k�k�5�4�k�^�W��3�4�4�y�y�5�4�y�z�W��3�4�4�.�.�5�4�.�d�W��3�4�4�B�B�5�4�B�B�Brir�c�P�tjdi|��tjd���zS)Nrkr�rs)rYr�)r�s rGr�r��s,����#�#��#�#�x�'9�!�'D�'D�'D�D�Dri)r�rk)�M�<)�Hi)�Dr�)r�r��W0r]�)r��hours)rkrbc�"�tj�|jd||dd���}d}|�|��}|�d��r|t
d|dz
z�	��z
}n||z}||k�rh|d
k�ra	|jrtj	|��}ntj
|��}|d}|d}	|d
}
tjj|dz|	zdz|
zz
}||z}td|�d|j�d�tj���td|ztj���td|	ztj���td|
ztj���td|ztj���td|ztj���n5#t$r(}
td|
ztj���Yd}
~
nd}
~
wwxYw|�||��|���dS)Nr%rT)r'r�r�rarZgr�r�rkr�r�rbr]r�rzt: z (�)r�zcurrentHour: %szcurrentMinute: %szcurrentSecond: %szr: %sz
result: %sz exception in diagnostic code: %s)rr?rSrHr�r�r�rZr_r`�	localtime�	_MIDNIGHTrtr0r�rsrYrJ)rCr�r��exprUr�rdr��currentHour�
currentMinute�
currentSecondr�r6rs              rG�test_compute_rolloverr�sD���!�:�:���'��x�UV�\`�;�b�b�B��K��'�'��4�4�F����s�#�#�
 ��t��H�Q�J��0�0�0�0����x����f�}�}��:�%�%�W��6�<� $��K� 8� 8�A�A� $��{� ;� ;�A�&'��d��()�!��
�()�!��
�#�,�6�;��;K�8E�<F�IK�;L� -�;.�/��"-�q�����a�a�a�����8�s�z�J�J�J�J��/�+�=�C�J�O�O�O�O��1�M�A��
�S�S�S�S��1�M�A��
�S�S�S�S��g��k��
�;�;�;�;��l�V�3�#�*�E�E�E�E�E��$�W�W�W��@�1�D�3�:�V�V�V�V�V�V�V�V�V�����W�������S�&�)�)�)��H�H�J�J�J�J�Js�D*F0�0
G"�:G�G"ztest_compute_rollover_%s�	_intervalz>win32evtlog/win32evtlogutil/pywintypes required for this test.c��eZdZd�ZdS)�NTEventLogHandlerTestc���d}tjd|��}tj|��}	tj�d��}n7#tj$r%}|jdkrtj
d����d}~wwxYwtjddi��}|�|��|�
��|�|tj|����tjtjz}d}d}	tj|||	��}
|
D],}|jdkr�t'j||��}|d	kr�*d
}d|	z}|�||���dS)
N�Application�test_loggingr�z#Insufficient privileges to run testr*zTest Log MessageFr�zTest Log Message
Tz3Record not found in event log, went back %d recordsrA)�win32evtlog�OpenEventLog�GetNumberOfEventLogRecordsrr?�NTEventLogHandler�
pywintypesr��winerrorr��SkipTestr�r9rJ�
assertLess�EVENTLOG_BACKWARDS_READ�EVENTLOG_SEQUENTIAL_READ�ReadEventLog�
SourceName�win32evtlogutil�SafeFormatMessagerB)rC�logtype�elh�num_recsrQrr��flagsr�r��eventsr*s            rGrDz NTEventLogHandlerTest.test_basic�sz�����&�t�W�5�5���9�#�>�>��	�� �2�2�>�B�B�A�A����	�	�	��z�Q����'�(M�N�N�N������	����

�!�5�*<�"=�>�>��	�������	���	�	�	�����+�"H��"M�"M�N�N�N��3��4�5�������)�#�u�g�>�>���	�	�A��|�~�-�-��!�3�A�w�?�?�C��,�,�,���E��C�g�M������3��'�'�'�'�'s�A
�
B� A<�<BN)rprqrrrDrsrirGrr�s#������(�(�(�(�(rirc��eZdZd�ZdS)�MiscTestCasec�F�hd�}tj|t|���dS)N>
r�r��Filtererro�
RootLoggerrM�PlaceHolderr\�currentframerN�StrFormatStyler5rN)�not_exported)r�check__all__r)rCr7s  rG�test__all__zMiscTestCase.test__all__�s3������
	��T�7��F�F�F�F�F�FriN)rprqrrr9rsrirGr0r0�s(������G�G�G�G�Grir0c�T�tjtjdd����dS)N�LC_ALLr)r��enterModuleContextr�run_with_localersrirG�setUpModuler>�s&����� 7��"� E� E�F�F�F�F�Fri�__main__r�)�r�logging.handlers�logging.configr�r�r"rYrOrr3r�r:r4r�rbrTr�r�r
r0r2�test.support.script_helperrrr�r�test.supportrrrr	�test.support.logging_helperr
rxror_r�r�r�http.serverrr�urllib.parser
r�socketserverrrrr�import_deprecatedrrrr(r rorur��HAVE_ASAN_FORK_BUGr��TestCaserrur��SILENTr��TERSE�EFFUSIVEr�r�	TALKATIVEr��
CHATTERBOX�BORINGr^r�r�r�r�r�r�rr�r�r8r�r�r�r�r�r�r�rr r&r.r3r�r�r5rIr:rprur�rr�r!r(r3r8rF�IPV6_ENABLEDrJrPrzr�r�r�r�r�r�r�r�r�r�r�r�r�r?r�
unittest.mockr�r�r�r �tzinforrZr(r,r~rprzr�r�r�r�r�r�r�r'rVr�r�r�r�r�r�r<rFrMr�r�r�rr�rrErpr�rr0r>�mainrsrirG�<module>rUs��"�
������������
�
�
�
�����������������
�
�
�
�	�	�	�	�	�	�	�	�����	�	�	�	�����
�
�
�
�	�	�	�	�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�����N�N�N�N�N�N�N�N�������"�"�"�"�"�"�&�&�&�&�&�&�)�)�)�)�)�)�(�(�(�(�(�(�3�3�3�3�3�3�������������������������:�:�:�:�:�:�:�:�+�+�+�+�+�+�+�+�D�D�D�D�D�D�D�D�D�D�D�D�-�?�,�Z�8�8��)��)�'�2�2��6�3�3�3�3�3�3�3�3�3�3�3�3�3���6�6�6�15�5�K�5�/�J�J�J�6����	��K�K�K�K���	�	�	��D�	����$�H�O���E�G�G��
j'�j'�j'�j'�j'�x� �j'�j'�j'�ZUI�UI�UI�UI�UI��UI�UI�UI�n<%�<%�<%�<%�<%�h�<%�<%�<%�L�������������	��	��
����e�F�F�Q�J�'�'���(��*�	�'��*��*��)�
�+�
�+��,�
�(���+�+�+�+�+�g�n�+�+�+�:�:�:�:�:���:�:�:�V'�V'�V'�V'�V'��V'�V'�V'�rW2�W2�W2�W2�W2�(�W2�W2�W2�t1�1�1�1�1��1�1�1�#�#�#�#�#��-�#�#�#�
�
�
�
�
��
�
�
�'@�'@�'@�'@�'@��'@�'@�'@�XG;�G;�G;�G;�G;�U�%�G;�G;�G;�T0�0�0�0�0�6�0�0�0�d'�'�'�'�'�\�:�'�'�'�R1�1�1�1�1�L�"4�1�1�1�>-�-�-�-�-�L�"4�-�-�-�^�7�6�9���(�(�(�(�(�(�}�(�(�(�(�(�(�(�(��(�(�(�
!�� �"�"�,��,�.�.������h���/�.�#�"��@f5�f5�f5�f5�f5��f5�f5�f5�R-�-�-�-�-��*�-�-�-�B�B�B�B�B�X�B�B�B�J!�� �"�"�,��,�.�.�W+�W+�W+�W+�W+��W+�W+�/�.�#�"�W+�r������W�W�V�Y�/�/�1H�I�I�'�'�'�'�'�-�'�'�J�I�'� !�� �"�"�,��,�.�.�>:�>:�>:�>:�>:�(�>:�>:�/�.�#�"�>:�@���W�W�V�Y�/�/�1H�I�I�'�'�'�'�'�1�'�'�J�I�'� !�� �"�"�,��,�.�.�IB�IB�IB�IB�IB��IB�IB�/�.�#�"�IB�V���W�W�V�Y�/�/�1H�I�I�'�'�'�'�'�-�'�'�J�I�'� ���]�/�;�=�=�
6�
6�
6�
6�
6�-�
6�
6�=�=�
6�!�� �"�"�,��,�.�.�K �K �K �K �K �h�K �K �/�.�#�"�K �Z1�1�1�1�1��1�1�1�h.L�.L�.L�.L�.L�8�.L�.L�.L�b%K�%K�%K�%K�%K�8�%K�%K�%K�P.�.�.�.�
�
�
�
�
�
�
�
�#�#�#�	�	�	�	�	�G�)�	�	�	�y*�y*�y*�y*�y*�X�y*�y*�y*�v)9�9�9�9�9�(�9�9�9�.�����h����"	�	�	�	�	�w�(�	�	�	� � � � � �8� � � �F-��,�.�.�iP�iP�iP�iP�iP�x�iP�iP�/�.�iP�V�7�7��_�-�-�b&�����#�#�#�#�#�#�0��0�2�2�]&�]&�]&�]&�]&�H�]&�]&�3�2�]&�@�x��!���������(�/����
�c�e�e��.�.�.�.�.�.�.�.�Y)�Y)�Y)�Y)�Y)�H�%�'9�Y)�Y)�Y)�x&�&�&�&�&�W�7�&�&�&�G�G�G�G�G�X�.�G�G�G�&A�A�A�A�A�H�A�A�A�,$;�$;�$;�$;�$;�X�$;�$;�$;�N	�	�	�	�	�	�	�	�$�$�$�$�$�w�*�$�$�$�T/�T/�T/�T/�T/�8�T/�T/�T/�nx/�x/�x/�x/�x/�(�x/�x/�x/�vg=�g=�g=�g=�g=�H�g=�g=�g=�R}#�}#�}#�}#�}#�h�'�}#�}#�}#�@
l1�l1�l1�l1�l1��)�l1�l1�l1�^.�.�.�.�.�G�)�.�.�.�+�+�+�+�+�+�+�+�5�5�5�5�5�7�(�5�5�5�`>�`>�`>�`>�`>��-�`>�`>�`>�FH�H�H�H�H�8�H�H�H�45�5�5�5�5�l�5�5�5�,j�j�j�j�j�l�j�j�j�X[
�[
�[
�[
�[
�<�[
�[
�[
�|E�E�E��� �%�,����1�B�/�/�/�0�
�2K�2K�I�D�#��*K�*K��-1�H�#�$	�$	�$	�$	�J*�D�0���a�<�<��K��D�)-��&���,�d�4I�J�J�J�J�U*K�Z���[�"b�c�c� (� (� (� (� (�H� (� (�d�c� (�FG�G�G�G�G�8�$�G�G�G�G�G�G��z����H�M�O�O�O�O�O��s$�C$�$C2�1C2�6C;�;D�D

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists