Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_logging.cpython-312.opt-2.pyc

�

'Μg����<�	ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlmZmZddlmZddlmZddlmZddlmZddlmZddlm Z dd	lm!Z!dd
lm"Z"ddl#m$Z$ddl%Z%ddl&Z&ddl'Z'ddl(Z(ddl)Z)ddl*Z*ddl+Z+ddl,m-Z-m.Z.dd
l/m0Z0ddl1m2Z2m3Z3ddl4m5Z5m6Z6m7Z7m8Z8	ddl9Z9ddl:Z:ddl;Z;	ddl=Z=e)j|ej~d�Z@e)j|ej�d��d�ZBGd�de)j��ZDGd�deD�ZEGd�deD�ZFdZGdZHdZIdZJdZKdZLd ZMd!ZNd"ZOd#ZPeQePeGd$z�ZReGd%eHd&eId'eJd(eKd)eLd*eMd+eNd,eOd-ePd.i
ZSGd/�d0ej��ZUGd1�d2ej��ZVGd3�d4eD�ZWd5�ZXGd6�d7eD�ZYGd8�d9eZ�Z[Gd:�d;ej��Z]Gd<�d=eZ�Z^Gd>�d?eD�Z_Gd@�dAe"j��ZaGdB�dCeZ�ZbGdD�dEebe-�ZcGdF�dGebe7�ZdGdH�dIebe5�ZeefedJ�rGdK�dLed�ZgGdM�dNee�Zhej��ej��GdO�dPeD���ZkGdQ�dReD�ZlGdS�dTej��ZndU�ZoGdV�dWeD�Zpej��ej��GdX�dYeD���Zqe)j�efedJ�dZ�Gd[�d\eq��Zsej��ej��Gd]�d^eD���Zte)j�efedJ�dZ�Gd_�d`et��Zuej��ej��Gda�dbeD���Zve)j�efedJ�dZ�Gdc�ddev��Zwe)j�ej�de�Gdf�dgev��Zyej��ej��Gdh�dieD���ZzGdj�dkeD�Z{Gdl�dmeD�Z|Gdn�doeD�Z}d�dp�Z~Gdq�dr�Zds�Z�Gdt�duej��Z�Gdv�dwe�j�j�Z�Gdx�dye�j
�Z�Gdz�d{�Z�Gd|�d}e��Z�Gd~�de��Z�d��Z�d�d��Z�Gd��d�eD�Z�Gd��d�eD�Z�Gd��d�eD�Z�Gd��d�e�j�Z�Gd��d�eD�Z�ej��Gd��d�eD��Z�efe�jd��r)ddl�Z�dd
l/m0Z0ej��Gd��d�eD��Z�e�j*d�Z�Gd��d�e�j.�Z�e��Z�Gd��d��Z�Gd��d�e)j�e��Z�Gd��d�e�j8�Z�Gd��d�e)j��Z�Gd��d�eD�Z�Gd��d�eD�Z�Gd��d��Z�Gd��d�e�jD�Z�Gd��d�eD�Z�Gd��d�eD�Z�Gd��d�eD�Z�Gd��d�e)j��Z�Gd��d�e)j��Z�Gd��d�e�jR�Z�Gd��d��Z�Gd��d�e�jR�Z�Gd��d�eDe��Z�Gd��d�eD�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]3\Z�Z�d�D])Z�e�e�e�fdȄZ�d�e�zZ�e�d$kDre�d�z
Z�e�e�_�e�e�e�e���+�5e)j�e9d˫Gd̄d�eD��Z�Gd΄d�e)j��Z�dЄZ�e�d�k(re)�jz�yy#e<$r
dxZ9xZ:Z;Y���wxYw#e<$rY���wxYw)��N)�assert_python_ok�assert_python_failure)�support)�
import_helper)�	os_helper)�
socket_helper)�threading_helper)�warnings_helper)�asyncore)�smtpd)�TestHandler)�
HTTPServer�BaseHTTPRequestHandler)�patch)�urlparse�parse_qs)�ThreadingUDPServer�DatagramRequestHandler�ThreadingTCPServer�StreamRequestHandlerz?libasan has a pthread_create() dead lock related to thread+forkT)�threadz'TSAN doesn't support threads after forkc�4�eZdZ	dZdZdZd�Zd�Zd	d�Zd�Z	y)
�BaseTestz&%(name)s -> %(levelname)s: %(message)sz^([\w.]+) -> (\w+): (\d+)$rc��	tj�|_tj�j
j}tj�	tjj�|_
tjdd|_|j�x|_
}tjj�|_tj j�|_ix|_}|D]}t'||dd�||<�	tj(�tjd�|_tjd�|_tjd�|_|j.j1�|_t5j6�|_|j.j;tj<�tj>|j8�|_ tjB|jD�|_#|j@jI|jF�|j*jK�r;|j*jL|j.jLz}tOd|z��|j,jK�r;|j,jL|j.jLz}tOd|z��|j.jQ|j@�|jS|j*jK��|jS|j,jK��y#tj(�wxYw)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.12/test/test_logging.py�setUpzBaseTest.setUpas���	9�.�>�>�@����'�'�)�1�1�<�<������	#�")�"3�"3�"8�"8�":�D��&-�&:�&:�1�&=�D�#�1<�1A�1A�1C�C�D���'.�';�';�'@�'@�'B�D�$�'.�';�';�'@�'@�'B�D�$�13�3�D���%��&-�m�D�.A�.8�$�'@�
�d�#�&�
� � �"��(�(��8����(�(�)=�>���"�,�,�R�0���&*�&6�&6�&H�&H�&J��#��k�k�m������!�!�'�-�-�0� �.�.�t�{�{�;���%�/�/����@������#�#�D�$7�$7�8��<�<�#�#�%��L�L�)�)�D�,<�,<�,E�,E�E�E� �!:�U�!B�C�C��<�<�#�#�%��L�L�)�)�D�,<�,<�,E�,E�E�E� �!:�U�!B�C�C����#�#�D�N�N�3�������0�0�2�3�������0�0�2�3��-
� � �"�s
�B;M&�&M<c��	|jj�|jj|j�|jj
r[|jj
d}|jj|�|j�|jj
r�[|jj
|j�tj�	tjj�tjj|j�tjj�tjj|j�tj j�tj j|j"�|j$tj&ddtj(�j*}d|_|j.}|j�|j|j0�|j2}|j2D]}||��	|||j0|_�!	tj6�|j9�t;j<|j>�y#tj6�wxYw)Nr) r8�closer3�
removeHandlerr<rBr9r5rr#r,�clear�updater-r*r+r$r&r(r'r r!�disabler"r)r.rr0�
doCleanupsr	�threading_cleanupr)rF�hr!r"r.rHs      rJ�tearDownzBaseTest.tearDown�s	��	����������&�&�t�~�~�6����'�'�� � �)�)�!�,�A����*�*�1�-�
�G�G�I����'�'�	
���!�!�$�"=�"=�>�����	#�� � �&�&�(�� � �'�'��(@�(@�A�� � �&�&�(�� � �'�'��(@�(@�A����#�#�%����$�$�T�%8�%8�9�&*�&=�&=�G� � ��#��'�'�)�1�1�G��G�O� �+�+�J��������d�0�0�1� �.�.�M��*�*�� ��&�2�8E�d�8K�D�&�&�t�,�5�+�
� � �"������*�*�D�,?�,?�@��
� � �"�s�,E.J6�J6�6KNc��	|xs|j}tj|xs|j�}|j	�j�}|j
t|�t|��t||�D]U\}}|j|�}|s|jd|z�|j
t|j��|��W|j�}|r|jd|z�yy)Nz*Log line does not match expected pattern:
z'Remaining output at end of log stream:
)r8�re�compile�expected_log_pat�getvalue�
splitlines�assertEqual�len�zip�search�fail�tuple�groups�read)	rF�expected_valuesr8�pat�actual_lines�actual�expected�match�ss	         rJ�assert_log_lineszBaseTest.assert_log_lines�s���	/��&�4�;�;���j�j��5�� 5� 5�6�����(�3�3�5������\�*�C��,@�A� #�L�/� B��F�H��J�J�v�&�E���	�	�G�"�#�$����U�5�<�<�>�2�H�=�!C�
�K�K�M����I�I�@�1�D�E�
�c�L�	|xjdz
c_d|jzS)N�z%d)�message_num�rFs rJ�next_messagezBaseTest.next_message�s)��	����A����d�&�&�&�&rl�NN)
�__name__�
__module__�__qualname__r>rYrorKrUrkrq�rlrJrrYs-��'�9�J�4���K�(4�T A�DF�$'rlrc�8�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)	�BuiltinLevelsTestc��|j}tjd�}|jtj�tj
tjd�i�}|jtj�tjd�}|jtj�|jtj|��|j|��|jtj|��|j|��|j|��|j|��|jtj|��|j|��|j|��|j|��|j|��|j|��|j|��|j|��|j|��|jgd��y)N�ERR�INF�DEB))rz�CRITICAL�1)rz�ERROR�2)r{r}�3)r{r�4)r{�WARNING�5)r{�INFO�6)r|r}�7)r|r�8)r|r��9)r|r��10)r|r:�11)rqrr r9r�
LoggerAdapterr�r:�logr}�error�warning�info�debugrk)rF�mrzr{r|s     rJ�	test_flatzBuiltinLevelsTest.test_flat�sr����������&�����W�]�]�#��#�#�G�$5�$5�e�$<�b�A�����W�\�\�"�����&�����W�]�]�#�	���� � �!�#�&��	�	�!�#������ � �!�#�&��	�	�!�#�����A�C�������
����� � �!�#�&��	�	�!�#�����A�C�������
��	�	�!�#��	���A�C�������
��	�	�!�#���	�	�!�#�����
�	rlc��|j}tjd�}|jtj�tjd�}|jtj
�|j
tj|��|j|��|j|��|j|��|j|��|jddg�y)Nr{�INF.ERR)r�r}r~)r�rr��
rqrr r9r�rr�r}r�r�r�r�rk)rFr�r{�INF_ERRs    rJ�test_nested_explicitz&BuiltinLevelsTest.test_nested_explicit�s�����������&�����W�\�\�"��$�$�Y�/��������'�	���G�$�$�a�c�*��
�
�a�c��	���������Q�S���
�
�a�c�����(�%�
�	rlc��|j}tjd�}|jtj�tjd�}|jtj
�tjd�}tjd�}tjd�}|j
tj|��|j|��|j|��|j|��|j
tj|��|j|��|j|��|j|��|j|��|j|��|jgd��y)Nr{r��	INF.UNDEF�
INF.ERR.UNDEF�UNDEF))r�r}r~)r�rr�)r�r�r�)r�r�r�)r�r}r�)r�rr�r�)rFr�r{r��	INF_UNDEF�
INF_ERR_UNDEFr�s       rJ�test_nested_inheritedz'BuiltinLevelsTest.test_nested_inheriteds>����������&�����W�\�\�"��$�$�Y�/��������'��%�%�k�2�	��)�)�/�:�
��!�!�'�*��	�
�
�g�&�&���,����������!�#�����q�s�����'�*�*�A�C�0����A�C� �	���������a�c�"����1�3�����A�C� ����
�	rlc�B�|j}tjd�}tjd�}tjd�}|jtj�|jtj|��|j|��|jtj|��|j|��|j|��|j|��|jgd��y)Nr{�INF.BADPARENT.UNDEF�
INF.BADPARENT))r�r}r~)r�r�r�)r�r}r�)r�r�r�)
rqrr r9r�r��FATALr�r�rk)rFr�r{�
GRANDCHILD�CHILDs     rJ�test_nested_with_virtual_parentz1BuiltinLevelsTest.test_nested_with_virtual_parent2s�����������&���&�&�'<�=�
��!�!�/�2�����W�\�\�"�	���w�}�}�a�c�*�������
�	�	�'�-�-���%�
�
�
�1�3��	������
���A�C�����
�	rlc���	|jtjd�tj�|jtjtj�d�y)Nr�)r\r�getLevelNamer�rps rJ�test_regression_22386z'BuiltinLevelsTest.test_regression_22386LsC��4�����-�-�f�5�w�|�|�D�����-�-�g�l�l�;�V�Drlc�n�tjd�}|j|tj�y)Nr�)rr�r\r�)rF�fatals  rJ�test_issue27935z!BuiltinLevelsTest.test_issue27935Qs&���$�$�W�-�������
�
�.rlc���	tjtjd�|jtjtjd�|j	tj
tj�d�|j	tj
tj�d�|j	tj
d�tj�y)Nrr��NOTSET)r�addLevelNamer��
addCleanupr\r�r�rps rJ�test_regression_29220z'BuiltinLevelsTest.test_regression_29220Us���4����W�\�\�2�.�����,�,�g�l�l�F�C�����-�-�g�l�l�;�R�@�����-�-�g�n�n�=�x�H�����-�-�h�7����HrlN)
rsrtrur�r�r�r�r�r�r�rvrlrJrxrx�s,��4�-�^�.!�F�4E�
/�Irlrxc� �eZdZ	d�Zd�Zd�Zy)�BasicFilterTestc��tjd�}|jjd}	|j	|�tj
d�}tj
d�}tj
d�}tj
d�}|j
|j��|j
|j��|j
|j��|j
|j��|jddg�|j|�y#|j|�wxYw)N�	spam.eggsr�spam�spam.eggs.fish�spam.bakedbeans�r�r�r��r�r�r�)
r�Filterr3rB�	addFilterr r�rqrk�removeFilter)rF�filter_�handlerr��	spam_eggs�spam_eggs_fish�spam_bakedbeanss       rJ�test_filterzBasicFilterTest.test_filteras
���.�.��-���"�"�+�+�A�.��	*����g�&��$�$�V�,�D��)�)�+�6�I�$�.�.�/?�@�N�%�/�/�0A�B�O��I�I�d�'�'�)�*��N�N�4�,�,�.�/����� 1� 1� 3�4�� � ��!2�!2�!4�5��!�!�*�/�#�
�

� � ��)��G� � ��)�s�C4D6�6E	c�t�d�}|jjd}	|j|�tjd�}tjd�}tjd�}tjd�}|j|j
��|j|j
��|j|j
��|j|j
��|jddg�|j|�y#|j|�wxYw)	Nc�j�|jjd�}dj|dd�}|dk(S)N�.�r�)rH�split�join)�record�parts�prefixs   rJ�
filterfuncz8BasicFilterTest.test_callable_filter.<locals>.filterfunc}s5���K�K�%�%�c�*�E��X�X�e�B�Q�i�(�F��[�(�(rlrr�r�r�r�r�r�)	r3rBr�rr r�rqrkr�)rFr�r�r�r�r�r�s       rJ�test_callable_filterz$BasicFilterTest.test_callable_filterys��	)�
�"�"�+�+�A�.��	-����j�)��$�$�V�,�D��)�)�+�6�I�$�.�.�/?�@�N�%�/�/�0A�B�O��I�I�d�'�'�)�*��N�N�4�,�,�.�/����� 1� 1� 3�4�� � ��!2�!2�!4�5��!�!�*�/�#�
�

� � ��,��G� � ��,�s�C4D$�$D7c��tj�}tjddi�}|j|j	|��y)NrHr�)rr��
makeLogRecordrE�filter)rF�f�rs   rJ�test_empty_filterz!BasicFilterTest.test_empty_filter�s7���N�N����!�!�6�;�"7�8����������$rlN)rsrtrur�r�r�rvrlrJr�r�]s��(�*�0-�:%rlr��x�w�v�u�t�s�r�q�p�orn�Silent�Taciturn�Terse�Effusive�Sociable�Verbose�	Talkative�	Garrulous�
Chatterbox�Boringc��eZdZ	d�Zy)�GarrulousFilterc�(�|jtk7S�N)�levelno�	GARRULOUS�rFr�s  rJr�zGarrulousFilter.filter�s���~�~��*�*rlN�rsrtrur�rvrlrJr�r��s
��3�+rlr�c��eZdZ	d�Zy)�VerySpecificFilterc�2�|jttfvSr�)r��SOCIABLE�TACITURNr�s  rJr�zVerySpecificFilter.filter�s���~�~�h��%9�9�9rlNr�rvrlrJr�r��s
��?�:rlr�c�<�eZdZ	dZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
�CustomLevelsAndFiltersTest�^[\w.]+ -> (\w+): (\d+)$c��tj|�tj�D]\}}t	j
||��yr�)rrK�my_logging_levels�itemsrr�)rF�k�vs   rJrKz CustomLevelsAndFiltersTest.setUp�s5�����t��%�+�+�-�D�A�q�� � ��A�&�.rlc�Z�tD]"}|j||j���$yr�)�LEVEL_RANGEr�rq)rF�logger�lvls   rJ�log_at_all_levelsz,CustomLevelsAndFiltersTest.log_at_all_levels�s#���C��J�J�s�D�-�-�/�0�rlc�l�dtjfd�}tjd�}tjd�}tj�}tj�}tj
|�}tj
|�}|j
|�|j|�|j|�|jd�|j�|j�|j|j�d�|j|j�d�y)Nr�c�>�tj|�}d|_|S)Nznew message!)r%�msg)r�s rJ�replace_messagezWCustomLevelsAndFiltersTest.test_handler_filter_replaces_record.<locals>.replace_message�s���Y�Y�v�&�F�'�F�J��Mrl�parentzparent.childzoriginal messagezoriginal message
z
new message!
)r�	LogRecordr r6r7r;r�rDr��flushr\rZ)rFrr�child�stream_1�stream_2�	handler_1�	handler_2s        rJ�#test_handler_filter_replaces_recordz>CustomLevelsAndFiltersTest.test_handler_filter_replaces_record�s���	�G�$5�$5�	��"�"�8�,���!�!�.�1���;�;�=���;�;�=���)�)�(�3�	��)�)�(�3�	����O�,����)�$�
����#�
�
�
�%�&�������������*�*�,�.B�C�����*�*�,�.>�?rlc�h��t��G�fd�dtj�}tjd�}|j	tj
�|j
|��|j
|��|jd�|jdt���y)Nc�2��eZdZdejf�fd�Zy)�WCustomLevelsAndFiltersTest.test_logging_filter_replaces_record.<locals>.RecordingFilterr�c�b���jt|��tj|�Sr�)�add�idr%)rFr��recordss  �rJr�z^CustomLevelsAndFiltersTest.test_logging_filter_replaces_record.<locals>.RecordingFilter.filters"������B�v�J�'��y�y��(�(rlN)rsrtrurrr�)rs�rJ�RecordingFilterr�s���
)�W�%6�%6�
)rlrrrr�)
�setrr�r r9r�r�r�r\r])rFrrrs   @rJ�#test_logging_filter_replaces_recordz>CustomLevelsAndFiltersTest.test_logging_filter_replaces_record�s~����%��	)�g�n�n�	)�
�"�"�8�,��������%�����*�+�����*�+����E������C��L�)rlc��|jjt�|j|j�|j	gd��y)N)�r�r��r�r��r�r��r�r��r�r��r�r�)r3r9�VERBOSErrkrps rJ�test_logger_filterz-CustomLevelsAndFiltersTest.test_logger_filter
s=�����!�!�'�*����t�/�/�0����
�	rlc��|jjdjt�	|j	|j�|jgd��|jjdjtj�y#|jjdjtj�wxYw)Nr)rrrrr )r3rBr9r�rrkrr�rps rJ�test_handler_filterz.CustomLevelsAndFiltersTest.test_handler_filters������!�!�!�$�-�-�h�7�	B��"�"�4�#3�#3�4��!�!�#�
�
���%�%�a�(�1�1�'�.�.�A��D���%�%�a�(�1�1�'�.�.�A�s�.B�8Cc�@�|jjd}d}t�}|j|�	|j	|j�gd�}|j|�t
�}|jj|�|j	|j�|j|gd�z�|r|jj|�|j|�y#|r|jj|�|j|�wxYw)Nr)	)r�r~)r�r�)r�r�rrrrrr ))r�r�)r��12)r��14)r��15)r��17)r��18)r��20)r3rBr�r�rrkr�r�)rFr��specific_filter�garr�first_liness     rJ�test_specific_filtersz0CustomLevelsAndFiltersTest.test_specific_filters+s����"�"�+�+�A�.����� �����$��!	'��"�"�4�#3�#3�4��K�
�!�!�+�.�0�2�O����&�&��7��"�"�4�#3�#3�4��!�!�+�
1
�
#
�

��� � �-�-�o�>�� � ��&���� � �-�-�o�>�� � ��&�s�BC-�-0DN)rsrtrurYrKrrrr"r$r/rvrlrJr�r��s2��J�3��'�
1�@�8*�"�B� ('rlr�c�`�tj|i|��\}}tj|�|Sr�)�tempfile�mkstemp�osrM)�args�kwargs�fd�fns    rJ�make_temp_filer8Vs+��
�
�
�t�
.�v�
.�F�B���H�H�R�L�
�Irlc�f�eZdZd�Zd�Zd�Zejejdk(d�eje
jd�ej�e
jd�d�����Ze
j �ej�eed	�����Zy
)�HandlerTestc��tj�}d|_|j|jd�d|_|j|jd�|j	t
|jd�y)N�generic�anothergeneric)r�HandlerrHr\�assertRaises�NotImplementedError�emit�rFrTs  rJ�	test_namezHandlerTest.test_name]s\���O�O�������������+�!���������!1�2����-�q�v�v�t�<rlc���tjdv�rdD�]�}t�}|stj|�t
jj|dd��}|r�|j|j}}|j|d�|j|d�tjddi�}|j|�tj|�|jtjj|��|j|�|j!tjj|��n8|j|jd�|j|jd�|j#�|s��|tj|����tjd	k(rd
}nd}	t
jj%|�}|j|j&|j(�|j!|j*�|j#�dD]j}|d
k(r2|j/t0t
jj2dd|��:t
jj3dd|�}|j#��lt
jj5d�}tji�}|j!|j7|��|j#�t
jj5d�}|j|j7|��|j#�y#t,$rY��/wxYw)N��linux�darwin)TF�utf-8T��encoding�delay���r�TestrGz/var/run/syslogz/dev/log)�GET�POST�PUTrP�	localhostz/logrrn)�sys�platformr8r3�unlinkrrB�WatchedFileHandler�dev�inor\r��handle�assertFalse�path�existsrErM�
SysLogHandler�facility�LOG_USER�
unixsocket�OSErrorr?�
ValueError�HTTPHandler�BufferingHandler�shouldFlush)	rF�existingr7rTrVrWr��sockname�methods	         rJ�test_builtin_handlersz!HandlerTest.test_builtin_handlerses|���<�<�.�.�)��#�%����I�I�b�M��$�$�7�7��W�TX�7�Y��� �u�u�a�e�e��C��$�$�S�"�-��$�$�S�"�-��-�-�u�f�o�>�A��H�H�Q�K��I�I�b�M��$�$�R�W�W�^�^�B�%7�8��H�H�Q�K��O�O�B�G�G�N�N�2�$6�7��$�$�Q�U�U�B�/��$�$�Q�U�U�B�/����	���I�I�b�M�-*�.�|�|�x�'�,��%��
��$�$�2�2�8�<��� � ����Q�Z�Z�8�������-����	�-�F�����!�!�*�g�.>�.>�.J�.J�"-�v�v�?��$�$�0�0��f�f�M�����	�
-�
���-�-�a�0���!�!�"�%������
�
�a�(�)�	���	����-�-�a�0��������q�)�*�	���	���
��
�s�A0M�	M#�"M#c�>�	t�}tj|�tj|�}t
j|dfft
jj|dfft
jj|dfff}tjdvr"|t
jj|dfffz
}|D]`\}}||ddi�}|jtjj|��|j!�tj|��by)N�w�arTrErJrH)r8r3rTr�FakePathr�FileHandlerrB�RotatingFileHandler�TimedRotatingFileHandlerrRrSrUrErZr[rM)rFr7�pfn�cases�clsr4rTs       rJ�test_pathlike_objectsz!HandlerTest.test_pathlike_objects�s���	�
�
��
�	�	�"�
�� � ��$���(�(�3��*�5��%�%�9�9�C��:�F��%�%�>�>��c�
�K���
�<�<�.�.��w�'�'�:�:�S�#�J�G�I�I�E��I�C���T�,�G�,�A��O�O�B�G�G�N�N�2�.�/�
�G�G�I��I�I�b�M�	rl�ntz/WatchedFileHandler not appropriate for Windows.z'Emscripten cannot fstat unlinked files.�walltimec	�����fd�}d}d}d�_d�_dD�]F}tdd�}tj|||f��}d|_|j
�tjj|d|�	�}tjd
�}|j|�	t|�D]Y}	tjd�tjdd
i�}
	tj��_|j!|
��[	|j'�|j)�t*j,j/|�s��2t+j0|���Iy#t"$r't%d�j�d�j����wxYw#|j'�|j)�t*j,j/|�rt+j0|�wwxYw)Nc���t|�D]]}	tj|�tj��_tjdtjdd�z��_y#t
$rY�:wxYw)Ng����Mbp?r�)	�ranger3rT�time�
deletion_timer`�sleep�random�randint)�fname�tries�_rFs   �rJ�remove_loopz*HandlerTest.test_race.<locals>.remove_loop�sb����5�\����I�I�e�$�)-����D�&��
�
�5�6�>�>�!�Q�#7�7�8�
"������s�.A.�.	A:�9A:i��FT�.logztest_logging-3-��targetr4TrHrIz'%(asctime)s: %(levelname)s: %(message)s�{�G�zt?r�testingzDeleted at z, opened at )�handle_timer{r8�	threading�Thread�daemon�startrrBrUr=r@ryrzr|r�rX�	Exception�printr�rMr3rZr[rT)rFr��	del_count�	log_countrKr7�removerrTr�r�r�s`          rJ�	test_racezHandlerTest.test_race�s����	9��	��	����!���"�E���(9�:�B��&�&�k��Y��P�G�!�G�N��M�M�O�� � �3�3�B��PU�3�V�A��!�!�"K�L�A�
�N�N�1��
"��y�)�A��J�J�u�%��-�-�u�i�.A�B�A��+/�9�9�;��(������*��������	��7�7�>�>�"�%��I�I�b�M�1#��%���04�0B�0B�04�0@�0@�B�C��	���������	��7�7�>�>�"�%��I�I�b�M�&�s%�$:F�*E&�	F�&0F�F�AG0c�J����	Gd�dtj�}|jttj�d�|��|j�jjj�d�_	|jttj�d�|jttj�d�tjd�}|j��|jtj�t!j"��t!j"�����fd�}t!j$|d�	�}|j'��j)�t+j,�}|dk(r(	|j/d
�t+j0d�y|j/d��j3�|j5�t7j8|d��y#t+j0d�wxYw)
Nc�$��eZdZ�fd�Zd�Z�xZS)�AHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandlerc�p��t�|��tjt	ddd����|_y)Nz	/dev/null�wtrH�rJ�r8)�super�__init__rr;�open�sub_handler�rF�	__class__s �rJr�zJHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.__init__�s.����� �"�#*�#8�#8���T�G�D�$F�� rlc���|jj�	|jj|�|jj�y#|jj�wxYwr�)r��acquirerA�releaser�s  rJrAzFHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.emit�sR��� � �(�(�*�/��$�$�)�)�&�1��$�$�,�,�.��D�$�$�,�,�.�s�A�A.�rsrtrur�rA�
__classcell__�r�s@rJ�_OurHandlerr��s���
F�

/rlr�rz*because we need at least one for this testrn� test_post_fork_child_no_deadlockc�:��tj�	�j�	�j��j	d��j�	tj�y#�j�wxYw#tj�wxYw)N��?)rr#r�r�waitr�r0)�+fork_happened__release_locks_and_end_thread�locks_held__ready_to_fork�refed_hs���rJ�lock_holder_thread_fnzKHandlerTest.test_post_fork_child_no_deadlock.<locals>.lock_holder_thread_fnsq���� � �"�
'����!�&�-�1�1�3�@�D�D�S�I��O�O�%��$�$�&���O�O�%���$�$�&�s"�B�!A/�	B�/B�B�Bz,test_post_fork_child_no_deadlock lock holder)r�rHz#Child process did not deadlock. \o/z&Parent process returned from fork. \o/)�exitcode)rr>r\r]r$r�r�r8rMrH�
assertGreater�_at_fork_reinit_lock_weaksetr rDr9r:r��Eventr�r�r�r3�forkr��_exitrr�r�wait_process)	rFr��test_loggerr��lock_holder_thread�pidr�r�r�s	      @@@rJr�z,HandlerTest.test_post_fork_child_no_deadlock�s����
	M�	/�'�/�/�	/�	
����W�.�.�/��3��-������+�+�2�2�8�8�9�C������3�w�0�0�1�1�5����3�w�C�C�D�a�H��'�'�(J�K�����w�'����W�]�]�+�$-�O�O�$5�!�6?�o�o�6G�3�	'�2'�-�-�,�C�E��	� � �"�!�&�&�(��g�g�i���!�8�
�� � �!G�H������
���F�G�7�;�;�=��#�#�%�� � ��q�1�������s�H�H"N)rsrtrurCrhrs�unittest�skipIfr3rHr�
is_emscriptenr	�requires_working_threading�requires_resourcer��
requires_fork�skip_if_asan_fork�skip_if_tsan_forkr�rvrlrJr:r:\s���=�3�j�,�X�_�_�R�W�W��_�&W�X��X�_�_����H��1��0�0�2��W���z�*�)"�+�3��Y�)"�^�W����0��0�0�2���H2���3��H2rlr:c��eZdZd�Zy)�	BadStreamc��td��)N�deliberate mistake)�RuntimeError)rF�datas  rJ�writezBadStream.write5s���/�0�0rlN)rsrtrur�rvrlrJr�r�4s��1rlr�c��eZdZd�Zy)�TestStreamHandlerc��||_yr�)�error_recordr�s  rJ�handleErrorzTestStreamHandler.handleError9s
��"��rlN)rsrtrur�rvrlrJr�r�8s��#rlr�c�(�eZdZejZdZy)�StreamWithIntNamer�N)rsrtrurr��levelrHrvrlrJr�r�<s���N�N�E��Drlr�c��eZdZd�Zd�Zd�Zy)�StreamHandlerTestc���tt��}tji�}tj}	|j|�|j
|j|�tjt��}tj�5}|j|�d}|j||j��ddd�dt_tj�5}|j|�|jd|j��ddd�|t_y#1swY�nxYw#1swY�!xYw#|t_wxYw)Nz"
RuntimeError: deliberate mistake
Fr)r�r�rr��raiseExceptionsrX�assertIsr�r;r�captured_stderr�assertInrZr\)rFrTr��	old_raise�stderrrs      rJ�test_error_handlingz%StreamHandlerTest.test_error_handlingAs����i�k�*���!�!�"�%���+�+�	�	0�
�H�H�Q�K��M�M�!�.�.�!�,��%�%�i�k�2�A��(�(�*�f������<���
�
�c�6�?�?�#4�5�+�
',�G�#��(�(�*�f������� � ��V�_�_�%6�7�+�'0�G�#�+�*��+�*��'0�G�#�s<�AE�4D9�'E�32E�%E�9E�>E�E�
E�
Ec�B�	tj�}tj�}|j	|�}|j|tj�|j	|�}|j||�|j	|�}|j|�yr�)	rr;r6r7�	setStreamr�rRr��assertIsNone)rFrTr8�oldrgs     rJ�test_stream_settingz%StreamHandlerTest.test_stream_settingWsz��	�
�!�!�#��������k�k�&�!���
�
�c�3�:�:�&����S�!���
�
�f�f�%����S�!�����&�!rlc�t�tjt��}|jt	|�d�y)Nz<StreamHandler 2 (NOTSET)>)rr;r�r\�reprrBs  rJ�'test_can_represent_stream_with_int_namez9StreamHandlerTest.test_can_represent_stream_with_int_namees+���!�!�"3�"5�6������a��">�?rlN)rsrtrur�r�r�rvrlrJr�r�@s��0�,"�@rlr�c�,�eZdZ	d�Zd�Zd�Zd�Zd�Zy)�TestSMTPServerc���tjj||d|d��|jj	�d|_||_d|_d|_||_	y)NT)�map�decode_datarnF)
r�
SMTPServerr��socket�getsockname�port�_handler�_thread�_quit�
poll_interval)rF�addrr�r��sockmaps     rJr�zTestSMTPServer.__init__�s\��
���!�!�$��d��.2�	"�	4��K�K�+�+�-�a�0��	���
������
�*��rlc�.�	|j||||�yr�)r�)rF�peer�mailfrom�rcpttosr�s     rJ�process_messagezTestSMTPServer.process_message�s��	�	
�
�
�d�H�g�t�4rlc��	tj|j|jf��x|_}d|_|j
�y�Nr�T�r�r��
serve_foreverr�r�r�r��rF�ts  rJr�zTestSMTPServer.start��H��	�%�+�+�4�3E�3E�26�2D�2D�1F�H�	H���q����	���	rlc�~�	|js0tj||jd��|js�/yy)Nrn)r��count)r�r�loop�_map)rFr�s  rJr�zTestSMTPServer.serve_forever�s-��	��*�*��M�M�-�T�Y�Y�a�@��*�*rlc���	d|_tj|j�d|_|j	�tj|jd��y)NT)r��
ignore_all)r�r	�join_threadr�rMr�	close_allrrps rJ�stopzTestSMTPServer.stop�sF��	���
��$�$�T�\�\�2�����
�
�����t�y�y�T�:rlN)rsrtrur�r�r�r�rrvrlrJr�r�ls!���(+�
5��	A�	;rlr�c�2��eZdZ	d�Zd�Z�fd�Zd�Z�xZS)�ControlMixinc�`�d|_||_||_tj�|_yr�)r�r�r�r�r��ready)rFr�r�s   rJr�zControlMixin.__init__�s&�����*�����
��_�_�&��
rlc��	tj|j|jf��x|_}d|_|j
�yr�r�r�s  rJr�zControlMixin.start�r�rlc�b��	|jj�tt|�|�yr�)r
rr�rr�)rFr�r�s  �rJr�zControlMixin.serve_forever�s'���	�	
�
�
����
�l�D�/�
�>rlc���	|j�|j�&tj|j�d|_|j	�|j
j
�yr�)�shutdownr�r	r�server_closer
rOrps rJrzControlMixin.stop�sQ��	�	
�
�
���<�<�#��(�(����6��D�L������
�
���rl)rsrtrur�r�r�rr�r�s@rJrr�s����'��?�	rlrc� �eZdZ			dd�Zd�Zy)�TestHTTPServerNc����G��fd�dt��tj||��tj|||�||_y)Nc�2���eZdZdd�Zd�Z���fd�Z�xZS)�=TestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandlerc�R�|jd�r|jSt|��)N�do_)�
startswith�process_request�AttributeError)rFrH�defaults   rJ�__getattr__zITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.__getattr__�s%���?�?�5�)��/�/�/�$�T�*�*rlc�:�|jj|�yr���serverr�rps rJrzMTestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.process_request�������$�$�T�*rlc�,���rt�|�|g|���yyr�)r��log_message)rF�formatr4�DelegatingHTTPRequestHandlerr�r�s   ���rJr!zITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.log_message�s)�����6��,�,2�;�59�;�rlr�)rsrtrurrr!r�)r�r#r�s@��rJr#r�s���
+�

+�
;�
;rlr#)rrr�r�sslctx)rFr�r�r�r�r$r#s    ` @rJr�zTestHTTPServer.__init__�s>���	;�+A�	;�	���D�$�(D�E����d�G�]�;���rlc��	|jj�\}}|jr|jj|d��}||fS#t$r(}t
jjd|z��d}~wwxYw)NT)�server_sidezGot an error:
%s
)r��acceptr$�wrap_socketr`rRr�r�)rF�sockr��es    rJ�get_requestzTestHTTPServer.get_requestsv��	����+�+�-�J�D�$��{�{��{�{�.�.�t��.�F��
�T�z���	�	��J�J���2�Q�6�7���	�s�AA�	A=�#A8�8A=)r�FN)rsrtrur�r+rvrlrJrr�s��	�58�#'��&	rlrc�0��eZdZ	dZ		dd�Z�fd�Z�xZS)�
TestTCPServerTc��Gd�dt�}tj||||�tj|||�y)Nc��eZdZd�Zy)�;TestTCPServer.__init__.<locals>.DelegatingTCPRequestHandlerc�:�|jj|�yr�rrps rJrXzBTestTCPServer.__init__.<locals>.DelegatingTCPRequestHandler.handle&rrlN)rsrtrurXrvrlrJ�DelegatingTCPRequestHandlerr0$s��
+rlr2)rrr�r)rFr�r�r��bind_and_activater2s      rJr�zTestTCPServer.__init__"s;��	+�*>�	+�	�#�#�D�$�0K�$5�	7����d�G�]�;rlc�n��tt|��|jj	�d|_y�Nrn)r�r-�server_bindr�r�r�r�s �rJr6zTestTCPServer.server_bind,�)���
�m�T�.�0��K�K�+�+�-�a�0��	rl�r�T)rsrtru�allow_reuse_addressr�r6r�r�s@rJr-r-s%������47�#'�<�1�1rlr-c�6��eZdZ			dd�Z�fd�Z�fd�Z�xZS)�
TestUDPServerc���G�fd�dt��tj||�|�tj|||�d|_y)Nc�(���eZdZd�Z��fd�Z�xZS)�;TestUDPServer.__init__.<locals>.DelegatingUDPRequestHandlerc�:�|jj|�yr�rrps rJrXzBTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.handleErrlc���|jj�}|r	t�|��yy#t$r|j
js�YywxYwr�)�wfilerZr��finishr`r�_closed)rFr��DelegatingUDPRequestHandlerr�s  ��rJrBzBTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.finishHsV����z�z�*�*�,���"��9�4�G�I���#�"�#�{�{�2�2�!� 3�"�s�/� A�A)rsrtrurXrBr�)r�rDs@�rJrDr>Cs���
+�
"�
"rlrDF)rrr�rrC)rFr�r�r�r3rDs     @rJr�zTestUDPServer.__init__AsE���	"�*@�	"�	�#�#�D�$�$?�$5�	7�	���d�G�]�;���rlc�n��tt|��|jj	�d|_yr5)r�r;r6r�r�r�r�s �rJr6zTestUDPServer.server_bindWr7rlc�8��tt|��d|_y)NT)r�r;rrCr�s �rJrzTestUDPServer.server_close[s���
�m�T�/�1���rlr8)rsrtrur�r6rr�r�s@rJr;r;0s$���� 58�#'��,1��rlr;�AF_UNIXc�$�eZdZejZy)�TestUnixStreamServerN�rsrtrur�rG�address_familyrvrlrJrIrI`������rlrIc�$�eZdZejZy)�TestUnixDatagramServerNrJrvrlrJrNrNcrLrlrNc�0�eZdZejZd�Zd�Zy)�SMTPHandlerTestc���i}ttjdf|jd|�}|j	�tj|j
f}tjj|ddd|j��}|j|jdg�g|_t
jddi�}tj�|_|j#|�|j j%|j�|j'�|j)|j j+��|jt-|j�d	�|jd\}}}}	|j|d�|j|dg�|j/d
|	�|j)|	j1d��|j3�y)Nr���MbP?�me�you�Log��timeoutru	Hello ✓rnz
Subject: Log
u

Hello ✓)r�r�HOSTr�r�r�rrB�SMTPHandler�TIMEOUTr\�toaddrs�messagesr�r�r��handledrXr�rrE�is_setr]r��endswithrM)
rFr�rr�rTr�r�r�r�r�s
          rJ�
test_basiczSMTPHandlerTest.test_basicnsu������!3�!3�Q� 7��9M�9M�u� '�)�������"�"�F�K�K�0�����(�(��t�U�E�15���
)�
?��������U�G�,���
��!�!�5�.�"9�:�� ���(���	����������$�,�,�'����
�������+�+�-�.�����T�]�]�+�Q�/�(,�
�
�a�(8�%��h�������4�(�����5�'�*��
�
�(�$�/�����
�
�&8�9�:�	���	rlc�n�|jj|�|jj�yr�)r\�appendr]r)rFr4s  rJr�zSMTPHandlerTest.process_message�s$���
�
���T�"������rlN)rsrtrur�LONG_TIMEOUTrZr`r�rvrlrJrPrPhs���"�"�G��0rlrPc�^�eZdZ	dZd�Zd�Zd�Zd�Zd�Ze	j�d��Zy)	�MemoryHandlerTestr�c�J�tj|�tjj	dtj
|j�|_tjd�|_	d|j_
|jj|j�y)N�
�memr)rrKrrB�
MemoryHandlerr�r<�mem_hdlrr �
mem_logger�	propagaterDrps rJrKzMemoryHandlerTest.setUp�sj�����t���(�(�6�6�r�7�?�?�7;�~�~�G��
�!�+�+�E�2���$%����!����"�"�4�=�=�1rlc�b�|jj�tj|�yr�)rjrMrrUrps rJrUzMemoryHandlerTest.tearDown�� ���
�
�������$�rlc	�R�|jj|j��|jg�|jj	|j��|jg�|jj|j��gd�}|j|�dD]�}t
d�D]+}|jj|j���-|j|�|jj|j��|t
||dz�D�cgc]}dt|�f��c}z}|j|���|jj|j��|j|�ycc}w)N)�r:r~�r�r�)r�r�)rx��	rgr:)rkr�rqrkr�r�ry�str)rF�lines�n�is    rJ�
test_flushzMemoryHandlerTest.test_flush�sT��	
�����d�/�/�1�2����b�!������T�.�.�0�1����b�!������� 1� 1� 3�4�
��
	
���e�$��A��1�X�����%�%�d�&7�&7�&9�:���!�!�%�(�
�O�O�!�!�$�"3�"3�"5�6���a��R��8H�I�8H�1�g�s�1�v�.�8H�I�I�E��!�!�%�(��	
�����d�/�/�1�2����e�$��	Js�=F$c���	|jj|j��|jg�|jj	|j��|jg�|jj|j�|jj�ddg}|j|�tjjdtj|jd�|_|jj|j�|jj|j��|j|�|jj	|j��|j|�|jj|j�|jj�|j|�y)NrprqrgF)rkr�rqrkr�rNrjrMrrBrir�r<rD�rFrus  rJ�test_flush_on_closez%MemoryHandlerTest.test_flush_on_close�sf��	�	
�����d�/�/�1�2����b�!������T�.�.�0�1����b�!����%�%�d�m�m�4��
�
������
��	
���e�$��(�(�6�6�r�7�?�?�7;�~�~�7<�>��
�	
���"�"�4�=�=�1������d�/�/�1�2����e�$������T�.�.�0�1����e�$����%�%�d�m�m�4��
�
�������e�$rlc���	|jj|j��|jg�|jj	|j��|jg�tjt
jj|j�g��ddg}|j|�t
jjdt
j|jd�|_	|jj|j�|jj|j��|j|�|jj	|j��|j|�tjt
jj|j�g��|j|�y)N��handlerListrprqrgF)rkr�rqrkr�rr�weakref�refrjrBrir�r<rDrzs  rJ�test_shutdown_flush_on_closez.MemoryHandlerTest.test_shutdown_flush_on_close�sb��	�	
�����d�/�/�1�2����b�!������T�.�.�0�1����b�!����g�o�o�&9�&9�$�-�-�&H�%I�J���
��	
���e�$��(�(�6�6�r�7�?�?�7;�~�~�7<�>��
�	
���"�"�4�=�=�1������d�/�/�1�2����e�$������T�.�.�0�1����e�$����g�o�o�&9�&9�$�-�-�&H�%I�J����e�$rlc���Gd�d�}||j�}	|jj|�td�D]M}tjd�|j
j
d�|j
jd��O	|jD]}tj|��y#|jD]}tj|��wxYw)Nc��eZdZd�Zd�Zd�Zy)�ZMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandlerc� �||_g|_yr�)rj�threads)rFrjs  rJr�zcMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.__init__�s�� (��
�!��rlc�:�|jjd�yr�)rj�	setTargetrps rJ�removeTargetzgMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.removeTarget�s���
�
�'�'��-rlc��tj|j��}|jj	|�|j�y)N)r�)r�r�r�r�rbr�)rFrrs   rJrXzaMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.handle�s3��"�)�)��1B�1B�C�����#�#�F�+����rlN)rsrtrur�r�rXrvrlrJ�MockRaceConditionHandlerr��s��
"�
.�
rlr�rgr�znot flushed�flushed)rjr�ryrzr|rkr�r�r�r	r)rFr�r�r�rs     rJ�&test_race_between_set_target_and_flushz8MemoryHandlerTest.test_race_between_set_target_and_flush�s���	�	�*�$�-�-�8��		5��M�M�#�#�F�+��2�Y���
�
�5�!����$�$�]�3����'�'�	�2��
!�.�.�� �,�,�V�4�)��&�.�.�� �,�,�V�4�)�s�A6B<�<(C$N)rsrtrurYrKrUrxr{r�r	r�r�rvrlrJrere�sF��&�3��2� �%�8%�<%�:1��0�0�2�5�3�5rlrec��eZdZ	d�Zy)�ExceptionFormatterc�&�d|djzS)Nz
Got a [%s]r)rs)rF�eis  rJ�formatExceptionz"ExceptionFormatter.formatExceptions���b��e�n�n�,�,rlN)rsrtrur�rvrlrJr�r�s
��(�-rlr�c�N�|j�tj|�yr��rMr3�remove)rTr7s  rJ�closeFileHandlerr�s���G�G�I��I�I�b�Mrlc�6�eZdZ	ejZdZdZdZdZejdd�Z
ejdd�Zd	ezd
zZejdd�Z
d
ZdZdZdZdZd�Zd�Zd�Zefd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d �Z!d!�Z"d"�Z#d#�Z$y$)%�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"}}
    ap
    [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=%(message)s ++ %(customfield)s
    defaults={"customfield": "defaultvalue"}
    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	j
j|fddi|��y)NrJrH)r6r7�textwrap�dedentr�config�
fileConfig)rF�confr5�files    rJ�apply_configzConfigFileTest.apply_config3s5���{�{�8�?�?�4�0�1�����!�!�$�C��C�F�Crlc�z�tj�5}|j|j�t	j
�}|j
|j��|j|j��|jdg|��|jg�ddd�y#1swYyxYw�N�rr�r�)
r�captured_stdoutr��config0rr r�rqr�rk�rF�outputrs   rJ�test_config0_okzConfigFileTest.test_config0_ok7s���
�
$�
$�
&�&����d�l�l�+��&�&�(�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!��#��
"�
�
�!�!�"�%�'�
&�
&�s�BB1�1B:c�0�tj�5}tjt	j
|j��}tj�}|j|�tjj|�tj�}|j|j��|j!|j��|j#dg|��|j#g�ddd�y#1swYyxYwr�)rr�r6r7r�r�r��configparser�ConfigParser�	read_filerr�r�r r�rqr�rk)rFr�r��cprs     rJ�test_config0_using_cp_okz'ConfigFileTest.test_config0_using_cp_okFs���
�
$�
$�
&�&��;�;�x���t�|�|�<�=�D��*�*�,�B��L�L����N�N�%�%�b�)��&�&�(�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!��#��
"�
�
�!�!�"�%�'�
&�
&�s�C.D�Dc�j�tj�5}|j|�tjd�}|j|j
��|j|j
��|jddg|��|jg�ddd�y#1swYyxYw�N�compiler.parser�r�r~r�r��	rr�r�rr r�rqr�rk�rFr�r�rs    rJ�test_config1_okzConfigFileTest.test_config1_okX���
�
$�
$�
&�&����f�%��&�&�'8�9�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!���#��
"�
�

�!�!�"�%�'�
&�
&���BB)�)B2c�Z�|jt|j|j�yr��r?r�r��config2rps rJ�test_config2_failurez#ConfigFileTest.test_config2_failureg������)�T�%6�%6����Erlc�Z�|jt|j|j�yr��r?r�r��config3rps rJ�test_config3_failurez#ConfigFileTest.test_config3_failurekr�rlc��tj�5}|j|j�t	j
�}	t
��#t$rt	jd�YnwxYwtjjd�|j|j�d�|jg�ddd�y#1swYyxYw�N�just testingr�-ERROR:root:just testing
Got a [RuntimeError]
)rr�r��config4rr r��	exceptionrR�stdout�seekr\rZrkr�s   rJ�test_config4_okzConfigFileTest.test_config4_okos���
�
$�
$�
&�&����d�l�l�+��&�&�(�F�
2�"�n�$���
2��!�!�.�1�
2���J�J�O�O�A�����V�_�_�.�A�
C�
�!�!�"�%�'�
&�
&�s*�0C
�
A�A1�.C
�0A1�1AC
�
Cc�<�|j|j��y�N�r�)r��config5rps rJ�test_config5_okzConfigFileTest.test_config5_ok~������D�L�L��1rlc�<�|j|j��yr�)r��config6rps rJ�test_config6_okzConfigFileTest.test_config6_ok�r�rlc�|�tj�5}|j|j�t	j
d�}t	j
d�}|j
|j��|j|j��|j|j��|jgd�|��|jg�ddd�tj�5}|j|j�t	j
d�}|j|j�|j
|j��|j|j��t	j
d�}|j
|j��|j|j��j|j��|jgd�|��|jg�ddd�y#1swY��IxYw#1swYyxYw)Nr��compiler-hyphenated�r�r�)r}r�r��compiler.lexer�)r�r�)rr�)r�r�)rr�)rr�r��config1arr r�rqr��criticalrk�config7rYr�rFr�r�
hyphenateds    rJ�test_config7_okzConfigFileTest.test_config7_ok�s���
�
$�
$�
&�&����d�m�m�,��&�&�'8�9�F�!�*�*�+@�A�J��K�K��)�)�+�,��L�L��*�*�,�-����� 1� 1� 3�4��!�!�#��	
"�
�
�!�!�"�%�''�(�
$�
$�
&�&����d�l�l�+��&�&�'8�9�F����V�_�_�-��K�K��)�)�+�,��L�L��*�*�,�-��&�&�'7�8�F��K�K��)�)�+�,��L�L��*�*�,�-����� 1� 1� 3�4��!�!�#�
�
"�
�
�!�!�"�%�)'�
&�)'�
&��('�
&�s�C	H%�:D"H2�%H/�2H;c��|j�5tdd�}tjdk(r|j	dd�}|j
j
|��}|j|�|j|�ddd�tjjd}|jt|�y#1swY�>xYw)Nr��test_logging-X-rt�\z\\)r1r)
�check_no_resource_warningr8r3rH�replace�config8r"r�r�rootrBr�r�)rFr7r�r�s    rJ�test_config8_okzConfigFileTest.test_config8_ok�s���
�
+�
+�
-���(9�:�B��w�w�$���Z�Z��f�-���l�l�)�)�2�)�6�G����g�&����g�&�.��,�,�'�'��*�����(�'�2�6�.�
-�s�A0B>�>Cc�j�|j|j�tjjdj
}|j
tjddi��}|j|d�|j
tjddd���}|j|d�y)Nrr�testztest ++ defaultvalue�customvalue�r�customfieldztest ++ customvalue)	r��config9rr�rB�	formatterr"r�r\)rFr��results   rJ�test_config9_okzConfigFileTest.test_config9_ok�s������$�,�,�'��L�L�)�)�!�,�6�6�	��!�!�'�"7�"7����"H�I������!7�8��!�!�'�"7�"7��=�9�#;�<������!6�7rlc�v�|j|j�tjd�}|j	|j
�|j|j�|j
|j
�|j|jd��|j	|j
�y)N�some_pristine_loggerF)�disable_existing_loggers)r��disable_testrr rYrrE�rFrs  rJ�test_logger_disablingz$ConfigFileTest.test_logger_disabling�s������$�+�+�,��"�"�#9�:��������)����$�+�+�,�������(����$�+�+�e��L�������)rlc��d}|j|�|jtj�jdj
d�y)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)r�r\rr rBrH)rF�test_configs  rJ�test_config_set_handler_namesz,ConfigFileTest.test_config_set_handler_names�sC����(	
���+�&�����*�*�,�5�5�a�8�=�=�w�Grlc��d}tjtj|��}|j	t
tjj|�y)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
            )	r6r7r�r�r?r�rr�r�)rFr�r�s   rJ�'test_exception_if_confg_file_is_invalidz6ConfigFileTest.test_exception_if_confg_file_is_invalid�s>����.�{�{�8�?�?�;�7�8�����,����(A�(A�4�Hrlc���tjdd��\}}tj|�|j	t
tjj|�tj|�y)N�test_empty_�.ini�r��suffix)
r1r2r3rMr?r�rr�r�r�)rFr6r7s   rJ�%test_exception_if_confg_file_is_emptyz4ConfigFileTest.test_exception_if_confg_file_is_emptysJ���!�!��v�F���B�
��������,����(A�(A�2�F�
�	�	�"�
rlc�b�|jttjjd�y)N�filenotfound)r?�FileNotFoundErrorrr�r�rps rJ�,test_exception_if_config_file_does_not_existz;ConfigFileTest.test_exception_if_config_file_does_not_exist
s�����+�W�^�^�-F�-F��Wrlc
��	tjd�j�}tjdd��\}}	tj||jd��tj|�tjj|dtddd	d
ddd
�i����tj|�y#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��asciirHrnFr<z5%(asctime)s [%(process)d] [%(levelname)s] %(message)sz[%Y-%m-%d %H:%M:%S %z]zlogging.Formatter)r"�datefmt�class)�versionr��
formatters)rJ�defaults)r�r��stripr1r2r3r��encoderMrr�r��dictrT)rF�inir6r7s    rJ�!test_defaults_do_no_interpolationz0ConfigFileTest.test_defaults_do_no_interpolations���<��o�o���&���'	�(�!�!���H���B�	��H�H�R����G�,�-��H�H�R�L��N�N�%�%�� ���-2�!�&]�'?�%8�$� �
�
&�
� 
�I�I�b�M��B�I�I�b�M�s
�A.C�CN)%rsrtrur
r�rYr��config1r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrvrlrJr�r�s��?� /� I� I��,���G�4�G�@�H�@�o�o�l�L�9�G��o�o�/�1L�M�G��*�+�*�+�G�6�o�o�3�5R�S�G�'�G�T#�G�L�G�,�G�2�L�*D�
&�&�$&-�
&�F�F�
&�2�2�)&�V7�$8�*�H�0I�6�X�*rlr�c�4�eZdZ	eZdZd�Zd�Zd�Zd�Z	d�Z
y)�SocketHandlerTest�rQrc��	tj|�dx|_x|_|_	|j|j|jd�x|_}|j�|jj�tjj}t|j t"�r|d|j$�|_n||j d�|_d|_|j(j+|j(jd�|j(j-|j�t/j0d�|_y#t$r}||_Yd}~yd}~wwxYw�N�{�G�z�?rQrr)rrKr�	sock_hdlr�server_exception�server_class�address�
handle_socketr�r`r
r�rrB�
SocketHandler�
isinstance�server_addressrar��
log_outputr3rNrDr��	Semaphorer]�rFrr*�hclss    rJrKzSocketHandlerTest.setUpFs/��	7����t��?C�C���C�d�n�t�'<�	�#'�#4�#4�T�\�\�59�5G�5G��$O�
O�D�K�&��L�L�N�	���������-�-���f�+�+�U�3�!�+�v�{�{�;�D�N�!�&�"7�"7��>�D�N�������&�&�t�'7�'7�'@�'@��'C�D����#�#�D�N�N�3� �*�*�1�-�����	�$%�D�!���	�s�>E#�#	E=�,E8�8E=c�H�		|jr?|jj|j�|jj�|jr|jj�tj|�y#tj|�wxYwr�)rr3rNrMrrrrUrps rJrUzSocketHandlerTest.tearDown`sm��&�	$��~�~�� � �.�.�t�~�~�>����$�$�&��{�{���� � �"����d�#��H���d�#���A1B
�
B!c��|j}	|jd�}t|�dkrytjd|�d}|j|�}t|�|kr/||j|t|�z
�z}t|�|kr�/tj|�}tj|�}|xj|jdzz
c_	|jj���)Nrx�>Lr�
)
�
connection�recvr]�struct�unpack�pickle�loadsrr�r"rr]r�)rF�request�conn�chunk�slen�objr�s       rJrzSocketHandlerTest.handle_socketks����!�!����I�I�a�L�E��5�z�A�~���=�=��u�-�a�0�D��I�I�d�O�E��e�*�t�#���	�	�$��U��*;� <�<���e�*�t�#��,�,�u�%�C��*�*�3�/�F��O�O�v�z�z�D�0�0�O��L�L� � �"�rlc�`�|jr|j|j�tjd�}|j	d�|j
j
�|jd�|j
j
�|j|jd�y)N�tcpr��eggs�
spam
eggs
)
r�skipTestrr r�r]r�r�r\r"r�s  rJ�test_outputzSocketHandlerTest.test_outputzsy��� � ��M�M�$�/�/�0��"�"�5�)�����V�����������V��������������.�9rlc�R�|jr|j|j�d|j_|jj�	t
d��#t$r|jjd�YnwxYw|jjd�tj�}|j|jj|�tj|jj|z
dz�|jjd�y)Ng@zDeliberate mistakez
Never sentzNever sent, eitherrRzNor this)rr:r�
retryStartrrr�r3r�r�rzr��	retryTimer|)rF�nows  rJ�
test_noserverzSocketHandlerTest.test_noserver�s���� � ��M�M�$�/�/�0�%(����!�������	5��3�4�4���	5����&�&�|�4�	5�������3�4��i�i�k�����4�>�>�3�3�S�9��
�
�4�>�>�+�+�c�1�E�9�:������z�*s�A�$B�BN)rsrtrur-rrrKrUrr;r@rvrlrJrr=s*��*� �L��G�.�4	$�
#�	:�+rlrzUnix sockets requiredc�*�eZdZ	eed�reZd�Zy)�UnixSocketHandlerTestrGc��tj�|_|jtj
|j�tj|�yr�)r�create_unix_domain_namerr�rrTrrKrps rJrKzUnixSocketHandlerTest.setUp��8��$�<�<�>������	�(�(�$�,�,�7�����%rlN)rsrtru�hasattrr�rIrrKrvrlrJrBrB�s��4��v�y�!�+��&rlrBc�.�eZdZ	eZdZd�Zd�Zd�Zd�Z	y)�DatagramHandlerTestrc��	tj|�dx|_x|_|_	|j|j|jd�x|_}|j�|jj�tjj}t|j t"�r|d|j$�|_n||j d�|_d|_|j(j+|j(jd�|j(j-|j�t/j0�|_y#t$r}||_Yd}~yd}~wwxYwr)rrKrrrrr�handle_datagramr�r`r
r�rrB�DatagramHandlerr r!rar�r"r3rNrDr�r�r]r$s    rJrKzDatagramHandlerTest.setUp�s+��	7����t��?C�C���C�d�n�t�'<�	�#'�#4�#4�T�\�\�59�5I�5I�4�$Q�
Q�D�K�&��L�L�N�	���������/�/���f�+�+�U�3�!�+�v�{�{�;�D�N�!�&�"7�"7��>�D�N�������&�&�t�'7�'7�'@�'@��'C�D����#�#�D�N�N�3� ���(�����	�$%�D�!���	�s�>E"�"	E<�+E7�7E<c�H�		|jr|jj�|jr?|jj	|j�|jj�tj|�y#tj|�wxYwr�)rrrr3rNrMrrUrps rJrUzDatagramHandlerTest.tearDown�sm��&�	$��{�{���� � �"��~�~�� � �.�.�t�~�~�>����$�$�&����d�#��H���d�#�r'c�,�tjdd�}|jt|�d}t	j
|�}t
j|�}|xj|jdzz
c_|jj�y)Nr)rr*)r-�pack�packetr]r/r0rr�r"rr]r)rFr1r4rOr5r�s      rJrJz#DatagramHandlerTest.handle_datagram�sk���{�{�4��#������D�	�
�+���l�l�6�"���&�&�s�+�����6�:�:��,�,�������rlc��|jr|j|j�tjd�}|j	d�|j
j
�|j
j�|j	d�|j
j
�|j|jd�y)N�udpr�r8r9)
rr:rr r�r]r�rOr\r"r�s  rJr;zDatagramHandlerTest.test_output�s���� � ��M�M�$�/�/�0��"�"�5�)�����V�����������������V��������������.�9rlN)
rsrtrur;rrrKrUrJr;rvrlrJrHrH�s%��$� �L��G�)�4	$��
:rlrHc�*�eZdZ	eed�reZd�Zy)�UnixDatagramHandlerTestrGc��tj�|_|jtj
|j�tj|�yr�)rrDrr�rrTrHrKrps rJrKzUnixDatagramHandlerTest.setUp�s8��$�<�<�>������	�(�(�$�,�,�7��!�!�$�'rlN�rsrtrurFr�rNrrKrvrlrJrSrS�s��7��v�y�!�-��(rlrSc�4�eZdZ	eZdZd�Zd�Zd�Zd�Z	d�Z
y)�SysLogHandlerTestrc��	tj|�dx|_x|_|_	|j|j|jd�x|_}|j�|jj�tjj}t|j t"�r'||j d|j$f�|_n||j �|_d|_|j(j+|j(jd�|j(j-|j�t/j0�|_y#t$r}||_Yd}~yd}~wwxYw)Nrrrl)rrKr�sl_hdlrrrrrJr�r`r
r�rrBr\r r!rar�r"r3rNrDr�r�r]r$s    rJrKzSysLogHandlerTest.setUps7��	7����t��=A�A���A�d�l�T�%:�	�#'�#4�#4�T�\�\�59�5I�5I�4�$Q�
Q�D�K�&��L�L�N�	���������-�-���f�+�+�U�3���!6�!6�q�!9�6�;�;� G�H�D�L��� 5� 5�6�D�L�������&�&�t�'7�'7�'@�'@��'C�D����#�#�D�L�L�1� ���(�����	�$%�D�!���	�s�>E/�/	F	�8F�F	c�H�		|jr|jj�|jr?|jj	|j�|jj�tj|�y#tj|�wxYwr�)rrrYr3rNrMrrUrps rJrUzSysLogHandlerTest.tearDownsm��"�	$��{�{���� � �"��|�|�� � �.�.�t�|�|�<����"�"�$����d�#��H���d�#�r'c�Z�|j|_|jj�yr�)rOr"r]r)rFr1s  rJrJz!SysLogHandlerTest.handle_datagram%s��!�.�.��������rlc�,�|jr|j|j�tjd�}|j	d�|j
j
tj�|j|jd�|j
j�d|j_
|j	d�|j
j
tj�|j|jd�|j
j�d|j_|j	d�|j
j
tj�|j|jd�y)N�slh�späm�
<11>spämFs	<11>spämuhäm-s<11>häm-späm)rr:rr r�r]r�rrcr\r"rOrY�
append_nul�identr�s  rJr;zSysLogHandlerTest.test_output)s��� � ��M�M�$�/�/�0��"�"�5�)�����Y�������'�.�.�/�������*@�A�������"'��������Y�������'�.�.�/�������*<�=�������&��������Y�������'�.�.�/�������*G�Hrlc�B�tjd�}|jj�|jj�|j
d�|jjtj�|j|jd�y)Nr]r^r_)rr rYrMr]rOr�r�rrcr\r"r�s  rJ�test_udp_reconnectionz'SysLogHandlerTest.test_udp_reconnection<sk���"�"�5�)�����������������Y�������'�.�.�/�������*@�ArlN)rsrtrur;rrrKrUrJr;rcrvrlrJrWrW�s,��,� �L��G�)�4	$��I�&BrlrWc�*�eZdZ	eed�reZd�Zy)�UnixSysLogHandlerTestrGc��tj�|_|jtj
|j�tj|�yr�)rrDrr�rrTrWrKrps rJrKzUnixSysLogHandlerTest.setUpLrErlNrUrvrlrJrereDs��4��v�y�!�-��&rlrez$IPv6 support required for this test.c�2��eZdZ	eZdZ�fd�Z�fd�Z�xZS)�IPv6SysLogHandlerTest)z::1rc�h��tj|j_tt
|��yr�)r��AF_INET6rrKr�rhrKr�s �rJrKzIPv6SysLogHandlerTest.setUp[s#���+1�?�?����(�
�#�T�0�2rlc�h��tj|j_tt
|��yr�)r��AF_INETrrKr�rhrUr�s �rJrUzIPv6SysLogHandlerTest.tearDown_s#���+1�>�>����(�
�#�T�3�5rl)	rsrtrur;rrrKrUr�r�s@rJrhrhRs!���1� �L��G�3�6�6rlrhc� �eZdZ	d�Zd�Zd�Zy)�HTTPHandlerTestc�b�	tj|�tj�|_yr�)rrKr�r�r]rps rJrKzHTTPHandlerTest.setUphs!��	7����t�� ���(��rlc�|�|j|_t|j�|_|jdk(r9	t	|j
d�}|jj|�|_|jd�|j�|jj�y#d|_Y�GxYw)NrOzContent-Length��)
�commandrrZ�log_data�int�headers�rfilerc�	post_data�
send_response�end_headersr]r)rFr1�rlens   rJ�handle_requestzHTTPHandlerTest.handle_requestns�������� ����.��
��<�<�6�!�
&��7�?�?�+;�<�=��!(���!3�!3�D�!9���	���c�"������������	
&�!%���s�8B0�0	B;c�N�tjd�}|j}|j|jjd�dD�]�}d}|r�	ddl}tjjt�}tjj|dd�}|j|j�}|j|�|j|��}	nd}d}	t!||j"d|�	�x|_}
|
j'�|
j(j+�d
|
j,z}|xr|}tjj/|d|	d�
�|_d|_|j5|j0�dD�](}
|
|j0_|j8j;�d}|j=|�|j8j+�|j?|j2jd�|j?|j@|
�|
dk(r tC|j2jD�}n$tC|jFjId��}|j?|ddg�|j?|ddg�|j?|d|g���+|j$jK�|jj|j0�|j0jM����y#t$rd}Y��CwxYw)N�httprr�r�certdatazkeycert.pem)�cafiler)r$zlocalhost:%dz/frob)�foo�bar)�secure�context�credentials)rNrOr^rNrHrH�funcNamer;r)'rr r3rNrB�sslr3rZ�dirname�__file__r��
SSLContext�PROTOCOL_TLS_SERVER�load_cert_chain�create_default_context�ImportErrorrr{rr�r
r��server_portrb�h_hdlrrsrDrgr]rOr�r\rrr�queryrw�decoderrM)rFrr3r�r�r��here�localhost_certr$r�r�host�
secure_clientrgr�ds                rJr;zHTTPHandlerTest.test_output{s����"�"�6�*���&�&���!�!�$�"2�"2�";�";�A�">�?�#�F�#�D��
P���7�7�?�?�8�4�D�%'�W�W�\�\�$�
�M�%R�N� �^�^�C�,C�,C�D�F��*�*�>�:�!�8�8��8�O�G�����#1�$��8K�8K�48��$I�
I�D�K�&��L�L�N��L�L����!�F�$6�$6�6�D�"�-�v�M�!�*�*�6�6�t�W�>K�?F�CQ�7�S�D�K�!�D�M��"�"�4�;�;�/�)��%+����"����"�"�$������S�!����!�!�#�� � ����!3�!3�W�=�� � ����v�6��U�?� ����!4�!4�5�A� ����!6�!6�w�!?�@�A�� � ��6��V�H�5�� � ��:����@�� � ��5��C�5�1�*� 
�K�K�������*�*�4�;�;�7��K�K����a$��
#�"�!�F�"�s�L�L$�#L$N)rsrtrurKr{r;rvrlrJrnrncs�� �)��5 rlrnc�&�eZdZ	d�Zd�Zd�Zd�Zy)�
MemoryTestc�>�	tj|�i|_yr�)rrK�
_survivorsrps rJrKzMemoryTest.setUp�s��F����t����rlc��	|D]:}t|�t|�f}tj|�|j|<�<yr�)rr�rr�r�)rFr4r5�keys    rJ�_watch_for_survivalzMemoryTest._watch_for_survival�s:��	��C��S�'�4��9�$�C�#*�;�;�s�#3�D�O�O�C� �rlc��	tj�g}|jj�D]!\\}}}|���|j	|��#|r/|jdt
|�dj|�fz�yy)Nz;%d objects should have survived but have been destroyed: %sz, )�gc�collectr�r�rbr`r]r�)rF�dead�id_�repr_r�s     rJ�_assertTruesurvivalzMemoryTest._assertTruesurvival�s|��I�
�
�
����!%���!6�!6�!8��L�S�%�#��u�}����E�"�"9���I�I�.�14�T��D�I�I�d�O�0L�M�
N�rlc�D�|jjtj�tjd�}|j|�|jtj�|jj|j��|j|j��|jdg�~|j�tjd�}|j|j��|jddg�y)Nr�)r�r:r�)r�r:r�)r3r9rr�r r�r:r�rqrkr�)rFr�r�s   rJ�test_persistent_loggersz"MemoryTest.test_persistent_loggers�s���	
���!�!�'�,�,�/�����&��� � ��%����W�]�]�#������t�0�0�2�3��	�	�$�#�#�%�&����!�
�	�
�� � �"�����&���	�	�$�#�#�%�&����!�!�
�	rlN)rsrtrurKr�r�r�rvrlrJr�r��s��4��
4�
N�rlr�c��eZdZd�Zd�Zy)�EncodingTestc���tjd�}tdd�}d}	tj|d��}|j	|�	|j|�|j
|�|j�t|d��}	|j|j�j�|�|j�	tjj|�rtj|�yy#|j
|�|j�wxYw#|j�wxYw#tjj|�rtj|�wwxYw)Nr�r�ztest_logging-1-ufoo€rHr�)rr r8rmrDr�rNrMr�r\rc�rstripr3rZ�isfiler�)rFr�r7r�r�r�s      rJ�test_encoding_plain_filez%EncodingTest.test_encoding_plain_file�s������'��
�F�$5�
6����	��)�)�"�w�?�G��N�N�7�#�
 ����D�!��!�!�'�*��
�
���R�'�*�A�
�� � �������!2�D�9����	��w�w�~�~�b�!��	�	�"�
�"���!�!�'�*��
�
������	���w�w�~�~�b�!��	�	�"�
�"�s;�(D>�D�.D>�.D)�<D>�#D&�&D>�)D;�;D>�>7E5c���tjd�}d}tjd�}d|_tj�}||d�}tj|�}|j|�	|j|�|j|�|j�|j�}|j|d�y#|j|�|j�wxYw)Nr�uдо свидания�cp1251�stricts�� �������
)rr �codecs�	getwriterrJr6�BytesIOr;rDr�rNrMrZr\)rFr��message�writer_classr8�writerr�rjs        rJ�test_encoding_cyrillic_unicodez+EncodingTest.test_encoding_cyrillic_unicode	s�������'��Q���'�'��1�� (���������f�h�/���'�'��/�����w��	��K�K�� ����g�&��M�M�O��O�O�������J�K��
���g�&��M�M�O�s�8C
�
#C0N)rsrtrur�r�rvrlrJr�r��s
���2Lrlr�c��eZdZd�Zd�Zy)�WarningsTestc	�*�tj�5tjd�|j	tjd�tj
dt��tj�}tj|�}tjd�}|j|�tjd�|j|�|j�}|j�|j!|j#d�d�tj�}tj$d	td
d|d�|j�}|j�|j'|d
�ddd�y#1swYyxYw)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�UserWarningr6r7r;r rD�warnrNrZrMr��find�showwarningr\)rFr8rTrrj�a_files      rJ�
test_warningszWarningsTest.test_warnings	s ��
�
$�
$�
&��#�#�D�)��O�O�G�3�3�U�;��#�#�H�{�C��[�[�]�F��%�%�f�-�A��&�&�}�5�F����a� ��M�M�.�/�� � ��#����!�A�
�G�G�I����q�v�v�&I�J�A�N��[�[�]�F�� � ��[�*�b�!'��
7����!�A��L�L�N����Q�D�
F�)'�
&�
&�s�E+F	�	Fc��tj�5tjd�|j	tjd�tj
d�}|j
|jg�tjdtdd�|j
t|j�d�|j|jdtj�ddd�y#1swYyxYw)	NTFr�r�r�r�rnr)
r�r�rr�r�r r\rBr�r�r]�assertIsInstance�NullHandlerr�s  rJ�test_warnings_no_handlersz&WarningsTest.test_warnings_no_handlers0	s���
�
$�
$�
&��#�#�D�)��O�O�G�3�3�U�;��&�&�}�5�F����V�_�_�b�1�� � ��[�*�b�I����S����1�1�5��!�!�&�/�/�!�"4�g�6I�6I�J�'�
&�
&�s�CC3�3C<N)rsrtrur�r�rvrlrJr�r�	s��F�0Krlr�c�.�tj||�Sr�)rr=)r"r	s  rJ�
formatFuncr�>	s�����V�W�-�-rlc��eZdZdd�Zy)�myCustomFormatterNc��yr�rv)rF�fmtr	s   rJr�zmyCustomFormatter.__init__B	���rlr�)rsrtrur�rvrlrJr�r�A	s��
rlr�c�*�tj�Sr�)rr;rvrlrJ�handlerFuncr�E	s��� � �"�"rlc��eZdZy)�
CustomHandlerN�rsrtrurvrlrJr�r�H	���rlr�c��eZdZy)�CustomListenerNr�rvrlrJr�r�K	r�rlr�c��eZdZy)�CustomQueueNr�rvrlrJr�r�N	r�rlr�c��eZdZdd�Zd�Zy)�CustomQueueProtocolc�8�tj|�|_yr���queue�Queue)rF�maxsizes  rJr�zCustomQueueProtocol.__init__R	s���[�[��)��
rlc�F�tj|d�}t||�S)Nr�)�object�__getattribute__r/)rF�	attributer�s   rJrzCustomQueueProtocol.__getattr__U	s!���'�'��g�6���u�i�(�(rlN)r)rsrtrur�rrvrlrJr�r�Q	s��*�)rlr�c��eZdZd�Zy)�CustomQueueFakeProtocolc��yr�rv)rF�xs  rJ�emptyzCustomQueueFakeProtocol.empty_	r�rlN�rsrtrur�rvrlrJr�r�Y	s��
rlr�c��eZdZdZy)�CustomQueueWrongProtocolNr�rvrlrJr�r�b	s���Erlr�c�*�tj�Sr�r�rvrlrJ�
queueMakerr�e	s���;�;�=�rlc����fd�}|S)Nc�F��|jd��t|g|��i|��S)N�respect_handler_level)�
setdefaultr�)r�rBr5r�s   �rJ�funczlistenerMaker.<locals>.funci	s*������1�3H�I��e�9�h�9�&�9�9rlrv)�arg1�arg2r�r�s  ` rJ�
listenerMakerr�h	s���:��Krlc
�^
�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
�Zddd5d6d7id8�iddddd	d
�iddgd�d
�ZGd9�d:e jB�Z"dd;e"d<d=d>d?d@idA�iddd;dd	d
�iddgd�d
�Z#ddddB�dCdDdEddFdG�dH�dIddJgdKdL�idM�Z$ddNdOdPdQ�idddNdR�dCdDdNdSddT�dU�dIddVgdKdL�idW�Z%ddedzdd!dX�iddddd	d
�idYddgdKdL�idW�Z&ddedzdd!dZ�iddddd	d
�idYddgdKdL�idW�Z'dded[zdd!dZ�iddddd	d
�idYddgdKdL�idW�Z(ddedd!dX�iddddd	d
�idYddgdKdL�idW�Z)dded\d6d]id^�iddddd	d
�idYddgdKdL�idW�Z*dd_d`idadbgdc�dd�ddegd�df�Z+dg�Z,dh�Z-di�Z.efdj�Z/dk�Z0dl�Z1dm�Z2dn�Z3do�Z4dp�Z5dq�Z6dr�Z7ds�Z8dt�Z9du�Z:dv�Z;dw�Z<dx�Z=dy�Z>dz�Z?d{�Z@d|�ZAd}�ZBd~�ZCd�ZDd�d��ZEeFj��d���ZHeFj��d���ZIeFj��d���ZJd��ZKd��ZLd��ZMd��ZNd��ZOd��ZPd��ZQd��ZRd��ZSd��ZTd��ZUd��ZVd��ZWd��ZXd��ZYeZj��eFj��d����Z]eZj��eFj��e^d��d�����Z_e^d��d���Z`eaeFj��ebj�eFj�d��d�����Zeefd���ZgeFj��d���Zhd��Zid��Zjd��Zky�)��ConfigDictTestr�rn�form1r"z%(levelname)s ++ %(message)sr��logging.StreamHandlerr�zext://sys.stdout)r
r�r�r8r��r�rB)rrrBr�r�r:r�)rrrB�loggersr�zext://sys.stdbout�NTOSET�WRANING�misspelled_namez.ExceptionFormatterz"%(levelname)s:%(name)s:%(message)s)�()r"z.formatFunc)r��form2�form3r)r��hand2z.CustomHandlerzinvalid parameter name)r
r�r�r8r�r�F)�compilerr�)rr�rrBrr�Tr�)r�incrementalrBr�filt1rH)r
r�r�r8�filters�r�r)rrrrBrr�zcfg://true_formatterszcfg://handler_configs[hand1])r�true_formatters�handler_configsrrBrr�)rrrrBrr�r�r��!
)r��
terminator)r
r�r�r8r�z%(message)s ++ %(customfield)sr��defaultvalue)r"r
c�"��eZdZdZ�fd�Z�xZS)�ConfigDictTest.CustomFormatterr�c�"��t�|�|�Sr�)r�r"�rFr�r�s  �rJr"z%ConfigDictTest.CustomFormatter.format�s����7�>�&�)�)rl)rsrtru�custom_propertyr"r�r�s@rJ�CustomFormatterr�s�����	*�	*rlr�custom�{�%Y-%m-%d %H:%M:%S�	{message}r�value)r�styler	r"r�)r
r�zlogging.handlers.MemoryHandler��consoler)r
�capacityr�r��
flushLevel)r �	buffering�mymoduler#�true)r�rBrl)rrBr�mySimpleFormatterz1%(asctime)s (%(name)s) %(levelname)s: %(message)s�$)r"r)r
r�r��
fileGlobal)r
r!r�r�r�)r(�bufferGlobalr))rrrBr)rr"�validate�my_test_logger_custom_formatter)r
r"r*z.myCustomFormatterz2%(levelname)s:%(name)s:%(message)s:%(customfield)s�myvalue)rr"r
r
�logging.FileHandler�logging.handlers.QueueHandler�h1)r
rB)r/�ahr0�rrBr�c�B�tjj|�yr�)rr��
dictConfig)rFr�s  rJr�zConfigDictTest.apply_config�s�����!�!�$�'rlc�R�tj|�}|j||�yr�)r�getHandlerByNamer�)rFrHrrrTs    rJ�
check_handlerzConfigDictTest.check_handler�s"���$�$�T�*�����a��%rlc��tj�5}|j|j�|j	dt
j�tj�}|j|j��|j|j��|jdg|��|jg�ddd�y#1swYyxYw)Nr�r�r�)rr�r�r�r6rr;r r�rqr�rkr�s   rJr�zConfigDictTest.test_config0_ok�s���
�
$�
$�
&�&����d�l�l�+����w��(=�(=�>��&�&�(�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!��#��
"�
�
�!�!�"�%�'�
&�
&�s�B3C�Cc�j�tj�5}|j|�tjd�}|j|j
��|j|j
��|jddg|��|jg�ddd�y#1swYyxYwr�r�r�s    rJr�zConfigDictTest.test_config1_ok�r�r�c�Z�|jt|j|j�yr�r�rps rJr�z#ConfigDictTest.test_config2_failure�r�rlc�Z�|jt|j|j�yr�)r?r�r��config2arps rJ�test_config2a_failurez$ConfigDictTest.test_config2a_failure�������)�T�%6�%6��
�
�Frlc�Z�|jt|j|j�yr�)r?r�r��config2brps rJ�test_config2b_failurez$ConfigDictTest.test_config2b_failure
r=rlc�Z�|jt|j|j�yr�r�rps rJr�z#ConfigDictTest.test_config3_failure
r�rlc���tj�5}|j|j�|j	dt
j�	t��#t$rtjd�YnwxYwtjjd�|j|j�d�|jg�ddd�y#1swYyxYw)Nr�r�rr�)rr�r�r�r6rr;r�r�rRr�r�r\rZrk�rFr�s  rJr�zConfigDictTest.test_config4_ok
s���
�
$�
$�
&�&����d�l�l�+����w��(=�(=�>�
2�"�n�$���
2��!�!�.�1�
2���J�J�O�O�A�����V�_�_�.�A�
C�
�!�!�"�%�'�
&�
&�s*�<C�
A�A=�:C�<A=�=AC�C"c��tj�5}|j|j�	t	��#t$rtjd�YnwxYwtjjd�|j|j�d�|jg�ddd�y#1swYyxYwr�)
rr�r��config4ar�rr�rRr�r�r\rZrkrCs  rJ�test_config4a_okzConfigDictTest.test_config4a_ok
s���
�
$�
$�
&�&����d�m�m�,�
2�"�n�$���
2��!�!�.�1�
2���J�J�O�O�A�����V�_�_�.�A�
C�
�!�!�"�%�'�
&�
&�s'�B9�
<�A�B9�A�AB9�9Cc�h�|j|j��|jdt�y)Nr�r�)r�r�r6r�rps rJr�zConfigDictTest.test_config5_ok'
s'�����D�L�L��1����7�M�2rlc�Z�|jt|j|j�yr�)r?r�r�r�rps rJ�test_config6_failurez#ConfigDictTest.test_config6_failure+
s�����)�T�%6�%6����Erlc��tj�5}|j|j�t	j
d�}|j
|j��|j|j��|jddg|��|jg�ddd�tj�5}|j|j�|jdtj�t	j
d�}|j|j�t	j
d�}|j
|j��|j|j��|jddg|��|jg�ddd�y#1swY��xYw#1swYyxYw)	Nr�r�r�r�r�r��r�r��rr�)rr�r�rrr r�rqr�rkr�r6r;rErr�s   rJr�zConfigDictTest.test_config7_ok.
sv��
�
$�
$�
&�&����d�l�l�+��&�&�'8�9�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!���#��
"�
�

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

�!�!�"�%�'�
&�'�
&��'�
&�s�BF4�C%G�4F>�G
c��tj�5}|j|j�t	j
d�}|j
|j��|j|j��|jddg|��|jg�ddd�tj�5}|j|j�|jdtj�t	j
d�}|j|j�|j
|j��|j|j��t	j
d�}|j
|j��|j|j��|jgd�|��|jg�ddd�y#1swY��JxYw#1swYyxYw)Nr�r�r�r�r�r�)rKrL�r�r��rr�)rr�r�rrr r�rqr�rkr�r6r;rYrr�s   rJ�test_config_8_okzConfigDictTest.test_config_8_okL
s���
�
$�
$�
&�&����d�l�l�+��&�&�'8�9�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!���#��
"�
�

�!�!�"�%�'��
$�
$�
&�&����d�l�l�+����w��(=�(=�>��&�&�'8�9�F����V�_�_�-��K�K��)�)�+�,��L�L��*�*�,�-��&�&�'7�8�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!�#�
�
"�
�
�!�!�"�%�''�
&�'�
&��'�
&�s�BG2�D#G?�2G<�?Hc��tj�5}|j|j�|j	dt
j�tjd�}tjd�}|j|j��|j|j��|j|j��|jgd�|��|jg�ddd�tj�5}|j|j�|j	dt
j�tjd�}|j|j�|j|j��|j|j��tjd�}|j|j��|j|j��j|j��|jgd�|��|jg�ddd�y#1swY��ixYw#1swYyxYw)Nr�r�r�r�r�r�r�)rr�r�r�r6rr;r r�rqr�r�rk�config8arYrr�s    rJ�test_config_8a_okz ConfigDictTest.test_config_8a_okn
s���
�
$�
$�
&�&����d�m�m�,����w��(=�(=�>��&�&�'8�9�F�!�*�*�+@�A�J��K�K��)�)�+�,��L�L��*�*�,�-����� 1� 1� 3�4��!�!�#��	
"�
�
�!�!�"�%�)'�*�
$�
$�
&�&����d�m�m�,����w��(=�(=�>��&�&�'8�9�F����V�_�_�-��K�K��)�)�+�,��L�L��*�*�,�-��&�&�'7�8�F��K�K��)�)�+�,��L�L��*�*�,�-����� 1� 1� 3�4��!�!�#�
�
"�
�
�!�!�"�%�+'�
&�+'�
&��*'�
&�s�C)I%�EI2�%I/�2I;c��tj�5}|j|j�|j	dt
j�tjd�}|j|j��|jg|��|j|j�|j|j��|jg|��|j|j�|j|j��|jdg|��ddd�y#1swYyxYw)Nr�r�r�rK)
rr�r�r�r6rr;r r�rqrk�config9a�config9br�s   rJ�test_config_9_okzConfigDictTest.test_config_9_ok�
s���
�
$�
$�
&�&����d�l�l�+����w��(=�(=�>��&�&�'8�9�F��K�K��)�)�+�,��!�!�"�V�!�4����d�m�m�,��K�K��)�)�+�,��!�!�"�V�!�4����d�m�m�,��K�K��)�)�+�,��!�!��#��
"�
�'�
&�
&�s�DD<�<Ec��tj�5}|j|j�|j	dt
j�tjd�}|j|j��tjd�}|j|j��tjd�}|j|j��tjd�}|j|j��|jddg|��ddd�y#1swYyxYw�	Nr�r�r	r�zcompiler.parser.codegen)r�r~rLr�)rr�r��config10r6rr;r r�rqr�rkr�s   rJ�test_config_10_okz ConfigDictTest.test_config_10_ok�
s���
�
$�
$�
&�&����d�m�m�,����w��(=�(=�>��&�&�'8�9�F��N�N�4�,�,�.�/��&�&�z�2�F��N�N�4�,�,�.�/��&�&�'7�8�F��N�N�4�,�,�.�/��&�&�'@�A�F��L�L��*�*�,�-��!�!� ��#��
"�
�'�
&�
&�s�D!D?�?Ec�:�|j|j�yr�)r��config11rps rJ�test_config11_okzConfigDictTest.test_config11_ok�
s�����T�]�]�+rlc�Z�|jt|j|j�yr�)r?r�r��config12rps rJ�test_config12_failurez$ConfigDictTest.test_config12_failure�
������)�T�%6�%6��
�
�Frlc�Z�|jt|j|j�yr�)r?r�r��config13rps rJ�test_config13_failurez$ConfigDictTest.test_config13_failure�
rbrlc��tj�5}|j|j�tj
d}|j
|jd�|j
|jd�t	jd�|j|j�jd��ddd�y#1swYyxYw)Nr�r�r�Exclamationz
Exclamation!
)
rr�r��config14rr$r\r�rr�rErZr_)rFr�rTs   rJ�test_config14_okzConfigDictTest.test_config14_ok�
s���
�
$�
$�
&�&����d�m�m�,��!�!�'�*�A����Q�U�U�E�*����Q�\�\�5�1��O�O�M�*��O�O�F�O�O�-�6�6�7G�H�I�
'�
&�
&�s�B*C�Cc�0�|j�5tdd�}ddd|dd�iddgid	�}|j|�|j|�ddd�tjj
d
}|j
t|�y#1swY�>xYw)Nr�r�rnr�r-rH)r
�filenamerJrBr1r)r�r8r�rr�rBr�r�)rFr7r�r�s    rJ�test_config15_okzConfigDictTest.test_config15_ok�
s���
�
+�
+�
-���(9�:�B���!6�$&�$+��������F�
���f�%����f�%�%.�(�,�,�'�'��*�����(�'�2�6�+.�
-�s�>B�Bc�j�|j|j�tjd}|jjtjddd���}|j|d�|jjtjddi��}|j|d�y)Nr��Hellor�r�zHello ++ customvaluerzHello ++ defaultvalue)r��config16rr$r�r"r�r\)rFrTr�s   rJ�test_config16_okzConfigDictTest.test_config16_ok�
s������$�-�-�(����g�&�����#�#�G�$9�$9��M�:�%<�=������!7�8����#�#�G�$9�$9�
�G��%�������!8�9rlc��|j|j�tjd}|j	|j
jd�y)Nr�r)r��config17rr$r\r�rrBs  rJ�test_config17_okzConfigDictTest.test_config17_ok�
s>�����$�-�-�(����g�&��������4�4�g�>rlc���|j|j�tjd�jd}|j|jtj�y)Nr$r)r��config18rr rBr\r"r�rFr�s  rJ�test_config18_okzConfigDictTest.test_config18_oksI�����$�-�-�(��#�#�J�/�8�8��;������+�+�W�]�]�;rlNc���|jd�}tjjd|�}|j	�|j
j
�|j}|j
j�	tjtjtj�}|jd�|jd|f�tjdt!|��}||z}d}t!|�}	|	dkDr$|j#||d�}
||
z
}|	|
z}	|	dkDr�$|j%�|j
j
d�tjj'�t)j*|�y#|j
j
d�tjj'�t)j*|�wxYw)NrHrg@rQr))rrr��listenr�r
r�r�rOr�rl�SOCK_STREAM�
settimeout�connectr-rNr]�sendrM�
stopListeningr	r)rF�text�verifyr�r�r)r4rj�	sentsofar�left�sents           rJ�setup_via_listenerz!ConfigDictTest.setup_via_listeners[���{�{�7�#���N�N�!�!�!�V�,��	���	�	�������v�v��	���
�
��	,��=�=�����1C�1C�D�D��O�O�C� ��L�L�+�t�,�-��;�;�t�S��Y�/�D��t��A��I��q�6�D���(��y�y��9�:��/���T�!�	�������(�
�J�J�L�
�G�G�L�L����N�N�(�(�*��(�(��+��
�G�G�L�L����N�N�(�(�*��(�(��+�s�B/F�3F�AG"c��tj�5}|jtj|j
��|j
dtj�tjd�}|j|j��tjd�}|j|j��tjd�}|j|j��tjd�}|j|j��|jddg|��ddd�y#1swYyxYwrY)rr�r��json�dumpsrZr6rr;r r�rqr�rkr�s   rJ�test_listen_config_10_okz'ConfigDictTest.test_listen_config_10_ok!s��
�
$�
$�
&�&��#�#�D�J�J�t�}�}�$=�>����w��(=�(=�>��&�&�'8�9�F��N�N�4�,�,�.�/��&�&�z�2�F��N�N�4�,�,�.�/��&�&�'7�8�F��N�N�4�,�,�.�/��&�&�'@�A�F��L�L��*�*�,�-��!�!� ��#��
"�
�'�
&�
&�s�D4E�Ec��tj�5}|jtjt
j��tjd�}|j|j��|j|j��|jddg|��|jg�ddd�y#1swYyxYwr�)
rr�r�r�r�r�rrr r�rqr�rkr�s   rJ�test_listen_config_1_okz&ConfigDictTest.test_listen_config_1_ok6s���
�
$�
$�
&�&��#�#�H�O�O�N�4J�4J�$K�L��&�&�'8�9�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!���#��
"�
�

�!�!�"�%�'�
&�
&�s�B,C
�
Cc��d�}d�}tjd�}tjtj
�}t
j�5}|j||�|j|j��|j|j��ddd�|jg��|jddgd��t
j�5}|j|�tjd�}|j|j��|j|j��ddd�|jd	d
g|��|jddgd��t
j�5}|j|ddd�|�tjd�}|j|j��|j|j��ddd�|jdd
g|��|jddgd��y#1swY���xYw#1swY��xYw#1swY�MxYw)Nc��yr�rv��stuffs rJ�verify_failz6ConfigDictTest.test_listen_verify.<locals>.verify_failHs��rlc��|ddd�S)NrLrvr�s rJ�verify_reversez9ConfigDictTest.test_listen_verify.<locals>.verify_reverseKs����2��;�rlr�r�r�r�r�)rerKrLrLrNrO)
rr r�r�r�rrr�r�r�rqr�rk)rFr�r�r�to_sendr�s      rJ�test_listen_verifyz!ConfigDictTest.test_listen_verifyEs0��	�	��"�"�#4�5���/�/�.�"8�"8�9���
$�
$�
&�&��#�#�G�[�9��K�K��)�)�+�,��L�L��*�*�,�-�	'�
	
���b���0������
�+�	�	,��
$�
$�
&�&��#�#�G�,��&�&�'8�9�F��K�K��)�)�+�,��L�L��*�*�,�-�'�	
�����
��	�	�
	
�����
�+�	�	,��
$�
$�
&�&��#�#�G�D�b�D�M�>�B��&�&�'8�9�F��K�K��)�)�+�,��L�L��*�*�,�-�'�	
�����
��	�	�
	
�����
�+�	�	,�Y'�
&��'�
&��$'�
&�s'�AH2�(A%H?�A,I�2H<�?I�Ic�Z�|jt|j|j�yr�)r?rar��
bad_formatrps rJ�test_bad_formatzConfigDictTest.test_bad_format�s�����*�d�&7�&7����Irlc���tj|j�}d|ddd<|j|�t	j
d�jd}|j|jtj�|j|jjtj�|jtt	j��ddg�y)	Nz-${asctime} (${name}) ${levelname}: ${message}rr&r"r$rr)r()r%�deepcopyr�r�rr rBr�r�r>r��_style�StringTemplateStyler\�sorted�getHandlerNames�rFr�r�s   rJ�!test_bad_format_with_dollar_stylez0ConfigDictTest.test_bad_format_with_dollar_style�s������t���/��>m��|��0�1�(�;����&�!��#�#�J�/�8�8��;�����g�n�n�g�o�o�>����g�/�/�6�6�%�9�9�	;������ 7� 7� 9�:�(�,�7�	9rlc��|j|j�tjd�jd}|j|jt�y�Nr+r)r��custom_formatter_class_validaterr rBr�r�r�rvs  rJ�)test_custom_formatter_class_with_validatez8ConfigDictTest.test_custom_formatter_class_with_validate�sJ�����$�>�>�?��#�#�$E�F�O�O�PQ�R�����g�/�/�1C�Drlc��|j|j�tjd�jd}|j|jt�yr�)r�� custom_formatter_class_validate2rr rBr�r�r�rvs  rJ�*test_custom_formatter_class_with_validate2z9ConfigDictTest.test_custom_formatter_class_with_validate2�sJ�����$�?�?�@��#�#�$E�F�O�O�PQ�R�����g�/�/�1C�Drlc���|jj�}d|ddd<|j|�tjd�j
d}|j
|jt�y)Nr'rr�rr+r)	r�r%r�rr rBr�r�r�r�s   rJ�9test_custom_formatter_class_with_validate2_with_wrong_fmtzHConfigDictTest.test_custom_formatter_class_with_validate2_with_wrong_fmt�sn���5�5�:�:�<��14��|��W�%�g�.�	
���&�!��#�#�$E�F�O�O�PQ�R�����g�/�/�1C�Drlc�Z�|jt|j|j�yr�)r?rar�� custom_formatter_class_validate3rps rJ�*test_custom_formatter_class_with_validate3z9ConfigDictTest.test_custom_formatter_class_with_validate3�s �����*�d�&7�&7��9^�9^�_rlc�Z�|jt|j|j�yr�)r?rar��custom_formatter_with_functionrps rJ�,test_custom_formatter_function_with_validatez;ConfigDictTest.test_custom_formatter_function_with_validate�� �����*�d�&7�&7��9\�9\�]rlc�Z�|jt|j|j�yr�)r?rar��custom_formatter_with_defaultsrps rJ�,test_custom_formatter_function_with_defaultsz;ConfigDictTest.test_custom_formatter_function_with_defaults�r�rlc�&�dgd�ddd�dddd	gd
ggd�d�}tjj|�}|j|j	d
�d�|j|j	d�d�|j|j	d�d�|j|j	d�d	�|j|j	d�d�|j|j	d�d�|j	d�}|j|jd�gd��|j
t|jd�|j
t|jd�|j
t|jd�y)N)rnr��)rk�b�cr*r�)r�r�)�g)rTrw�jr��lr�rv)�ozcfg://alist�p)�atuple�alist�adict�nest1�nest2�nest3zcfg://atuple[1]r�zcfg://alist[1]r�zcfg://nest1[1][0]rTzcfg://nest2[1][1]z
cfg://adict.dzcfg://adict[f]zcfg://nest3rnzcfg://nosuchzcfg://!zcfg://adict[2])	rr��BaseConfiguratorr\�convert�popr?�KeyErrorra)rFr��bcr�s    rJ�test_baseconfigzConfigDictTest.test_baseconfig�sE���$��Q�(�+��C��:�s�+�.�

���^�^�
,�
,�Q�
/��������$5�6��:�������$4�5�s�;�������$7�8�#�>�������$7�8�#�>�������O�4�c�:�������$4�5�q�9��J�J�}�%��������q��?�3����(�B�J�J��?����*�b�j�j�)�<����(�B�J�J�0@�Arlc�p��ddlm�G�fd�dtj�}�dddg�}|dd	g�
�}dd||d
�iddgd�d�}t	j
�5}|j
|�tjd�ddd�|jj�d�y#1swY�*xYw)Nr)�
namedtuplec�,���eZdZ��fd�Z�fd�Z�xZS)�1ConfigDictTest.test_namedtuple.<locals>.MyHandlerc�2��t�|�|i|��||_yr�)r�r��resource)rFr�r4r5r�r�s    ��rJr�z:ConfigDictTest.test_namedtuple.<locals>.MyHandler.__init__�s����� �$�1�&�1�,4��
rlc�z��|xjd|jj��z
c_t�|�|�S�N� )rr��typer�rArs  �rJrAz6ConfigDictTest.test_namedtuple.<locals>.MyHandler.emit�s2����
�
��$�-�-�"4�"4�!5�6�6�
��w�|�F�+�+rlr�)r�r�s@�rJ�	MyHandlerr��s���
5�
,�
,rlr��Resourcer��labels�my_typerk)r�r�rn�	myhandler)rr�r�rr1zsome logzsome log my_type
)
�collectionsr�rr;rr�r�r�r\rZ)rFr�r�r�r�r�r�s      @rJ�test_namedtuplezConfigDictTest.test_namedtuple�s����*�	,��-�-�	,��j�6�8�*<�=����C�5�9����#� (��� &�K�=�A�	
���
$�
$�
&�&����f�%��L�L��$�'�	
������*�,@�A�'�
&�s�'B,�,B5c�l�d�}|jdd|gd�d��gtj�_y)Nc��yr5rv)r�s rJr�zAConfigDictTest.test_config_callable_filter_works.<locals>.filter_�s��rlrnr:r
�rr��r�rr r�rFr�s  rJ�!test_config_callable_filter_worksz0ConfigDictTest.test_config_callable_filter_works�s9��	�����G��	�"J�
�	�')�����#rlc��tjd�}|jdd|gd�d��gtj�_y)Nr�rnr:r
r�)rr�r�r rr�s  rJ�test_config_filter_worksz'ConfigDictTest.test_config_filter_works�sB���.�.��-������G��	�"J�
�	�')�����#rlc��Gd�d�}|�}|jdd|gd�d��gtj�_y)Nc��eZdZd�Zy)�BConfigDictTest.test_config_filter_method_works.<locals>.FakeFilterc��yr5rv)rFr�s  rJr�zIConfigDictTest.test_config_filter_method_works.<locals>.FakeFilter.filter�s��rlNr�rvrlrJ�
FakeFilterr��s��
rlr�rnr:r
r�r�)rFr�r�s   rJ�test_config_filter_method_worksz.ConfigDictTest.test_config_filter_method_works�sG��	�	��,������G��	�"J�
�	�')�����#rlc	��Gd�d�}dd|�fD]*}|jt|jdd|gd�d���,y)Nc��eZdZy)�;ConfigDictTest.test_invalid_type_raises.<locals>.NotAFilterNr�rvrlrJ�
NotAFilterr�s�rlr�rnr:r
r�)r?rar�)rFr�r�s   rJ�test_invalid_type_raisesz'ConfigDictTest.test_invalid_type_raisessD�����a���.�G������!�!���g�Y�'O�P�
�/rlc��tj|j�}tdd�}||ddd<|�||ddd<|�||ddd<d}	|j	|�tjd�}|jttj��ddg�|j|j�|jj�tjd	�tjd
�tjd�t!j"t j$d�rJ|jj&j)�rn%t!j"t j$d�r�J|jj&j+�t-|d
��5}|j/�j1�}ddd�|jgd��|r|jj3�tjd�}|r|j5t6||�y|j5t8j:|�y#1swY��xYw#|r|jj3�tjd�}|r|j5t6||�w|j5t8j:|�wxYw)Nr�ztest_logging-cqh-rBr/rkr0r��listenerr�r��bazzqueue not emptyrHr�)r�r�r�)r%r��config_queue_handlerr8r�rr5r\r�r��assertIsNotNoner�r�r�r�r�r�sleeping_retryrcr�r�r�r�rcr[rr�r�r3r�)	rF�qspec�lspec�cdr7�qhr�r�rTs	         rJ�do_queuehandler_configurationz,ConfigDictTest.do_queuehandler_configuration	s3��
�]�]�4�4�4�
5��
�F�$7�
8��+-��:��t��Z�(���,1�B�z�N�4� ��)���/4�B�z�N�4� ��,�
��	/����b�!��)�)�$�/�B����V�G�$;�$;�$=�>��t��M�� � ����-��K�K�����M�M�%� ��L�L����O�O�E�"��(�(��)=�)=�):�<��;�;�$�$�*�*�,���(�(��)=�)=�):�<�
�K�K���"�"�$��b�7�+�q��v�v�x�*�*�,��,����T�#8�9����� � �"��(�(��.�A����� 0�!�R�8�����	�	�2�.�,�+������ � �"��(�(��.�A����� 0�!�R�8�����	�	�2�.�s,�D6I/�1I/�<I#�I/�#I,�(I/�/A-Kc�r�t�t�g}dD�cgc]}t�d|��dd���}}tdzdddd�}dtdztd	zg|�|��}dtd
z|tf}t	j
||�D]\}}|j
||��ddtdd
f}ddtddf}t	j
||�D]a\}}|�|��|jt�5}	|j
||�ddd�t	j�}
|j|
d��cycc}w#1swY�8xYw)N)r�r�r�rg�rr�z.listenerMakerT)rr�r�r�z.queueMakerz.CustomQueuez.CustomListenerrxrr�r�z Unable to configure handler 'ah')
r�r�rsr��	itertools�productr�rtr?rartr�r\)rF�qsrr�dqs�dl�qvalues�lvaluesr�r��ctxrs           rJ�test_config_queue_handlerz(ConfigDictTest.test_config_queue_handler1sa���m�0�2�
3��@�B�@�3�"�
�!�C�5�)�b�9�@�	�B��-�-���%)�	
����M�1�8�n�3L�X�s�X�UW�X����$5�5�r�>�J��%�-�-�g�w�?�L�E�5��.�.�u�e�<�@���C��U�+����C��U�+��%�-�-�g�w�?�L�E�5��}�����"�"�:�.�#��2�2�5�%�@�/��c�m�m�$�C����S�"D�E�
@��!B�&/�.�s�D(�#D-�-D6	zmultiprocessing.Managerc���ddlm}ddd�}|�}tj�}t�}||||fD]+}|j	ddd|d	�id
��|j��-y)Nr)r�zqueue.QueuerLr�rn�queue_listenerr.�r
r��rrB)�multiprocessingr�r�r�r��assert_not_called)rFr!�MQ�q1�q2�q3�q4r�s        rJ�Atest_config_queue_handler_does_not_create_multiprocessing_managerzPConfigDictTest.test_config_queue_handler_does_not_create_multiprocessing_managerMsw��	0�!�b�
1��
�T��
�[�[�]��%�
&���"�b�"�%�E���� �(�%D�%*�+�!��

�
�%�%�'�&rlc	���t�t�fD]I}|jt�5|j	ddd|d�id��ddd�|j��Ky#1swY�xYw)Nrnrr.rr)r�r�r?rar�r)rFr!r�s   rJ�Ptest_config_queue_handler_invalid_config_does_not_create_multiprocessing_managerz_ConfigDictTest.test_config_queue_handler_invalid_config_does_not_create_multiprocessing_managermsj���h� 8� :�;�E��"�"�:�.��!�!�#$�,�)H�).�/�%��
�/�
�%�%�'�<�.�.�s�A"�"A+	z?requires a debug build for testingassertions in multiprocessingc	�L�tjrdg}ngd�}|D]�}|j|��5tj|�}|j�5}|j
�}g}|jd|j|dfd��5|j|jd���ddd�|j|j��ddd�|jt�d�ddd���y#1swY�VxYw#1swY�;xYw#1swY��xYw)	N�spawn)rr��
forkserver)�start_methodrnr)�initializer�initargs�maxtasksperchild�<rV)r�
MS_WINDOWS�subTestr�get_context�Managerr��Pool�_mpinit_issue121723rb�getrEr�r\r])rF�
start_methodsrr�r!�qrs       rJ�1test_config_queue_handler_multiprocessing_contextz@ConfigDictTest.test_config_queue_handler_multiprocessing_context�s������$�I�M�;�M�)�L����<��8�%�1�1�,�?���[�[�]�g��
�
��A� �G����!��1I�1I�,-�v�;��"�L����q�u�u�R�u�'8�9�L��O�O�A�G�G�I�.�#�� � ��W��q�1�9�8�*�L�L��	#�]��9�8�s;�&D�4D
�
"D	�,'D
�#D�D

�D
�
D�D�D#	c��tjjdddd|d�idgdd�d��tj�j	|�y)	NrnT�
log_to_parentr.rr:�rBr�)rr�rBr�)rr�r3r r�)r��message_to_logs  rJrz"ConfigDictTest._mpinit_issue121723�sZ��	���!�!��(,��<�"�"��#2�!2�W�E�
#
�
	�	���� � ��0rlc���tj|j�}ddlm}m}|�}|�j	�}|�j
�}|||fD�]*}tdd�}||ddd<||ddd	<d}		|j|�tjd�}	|jttj��ddg�|j|	j�|j!|	j"|�|j!|	jj"|�tjd�}
|
r|j%t&|
|���|j%t(j*|���-y#tjd�}
|
r|j%t&|
|�w|j%t(j*|�wxYw)
Nr)r�rr�ztest_logging-cmpqh-rBr/rkr0r�)r%r�r�rr�r�
JoinableQueuer8r�rr5r\r�r�r�r�r�r�r�r�r3r�)rFr�r�MMrr	r
r�r7r�rTs           rJ�test_multiprocessing_queuesz*ConfigDictTest.test_multiprocessing_queues�sx���]�]�4�4�4�
5��>�
�T��
�T�Z�Z�\��
�T�
�
�
!���"�b�\�E���(=�>�B�/1�B�z�N�4� ��,�,1�B�z�N�4� ��)��B�
3��!�!�"�%��-�-�d�3��� � ���(?�(?�(A�!B�T�4�L�Q��$�$�R�[�[�1��
�
�b�h�h��.��
�
�b�k�k�/�/��7��,�,�T�2����O�O�$4�a��<��O�O�B�I�I�r�2�#"���,�,�T�2����O�O�$4�a��<��O�O�B�I�I�r�2�s�B2F
�
AGc��dddddd�idddgd�id	�}tjd�}|j|j�|j	|�|j|j�|j	d
di�|j|j�|d=|j	|�|j|j�y)NrnFr r:r�)r�r
rkr)rr�rBrrr�)rr rYrr�rE)rFr�rs   rJ�
test_90195zConfigDictTest.test_90195�s����(-��$�4����$�!*����
�� �"�"�3�'��������)����&�!�������)����9�a�.�)�������(��-�.����&�!�������)rlc���tjd�tjd�}ddd|jd�j�d�idgdd	�d
�}tj
j
|�y)N�_multiprocessingrrn�sinkr.rrr:r#r1)r�
import_modulerr�rr�r3)rF�mpr�s   rJ�test_111615zConfigDictTest.test_111615�sv���#�#�$6�7�
�
(�
(�):�
;����<��^�^�G�4�:�:�<���$�H� ��
��	���!�!�&�)rlc��Gd�dtjj�}ddi}ddd|i|�iddgd	�d
�}tjj	|�tj
d�}|j
|j|�y)Nc���eZdZ�fd�Z�xZS)�>ConfigDictTest.test_kwargs_passing.<locals>.CustomQueueHandlerc�V��t�|�tj��||_yr�)r�r�r�r��
custom_kwargs�rFr4r5r�s   �rJr�zGConfigDictTest.test_kwargs_passing.<locals>.CustomQueueHandler.__init__�s����� �����/�%+��"rl)rsrtrur�r�r�s@rJ�CustomQueueHandlerr3�s
���
,�
,rlr7r�r�rnrr
r:rr1)rrB�QueueHandlerr�r3r5r\r5)rFr7r5r�r�s     rJ�test_kwargs_passingz"ConfigDictTest.test_kwargs_passing�s���	,��!1�!1�!>�!>�	,�
���
����/��#���!�%�J��
��	���!�!�&�)��*�*�8�4������.�.�
�>rlr�)lrsrtrur
r�rYr�rr�r�r;r?r�r�r�r�r�rEr�r�r�r�rRr�rUrVrZr]r`rdrhrorr=rrrrur�r�r�r�r�r�r�r�r6r�r�r�r<r@r�r�rFr�rIr�rPrSrWr[r^rarerirlrprsrwr�r�requires_working_socketr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r	r��requires_subprocessrrrrr�r��
skipUnless�Py_DEBUGr �staticmethodrr(r*r0r9rvrlrJr�r�n	s�
��3� /� I� 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�8��;�*�N�;��
�
�1�%�"�.�	�
� �!��
�!�H�,*�'�+�+�*���%��.�%�%�w���

�
�1�&�"�.�	�
� �!��
�+�H�8�1� ��
:��#� �%��
�
� �(�M�#��
��H�2��M��"�
�1� �0��:��0�&� ��


�
� �+�,�#��
�-�J�B���!6�6�>�!��
�
�0�$�!�,�	�
�
.� �$�I�#�0�
�#'�#�8��!�$9�9�>�!��
�
�0�$�!�,�	�
�
.� �$�I�#�0�
�#(�$�8��!�$8�8�>�!��
�
�0�$�!�,�	�
�
.� �$�I�#�0�
�#(�$�8�� �>�!��
�
�0�$�!�,�	�
�
.� �$�I�#�0�
�#&�"�8�� �N�*�I�6��
�
�0�$�!�,�	�
�
.� �$�I�#�0�
�#&�"�6��.��
9�!�F��	
����
���$(�&�&� &-�
&�F�G�G�F�&� 
&�3�F�&�< &�D+&�Z�&�(,�G�G�J�7�2:�?�
<�
,�8%�W�$�$�&��'��(%�W�$�$�&�&�'�&�%�W�$�$�&�<,�'�<,�|J�
9�E�
E�
E�`�^�^�B�,B�>)�)�	)��&/�P1��0�0�2� �W� � �"�F�#�3�F�41��0�0�2� �W� � �"�
�$�%�(�&�#�3�(�:�$�%�(�&�(�$� �W� � �"��X����)�)�,K�L�2�L�#��2�&�1��1� !�W� � �"�3�#�3�6*�<*�*?rlr�c��eZdZd�Zd�Zy)�ManagerTestc�j��g�G�fd�dtj�}tjd�}|jt|j
t�|j|�|jd�}|jd�tjd�|j�dg�y)Nc���eZdZd�fd�	Zy)�6ManagerTest.test_manager_loggerclass.<locals>.MyLoggerNc�(���j|�yr��rb)rFr�rr4�exc_info�extra�loggeds      �rJ�_logz;ManagerTest.test_manager_loggerclass.<locals>.MyLogger._logs����
�
�c�"rlrr)rsrtrurI)rHs�rJ�MyLoggerrCs���
#rlrJr�zshould appear in loggedzshould not appear in logged)
r�Loggerrr?�	TypeError�setLoggerClassrtr r�r\)rFrJ�manrrHs    @rJ�test_manager_loggerclassz$ManagerTest.test_manager_loggerclasss������	#�w�~�~�	#��o�o�d�#�����)�S�%7�%7��=����8�$����v�&�����0�1����5�6�����";�!<�=rlc��tjd�}t�}|j|�|j	|j
|�yr�)rrr��setLogRecordFactoryr\�logRecordFactory)rFrNrhs   rJ�test_set_log_record_factoryz'ManagerTest.test_set_log_record_factory$s;���o�o�d�#���8������)�����-�-�x�8rlN)rsrtrurOrSrvrlrJr@r@s��>� 9rlr@c��eZdZd�Zd�Zy)�ChildLoggerTestc�v�tj�}tjd�}tjd�}|jd�}|jd�}|j|tjd��|j|tjd��|jd�}|jd�}|jd�}|j|tjd��|j|tjd��|j||�y)	N�abczdef.ghi�xyzzuvw.xyz�def�ghi�abc.defzabc.def.ghi)rr �getChildr�)rFr��l1�l2�c1�c2�c3s       rJ�test_child_loggersz"ChildLoggerTest.test_child_loggers+s��������
�
�
�u�
%��
�
�
�y�
)��
�Z�Z��
��
�Z�Z�	�
"���
�
�b�'�+�+�E�2�3��
�
�b�'�+�+�I�6�7�
�[�[��
��
�[�[��
��
�[�[��
#���
�
�b�'�+�+�I�6�7��
�
�b�'�+�+�M�:�;��
�
�b�"�rlc���tj�}tjd�}tjd�}tjd�}tjd�}|j�}||h}|j|||z�|j	||�|j�}|j|h|�|j�}|jt�|�y)Nr��foo.barzfoo.bar.baz.bozzr�)rr �getChildrenr\�assertNotInr)rFr�r]r^�l3�l4�kidsrhs        rJ�test_get_childrenz!ChildLoggerTest.test_get_children:s��������
�
�
�u�
%��
�
�
�y�
)��
�
�
�1�
2��
�
�
�u�
%���}�}�����8������4�(�?�3�����X�&��~�~������"��t�$��~�~���������%rlN)rsrtrurbrjrvrlrJrUrU*s��
�
&rlrUc��eZdZy)�DerivedLogRecordNr�rvrlrJrlrlIr�rlrlc��eZdZd�Zd�Zd�Zy)�LogRecordFactoryTestc��Gd�dtj�}tj|�|t�|_|jj|j
�tj�|_	y)Nc��eZdZd�Zd�Zy)�2LogRecordFactoryTest.setUp.<locals>.CheckingFilterc��||_yr�)rr)rFrrs  rJr�z;LogRecordFactoryTest.setUp.<locals>.CheckingFilter.__init__Ps	����rlc�p�t|�}||jurd|�d|j��}t|��y)NzUnexpected LogRecord type z, expected T)r�rrrL)rFr�r�rs    rJr�z9LogRecordFactoryTest.setUp.<locals>.CheckingFilter.filterSs5����L���D�H�H�$�IJ� �H�H�&�C�#�C�.�(�rlN)rsrtrur�r�rvrlrJ�CheckingFilterrqOs��
�
rlrt)
rr�rrKrlr�r3r��getLogRecordFactory�orig_factory)rFrts  rJrKzLogRecordFactoryTest.setUpNsV��
	�W�^�^�
	�	���t��$�%5�6������"�"�4�;�;�/�#�7�7�9��rlc��|jj|j�tj	|�tj|j�yr�)r3r�r�rrUrrQrvrps rJrUzLogRecordFactoryTest.tearDown`s<�����%�%�d�k�k�2����$���#�#�D�$5�$5�6rlc��|jt|jj|j	��tjt�|jj|j	��|jdg�y)N)r�rr�)
r?rLr3r�rqrrQrlr�rkrps rJ�test_logrecord_classz)LogRecordFactoryTest.test_logrecord_classesn�����)�T�%5�%5�%=�%=��+�+�-�	/��#�#�$4�5������t�0�0�2�3����!�
�	rlN)rsrtrurKrUryrvrlrJrnrnLs��:�$7�
rlrnc�$�eZdZdZd�Zd�Zd�Zd�Zeje
ejd�d�d��Z
eje
ejd�d�d	��Zeje
ejd�d�d
��Zy)�QueueHandlerTestr�c��tj|�tjd�|_tj
j
|j�|_d|_t	jd�|_
d|j_|jjtj�|jj|j�y)NrL�queF)rrKr�r�rrBr8�que_hdlrrHr �
que_loggerrlr9r�rDrps rJrKzQueueHandlerTest.setUpts������t���[�[��_��
��(�(�5�5�d�j�j�A��
���	�!�+�+�E�2���$)����!���� � ����1����"�"�4�=�=�1rlc�b�|jj�tj|�yr�)r~rMrrUrps rJrUzQueueHandlerTest.tearDown~rnrlc��|jj|j��|jtj
|jj�|jj|j��|jtj
|jj�|j�}|jj|�|jj
�}|jt|tj��|j|j|jj�|j|j|j f|df�yr�)rr�rqr?r��Empty�
get_nowaitr�r�rEr rrr\rHrr4)rFrr�s   rJ�test_queue_handlerz#QueueHandlerTest.test_queue_handler�s��������d�/�/�1�2����%�+�+�t�z�z�'<�'<�=������T�.�.�0�1����%�+�+�t�z�z�'<�'<�=����!��������$��z�z�$�$�&�����
�4��):�):�;�<�������D�O�O�$8�$8�9����$�(�(�D�I�I�.��d��<rlc��|j�}tjtj�}d}|j	|j
||��}tj|j�}|jj|�|jj|�|jj�}|j||j�|j||j �y)Nz {name} -> {levelname}: {message})rH�	levelnamer�)rqrr�r�r"rHr=r>r~r@rr�r�r�r\rr�)rFrr��log_format_str�
formatted_msgr��
log_records       rJ�test_formattingz QueueHandlerTest.test_formatting�s������!���(�(����9�	�;��&�-�-�4�9�9�8A�3�.�P�
��%�%�d�o�o�6�	��
�
�"�"�9�-�������$��Z�Z�*�*�,�
�����
���7�����
�(:�(:�;rl�
QueueListenerz5logging.handlers.QueueListener required for this testc��ttj��}tjj|j|�}|j�	|jj|j��|jj|j��|jj|j��|j�|j|jtj d���|j|jtj"d���|j|jtj$d���|j'�ttj��}|j)tj$�tjj|j|d��}|j�	|jj|j��|jj|j��|jj|j��|j�|j+|jtj d���|j+|jtj"d���|j|jtj$d	���|j'�y#|j�wxYw#|j�wxYw)
Nr~)r�r�r�r�T)r�r�r�r�)r
r�MatcherrrBr�r�r�rr�rqr�r�rrE�matchesr�rr}rMr9rY)rFr�r�s   rJ�test_queue_listenerz$QueueHandlerTest.test_queue_listener�s2���g�o�o�/�0���#�#�1�1�$�*�*�g�F������	��O�O�#�#�D�$5�$5�$7�8��O�O�!�!�$�"3�"3�"5�6��O�O�$�$�T�%6�%6�%8�9��M�M�O������������M�N��������
�
�s��K�L��������0@�0@�#��N�O��
�
���g�o�o�/�0������)�)�*��#�#�1�1�$�*�*�g�HL�2�N������	��O�O�#�#�D�$5�$5�$7�8��O�O�!�!�$�"3�"3�"5�6��O�O�$�$�T�%6�%6�%8�9��M�M�O����������#��N�O������������L�M��������0@�0@�#��N�O��
�
���-
�M�M�O��$
�M�M�O�s�A;L)�=A;L>�)L;�>Mc��tjj|j|j�}|j�	ddz|jj|j�d��|j�|j|jj�j�j!d�d�|j|jj�j�j!d�d�y#t$r8}|}|jj|j�|��Yd}~��d}~wwxYw)Nrnr�rFT��
stack_info�	Traceback�Stack)rrBr�r�r<r��ZeroDivisionErrorrr�rqr�rr\r8rZrr�)rFr�r*�excs    rJ�&test_queue_listener_with_StreamHandlerz7QueueHandlerTest.test_queue_listener_with_StreamHandler�s���#�#�1�1�$�*�*�d�n�n�M������	I�
��E�	
�����d�/�/�1�d��C��
�
��������-�-�/�5�5�7�=�=�k�J�A�N�������-�-�/�5�5�7�=�=�g�F��J��
!�	I��C��O�O�%�%�d�&7�&7�&9�C�%�H�H��	I�s�D�	E�-E�Ec���|jj|j�|jj	|j
�tjj|j|j�}|j�|jjd�|j�|j|jj�j!�d�y)Nr�zque -> ERROR: error)r~r@r?rrDr<rrBr�r�r�r�rr\r8rZr)rFr�s  rJ�*test_queue_listener_with_multiple_handlersz;QueueHandlerTest.test_queue_listener_with_multiple_handlers�s���	
�
�
�"�"�4�#6�#6�7����"�"�4�>�>�2��#�#�1�1�$�*�*�d�m�m�L�����������g�&��
�
��������-�-�/�5�5�7�9N�OrlN)rsrtrurYrKrUr�r�r�r<rFrrBr�r�r�rvrlrJr{r{os���3��2� �
=�<��X�����!1�!1�?�C�P�R��R��B�X�����!1�!1�?�C�P�R�K�R�K��X�����!1�!1�?�C�P�R�	P�R�	Prlr{r�c���eZdZ	dZed��Zejejjd�d��Zejejjd�d��Zed��Z
d�Zd�Zy	)
�QueueListenerTest�c�>�	tjd|z�}|jtj�tjj|�}|j
|�tjj|�}|j�|jd�|jd�|jd�|jd�|jd�|j�|j|�|j�y)Nztest_logger_with_id_%s�one�two�three�four�five)
rr r9r:rBr8rDr�r�r�rrNrM)�	log_queuerarr�r�s     rJ�
setup_and_logzQueueListenerTest.setup_and_log�s���
�
�&�&�'?�%�'G�H�F��O�O�G�M�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�� � ��)��M�M�OrlrXc��t|j�D];}tj�}|j	||j��d|����=|j
|jd|jzd�y�Nr�rz&correct number of handled log messages)ry�repeatr�r�r�rr\�
call_count�rF�mock_handlerwr�s    rJ�#test_handle_called_with_queue_queuez5QueueListenerTest.test_handle_called_with_queue_queuesa���4�;�;�'��!�K�K�M�	��"�"�9�����A�.F�G�(�
���[�3�3�Q����_�E�
Grlc�f�tj�t|j�D][}t	j
�}|j
||j��d|���|j�|j��]|j|jd|jzd�yr�)r�*skip_if_broken_multiprocessing_synchronizeryr�rr�r�rrMrr\r�r�s    rJ� test_handle_called_with_mp_queuez2QueueListenerTest.test_handle_called_with_mp_queues���
�>�>�@��4�;�;�'��+�1�1�3�	��"�"�9�����A�.F�G����!��%�%�'�	(�

���[�3�3�Q����_�E�
Grlc#�jK�		|j����#tj$rgcYSwxYw�wr�)r�r�r�)r�s rJ�get_all_from_queuez$QueueListenerTest.get_all_from_queues9����
��#�.�.�0�0����;�;�
��	�
�s�3��0�3�0�3c
�8�	tj�t|j�D]�}t	j
�}|j
||j��d|���t|j|��}|j�|j�gtjjjgg}|j!||d|D�cgc]*}t#|tj$�r|j&n|��,c}z���ycc}w)Nr�z&Found unexpected messages in queue: %s)rr�ryr�rr�r�r�listr�rMrrrBr��	_sentinelr�r rr)rFrwr�r�rhr�s      rJ�$test_no_messages_in_queue_after_stopz6QueueListenerTest.test_no_messages_in_queue_after_stops���
�
�>�>�@��4�;�;�'��'�-�-�/���"�"�5�D�G�G�I�q�*A�B��T�4�4�U�;�<������
�!��!�!�#���!1�!1�!?�!?�!I�!I� J�K���
�
�e�X�F�5:�%<�5:��/9��G�<M�<M�.N�Q�U�U�*+�&,�5:�%<�=�>�(��%<s�/Dc��tj�}tjj	|�}|j�|j
�|jt�5|j�ddd�y#1swYyxYwr�)
r�r�rrBr�r�rr?ra�	task_done)rFr�r�s   rJ�test_calls_task_done_after_stopz1QueueListenerTest.test_calls_task_done_after_stop5s\�����
�I��'�'�5�5�i�@�H��N�N���M�M�O��"�"�:�.��#�#�%�/�.�.�s�)B�BN)rsrtrur�r>r�rr�rrBr�r�r�r�r�r�rvrlrJr�r��s���	�
��	�	�
�	�.
����g�&�&�4�4�h�	?�	G�
@�	G�
����g�&�&�4�4�h�	?�
	G�
@�
	G�
�	�
�	�	>�0	&rlr�c��eZdZd�ZeZd�Zy)�UTCc��tSr�)�ZERO�rF�dts  rJ�	utcoffsetz
UTC.utcoffsetCs���rlc��y)Nr�rvr�s  rJ�tznamez
UTC.tznameHs��rlN)rsrtrur��dstr�rvrlrJr�r�Bs����C�rlr�c��eZdZd�Zy)�AssertErrorMessagec��	|jdg|��i|��y#|$r%}|j|t|��Yd}~yd}~wwxYw)Nrv)r?r\rt)rFr�r�r4r5r*s      rJ�assert_error_messagez'AssertErrorMessage.assert_error_messageOsH��	.��D���b�2�4�2�6�2���	.����W�c�!�f�-�-��	.�s��A�>�AN)rsrtrur�rvrlrJr�r�Ms��.rlr�c�P�eZdZd�Zd
d�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
y)�
FormatterTestc	��dtjtjj	ddd�dddddd�|_d	d	d
ii|_y)Nzformatter.testrZ�toz	dummy.extr�zMessage with %d %s)r��placeholders)rHr��pathname�linenorFr�rr4ri�)rr:r3rZr��common�variantsrps rJrKzFormatterTest.setUpVsP��$��]�]������V�T�;�?����'�'�	
���
��$��
��
rlNc��t|j�}|�|j|j|�t	j
|�Sr�)rr�rPr�rr�)rFrHr�s   rJ�
get_recordzFormatterTest.get_recordgs<���d�k�k�"�����M�M�$�-�-��-�.��$�$�V�,�,rlc�r�|j�}tjd�}|j|j	|�d�tjd�}|jt|j|�|j|j��tjd�}|j|j��tjd�}|j|j��tjd�}|j|j��y)Nz${%(message)s}z${Message with 2 placeholders}z
%(random)s�%(asctime)sz%(asctime)-15sz%(asctime)#15s�
r�rr=r\r"r?rarY�usesTimerE�rFr�r�s   rJ�test_percentzFormatterTest.test_percentms����O�O������.�/��������!��&F�G����l�+�����*�a�h�h��2��������&����m�,������
�
��%����.�/������
�
��%����.�/������
�
��%rlc��|j�}tjdd��}|j|j	|�d�tjdd��}|jt|j|�tjdd��}|j|j��tjdd��}|j|j��tjdd��}|j|j��tjd	d��}|j|j��y)
Nz
$%{message}%$r�r�$%Message with 2 placeholders%$z{random}r�	{asctime}z{asctime!s:15}z{asctime:15}r�r�s   rJ�test_braceszFormatterTest.test_braces|s����O�O������o�S�9��������!��&G�H����j��4�����*�a�h�h��2����k��5���������&����k��5������
�
��%����.�c�:������
�
��%����n�C�8������
�
��%rlc���|j�}tjdd��}|j|j	|�d�tjdd��}|j|j	|�d�tjdd��}|j|j	|�d�tjdd��}|jt|j|�|j|j��tjd	d��}|j|j��tjd
d��}|j|j��tjdd��}|j|j��tjdd��}|j|j��y)N�
${message}r'r�zMessage with 2 placeholdersz$messagez$$%${message}%$$r�z	${random}z
${asctime}z$asctimez${asctime}--r�r�s   rJ�test_dollarszFormatterTest.test_dollars�s^���O�O������l�#�6��������!��&C�D����j��4��������!��&C�D����0��<��������!��&G�H����k��5�����*�a�h�h��2��������&����l�#�6������
�
��%����j��4������
�
��%����l�#�6���������&����n�C�8������
�
��%rlc�h�tjd�}|j|jd�tjd�}|j|jd�tjd�}|j|jd�tjd�}|j|jd�tjdd��}|j|jd�tjdd��}|j|jd�tjd	d��}|j|jd	�tjd
d��}|j|jd
�tjdd��}|j|jd�tjdd��}|j|jd�tjd
d��}|j|jd
�tjdd��}|j|jd�tjdd��}|j|jd�tjdd��}|j|jd�tjdd��}|j|jd�tjdd��}|j|jd�tjdd��}|j|jd�tjdd��}|j|jd�tjdd��}|j|jd�tjdd��}|j|jd�tjdd��}|j|jd�|j	t
tjd�|j	t
tjd�|j	t
tjd�|j	t
tjd�|j	t
tjd�|j	t
tjd�|j	t
tjd�|j	t
tjd �|j	t
tjd!�|j
t
d"tjd#d��|j
t
d$tjd%d��|j
t
d&�|j	t
tjd'd��|j
t
d(tjd)d��|j
t
d*tjd+d��|j	t
tjd,d��|j	t
tjd-d��|j	t
tjd.d��|j	t
tjd/d��|j
t
d0tjd1d��|j
t
d2tjd3d��|j	t
tjd4d��|j	t
tjd5d��|j	t
tjd6d��|j	t
tjd7d��|j	t
tjd8d��|j	t
tjd9d��|j	t
tjd:d��|j	t
tjd;d��|j	t
tjd<d��|j
t
d=tjd>d��|j
t
d=tjd?d��|j
t
d=tjd@d��|j
t
d$tjdd��|j	t
tjd%d��|j
t
d$tjdAd��|j	t
tjdBd��y)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']}rr�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)_r�r�z
%(foo)#12.3*fz%(foo)0*.8*fz;invalid format: invalid field name/expression: 'name-thing'z{name-thing}zinvalid format: no fieldsr�zinvalid 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 $.r�z	${asctime)rr=r\�_fmtr?rar��rFr�s  rJ�test_format_validatez"FormatterTest.test_format_validate�s���
���m�n��������!p�q����Q�R��������!T�U����3�4��������!6�7����l�+���������.�
���U�]`�a��������!X�Y����>�c�J��������!A�B����4�C�@��������!7�8����m�3�7���������/����m�3�7���������/����m�3�7���������/����/�s�;��������!2�3����X�`c�d��������![�\����4�C�@��������!7�8����n�C�8���������0����m�3�7���������/����3�3�?��������!6�7����5�S�A��������!8�9����4�C�@��������!7�8�
���5�S�A��������!8�9����i�s�3���������+����k��5���������-�	
���*�g�&7�&7��G����*�g�&7�&7��G����*�g�&7�&7��G����*�g�&7�&7��I����*�g�&7�&7��G����*�g�&7�&7��E����*�g�&7�&7��F����*�g�&7�&7��I����*�g�&7�&7��H�	
�!�!��I����~�S�	"�	
�	
�!�!��'����}�C�	"�	
�	
�!�!��%�	
�	
���*�g�&7�&7�9N�VY��Z��!�!��E����0��	"�	
�	
�!�!��3����/�s�	"�	
�
	
���*�g�&7�&7��PS��T����*�g�&7�&7�9P�X[��\����*�g�&7�&7�9P�X[��\����*�g�&7�&7�9R�Z]��^��!�!��?����z��	"�	
�
	
�!�!��E����z��	"�	
�
	
���*�g�&7�&7��s��S����*�g�&7�&7��PS��T����*�g�&7�&7��C��P����*�g�&7�&7�9M�UX��Y����*�g�&7�&7�9N�VY��Z����*�g�&7�&7�9I�QT��U����*�g�&7�&7�9J�RU��V����*�g�&7�&7�9K�SV��W����*�g�&7�&7��S��Q�	
�!�!��4����z��	"�	
�
	
�!�!��4����w�c�	"�	
�
	
�!�!��4����x�s�	"�	
�	
�!�!��'����{�#�	"�	
�
	
���*�g�&7�&7��c��R�	
�!�!��'����u�C�	"�	
�
	
���*�g�&7�&7��C��Prlc�b�gd�}gd�}t||�D�]\}}tj||ddi��}|j�}|j	|j|�d�|jd�}|j	|j|�d�tj||��}|j�}|j
t|j
|�tj||d	di��}|jd�}|j	|j|�d���y)
N)z%(custom)s %(message)sz{custom} {message}z$custom $message)�%rr'r�Default)rr
z#Default Message with 2 placeholdersz 1234 Message with 2 placeholdersr�zNon-existing)r^rr=r�r\r"r?ra)rF�fmts�stylesr�rr�r�s       rJ�test_defaults_parameterz%FormatterTest.test_defaults_parameter7s���S�� ���d�F�+�J�C���!�!�#�U�h�	�=R�S�A����!�A����Q�X�X�a�[�*O�P�����)�A����Q�X�X�a�[�*L�M��!�!�#�U�3�A����!�A����j�!�(�(�A�6��!�!�#�U�n�i�=X�Y�A�����)�A����Q�X�X�a�[�*L�M�,rlc�R�|jttjddd�y)Nr�)r?rarr=rps rJ�test_invalid_stylez FormatterTest.test_invalid_styleKs�����*�g�&7�&7��t�S�Irlc
��|j�}tjdddddddt�}tj|jd�j
��|_d|_tjd�}tj|_|j|j|�d	�|j|j|d
�d�|j|�|j|j d	�y)N��rx��r�r�{�%(asctime)s %(message)sz1993-04-21 08:03:00,123z%Y:%dz1993:21)r��datetime�utcrz�mktime�
astimezone�	timetuple�created�msecsrr=�gmtime�	converterr\�
formatTimer"�asctime)rFr�r�r�s    rJ�	test_timezFormatterTest.test_timeNs����O�O���
�
�
�t�Q��A�q�!�Q��
<���K�K��
�
�d� 3� =� =� ?�@��	�������7�8���k�k���������a��*C�D�������a��1�9�=�	�����������$=�>rlc
�~�Gd�dtj�}|j�}tjddddddd	t�}tj|jd�j��|_	|�}t
j|_|j|j|�d
�y)Nc��eZdZdZdZy)�DFormatterTest.test_default_msec_format_none.<locals>.NoMsecFormatterNz%d/%m/%Y %H:%M:%S)rsrtru�default_msec_format�default_time_formatrvrlrJ�NoMsecFormatterr]s��"&��"5�rlrr�rxr�r�r�rr�z21/04/1993 08:03:00)rr=r�r�r�rzr�r�r�r�r�r�r\r�)rFrr�r�r�s     rJ�test_default_msec_format_nonez+FormatterTest.test_default_msec_format_none\s���	6�g�/�/�	6�
�O�O���
�
�
�t�Q��A�q�!�S�#�
>���K�K��
�
�d� 3� =� =� ?�@��	�����k�k���������a��*?�@rlc��tjddd��}td�D]W}tjd�tj
dd|d	zzi�}|j
|�}|jd
|��Yy)Nz!{asctime}.{msecs:03.0f} {message}rr)r�rr	i�	g-C��6:?rz
Message %drnz.1000)rr=ryrzr|r�r"rf)rFr�rwr�rjs     rJ�test_issue_89047zFormatterTest.test_issue_89047hsm�����"E�S�Zm�n���t��A��J�J�v���%�%�u�l�a�!�e�.D�&E�F�A������A����W�a�(�	rlr�)rsrtrurKr�r�r�r�r�r�r�r�rrrvrlrJr�r�Us?��
�"-�
&�&� &�*TQ�lN�(J�?�
A�)rlr�c��eZdZd�Zd�Zy)�TestBufferingFormatterc��dt|�zS)Nz[(%d)�r]�rFrs  rJ�formatHeaderz#TestBufferingFormatter.formatHeaderr�����W��%�%rlc��dt|�zS)Nz(%d)]r
rs  rJ�formatFooterz#TestBufferingFormatter.formatFooterur
rlN)rsrtrurrrvrlrJrrqs��&�&rlrc��eZdZd�Zd�Zd�Zy)�BufferingFormatterTestc�j�tjddi�tjddi�g|_y)Nrr�r�)rr�rrps rJrKzBufferingFormatterTest.setUpys/���!�!�5�%�.�1��!�!�5�%�.�1�
��rlc���tj�}|jd|jg��|jd|j|j��y)Nr�onetwo)r�BufferingFormatterr\r"rr�s  rJ�test_defaultz#BufferingFormatterTest.test_defaultsE���&�&�(������Q�X�X�b�\�*�����1�8�8�D�L�L�#9�:rlc��t�}|jd|j|j��t	j
d�}t|�}|jd|j|j��y)Nz[(2)onetwo(2)]z
<%(message)s>z[(2)<one><two>(2)])rr\r"rrr=)rFr��lfs   rJ�test_customz"BufferingFormatterTest.test_custom�s`��"�$�����)�1�8�8�D�L�L�+A�B�
�
�
��
/��"�2�&�����-�q�x�x����/E�FrlN)rsrtrurKrrrvrlrJrrxs��
�;�
Grlrc��eZdZd�Zy)�
ExceptionTestc�V�|j}t�}|j|�	td��#t	j
dd��YnxYw|j
|�|j�|jd}|j|jjd��|j|jjd��|j|jjd��|j|jjd	��y)
Nr��failedTr�rz#Traceback (most recent call last):
z!
RuntimeError: deliberate mistake�Stack (most recent call last):
z,logging.exception('failed', stack_info=True))r3�RecordingHandlerrDr�rr�rNrMrrE�exc_textrr_r�)rFr�rTs   rJr�zExceptionTest.test_formatting�s����������	���Q��	9��3�4�4��	9����h�4�8��	�����	���	�
�I�I�a�L������
�
�-�-�/>�?�	@�����
�
�+�+�-A�B�	C�������/�/�1>�?�	@�������-�-�/?�@�	As	�4�AN)rsrtrur�rvrlrJrr�s��Arlrc��eZdZd�Zy)�LastResortTestc���|j}|j|j�tj}tj
}	t
j�5}|jd�|j|j�d�|jd�|j|j�d�ddd�dt_t
j�5}|jd�d}|j|j�|�ddd�t
j�5}|jd�|j|j�d�ddd�d|j_
dt_t
j�5}|jd�|j|j�d�ddd�|j|j�|t_|t_y#1swY��OxYw#1swY��xYw#1swY��xYw#1swY�axYw#|j|j�|t_|t_wxYw)NzThis should not appearrz
Final chance!zFinal chance!
z-No handlers could be found for logger "root"
F)r3rNr<r�
lastResortr�rr�r�r\rZr�r!�emittedNoHandlerWarningrD)rFr��old_lastresort�old_raise_exceptionsr�rs      rJ�test_last_resortzLastResortTest.test_last_resort�s����������4�>�>�*� �+�+��&�6�6��	;��(�(�*�f��
�
�3�4�� � ����!2�B�7����_�-�� � ����!2�4E�F�	+�"&�G���(�(�*�f����_�-�F��� � ����!2�C�8�+��(�(�*�f����_�-�� � ����!2�B�7�+�
49�D�L�L�0�&+�G�#��(�(�*�f����_�-�� � ����!2�B�7�+�
�O�O�D�N�N�+�!/�G��&:�G�#�7+�*��+�*��+�*��+�*��
�O�O�D�N�N�+�!/�G��&:�G�#�sm�	H?�A#H
�'H?�'4H�H?�72H'�)8H?�!2H3�H?�
H�H?�H$�H?�'H0�,H?�3H<�8H?�?3I2N)rsrtrur(rvrlrJr"r"�s��#;rlr"c��eZdZd�Zd�Zy)�FakeHandlerc
�N�dD] }t|||j|||���"y)N)r�r	rMr�)�setattr�record_call)rF�
identifier�calledrgs    rJr�zFakeHandler.__init__�s'��>�F��D�&�$�"2�"2�:�v�v�"N�O�?rlc��������fd�}|S)Nc�H���jdj����y)Nz{} - {})rbr")r/r.�method_names���rJ�innerz&FakeHandler.record_call.<locals>.inner�s����M�M�)�*�*�:�{�C�Drlrv)rFr.r2r/r3s ``` rJr-zFakeHandler.record_call�s���	E��rlN)rsrtrur�r-rvrlrJr*r*�s
��P�rlr*c�$��eZdZ�fd�Zd�Z�xZS)rc�:��tt|�
|i|��g|_yr�)r�rr�rr6s   �rJr�zRecordingHandler.__init__�s���
���.��?��?���rlc�<�	|jj|�yr�)rrbr�s  rJrXzRecordingHandler.handle�s��4������F�#rl)rsrtrur�rXr�r�s@rJrr�s
����$rlrc�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
}|j
ttd|�y)Nr�)r�r8rKr/rr�r�r,)rF�raise_exceptionsr�s  �rJrKzShutdownTest.setUp�s7���
�l�D�'�)����"�2�2�������*;�=M�Nrlc����fd�}|S)Nc������r�rv)r�s�rJr3z'ShutdownTest.raise_error.<locals>.inner�s
����'�Mrlrv)rFr�r3s ` rJ�raise_errorzShutdownTest.raise_error�s
���	��rlc�T�td|j�}td|j�}td|j�}ttjj
|||g�}tjt|���gd�}|j||j�y)Nrrnr�r})z2 - acquirez	2 - flushz	2 - closez2 - releasez1 - acquirez	1 - flushz	1 - closez1 - releasez0 - acquirez	0 - flushz	0 - close�0 - release)	r*r/r�rrr�rr�r\)rF�handler0�handler1�handler2rBrhs      rJ�test_no_failurezShutdownTest.test_no_failure�s����q�$�+�+�.���q�$�+�+�.���q�$�+�+�.���w���*�*�X�x��,J�K�����T�(�^�4�L��	
����4�;�;�/rlc�$�td|j�}t|||j|��tj
j
|�g}t	jt|���|jd|jd�y)Nrr}r?rL)
r*r/r,r=rrr�rr�r\)rFrgr�r�rBs     rJ�_test_with_failure_in_methodz)ShutdownTest._test_with_failure_in_method�sj���a����-������!1�!1�%�!8�9��O�O�'�'��0�1�����T�(�^�4��������B��8rlc�0�|jdt�y�Nr��rEr`rps rJ�test_with_ioerror_in_acquirez)ShutdownTest.test_with_ioerror_in_acquires���)�)�)�W�=rlc�0�|jdt�y�Nr	rHrps rJ�test_with_ioerror_in_flushz'ShutdownTest.test_with_ioerror_in_flush����)�)�'�7�;rlc�0�|jdt�y�NrMrHrps rJ�test_with_ioerror_in_closez'ShutdownTest.test_with_ioerror_in_closerMrlc�0�|jdt�yrG�rErarps rJ�test_with_valueerror_in_acquirez,ShutdownTest.test_with_valueerror_in_acquires���)�)�)�Z�@rlc�0�|jdt�yrKrRrps rJ�test_with_valueerror_in_flushz*ShutdownTest.test_with_valueerror_in_flush����)�)�'�:�>rlc�0�|jdt�yrOrRrps rJ�test_with_valueerror_in_closez*ShutdownTest.test_with_valueerror_in_closerVrlc�F�dt_|jdt�y)NFr��rr�rE�
IndexErrorrps rJ�.test_with_other_error_in_acquire_without_raisez;ShutdownTest.test_with_other_error_in_acquire_without_raises��"'����)�)�)�Z�@rlc�F�dt_|jdt�y)NFr	rZrps rJ�,test_with_other_error_in_flush_without_raisez9ShutdownTest.test_with_other_error_in_flush_without_raise���"'����)�)�'�:�>rlc�F�dt_|jdt�y)NFrMrZrps rJ�,test_with_other_error_in_close_without_raisez9ShutdownTest.test_with_other_error_in_close_without_raise"r_rlc�f�dt_|jt|jdt�y)NTr��rr�r?r[rErps rJ�+test_with_other_error_in_acquire_with_raisez8ShutdownTest.test_with_other_error_in_acquire_with_raise&s'��"&������*�d�&G�&G�#�Z�	1rlc�f�dt_|jt|jdt�y)NTr	rcrps rJ�)test_with_other_error_in_flush_with_raisez6ShutdownTest.test_with_other_error_in_flush_with_raise+�'��"&������*�d�&G�&G�!�:�	/rlc�f�dt_|jt|jdt�y)NTrMrcrps rJ�)test_with_other_error_in_close_with_raisez6ShutdownTest.test_with_other_error_in_close_with_raise0rgrl)rsrtrurKr=rCrErIrLrPrSrUrXr\r^rardrfrir�r�s@rJr8r8�sY���-�O��
0� 9�>�<�<�A�?�?�A�?�?�1�
/�
/rlr8c�d�eZdZ	d�Zdd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zy)�ModuleLevelMiscTestc���tjjj}|j	|d�|jtj|�tjd�|j	tjjjd�|j
ttjd�Gd�d�}|j
ttj|��tjd�tj�|j	tjjjtj�y)Nr�S�
doesnotexistsc��eZdZy)�;ModuleLevelMiscTest.test_disable.<locals>._NotAnIntOrStringNr�rvrlrJ�_NotAnIntOrStringrpE���rlrq�WARN)
rr�r!rQr\r�r?rarLr})rF�old_disablerqs   rJ�test_disablez ModuleLevelMiscTest.test_disable:s����l�l�*�*�2�2������a�(��������5������������-�-�5�5�r�:����*�g�o�o��G�	�	�	
���)�W�_�_�6G�6I�J������	����������-�-�5�5�w�7G�7G�HrlNc�4��g�tj|td�fd��t�}tjj|�t
t|�}|�||d|�n	|d|�|jt|j�d�|jd}|j|j�d|z�|�|nt
t|j��}|j|j|�|j�g�y)N�basicConfigc�*���j||f�Sr�rE)rk�kwr/s  �rJ�<lambda>z/ModuleLevelMiscTest._test_log.<locals>.<lambda>Ts���v�}�}�a��W�'=rlztest me: %rrnr)
rrrrr�rDr/r\r]r�
getMessage�upperr�)rFrgr��	recording�
log_methodr��expected_levelr/s       @rJ�	_test_logzModuleLevelMiscTest._test_logQs�������
�
�d�G�]�=�	?�%�&�	������	�*��W�f�-�
����u�m�Y�7��}�i�0�����Y�.�.�/��3��"�"�1�%������*�*�,�m�i�.G�H�"'�"3����&�,�,�.�9Y���������8�	
�����$rlc�D�|jdtj�y�Nr�)r�rrrps rJ�test_logzModuleLevelMiscTest.test_logis�����u�g�m�m�,rlc�&�|jd�y�Nr��r�rps rJ�
test_debugzModuleLevelMiscTest.test_debugl������w�rlc�&�|jd�y�Nr�r�rps rJ�	test_infozModuleLevelMiscTest.test_infoo������v�rlc�&�|jd�y�Nr�r�rps rJ�test_warningz ModuleLevelMiscTest.test_warningr������y�!rlc�&�|jd�y�Nr�r�rps rJ�
test_errorzModuleLevelMiscTest.test_errorur�rlc�&�|jd�y�Nr�r�rps rJ�
test_criticalz!ModuleLevelMiscTest.test_criticalx������z�"rlc��|jttjt�Gd�dtj
�}tj|�|j
tj�|�tjtj
�|j
tj�tj
�y)Nc��eZdZy)�;ModuleLevelMiscTest.test_set_logger_class.<locals>.MyLoggerNr�rvrlrJrJr�~rrrlrJ)r?rLrrMr�rKr\�getLoggerClass)rFrJs  rJ�test_set_logger_classz)ModuleLevelMiscTest.test_set_logger_class{s������)�W�%;�%;�V�D�	�w�~�~�	�	���x�(�����/�/�1�8�<����w�~�~�.�����/�/�1�7�>�>�Brlc����g�G�fd�dtj��}tj|�tjd�}|j	�dg�tj�}tj|�}|j|�	|jtj�|jd�|j	|j�j�d�|jd�|jd�|jtj �|jd�|j	|j�d�|j#|�|j%�tjtj&�y#|j#|�|j%�tjtj&�wxYw)Nc�<���eZdZdejf��fd�	Z�xZS)�@ModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLoggerrJc�H��t�|�||��jd�y)N�initialized)r�r�rb)rFrHr�r�r�s   ��rJr�zIModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLogger.__init__�s����� ��u�-����}�-rl)rsrtrurr�r�r�)r�r�s@�rJrJr��s���$.�g�n�n�
.�
.rlrJ�just_some_loggerr��hellorr)rr�rMr r\r6r7r;rDr9r:r�rZr�truncater�r�rNrMrK)rFrJrr8rTr�s     @rJ�test_subclass_logger_cachez.ModuleLevelMiscTest.test_subclass_logger_cache�sZ�����	.�w�-�-�/�	.�
	���x�(��"�"�#5�6������=�/�2�������!�!�&�)�����!��	3��O�O�G�M�M�*��L�L��!����V�_�_�.�4�4�6��@��O�O�A���K�K��N��O�O�G�L�L�)��L�L��!����V�_�_�.��3�� � ��#�
�G�G�I��"�"�7�>�>�2��
� � ��#�
�G�G�I��"�"�7�>�>�2�s�CF0�0AG6c��tjd�}td|�\}}}|j�}|j	d|�|j	d|�y)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)r�r�rr�r��rF�code�rc�out�errs     rJ�test_logging_at_shutdownz,ModuleLevelMiscTest.test_logging_at_shutdown�sR����� �
��(��d�3���C���j�j�l���
�
�,�c�2��
�
�.��4rlc�N�tj}|jtj|�t	j
d|�d��}t
d|�t|d��5}|j|j�j�d�ddd�y#1swYyxYw)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
        r�rHr�zERROR:root:log in __del__)r�TESTFNr�rTr�r�rr�r\rcr�)rFrkr��fps    rJ�test_logging_at_shutdown_openz1ModuleLevelMiscTest.test_logging_at_shutdown_open�s����#�#�����	�(�(�(�3����$*�+3��6	� �
��&	��t�$�
�(�W�
-�����R�W�W�Y�-�-�/�1L�M�.�
-�
-�s�#/B�B$c��tjd�}td|�\}}}|j�}|j	d|�|j|d�y)Nz�
            import logging

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

            rec()
        r�z#Cannot recover from stack overflow.rn)r�r�rr�rfr\r�s     rJ�test_recursion_errorz(ModuleLevelMiscTest.test_recursion_error�sU����� �
��-�T�4�8���C���j�j�l�����>��D�����Q�rlc��tj�}|jtj|�|j	tj|�tj�}|j	||�|j||�yr�)r�getLevelNamesMappingr\r*�assertIsNot)rF�mapping�new_mappings   rJ�test_get_level_names_mappingz0ModuleLevelMiscTest.test_get_level_names_mapping�sj���.�.�0������-�-�w�7�����-�-�w�7��2�2�4������+�.�����+�.rlr�)rsrtrurur�r�r�r�r�r�r�r�r�r�r�r�r�rvrlrJrkrk6sN��3�I�.%�0-� ��"� �#�
C�3�>5�&N�> � /rlrkc��eZdZd�Zd�Zed
d��Zd�Zd�Zd�Z	e
j�d��Ze
j�d	��Z
y)�
LogRecordTestc���tji�}t|�}|j|j	d��|j|jd��y)Nz<LogRecord: �>)rr�rtrErr_)rFr�rjs   rJ�test_str_repzLogRecordTest.test_str_rep�sD���!�!�"�%����F��������^�4�5�����
�
�3��(rlc�|�t�}tj�}|j|�ddi}tjd|�|j|jdj|�|j|jdjd�|j|�|j�y)N�less�morezless is %(less)srzless is more)rrr rDr�r�rr4r\r�rNrM)rFrTr�r�s    rJ�
test_dict_argzLogRecordTest.test_dict_arg�s�����������	���Q��
�f������*�A�.��
�
�a�i�i��l�'�'��+�������1��-�-�~�>�	�����	���	rlNc���tj}|t_	ddl}|j�j}tj
dd|��i�}t
jtjdd�5tj
dd|��i�}ddd�||jjd�}|t_|r|j|�y|S#1swY�DxYw#|t_wxYw)Nrr�msg1_r�msg2_)�processName�r1.processName�r2.processName)r�logMultiprocessingr�current_processrHr�r�	swap_itemrR�modulesr�r})	r�r�r2�prev_logMultiprocessingr/rH�r1�r2�resultss	         rJ�_extract_logrecord_process_namez-LogRecordTest._extract_logrecord_process_names���")�"<�"<��%7��"�	A�(��%�%�'�,�,�D��&�&���s�e�}�'=�>�B��"�"�3�;�;�0A�4�H��*�*�E�U�3�%�=�+A�B��I�)-�)+���)+����G�
*A�G�&���I�I�g���N�I�H��*A�G�&�s$�AC$�:C�"C$�C!�C$�$
C1c��tj�dtjv}	|j	t
jd�d}tji�}|j	|jd�|jd|�}|j	d|d�|j	d|d�|j	d|d�ddl
}|j�\}}|j|jd	||f�
�}|j�|j�}|jd|d�|j	|d|d�|j	d|d�|j!�|rddl
}yy#|rddl
}wwxYw)NrT�MainProcessrnr�r�r�rr�r�)rr�rRr�r\rr�r�r�r�r�Pipe�Processr�r,�assertNotEqualr�)	rF�multiprocessing_imported�LOG_MULTI_PROCESSINGr�r�r�parent_conn�
child_connr�s	         rJ�test_multiprocessingz"LogRecordTest.test_multiprocessingsz���:�:�<�#4����#C� � 	'����W�7�7��>�#'� ��%�%�b�)�A����Q�]�]�M�:��:�:�1�>R�S�G����]�G�M�,B�C����]�G�4D�,E�F����]�G�4D�,E�F�
#�&:�o�&:�&:�&<�#�K��'��'�'��;�;��-�z�;��A�
�G�G�I�!�&�&�(�G����
�w�}�/E�F����W�]�3�W�=M�5N�O����]�G�4D�,E�F�
�F�F�H�(�&�(��'�&�(�s�EE?�?	Fc��|j}|j}tji�}||j�||j
�||j�||j�||j�tj}tj}tj}tj}	dt_	dt_
dt_dt_tji�}||j�||j
�||j�||j�||j�|t_	|t_
|t_|t_y#|t_	|t_
|t_|t_wxYw)NF)
r�r�rr�r�
threadName�processr��taskName�
logThreads�logProcessesr��logAsyncioTasks)rF�NONE�NOT_NONEr��log_threads�
log_processes�log_multiprocessing�log_asyncio_taskss        rJ�
test_optionalzLogRecordTest.test_optionalAsE��� � ���'�'���!�!�"�%�����������������������Q�Z�Z���(�(���,�,�
�%�8�8��#�3�3��	8�!&�G��#(�G� �).�G�&�&+�G�#��%�%�b�)�A�����N����������O�����������!,�G��#0�G� �)<�G�&�&7�G�#��"-�G��#0�G� �)<�G�&�&7�G�#�s
�	BF�.F?c��ZK�tji�}||j�y�wr�)rr�r�)rF�	assertionr�s   rJ�_make_record_asyncz LogRecordTest._make_record_asyncas"�����!�!�"�%���!�*�*��s�)+c�~�	|j}tj�5}dt_|j||j��dt_|j||j��ddd�tjd�y#1swY�xYw#tjd�wxYw)NTF)	r��asyncio�Runnerrr��runr�r��set_event_loop_policy�rF�make_record�runners   rJ�#test_taskName_with_asyncio_importedz1LogRecordTest.test_taskName_with_asyncio_importedes���	0��1�1�K����!�V�*.��'��
�
�;�t�';�';�<�=�*/��'��
�
�;�t�'8�'8�9�:�	"�
�)�)�$�/�
"�!��
�)�)�$�/�s#� B%�AB�;B%�B"�B%�%B<c���	|j}tj�5}tjt
jdd�5dt_|j||j��dt_|j||j��ddd�ddd�tjd�y#1swY�'xYw#1swY�+xYw#tjd�wxYw)Nr�TF)r�r�r�rr�rRr�rr�r�r�r�r�s   rJ�&test_taskName_without_asyncio_importedz4LogRecordTest.test_taskName_without_asyncio_importedqs���	0��1�1�K����!�V�W�->�->�s�{�{�I�W[�-\�*.��'��
�
�;�t�'8�'8�9�:�*/��'��
�
�;�t�'8�'8�9�:�	.]�!�
�)�)�$�/�
.]�-\��!�!��
�)�)�$�/�s;� C�&C�AC�!C�)C�C	�C�C�C�C6r�)rsrtrur�r�r>r�r�r�r�rr:r�r�rvrlrJr�r��so��)�	�����0#'�J8�@�%�W�$�$�&�	0�'�	0�%�W�$�$�&�	0�'�	0rlr�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�Zej0�d��Zdd�Zd�Zd�Zd�Zd�Zd�Zd�Z �xZ!S)�BasicConfigTestc�|��tt|��tjj
|_tjj�|_tjdd|_
tjj|_|j|j�gtj_yr�)r�r�rKrr�rBr$r%r&r'r(r�r5r��cleanupr�s �rJrKzBasicConfigTest.setUp�sy���
�o�t�*�,����-�-��
�%�/�/�4�4�6���")�"6�"6�q�"9���&-�l�l�&8�&8��#�������%� "����rlc����tjjddD]1}tjj|�|j	��3t
t|��yr�)rr�rBrNrMr�r�rU)rFrTr�s  �rJrUzBasicConfigTest.tearDown�sF������&�&�q�)�A��L�L�&�&�q�)�
�G�G�I�*�	�o�t�-�/rlc�h�ttjd|j�tjj�tjj
|j�|jtjddtjj|j�y)NrB)r,rr�rBr$rOrPr&r(r'r9r5rps rJr�zBasicConfigTest.cleanup�sp������j�$�-�-�8������!���� � ��!4�!4�5�"&�"9�"9����Q�������d�9�9�:rlc���tj�|jttjj
�d�tjj
d}|j
|tj�|j|jtj�|j}|j|jjtj�|j|j �|j
|jtj"�|jtjj$|j&�y)Nrnr)rrwr\r]r�rBr�r;r8rRr�r�r�r��BASIC_FORMATr�r	�PercentStyler�r5)rFr�r�s   rJ�test_no_kwargszBasicConfigTest.test_no_kwargs�s�������	
����W�\�\�2�2�3�Q�7��,�,�'�'��*�����g�w�'<�'<�=����������4��%�%�	�����)�)�.�.��0D�0D�E����)�+�+�,����i�.�.��0D�0D�E�	
������+�+�T�-H�-H�Irlc�d�tj�5}tjtj
d��tjd�tj
jd�|j|j�j�d�ddd�y#1swYyxYw)Nr�r8r�Log an errorr�ERROR:root:Log an error�rr�rrwrRr�r�r�r\rZrrCs  rJ�test_strformatstylez#BasicConfigTest.test_strformatstyle��o��
�
$�
$�
&�&����s�z�z��=��M�M�.�)��J�J�O�O�A�����V�_�_�.�4�4�6�)�
+�	'�
&�
&���BB&�&B/c�d�tj�5}tjtj
d��tjd�tj
jd�|j|j�j�d�ddd�y#1swYyxYw)Nr'rrrrrrCs  rJ�test_stringtemplatestylez(BasicConfigTest.test_stringtemplatestyle�rr	c�X�d�}tjdd��|jttjj
�d�tjj
d}|j
|tj�tjddd��}|j|jj|jj�|j|jj|jj�|j|||d�y)	Nc�n�|j�|j�tj|�yr�r��r/�h2r7s   rJr�z.BasicConfigTest.test_filename.<locals>.cleanup�����H�H�J��H�H�J��I�I�b�Mrl�test.logrH)rkrJrnrrkr�)rrwr\r]r�rBr�rmr8�moderHr��rFr�r�rhs    rJ�
test_filenamezBasicConfigTest.test_filename�s���	�
	���Z�'�B�����W�\�\�2�2�3�Q�7��,�,�'�'��*�����g�w�':�':�;��&�&�z�3��I��������,�,�h�o�o�.B�.B�C�������,�,�h�o�o�.B�.B�C������(�J�?rlc�:�d�}tjdd��tjjd}tjdd�}|j|jj|jj�|j|||d�y)Nc�n�|j�|j�tj|�yr�r�rs   rJr�z.BasicConfigTest.test_filemode.<locals>.cleanup�rrlr�wb�rk�filemoder)	rrwr�rBrmr\r8rr�rs    rJ�
test_filemodezBasicConfigTest.test_filemode�su��	�
	���Z�$�?��,�,�'�'��*���&�&�z�4�8��������,�,�h�o�o�.B�.B�C������(�J�?rlc��tj�}|j|j�t	j
|��|j
ttjj�d�tjjd}|j|tj�|j
|j|�y)Nr�rnr)
r6r7r�rMrrwr\r]r�rBr�r;r8)rFr8r�s   rJ�test_streamzBasicConfigTest.test_stream�s��������������%����6�*�����W�\�\�2�2�3�Q�7��,�,�'�'��*�����g�w�'<�'<�=��������0rlc���tjd��tjjdj}|j|jjd�y)Nz%(asctime)s - %(message)s)r"r)rrwr�rBr�r\r�r��rFr�s  rJ�test_formatzBasicConfigTest.test_format�sH�����#>�?��L�L�)�)�!�,�6�6�	�����)�)�.�.�0K�Lrlc��tjd��tjjdj}|j|jd�y)Nr�)r	r)rrwr�rBr�r\r	rs  rJ�test_datefmtzBasicConfigTest.test_datefmt�s@�����E�*��L�L�)�)�!�,�6�6�	�����*�*�E�2rlc���tjd��tjjdj}|j|jtj�y)Nr'r�r)rrwr�rBr�r�r�r�rs  rJ�
test_stylezBasicConfigTest.test_style�sF�����#�&��L�L�)�)�!�,�6�6�	����i�.�.��0K�0K�Lrlc��tjj}|jtjj|�tj
d��|j
tjjd�tj
d��|j
tjjd�y)N�9)r��:)rr�r�r�r9rwr\)rF�	old_levels  rJ�
test_levelzBasicConfigTest.test_level�sy���L�L�&�&�	�������-�-�y�9����"�%�������+�+�R�0����"�%�������+�+�R�0rlc��|j}tj�g}tj}|t
tjd|��|t
tjd|��|t
tj||��|t
tjtj��tjdd��y)Nr)rkr8)rkrB)r8rB)�loglevelrkr)r?rr;rRr�rarwr�)rFr?rBr8s    rJ�test_incompatiblez!BasicConfigTest.test_incompatibles����(�(���)�)�+�,�������Z��!4�!4�z�=C�	E��Z��!4�!4�z�?G�	I��Z��!4�!4�V�?G�	I�	�Z��!4�!4�w�|�|�L����T�C�8rlc�B�tj�tjtj�tj�g}tj�}|dj|�tj|��|j|dtjjd�|j|dtjjd�|j|dtjjd�|j|dj�|j|dj�|j|dj|�|j|dj|dj�y)Nr�)rBrrn)rr;rRr�r=r@rwr�r�rBr�r�)rFrBr�s   rJ�
test_handlerszBasicConfigTest.test_handlerss0���!�!�#��!�!�#�*�*�-��!�!�#�
��

�������� � ��#����X�.��
�
�h�q�k�7�<�<�#8�#8��#;�<��
�
�h�q�k�7�<�<�#8�#8��#;�<��
�
�h�q�k�7�<�<�#8�#8��#;�<����X�a�[�2�2�3����X�a�[�2�2�3��
�
�h�q�k�+�+�Q�/��
�
�h�q�k�+�+�X�a�[�-B�-B�Crlc���tj�}tj�}tj|�g}tj|�g}tjtj
|��tjd�tjd�tjd�|jttjj�d�tjtj|d��tjd�tjd�tjd�|jttjj�d�|j|j�j�d�|j|j�j�d	�y)
Nrr�r�r�rnT)r�rB�forcezWARNING:root:warnz WARNING:root:warn
INFO:root:info)r6r7rr;rwr�r�r�r�r\r]r�rBr�rZr)rF�
old_string_io�
new_string_io�old_handlers�new_handlerss     rJ�
test_forcezBasicConfigTest.test_force"s;�����
�
����
�
��-�-�m�<�=���-�-�m�<�=�����'�/�/�L�I���������V���
�
�g������W�\�\�2�2�3�Q�7����'�,�,��"&�	(���������V���
�
�g������W�\�\�2�2�3�Q�7�����/�/�1�7�7�9�,�	.�����/�/�1�7�7�9�<�	>rlc��	d}tjd|ddtj��|jt	tj
j�d�tj
jd}|j|tj�|j|j|�tjd�|j�tdd�	�5}|j�j�}ddd�tj d�|jd�y#1swY�1xYw#j�tdd�	�5}|j�j�}ddd�n#1swYnxYwtj d�|jd�wxYw)
NrHrr��%(message)s�rkrJ�errorsr"r�rnr�.The Øresund Bridge joins Copenhagen to Malmör��rrwr:r\r]r�rBr�rmrJr�rMr�rcrr3r��rFrJr�r�r�s     rJ�
test_encodingzBasicConfigTest.test_encoding7sE��	O��H�����h�'/�'4�G�M�M�
K�
���S����!6�!6�7��;��l�l�+�+�A�.�G��!�!�'�7�+>�+>�?����W�-�-�x�8��M�M�J�K��M�M�O��j�7�3�q��v�v�x�~�~�'��4��I�I�j�!����T�M�
O�4�3��
�M�M�O��j�7�3�q��v�v�x�~�~�'��4�3�3���I�I�j�!����T�M�
O��0�CE�*D9�9E�F?�#F�	F?�F�/F?c��	d}tjd|ddtj��|jt	tj
j�d�tj
jd}|j|tj�|j|j|�tjd�|j�tdd	�
�5}|j�j�}ddd�tj d�|jd�y#1swY�1xYw#j�tdd	�
�5}|j�j�}ddd�n#1swYnxYwtj d�|jd�wxYw)Nrr�ignorer6r7rnrr9rHr�z*The resund Bridge joins Copenhagen to Malmr:r;s     rJ�test_encoding_errorsz$BasicConfigTest.test_encoding_errorsKs?��	Q��H�����h�'/�'4�G�M�M�
K�
���S����!6�!6�7��;��l�l�+�+�A�.�G��!�!�'�7�+>�+>�?����W�-�-�x�8��M�M�J�K��M�M�O��j�7�3�q��v�v�x�~�~�'��4��I�I�j�!����T�#O�P�4�3��
�M�M�O��j�7�3�q��v�v�x�~�~�'��4�3�3���I�I�j�!����T�#O�P�r=c��	d}tjd|dtj��|jt	tj
j�d�tj
jd}|j|tj�|j|j|�|j|jd�tjd�|j�tdd	�
�5}|j�j�}ddd�t!j"d�|jd�y#1swY�1xYw#j�tdd	�
�5}|j�j�}ddd�n#1swYnxYwt!j"d�|jd�wxYw)Nrrr6)rkrJr"r�rnr�backslashreplaceu<😂: ☃️: The Øresund Bridge joins Copenhagen to MalmörHr�zL\U0001f602: \u2603\ufe0f: The \xd8resund Bridge joins Copenhagen to Malm\xf6)rrwr:r\r]r�rBr�rmrJr8r�rMr�rcrr3r�r;s     rJ�test_encoding_errors_defaultz,BasicConfigTest.test_encoding_errors_default^s]��	K��H�����h�'4�G�M�M�
K�
���S����!6�!6�7��;��l�l�+�+�A�.�G��!�!�'�7�+>�+>�?����W�-�-�x�8����W�^�^�-?�@��M�M�X�Y��M�M�O��j�7�3�q��v�v�x�~�~�'��4��I�I�j�!����T�$J�
K�4�3��
�M�M�O��j�7�3�q��v�v�x�~�~�'��4�3�3���I�I�j�!����T�$J�
K�s0�C&E �E�E� G�>F&�	G�&F/�+/Gc�$��	d}tjd|ddtj��|jt	tj
j�d�tj
jd}|j|tj�|j|j|�|j|j�g��fd�}||_tjd�|j��|jd	�d�|j!�t#dd
��5}|j%�j'�}ddd�t)j*d�|jd�y#1swY�1xYw#j!�t#dd
��5}|j%�j'�}ddd�n#1swYnxYwt)j*d�|jd�wxYw)
Nrrr6r7rnrc�^���jttj���yr�)rbrtrRr�)r�r�s �rJ�dummy_handle_errorzEBasicConfigTest.test_encoding_errors_none.<locals>.dummy_handle_error�s������s�3�=�=�?�3�4rlr9z:'ascii' codec can't encode character '\xd8' in position 4:rHr�r)rrwr:r\r]r�rBr�rmrJr�r8r�r�rEr�rMr�rcrr3r�)rFrJr�rFr�r�r�s      @rJ�test_encoding_errors_nonez)BasicConfigTest.test_encoding_errors_noners����	(��H�����h�'+�'4�G�M�M�
K�
���S����!6�!6�7��;��l�l�+�+�A�.�G��!�!�'�7�+>�+>�?����W�-�-�x�8����g�n�n�-��G�
5�#5�G���M�M�J�K��O�O�G�$��M�M�=�>E�a�j�
J�
�M�M�O��j�7�3�q��v�v�x�~�~�'��4��I�I�j�!����T�3�'�	4�3��
�M�M�O��j�7�3�q��v�v�x�~�~�'��4�3�3���I�I�j�!����T�3�'�s0�DF�:F	�	F�H�3G�	H�G$� /Hc��d�}d}tdd�}|jtj|�	d}t	j
|d|tjd��|jttjj�d�tjjd	}|j|tj�tjd
��5}d
t_|j!|��ddd�t#|d��5}|j%�j'�}ddd�|j)d
�tj*d�|r|j-�yy#1swY�xxYw#1swY�PxYw#tj*d�|r|j-�wwxYw)Nc��6K�tjd�y�w)Nzhello world)rr�rvrlrJr�z5BasicConfigTest.test_log_taskName.<locals>.log_record�s�����O�O�M�*�s�r�ztest-logging-taskname-rHr�z%(taskName)s - %(message)s)rkr8rJr�r"rnrT)r�r�zTask-\d+ - hello world)r8r�r3r�rrwr�r\r]r�rBr�rmr�r�r�r�r�rcr�assertRegexr�rM)rFr�r��log_filenamerJr�r�r�s        rJ�test_log_taskNamez!BasicConfigTest.test_log_taskName�sS��	+���%�f�.F�G������	�	�<�0�	 ��H�����h�)1����'C�
E�
���S����!6�!6�7��;��l�l�+�+�A�.�G��!�!�'�7�+>�+>�?����d�+�v�*.��'��
�
�:�<�(�,��l�W�5���v�v�x�~�~�'��6����T�#<�=��)�)�$�/���
�
���,�+��6�5��
�)�)�$�/���
�
���s<�B0F�#"E<�F�F�9F�<F�F�F�
F�*F>c������g�tj����fd�}tj�td|�t	t|�}|�
||d�n|d��j�difg�y)Nc�����tjj}tjjd��j	tjj|��j||f�y)N�d)rr�r�r9r�rb)rkryr'r/�old_basic_configrFs   ���rJ�my_basic_configz2BasicConfigTest._test_log.<locals>.my_basic_config�sR��������*�*�I��L�L�!�!�#�&��O�O�G�L�L�1�1�9�=��M�M�1�b�'�"rlrwztest merv)rrwrrr/r\)rFrgr�rQr~r/rPs`    @@rJr�zBasicConfigTest._test_log�si�����"�.�.��	#�	�
�
�d�G�]�O�D��W�f�-�
����u�i�(��y�!�	
����2�r�(��,rlc�D�|jdtj�yr�)r�rr�rps rJr�zBasicConfigTest.test_log�s�����u�g�o�o�.rlc�&�|jd�yr�r�rps rJr�zBasicConfigTest.test_debug�r�rlc�&�|jd�yr�r�rps rJr�zBasicConfigTest.test_info�r�rlc�&�|jd�yr�r�rps rJr�zBasicConfigTest.test_warning�r�rlc�&�|jd�yr�r�rps rJr�zBasicConfigTest.test_error�r�rlc�&�|jd�yr�r�rps rJr�zBasicConfigTest.test_critical�r�rlr�)"rsrtrurKrUr�rrrrrrrr!r#r(r+r-r4r<r@rCrGrr:rLr�r�r�r�r�r�r�r�r�s@rJr�r�~s����-�#�0�;�J�(+�+�@�$@�1�M�3�M�1�
9�D�">�*O�(Q�&K�((�@%�W�$�$�&� �'� �:-�./� ��"� �#rlr�c�`��eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Z�xZS)
�LoggerAdapterTestc�D���tt|��tjdd�t�|_tj|_|jj|j�|j|jj|j�|j|jj��fd�}|j|�|jtj�tj|jd��|_y)Nc�,���tjddyr�)rr')�old_handler_lists�rJr�z(LoggerAdapterTest.setUp.<locals>.cleanup�s���&6�G� � ��#rl�rrG)r�rYrKrr'rr}r�rrDr�rNrMrr��adapter)rFr�r\r�s  @�rJrKzLoggerAdapterTest.setUp�s����
���,�.�"�/�/��2��)�+����l�l��������t�~�~�.�������1�1�4�>�>�B�������,�,�-�	7�	
���� �����(�(�)��,�,�D�K�K�t�L��rlc�f�d}d}	ddz|j	t|jj�d�|jjd}|j	|jtj�|j	|j|�|j	|j|jf�|j	|j|j||jf�y#t$r3}|}|jj||j�Yd}~�� d}~wwxYw�Nztesting exception: %rrnr)r�r^r�r}r\r]rr�rrrr4rFr��
__traceback__�rFrr�r*r�s     rJ�test_exceptionz LoggerAdapterTest.test_exception�s���%����	8�
��E�
	
����T�^�^�3�3�4�a�8����'�'��*�����������7�������S�)�������t�~�~�&7�8��������-�-��c�.?�.?�@�	B��!�	8��C��L�L�"�"�3����7�7��	8���C4�4	D0�=(D+�+D0c�p�	ddz|jjd��|jt	|j
j�d�|j
jd}|j|j|j||jf�y#t$r}|}Yd}~��d}~wwxYw)Nrnrz
exc_info testr�)
r�r^r�r\r]r}rrFr�ra)rFr*r�r�s    rJ�test_exception_excinfoz(LoggerAdapterTest.test_exception_excinfo�s���	�
��E�	
��������=�����T�^�^�3�3�4�a�8����'�'��*���������-�-��c�.?�.?�@�	B��!�	��C��	�s�B � 	B5�)B0�0B5c��d}|jj||j�|jt	|jj
�d�|jj
d}|j|jtj�|j|j|�|j|j|jf�|j|jd�y)Nzcritical test! %rrnrr�)r^r�r}r\r]rr�rr}rr4r�)rFrr�s   rJr�zLoggerAdapterTest.test_critical
s���!�������c�4�>�>�2�����T�^�^�3�3�4�a�8����'�'��*���������)9�)9�:�������S�)�������t�~�~�&7�8�������/�:rlc�b�|jjjj}d|jjj_|j	t
|jjjd|�|j
|jjd��y)N�!rQ� )r^rr!rQr�r,rY�isEnabledFor�rFrts  rJ�test_is_enabled_forz%LoggerAdapterTest.test_is_enabled_forsw���l�l�)�)�1�1�9�9��.0������#�#�+��������!4�!4�!<�!<�i�#�	%�������2�2�2�6�7rlc�f�|j|jj��|jjD]}|jj|��|j
|jj��|j
|jj��yr�)rEr^rArrBrNrYrvs  rJ�test_has_handlersz#LoggerAdapterTest.test_has_handlerssy��������0�0�2�3��{�{�+�+�G��K�K�%�%�g�.�,�	
������0�0�2�3�������1�1�3�4rlc��d}t|jd��}t|d��}d|_|jt	|�t	|��|jtj||j�|jt|jj�d�|jjd}|j|jtj�|j|jd|���|j|j|jf�|j|jd�|j}|j!|j|�|j!|jj|�t#�}	||_|j!|j|�|j!|j|�|j!|jj|�||_|j!|j|�|j!|j|�|j!|jj|�y#||_wxYw)NzAdapters can be nested, yo.r]�AdapterAdapterrnrzAdapter AdapterAdapter �test_nested)�
PrefixAdapterrr�r\r�r�rr}r}r]rr�rr4r�r!r�r�)rFrr^�adapter_adapterr��orig_manager�temp_managers       rJrrzLoggerAdapterTest.test_nested%s���+���t�{�{�$�?��'�w�d�C��!1�������g���_�(=�>����G�,�,�c�4�>�>�B�����T�^�^�3�3�4�a�8����'�'��*���������)9�)9�:�������'>�s�e�%D�E�������t�~�~�&7�8�������-�8�&�.�.���
�
�g�o�o�|�4��
�
�d�k�k�)�)�<�8��x��	3�&2�O�#��M�M�/�1�1�<�@��M�M�'�/�/�<�8��M�M�$�+�+�-�-�|�<�&2�O�#��
�
�o�-�-�|�<��
�
�g�o�o�|�4��
�
�d�k�k�)�)�<�8��'3�O�#�s
�*A%I5�5	I>c���|jj}t|j�}|j	dd�|jt
|dj�d�|j|djd�|jtjdd�|jt
|dj�d�|j|djd�y)N�
Hello, {}!�worldrLz
Hello, world!�test_styled_adapter�Goodbye {}.zGoodbye world.)r}r�StyleAdapterrr�r\rtrr�r�rr�)rFrr^s   rJrzz%LoggerAdapterTest.test_styled_adapterAs����.�.�(�(���t�{�{�+������g�.�����W�R�[�_�_�-��?�������-�-�/D�E����G�O�O�]�G�<�����W�R�[�_�_�-�/?�@�������-�-�/D�Erlc��|jj}t|j�}d|_t|�}|j
dd�|jt|dj�d�|j|djd�|jtjdd�|jt|dj�d�|j|djd�y)	Nz{}rxryrLz{} Hello, world!�test_nested_styled_adapterr{z{} Goodbye world.)r}rrsrr�r|r�r\rtrr�r�rr�)rFrr^�adapter2s    rJr~z,LoggerAdapterTest.test_nested_styled_adapterLs����.�.�(�(������,�������(������w�/�����W�R�[�_�_�-�/A�B�������-�-�/K�L����W�_�_�m�W�=�����W�R�[�_�_�-�/B�C�������-�-�/K�Lrlc�������d�|jj���fd���fd���fd�}|jj}|�|j	|dj
d�|dj}�dz
�|�|j	|dj
d�|j|dj|�|dj}�dz
�|�|j	|dj
d�|j|dj|�|dj}�dz
�|�|j	|dj
d	�|j|dj|�y)
Nrnc����d���y�Nr���
stacklevelrv��	the_level�triggers��rJ�	innermostzELoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.innermost\�
����F�y�1rlc�����yr�rv�r�s�rJr3zALoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.inner_�����Krlc�����yr�rv�r3s�rJ�outerzALoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.outerb�����GrlrLr�r3r�� test_find_caller_with_stacklevel)r^r�r}rr\r�r�r�)rFr�rr�r3r�r�r�s    @@@@rJr�z2LoggerAdapterTest.test_find_caller_with_stacklevelXsJ����	��,�,�&�&��	2�	�	��.�.�(�(��
��������-�-�{�;����#�#���Q��	�
��������-�-�w�7����7�2�;�-�-�v�6����#�#���Q��	�
��������-�-�w�7����7�2�;�-�-�v�6����#�#���Q��	�
��������-�-�/Q�R����7�2�;�-�-�v�6rlc��tj|jddi��|_|jj	d�|jt
|jj�d�|jjd}|jt|d��|j|jd�y)Nr�r~r]zfoo should be herernr)rr�rr^r�r\r]r}rrErFr�r�s  rJ�test_extra_in_recordsz'LoggerAdapterTest.test_extra_in_recordsxs����,�,�D�K�K�49�3�<�A���	
�����2�3�����T�^�^�3�3�4�a�8����'�'��*��������.�/�������S�)rlc��|jjdddi��|jt|jj
�d�|jj
d}|j
t|d��y)Nzfoo should NOT be herer��nope)rGrnr)r^r�r\r]r}rrYrFr�s  rJ� test_extra_not_merged_by_defaultz2LoggerAdapterTest.test_extra_not_merged_by_default�sf�������6�u�f�o��N�����T�^�^�3�3�4�a�8����'�'��*��������/�0rl)rsrtrurKrcrfr�rmrorrrzr~r�r�r�r�r�s@rJrYrY�sE���M�"B�"B�	;�8�5�9�8	F�
M�7�@*�1rlrYc��eZdZdZd�Zy)rs�Adapterc�(�|j�d|��|fSr��r�)rFrr5s   rJr�zPrefixAdapter.process�s���+�+��a��u�%�v�-�-rlN)rsrtrur�r�rvrlrJrsrs�s��
�F�.rlrsc��eZdZd�Zd�Zy)�Messagec� �||_||_yr�)r�r4)rFr�r4s   rJr�zMessage.__init__�s�������	rlc�H�|jj|j�Sr�)r�r"r4rps rJ�__str__zMessage.__str__�s���t�x�x����	�	�*�*rlN)rsrtrur�r�rvrlrJr�r��s���+rlr�c��eZdZdd�d�Zy)r|rnr�c��|j|�rE|j||�\}}|jj|t	||�fi|�d|dzi��yy)Nr�rn)rkr�rr�r�)rFr�rr�r4r5s      rJr�zStyleAdapter.log�sY�����U�#��,�,�s�F�3�K�C���D�K�K�O�O�E�7�3��#5�
5��
5�'1�!�|�
5�$rlN)rsrtrur�rvrlrJr|r|�s
��34�5rlr|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�|_tjd��|_|jj|j�|j|jj|j�|j|jj�|jt
j�y)N�blah�rH)
r�r�rKrr}rrKrrDr�rNrMrr�s �rJrKzLoggerTest.setUp�s����
�j�$�%�'�)�+����n�n�&�1��������t�~�~�.�������1�1�4�>�>�B�������,�,�-�����(�(�)rlc��|jtd|jjd�|jtd|jjd�y)Nz,Level not an integer or a valid string: Nonez.Level not an integer or a valid string: (0, 0))rr)r�rLrr9rps rJ�test_set_invalid_levelz!LoggerTest.test_set_invalid_level�sJ���!�!��E��K�K� � �$�	(�	
�!�!��G��K�K� � �&�	*rlc�f�d}d}	ddz|j	t|jj�d�|jjd}|j	|jtj�|j	|j|�|j	|j|jf�|j	|j|j||jf�y#t$r3}|}|jj||j�Yd}~�� d}~wwxYwr`)r�rr�r}r\r]rr�rrrr4rFr�rarbs     rJrczLoggerTest.test_exception�s���%����	7�
��E�
	
����T�^�^�3�3�4�a�8����'�'��*�����������7�������S�)�������t�~�~�&7�8��������-�-��c�.?�.?�@�	B��!�	7��C��K�K�!�!�#�t�~�~�6�6��	7�rdc��tjtdd�5|jt|j
jdd�ddd�y#1swYyxYw)Nr�Tr��test message)r�	swap_attrrr?rLrr�rps rJ�!test_log_invalid_level_with_raisez,LoggerTest.test_log_invalid_level_with_raise�s>��
�
�
�w�(9�4�
@����i������$��O�A�
@�
@�s�-A�Ac��tjtdd�5|jj	dd�ddd�y#1swYyxYw)Nr�Fr�r�)rr�rrr�rps rJ�test_log_invalid_level_no_raisez*LoggerTest.test_log_invalid_level_no_raise�s4��
�
�
�w�(9�5�
A��K�K�O�O�D�.�1�B�
A�
A�s�A�Ac����g�tj|tjd�fd��|jjd��|j
t��d�|j
d�d�y)N�print_stackc�B���j|j��Sr�)rbrZ)r�r�r/s  �rJrzz=LoggerTest.test_find_caller_with_stack_info.<locals>.<lambda>�s���f�m�m�D�M�M�O�&DrlTr�rnrr)rrr�	tracebackr�
findCallerr\r])rFr/s @rJ� test_find_caller_with_stack_infoz+LoggerTest.test_find_caller_with_stack_info�sd������
�
�d�G�-�-�}�D�	F�	
�����$��/�����V��a�(����;�V�A�Y�Grlc������d�|jj���fd���fd���fd�}|jj}|�|j	|dj
d�|dj}�dz
�|�|j	|dj
d�|j|dj|�|dj}�dz
�|�|j	|dj
d�|j|dj|�|dj}tj�}|j|j�tj�|�|j	|dj
d�|j|j�|jj��dz
�|�|j	|dj
d	�|j|dj|�y)
Nrnc����d���yr�rvr�s��rJr�z>LoggerTest.test_find_caller_with_stacklevel.<locals>.innermost�r�rlc�����yr�rvr�s�rJr3z:LoggerTest.test_find_caller_with_stacklevel.<locals>.inner�r�rlc�����yr�rvr�s�rJr�z:LoggerTest.test_find_caller_with_stacklevel.<locals>.outer�r�rlrLr�r3r�r�)rr�r}rr\r�r�r�rr rDrN)	rFr�rr�r3r3r�r�r�s	     @@@@rJr�z+LoggerTest.test_find_caller_with_stacklevel�s�����	��+�+�%�%��	2�	�	��.�.�(�(��
��������-�-�{�;����#�#���Q��	�
��������-�-�w�7����7�2�;�-�-�v�6����#�#���Q��	�
��������-�-�w�7����7�2�;�-�-�v�6����#�#���'�'�)�����t�~�~�.��/�/��
��������-�-�w�7��!�!�$�.�.�1��+�+�%�%���Q��	�
��������-�-�/Q�R����7�2�;�-�-�v�6rlc�(�d}d}dx}x}x}x}x}x}}	tj|||||||||	�	}
dt|
jj	��zD]:}|di}|jt|jj|||||||||	���<y)N�	my record�
)r�r��
some value�rG�sinfo)	r�_logRecordFactoryra�__dict__�keysr?r�r�
makeRecord)
rFrHr�r7�lnorr4rFr�r��rvr�rGs
             rJ�%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�,E�E�C��,�'�E����h����(>�(>��e� �#�s�D�(�$)��
�
8�Frlc��d}d}dx}x}x}x}x}x}}	ddi}
|jj||||||||
|	��	}|jd|j�y)Nr�r��	valid_keyr�r�)rr�r�r�)rFrHr�r7r�rr4rFr�r�rGr�s            rJ�(test_make_record_with_extra_no_overwritez3LoggerTest.test_make_record_with_extra_no_overwritesx������:>�>��>�S�>�3�>��>��>�4�%��l�+�����'�'��e�R��c�4�(0��U�(�L���
�
�k�6�?�?�3rlc��|j|jj��|jjD]}|jj	|��|j|jj��yr�)rErrArBrNrYrvs  rJrozLoggerTest.test_has_handlerss\��������/�/�1�2��{�{�+�+�G��K�K�%�%�g�.�,�������0�0�2�3rlc�z�tjd�}d|_|j|j	��y)Nz
blah.childF)rr rlrYrA)rF�child_loggers  rJ�test_has_handlers_no_propagatez)LoggerTest.test_has_handlers_no_propagates1���(�(��6��!&�������1�1�3�4rlc�&�|jjj}d|jj_|jt|jjd|�|j|jj
d��y)N�rQ�)rr!rQr�r,rYrkrls  rJrmzLoggerTest.test_is_enabled_for sb���k�k�)�)�1�1��&(������#��������!4�!4�i��M�������1�1�"�5�6rlc��|jj}|jjj}d|j_d|jj_|j	t
|jd|�|j	t
|jjd|�|j
|jjd��y)NTr�rrQr�)rrr!rQr�r,rYrk)rF�old_disabledrts   rJ�#test_is_enabled_for_disabled_loggerz.LoggerTest.test_is_enabled_for_disabled_logger&s����{�{�+�+���k�k�)�)�1�1��#�����&(������#��������j�,�G��������!4�!4�i��M�������1�1�"�5�6rlc��tj�}|j|tj�|j|tjd��|j|tjd��|j|tjd��|j|tjd�j�|j|tjd�j�|j|tjd�j�|j|tjd��|j|tjd�j�y)Nrr�r�rd�)rr r�r�rr�)rFr�s  rJ�test_root_logger_aliasesz#LoggerTest.test_root_logger_aliases2s��� � �"���
�
�d�G�L�L�)��
�
�d�G�-�-�d�3�4��
�
�d�G�-�-�b�1�2��
�
�d�G�-�-�f�5�6��
�
�d�G�-�-�e�4�9�9�:��
�
�d�G�-�-�i�8�=�=�>��
�
�d�G�-�-�e�4�;�;�<�����w�0�0��6�7�����w�0�0��;�B�B�Crlc��|jttjt�|jttjd�y)Nsfoo)r?rLrr �anyrps rJ�test_invalid_nameszLoggerTest.test_invalid_names?s2�����)�W�%6�%6��<����)�W�%6�%6��?rlc��ttjdz�D][}dD]T}tj|�}tj
||�}tj|�}|j||��V�]y)Nrn)rr�r�rdzbaz.bar)ryr/�HIGHEST_PROTOCOLrr r�r0r�)rF�protorHrrj�	unpickleds      rJ�
test_picklingzLoggerTest.test_picklingCsb���6�2�2�Q�6�7�E�A�� �*�*�4�0���L�L���/��"�L�L��O�	��
�
�i��0�	B�8rlc�n
�|j}tjd�}tjd�}|jtj�|j|j
�tj�|j|ji�|j|jtj��|j|jtj��|j|jtjdtjdi�|j|ji�|j|jtj��|j|ji�|j|jtj��|j|jtjdi�|jtj�|j|j
�tj�|j|ji�|j|jtj��|jtj�|j|j
�tj�|j|ji�|j|ji�|j|ji�|j|jtj��|j|jtj��|j|jtj��|j|jtj��|j|jtj��tj�|j|j
�tj�|j|ji�|j|ji�|j|ji�|j|jtj��|j|jtj��|j|jtj��y)NrWr[TF)r3rr r9rr\r4�_cacherErkrYr:r}r�rQ)rFr�r1r2s    rJ�test_cachingzLoggerTest.test_cachingKsz�������#�#�E�*���#�#�I�.��	
�
�
�g�m�m�$�����2�2�4�g�m�m�D��������,�	
����,�,�W�]�]�;�<�����-�-�g�m�m�<�=�������'�-�-��w�}�}�e�)T�U�������b�)�����,�,�W�]�]�;�<�	
������b�)�����)�)�'�-�-�8�9�������w�}�}�d�&;�<�	����)�)�*�����2�2�4�g�6F�6F�G��������,�	
����-�-�g�m�m�<�=�	������(�����2�2�4�g�6F�6F�G��������,��������,�������b�)�	
����-�-�g�m�m�<�=�����,�,�W�-=�-=�>�?�����-�-�g�m�m�<�=�����,�,�W�-=�-=�>�?�����)�)�'�-�-�8�9�	��������2�2�4�g�6F�6F�G��������,��������,�������b�)�	
����-�-�g�.>�.>�?�@�����-�-�g�.>�.>�?�@�����*�*�7�+;�+;�<�=rl)rsrtrurKr�rcr�r�r�r�r�r�ror�rmr�r�r�r�r�r�r�s@rJr�r��s^���*�*�B�"P�2�H�%7�N8�4�4�5�
7�
7�D�@�1�6>rlr�c�&�eZdZ	d�Zd�Zd�Zd�Zy)�BaseFileTestc�^�tj|�tdd�|_g|_y)Nr�ztest_logging-2-)rrKr8r7�rmfilesrps rJrKzBaseFileTest.setUp�s$�����t�� ��):�;�����rlc�
�|jD]}tj|��tjj	|j
�rtj|j
�tj|�yr�)r�r3rTrZr[r7rrU)rFr7s  rJrUzBaseFileTest.tearDown�sM���,�,�B��I�I�b�M��
�7�7�>�>�$�'�'�"��I�I�d�g�g�����$�rlc��	|jtjj|�d|z��|jj|�y)NzLog file %r does not exist�r)rEr3rZr[r�rb)rFrks  rJ�
assertLogFilezBaseFileTest.assertLogFile�s@��A���������x�0�8�8�C�	�	E������H�%rlc
�r�tjdtjdd|j�ddd�S)Nrvr�rn)rrr:rqrps rJ�next_reczBaseFileTest.next_rec�s5��� � ��g�m�m�S�!�!%�!2�!2�!4�d�D�$�H�	HrlN)rsrtrurKrUr�r�rvrlrJr�r��s��7��
 �&�Hrlr�c��eZdZd�Zd�Zy)�FileHandlerTestc�:�tj|j�tj|jdd��}|j|j�|jtjj|j��|jtji��|j|j�|jtjj|j��|j�y)NrHTrI)r3rTr7rrmr�r8rYrZr[rXr�r�rErM)rF�fhs  rJ�
test_delayzFileHandlerTest.test_delay�s���
�	�	�$�'�'��
�
 �
 ����7�$�
G�����"�)�)�$������������0�1�
�	�	�'�'�'��+�,����R�Y�Y�'���������t�w�w�/�0�
���
rlc��tj|j�tj|jdd��}|jtjd��|j|j��|j�|j|j��t|j�5}|j|j�j�d�ddd�y#1swYyxYw)NrHrj)rJrr6r~)r3rTr7rrmr@r=rAr�rMr�r\rcr)rFr�r�s   rJ�%test_emit_after_closing_in_write_modez5FileHandlerTest.test_emit_after_closing_in_write_mode�s���
�	�	�$�'�'��
�
 �
 ����7��
E��
����)�)�-�8�9�
����
�
�� �
���
�
����
�
�� �
�$�'�'�]�b����R�W�W�Y�_�_�.��4��]�]�s�	/D�D
N)rsrtrur�r�rvrlrJr�r��s���	5rlr�c��eZdZd�Zej
ejd�d��Zd�Z	d�Z
dd�Zd�Zd�Z
d	�Zej�d
��Zy)
�RotatingFileHandlerTestc��tjj|jdd��}|j	|jd��|j
�tjj|jdd��}|j	|jd��|j
�t|jd�5}|jd�ddd�tjj|jdd��}|j	|jd��|j
�y#1swY�fxYw)NrHrn�rJ�maxBytesrr�
)	rrBrnr7rY�shouldRolloverrMr�r�)rF�rhr�s   rJ�test_should_not_rolloverz0RotatingFileHandlerTest.test_should_not_rollover�s��
�
�
�
1�
1��G�G�g��2�3������*�*�4�0�1�
���
��
�
�
1�
1����'�A�2�7������*�*�4�0�1�
���
�
�$�'�'�4�
 �A�
�G�G�E�N�!�
�
�
�
1�
1����'�A�2�7������*�*�4�0�1�
���
�!�
 �s�E�E�WASI does not have /dev/null.c���tjjtjdd��}|j|j
|j���|j�y)NrHrnr�)	rrBrnr3�devnullrYr�r�rM�rFr�s  rJ�!test_should_not_rollover_non_filez9RotatingFileHandlerTest.test_should_not_rollover_non_file�sR��
�
�
�
1�
1��
�
�W�q�2�:������*�*�4�=�=�?�;�<�
���
rlc�P�t|jd�5}|jd�ddd�tjj|jdd��}|j
|j|j���|j�y#1swY�txYw)Nrr�rHr�r�)
r�r7r�rrBrnrEr�r�rM)rFr�r�s   rJ�test_should_rolloverz,RotatingFileHandlerTest.test_should_rollover�ss��
�$�'�'�4�
 �A�
�G�G�E�N�!�
�
�
�
1�
1�$�'�'�G�VW�
1�
X������)�)�$�-�-�/�:�;�
���
�	!�
 �s�B�B%c�,�tj|j�tjj|jd��}|j
|j��|j|j�|j�y)NrHr�)
r3rTr7rrBrnrAr�r�rMr�s  rJ�test_file_createdz)RotatingFileHandlerTest.test_file_created�s`��	�	�	�$�'�'��
�
�
�
1�
1�$�'�'�G�
1�
L��
����
�
�� ����4�7�7�#�
���
rlc�0�|rd|ini}tj|j�tjj
|jfdddd�|��}|j
tjj|j�|�tjddi�}tjddi�}|j|j|��|j|j|��|j|�|j|j�|jtjj|jd	z��|j|j|��|j|j|��|j|�|jtjj|j��|j|jd	z�|jtjj|jd
z��|j|j|��|j|j|��|j�y)NrKrHr�rO�rJ�backupCountr�rrk�dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb�.1�.2)r3rTr7rrBrnr�rZr[r�rYr�rAr�rErM)rFrKr5r��small�larges      rJ�test_max_bytesz&RotatingFileHandlerTest.test_max_bytes�s���%*�'�5�!���
�	�	�$�'�'��
�
�
�
1�
1��G�G�N�%�1�s�N�FL�N���
�
�b�g�g�n�n�T�W�W�-�5�y�9��%�%�u�c�l�3���%�%�u�g�&6�7������*�*�5�1�2�����*�*�5�1�2�
��������4�7�7�#������������$��7�8�����*�*�5�1�2�����)�)�%�0�1�
�������������t�w�w�/�0����4�7�7�T�>�*������������$��7�8�����)�)�%�0�1�����)�)�%�0�1�
���
rlc�(�|jd��y)NT)rK)r
rps rJ�test_max_bytes_delayz,RotatingFileHandlerTest.test_max_bytes_delay�s�����$��'rlc�X�d�}tjj|jddd��}||_|j|j
��|j|j�|jtjj||jdz���|j|j
��|j||jdz��|jtjj||jdz���|j|j
��|j||jdz��|jtjj||jdz���|j|j
��|jtjj||jdz���|j�y)	Nc��|dzS�N�.testrvr�s rJ�namerz>RotatingFileHandlerTest.test_rollover_filenames.<locals>.namer�s���'�>�!rlrHr�rnrr	r
�.3)
rrBrnr7rrAr�r�rYr3rZr[rM)rFrr�s   rJ�test_rollover_filenamesz/RotatingFileHandlerTest.test_rollover_filenames�sp��	"�
�
�
�
1�
1��G�G�g�1�q�2�B�����
����
�
�� ����4�7�7�#����������d�g�g��n�(=�>�?�
����
�
�� ����5����4��0�1����������d�g�g��n�(=�>�?�
����
�
�� ����5����4��0�1����������d�g�g��n�(=�>�?�
����
�
�� ����������d�g�g��n�(=�>�?�
���
rlc��Gd�dtjj�}||jddd��}|j	|j|j�|jdz�|j
|j��|j|j�|j
|j��|j|j|jdz�d	z�|jtjj|j|jdz���|j�y)
Nc��eZdZd�Zd�Zy)�ZRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotatorc��|dzSrrv)rFrHs  rJrz`RotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.namers���g�~�%rlc�v�tjj|�rtj||dz�yy)N�.rotated)r3rZr[r�)rF�source�dests   rJ�rotatorzbRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.rotators*���7�7�>�>�&�)��J�J�v�t�j�'8�9�*rlN)rsrtrurrrvrlrJ�HandlerWithNamerAndRotatorrs��
&�
:rlr rHr�rnrrr	r)rrBrnr7r\rrAr�r�rYr3rZr[rM)rFr r�s   rJ�test_namer_rotator_inheritancez6RotatingFileHandlerTest.test_namer_rotator_inheritances���	:��)9�)9�)M�)M�	:�(��G�G�g�1�q�B��������$�'�'�*�D�G�G�g�,=�>�
����
�
�� ����4�7�7�#�
����
�
�� ����2�8�8�D�G�G�d�N�3�j�@�A���������������4��(@�A�B�
���
rlc��d�}d�}tjj|jddd��}||_||_|j
�}|j|�|j|j�|j
�}|j|�||jdz�}|j|�tj}t|d�5}|j�}	tj|	�}
|j|
j!d	�|j"|z�ddd�|j|j
��||jd
z�}|j|�t|d�5}|j�}	tj|	�}
|j|
j!d	�|j"|z�ddd�|j|j
��||jd
z�}t|d�5}|j�}	tj|	�}
|j|
j!d	�|j"|z�ddd�|j%tj&j)||jdz���|j+�y#1swY���xYw#1swY��xYw#1swY�uxYw)Nc��|dzS)Nz.gzrvr�s rJrz3RotatingFileHandlerTest.test_rotator.<locals>.namer$s���%�<�rlc� �t|d�5}|j�}tj|d�}t|d�5}|j	|�ddd�ddd�tj|�y#1swY�'xYw#1swY�+xYw)N�rbrsr)r�rc�zlib�compressr�r3r�)rr�sfr��
compressed�dfs      rJrz5RotatingFileHandlerTest.test_rotator.<locals>.rotator'sk���f�d�#�r��w�w�y��!�]�]�4��3�
��$��%���H�H�Z�(�&�$�

�I�I�f��&�%��$�#�s#�3B�A8�B�8B	�=B�B
rHr�rnrr	r%rr
r)rrBrnr7rrr�rAr�r3�linesepr�rcr&�
decompressr\r�rrYrZr[rM)rFrrr��m1�m2r7�newliner�r)r�s           rJ�test_rotatorz$RotatingFileHandlerTest.test_rotator"s2��	 �	��
�
�
1�
1��G�G�g�1�q�2�B����
����
�]�]�_��
��������4�7�7�#�
�]�]�_��
�����
�4�7�7�T�>�
"�����2���*�*��
�"�d�^�q�����J��?�?�:�.�D����T�[�[��1�2�6�6�G�3C�D��	����
�
�� �
�4�7�7�T�>�
"�����2��
�"�d�^�q�����J��?�?�:�.�D����T�[�[��1�2�6�6�G�3C�D��	����
�
�� �
�4�7�7�T�>�
"��
�"�d�^�q�����J��?�?�:�.�D����T�[�[��1�2�6�6�G�3C�D��	
���������d�g�g��n�(=�>�?�
���
�%�^���^���^�s'�!AK�AK%�*AK2�K"�%K/�2K;N�F)rsrtrur�r�r�r�is_wasirrrr
rrr!�
requires_zlibr0rvrlrJr�r��sk���(�X�_�_�W�_�_�&E�F��G�����.(��&�&�W����*��*rlr�c�D�eZdZejejd�d��Zd�Zdd�Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Zej d�d��Zej d�d
��Zej d�d��Zej d�d��Zy)�TimedRotatingFileHandlerTestr�c��tjjtjddd��}tjd�tjddi�}|j|j|��|j�y)N�SrHrn�rJr皙�����?rztesting - device file)rrBror3r�rzr|r�rYr�rM)rFr�r�s   rJr�z5TimedRotatingFileHandlerTest.test_should_not_rolloverPsp���
�
�
6�
6��
�
�C�'�q�7�B���
�
�3���!�!�5�*A�"B�C������*�*�1�-�.�
���
rlc��tjj|jddd��}tjd�}|j|�tjddi�}|j|�|j|j�tjd�tjdd	i�}|j|�|j�d
}tjj�}d}t|�D]w}|tj|��z
}	|j|	j!d
�z}
t"j$j'|
�}|s�\|j(j+|
�nd|z}|�st"j$j-|j�\}}
t#j.|�D�
cgc]}
|
j1|
�s�|
��}}
t3d|j!d�zt4j6��t3d|zt4j6��|D]^}
t3d|
z�t"j$j9||
�}t;|d�5}t3|j=��ddd��`|j?||��ycc}
w#1swY��xYw)Nr7rHrnr8r�rztesting - initialr9ztesting - after delayFi,��secondsz.%Y-%m-%d_%H-%M-%Sz,No rotated files found, went back %d secondsz
Test time: %sz%Y-%m-%d %H-%M-%S�r�zThe only matching files are: %szContents of %s:r�r�) rrBror7r=r@r�rAr�rzr|rMr�r?ry�	timedelta�strftimer3rZr[r�rbr��listdirrr�rRr�r�r�rcrE)rFr�r�r�r��foundr?�GO_BACK�secs�prevr7r�dnr��filesrZ�tfs                 rJ�
test_rolloverz*TimedRotatingFileHandlerTest.test_rollover[s!��
�
�
�
6�
6�����w�A�7�?����� 9�:��
�����
�
"�
"�E�+>�#?�
@��
��������4�7�7�#��
�
�3��
�
"�
"�E�+B�#C�
D��
�����
���
������#�#�%�����'�N�D���+�+�D�9�9�D����4�=�=�)=�>�>�B��G�G�N�N�2�&�E�����#�#�B�'��
#�=�w�F����W�W�]�]�4�7�7�+�F�B�� "�
�
�2��C��1�!�,�,�r�2B�Q��E�C��/�C�L�L�1D�$E�E�C�J�J�W��3�e�;�#�*�*�M����'�!�+�,��w�w�|�|�B��*���$��_���"�'�'�)�$�%�_��
	
����3��'��D�%�_�s�J5�-J5�=J:�:K	c�*�tj|j�tjj	�}|j�}d|jdzcxkrdksXntjd|jdzz
dz�tjj	�}|j�}|jd��}tjd�}|rd|j���nd	}td
�D]{}tjj|jd||��}|j|�tj d
d|��i�}|j#|�|j%��}|j'|j�t)|jd��5}	t+|	�D]\}}
|j-d|��|
��	ddd�t/j0|j|j3�dz
fdz�td�D]{}tjj|jd||��}|j|�tj d
d|��i�}|j#|�|j%��}|tj4|rdnd��z
}|j�d|d��}|j'|�t)|jd��5}	t+|	�D]\}}
|j-d|��|
��	ddd�t)|d��5}	t+|	�D]\}}
|j-d|��|
��	ddd�y#1swY���xYw#1swY�VxYw#1swYyxYw)Ng�������?g��.Ag�������?g�?r)�microsecondr��W�MIDNIGHTr�rH)rJ�when�atTimerz	testing1 r�rnr�z	testing2 ���daysr�z%Y-%m-%d)rrTr7r�r?rzrJr|r�rr=�weekdayryrBror@r�rArMr�r��	enumerater�r3�utime�	timestampr>)
rF�weeklyr?rNr�rMrwr�r�r��line�rolloverDate�otherfns
             rJ�test_rollover_at_midnightz6TimedRotatingFileHandlerTest.test_rollover_at_midnight�s���������!����#�#�%��������V�'�'��+�1�c�1�
�J�J��f�0�0��4�4��;�<��#�#�'�'�)�C��X�X�Z�F����A��.����� 9�:��&,��3�;�;�=�/�"�*���q��A��!�!�:�:����'��V�;�E�B��O�O�C� ��&�&���1�#��'?�@�B��G�G�B�K��H�H�J�
�	
���4�7�7�#�
�$�'�'�G�
,��$�Q�<���4��
�
�	�!��o�t�4�(�-�	������3�=�=�?�Q�.�0��2�3��q��A��!�!�:�:����'��V�;�E�B��O�O�C� ��&�&���1�#��'?�@�B��G�G�B�K��H�H�J�
��X�/�/�&�Q�a�H�H���W�W�I�Q�|�H�5�6�����7�#�
�$�'�'�G�
,��$�Q�<���4��
�
�	�!��o�t�4�(�-��'�G�
,��$�Q�<���4��
�
�	�!��o�t�4�(�-�
,�%-�
,��-�
,��-�
,�s$�7)M0�>)M=�=)N	�0M:�=N�	Nc�(�|jd��y)NT)rV)rZrps rJ�test_rollover_at_weekdayz5TimedRotatingFileHandlerTest.test_rollover_at_weekday�s���&�&�d�&�3rlc�T�|j}|ttjj|j
ddd��|ttjj|j
ddd��|ttjj|j
ddd��y)N�XrHTrIrK�W7)r?rarrBror7)rFr?s  rJ�test_invalidz)TimedRotatingFileHandlerTest.test_invalid�s���(�(���Z��!1�!1�!J�!J��W�W�c�G�4�	A��Z��!1�!1�!J�!J��W�W�c�G�4�	A��Z��!1�!1�!J�!J��W�W�d�W�D�	Brlc��d}tjj|jdddd��}	|j	|�}|j||dz�|j	|dzdz
�}|j||dz�|j	|dz�}|j||dz�|j	|d	z�}|j||dz�|j
�tjd
dd�}tjj|jddd|��}	|j	|�}|j||dz�|j	|dzdz
�}|j||dz�|j	|dz�}|j||dz�|j	|d
z�}|j||dz�|j
�y#|j
�wxYw#|j
�wxYw)NrrHrLT�rJrMr�rN�Qrni�i�_��i@��ж)	rrBror7�computeRolloverr\rMr�rz)rF�currentTimer�rgrNs     rJ�"test_compute_rollover_daily_attimez?TimedRotatingFileHandlerTest.test_compute_rollover_daily_attime�s�����
�
�
�
6�
6��G�G�g�J��T�7�#��
	��'�'��4�F����V�[�<�%?�@��'�'��l�(B�Q�(F�G�F����V�[�<�%?�@��'�'��l�(B�C�F����V�[�<�%?�@��'�'��l�(B�C�F����V�[�<�%?�@��H�H�J����r�1�a�(��
�
�
�
6�
6��G�G�g�J��V�7�%��
	��'�'��4�F����V�[�<�%?�@��'�'��l�(B�Q�(F�G�F����V�[�<�%?�@��'�'��l�(B�C�F����V�[�<�%?�@��'�'��l�(B�C�F����V�[�<�%?�@��H�H�J��'
�H�H�J��&
�H�H�J�s�B$G!�,B$G6�!G3�6Hc
���ttj��}||dzz
}tjddd�}tj|�j}td�D�]�}tjj|jdd|zddd|�	�}	||kDr	d|z
|z}n||z
}|dz}|d
z
}||z
}|j|�}||k7r2tdtjz�tdt�z�|j||�|j|d
zdz
�}||k7r2tdtjz�tdt�z�|j||�||k(r|d
z
}|j|d
z�}||k7r2tdtjz�tdt�z�|j||�|j|dz�}||k7r2tdtjz�tdt�z�|j||�|j����y#|j�wxYw)NrcrdrrOrHzW%drnT)rJrM�intervalrr�rNrezfailed in timezone: %dzlocal vars: %si�:	rf)rtrzr�r��tm_wdayryrrBror7rgr��timezone�localsr\rM)	rFrh�todayrN�wday�dayr�rhrgs	         rJ�#test_compute_rollover_weekly_attimez@TimedRotatingFileHandlerTest.test_compute_rollover_weekly_attime�s1���$�)�)�+�&���k�E�1�1�����r�1�a�(���{�{�5�!�)�)����8�C��!�!�:�:����'����a�UV���;�)�B�)
��#�:�!"�D��3��H� #�d�
�H��L�(���L�(���E�!���+�+�E�2���X�%��2�T�]�]�B�C��*�V�X�5�6�� � ���2��+�+�E�L�,@�1�,D�E���X�%��2�T�]�]�B�C��*�V�X�5�6�� � ���2��$�;�� 0�0�H��+�+�E�L�,@�A���X�%��2�T�]�]�B�C��*�V�X�5�6�� � ���2��+�+�E�L�,@�A���X�%��2�T�]�]�B�C��*�V�X�5�6�� � ���2����
�[��Z���
�s
�F I�I%c�`�tjd��}|jtj|�g}t
j
j
�}td�D];}|j|jd��|tjd��z
}�=d}g}g}|D]�}tjj|d|z�}	tjj!|	d	dd
d��}
|j|
�|j#d
�r|D]}|j|�d|������|j#d�r)d�}||
_|D]}|j|�d|�d�����|dk(s��d�}||
_|D]}|jd|z����|D]8}
tjj||
�}	t'|	d�5}	ddd��:t)|�D�]�\}}||}
|
j+�}|j-t/|�d|�|j#d
�rOd|z}	|D]D}tjj1|�\}}
|j3|
j#|	���F��|j#d�r�|D]�}tjj1|�\}}
|j3|
j5d�|
�|j3|
j#|dz�xr|
t/|�dzj7������9|dk(s��@|D]y}tjj1|�\}}
|j3|
j5d��|j3|
j#d�xr|
dj7���{���y#1swY��xYw)Nrr�rg�%Y-%m-%d_%H-%M-%Srr;)�a.bza.b.c�d.ezd.e.fr�z%s.logrjrOT�rMrkrrKruz.log.rvc��tjj|�\}}|jdd�dz}tjj	||�S)Nr�r)r3rZr�r�r��rkr��basenames   rJrzHTimedRotatingFileHandlerTest.test_compute_files_to_delete.<locals>.namer2sE��(*���
�
�h�(?�%�G�X�'�/�/���;�f�D�H��7�7�<�<���:�:rlr�r�r�c��tjj|�\}}d|ddzdz}tjj||�S)Nr���.oldlog)r3rZr�r�rys   rJrzHTimedRotatingFileHandlerTest.test_compute_files_to_delete.<locals>.namer:sC��(*���
�
�h�(?�%�G�X�"�X�a�b�\�1�I�=�H��7�7�<�<���:�:rlz
g%s.oldlogrr�z%s.log.r�r}rn)r1�mkdtempr��shutil�rmtreer�r?ryrbr?r>r3rZr�rrBrorrr�rS�getFilesToDeleter\r]r�rEr_�isdigit)rF�wd�timesr�rw�prefixesrF�rotatorsr�r�rr�rr7r��
candidatesr�r�s                  rJ�test_compute_files_to_deletez9TimedRotatingFileHandlerTest.test_compute_files_to_deletes"��
�
�
�_�
5������
�
�r�*���
�
�
�
"�
"�
$���r��A��L�L����%8�9�:��(�$�$�Q�/�/�B��9�������F������R��F�!2�3�A��&�&�?�?���IJ�LM�FJ�@�L�G�
�O�O�G�$�� � ��'��A��L�L���!:�;���"�"�5�)�;�!&��
��A��L�L���!:�;���3��;�!&��
��A��L�L���!1�2��1�6�B������R��$�A��a���!�����
#�8�,�I�A�v��q�k�G� �1�1�3�J����S��_�a��<�� � ��'���&��#�A��G�G�M�M�!�,�E�A�r��O�O�B�M�M�!�$4�5�$��"�"�5�)�#�A��G�G�M�M�!�,�E�A�r��O�O�B�K�K��$7��<��O�O�B�M�M�&�3�,�$?�%B�$&�s�6�{�Q��$7�$?�$?�$A�C�$�
�3��#�A��G�G�M�M�!�,�E�A�r��O�O�B�K�K�	�$:�;��O�O�B�M�M�#�$6�$J�2�a�5�=�=�?�K�$�!-���s�
N#�#N-	c�\�tjtjd���}|j	t
j|�g}tjj�}d}t|�D];}|j|jd��|tjd��z
}�=d}g}g}t|�D]_\}	}
|	dz}tjj!||
zd	d|d
��}|j|�|D]}
|j|
�d|
�����a|D]}
|jd
|
z��|D]}||zj#��t|�D]�\}	}
|	dz}||	}|j%�}|j't)|�||z
|�t+j,d�}|D]j}t.j0j3|�\}}|j5|j7|
dz��|t)|
�dzd}|j9||��l��y)Nrr�rgrtrr;)za.logza.log.brnrjTrwr�z
a.log.%s.cz&^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}\Z)�pathlib�Pathr1r~r�rr�r�r?ryrbr?r>rSrrBro�touchr�r\r]rWrXr3rZr�rErrJ)rFr�r�r��n_filesr�r�rFr�rwr�rrr�r�r��matcherr�r�r7rs                     rJ�?test_compute_files_to_delete_same_filename_different_extensionsz\TimedRotatingFileHandlerTest.test_compute_files_to_delete_same_filename_different_extensions\s���
�\�\�(�*�*�/�B�
C������
�
�r�*���
�
�
�
"�
"�
$�����w��A��L�L����%8�9�:��(�$�$�Q�/�/�B� �(������"�8�,�I�A�v��A�#�K��&�&�?�?��V��RU�IJ�LW�FJ�@�L�G�
�O�O�G�$��������2�3��-��A��L�L���)�*���A�
�!�V�N�N���#�8�,�I�A�v��A�#�K��q�k�G� �1�1�3�J����S��_�g��.C�Z�P��j�j�!J�K�G������
�
�a�(���2�����
�
�f�S�j� 9�:��S��[��]�,�-��� � ���1�	 �
-rlzEST+05EDT,M3.2.0,M11.1.0c����tj}��fd�}tjj�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���j�tjj�jdddtjd
dd����||ddddd
d
�|dddd
d��||dddd
d�|dddd
d��||ddddd�|dddd
d��||ddddd
d
�|dddd
d��||dddd
d�|dddd
d��||ddddd�|dddd
d���j�tjj�jdddtjdd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���j�tjj�jdddtjddd����||dddddd
�|ddddd��||ddddd�|ddddd��||ddddd�|ddddd��||ddddd
d
�|ddddd��||ddddd�|ddd
dd��||ddddd�|ddd
dd��||dddddd
�|ddddd��||ddddd�|ddddd��||ddddd�|ddddd���j�tjj�jdddtjddd����||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���j�y)Nc����j|j��}||j�z
}|r(�j|dtj|���yy�Nrr;�rgrUr\r�r>��currentrhrg�diffr�rFs    ��rJr�zOTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local.<locals>.test��T����'�'��(9�(9�(;�<�F��H�.�.�0�0�D��� � ��q�(�*<�*<�T�*J�K�rlrHrLF�rJrMr���r�rgr��;�rrdrnrxrrbr�r���fold���r�rrBror7rMrz�rF�DTr�r�s`  @rJ�$test_compute_rollover_MIDNIGHT_localzATimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local�st����
�
��	L��
�
�
6�
6��G�G�g�J�E�7�C��	
�R��a��R��R�
(�"�T�1�b�!�Q�*?�@��R��a��Q��
"�B�t�Q��A�q�$9�:��R��a��Q��
"�B�t�Q��A�q�$9�:��R��b�!�R��R�
(�"�T�2�q�!�Q�*?�@��R��b�!�Q��
"�B�t�R��A�q�$9�:��R��b�!�Q��
"�B�t�R��A�q�$9�:�
���
�
�
�
�
6�
6��G�G�g�J�E��=�=��Q��*�7�,��	
�R��a��R��R�
(�"�T�1�b�"�a�*@�A��R��a��R��
#�R��a��R��%;�<��R��a��R��
#�R��a��R��%;�<��R��b�!�R��R�
(�"�T�2�q�"�a�*@�A��R��b�!�R��
#�R��b�!�R��%;�<��R��b�!�R��
#�R��b�!�R��%;�<�
���
�
�
�
�
6�
6��G�G�g�J�E��=�=��A�q�)�7�+��	
�R��a��Q��B�
'��D�!�R��A�)>�?��R��a��Q��
"�B�t�Q��A�q�$9�:��R��a��Q��
"�B�t�Q��A�q�$9�:��R��a��Q��B�
'��D�!�R��A�)>�?��R��a��Q��
"�B�t�Q��A�q�$9�:��R��a��Q��
"�B�t�Q��A�q�$9�:��R��b�!�Q��B�
'��D�"�a��A�)>�?��R��b�!�Q��
"�B�t�R��A�q�$9�:��R��b�!�Q��
"�B�t�R��A�q�$9�:�	
�R��b�!�Q��B�
'��D�"�a��A�)>�?��R��b�!�Q��B�Q�
/��D�"�a��A�1F�G��R��b�!�Q��
"�B�t�R��A�q�$9�:��R��b�!�Q��
"�B�t�R��A�q�$9�:�
���
�
�
�
�
6�
6��G�G�g�J�E��=�=��B��*�7�,��	
�R��a��Q��B�
'��D�!�R��B�)?�@��R��a��Q��
#�R��a��Q��%;�<��R��a��Q��
"�B�t�Q��A�r�$:�;��R��a��Q��B�
'��D�!�R��B�)?�@��R��a��Q��
"�B�t�Q��A�r�$:�;��R��a��Q��
#�R��a��Q��%;�<��R��b�!�Q��B�
'��D�"�a��B�)?�@��R��b�!�Q��
#�R��b�!�Q��%;�<��R��b�!�Q��
"�B�t�R��A�r�$:�;�
���
�
�
�
�
6�
6��G�G�g�J�E��=�=��B��*�7�,��	
�R��a��Q��B�
'��D�!�R��B�)?�@��R��a��Q��
#�R��a��Q��%;�<��R��a��Q��B�
'��D�!�R��B�)?�@��R��a��Q��
"�B�t�Q��A�r�$:�;��R��a��Q��
#�R��a��Q��%;�<�	
�R��b�!�Q��
"�B�t�R��A�r�$:�;��R��b�!�Q��B�
'��D�"�a��B�)?�@��R��b�!�Q��
#�R��b�!�Q��%;�<��R��b�!�Q��B�
'��D�"�a��B�)?�@�	
�R��b�!�Q���
*�B�t�R��A�r��,J�K��R��b�!�Q��B�Q�
/��D�"�a��B�Q�1O�P��R��b�!�Q���
+�R��b�!�Q��-C�D��R��b�!�Q��B�Q�
/��D�"�a��B�1G�H��R��b�!�Q��
"�B�t�R��A�r�$:�;��R��b�!�Q��
#�R��b�!�Q��%;�<�
���
rlc����tj}��fd�}tjj�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���j�tjj�jdddtjd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���j�tjj�jdddtjd
dd����||ddddd
d
�|dddd
d��||dddd
d�|dddd
d��||ddddd�|dddd
d��||ddddd
d
�|dddd
d��||dddd
d�|dddd
d��||ddddd�|dddd
d���j�tjj�jdddtjdd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���j�tjj�jdddtjddd����||dddddd
�|ddddd��||ddddd�|ddddd��||ddddd�|ddddd��||ddddd
d
�|ddddd��||ddddd�|ddddd��||ddddd�|ddddd��||dddddd
�|ddddd��||ddddd�|ddddd��||ddddd�|ddddd���j�tjj�jdddtjddd����||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���j�y)Nc����j|j��}||j�z
}|r(�j|dtj|���yyr�r�r�s    ��rJr�zITimedRotatingFileHandlerTest.test_compute_rollover_W6_local.<locals>.test�r�rlrH�W6Fr�r�r�rxr�r�rrrdrnrg�r�r�rb�r�r�r�r�r�r�s`  @rJ�test_compute_rollover_W6_localz;TimedRotatingFileHandlerTest.test_compute_rollover_W6_local�s�	����
�
��	L��
�
�
6�
6��G�G�g�D�e�7�=��	
�R��a��B��B�
'��D�!�Q��1�)=�>��R��a��A�q�
!�2�d�A�r�1�a�#8�9��R��a��A�q�
!�2�d�A�r�1�a�#8�9��R��b�"�b�"�b�
)�2�d�B��A�q�+A�B��R��b�"�a��
#�R��b�!�Q��%:�;��R��b�"�a��
#�R��b�!�Q��%:�;�
���
�
�
�
�
6�
6��G�G�g�D�e��=�=��A�q�)�7�+��	
�R��a��R��R�
(�"�T�1�b�!�Q�*?�@��R��a��Q��
"�B�t�Q��A�q�$9�:��R��a��Q��
"�B�t�Q��A�q�$9�:��R��b�!�R��R�
(�"�T�2�q�!�Q�*?�@��R��b�!�Q��
"�B�t�R��Q��$:�;��R��b�!�Q��
"�B�t�R��Q��$:�;�
���
�
�
�
�
6�
6��G�G�g�D�e��=�=��Q��*�7�,��	
�R��a��B��B�
'��D�!�Q��A�)>�?��R��a��B��
"�B�t�Q��B��$:�;��R��a��B��
"�B�t�Q��B��$:�;��R��b�"�b�"�b�
)�2�d�B��B��+B�C��R��b�"�b�!�
$�b��r�1�b�!�&<�=��R��b�"�b�!�
$�b��r�1�b�!�&<�=�
���
�
�
�
�
6�
6��G�G�g�D�e��=�=��A�q�)�7�+��	
�R��a��A�r�2�
&��4��A�q�!�(<�=��R��a��A�q�
!�2�d�A�r�1�a�#8�9��R��a��A�q�
!�2�d�A�r�1�a�#8�9��R��a��Q��B�
'��D�!�R��A�)>�?��R��a��Q��
"�B�t�Q��A�q�$9�:��R��a��Q��
"�B�t�Q��A�q�$9�:��R��b�"�a��R�
(�"�T�2�r�1�a�*@�A��R��b�"�a��
#�R��b�!�Q��%:�;��R��b�"�a��
#�R��b�!�Q��%:�;�	
�R��b�!�Q��B�
'��D�"�a��A�)>�?��R��b�!�Q��B�Q�
/��D�"�a��A�1F�G��R��b�!�Q��
"�B�t�R��Q��$:�;��R��b�!�Q��
"�B�t�R��Q��$:�;�
���
�
�
�
�
6�
6��G�G�g�D�e��=�=��B��*�7�,��	
�R��a��A�r�2�
&��4��A�q�"�(=�>��R��a��A�r�
"�B�t�Q��A�r�$:�;��R��a��A�q�
!�2�d�A�r�1�b�#9�:��R��a��Q��B�
'��D�!�R��B�)?�@��R��a��Q��
"�B�t�Q��A�r�$:�;��R��a��Q��
#�R��a��Q��%;�<��R��b�"�a��R�
(�"�T�2�r�1�b�*A�B��R��b�"�a��
$�b��r�1�a��&<�=��R��b�"�a��
#�R��b�!�Q��%;�<�
���
�
�
�
�
6�
6��G�G�g�D�e��=�=��B��*�7�,��	
�R��a��Q��B�
'��D�!�R��B�)?�@��R��a��Q��
#�R��a��Q��%;�<��R��a��Q��B�
'��D�!�R��B�)?�@��R��a��Q��
"�B�t�Q��A�r�$:�;��R��a��Q��
#�R��a��Q��%;�<�	
�R��b�!�Q��
"�B�t�R��A�r�$:�;��R��b�!�Q��B�
'��D�"�a��B�)?�@��R��b�!�Q��
#�R��b�"�a��%<�=��R��b�!�Q��B�
'��D�"�b�!�R�)@�A�	
�R��b�!�Q���
*�B�t�R��A�r��,J�K��R��b�!�Q��B�Q�
/��D�"�a��B�Q�1O�P��R��b�!�Q���
+�R��b�"�a��-D�E��R��b�!�Q��B�Q�
/��D�"�b�!�R�1H�I��R��b�!�Q��
"�B�t�R��Q��$;�<��R��b�!�Q��
#�R��b�"�a��%<�=�
���
rlc�����tj}��fd�}tjj�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���j�tjj�jddddtjdd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���j�y)Nc����j|j��}||j�z
}|r(�j|dtj|���yyr�r�r�s    ��rJr�zXTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_interval.<locals>.testxr�rlrHrLFr��rJrMr�rkr�r�r�r�r�rrsrdrnrgr�rrrxr�rr|rO�rJrMr�rkrNr�r�s`  @rJ�-test_compute_rollover_MIDNIGHT_local_intervalzJTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_intervalts����
�
��	L��
�
�
6�
6��G�G�g�J�E�A�7�O��	
�R��a��B��B�
'��D�!�R��A�)>�?��R��a��A�q�
!�2�d�A�r�1�a�#8�9��R��a��A�q�
!�2�d�A�r�1�a�#8�9��R��a��R��R�
(�"�T�1�b�!�Q�*?�@��R��a��Q��
"�B�t�Q��A�q�$9�:��R��a��Q��
"�B�t�Q��A�q�$9�:��R��b�!�R��R�
(�"�T�2�q�!�Q�*?�@��R��b�!�Q��
"�B�t�R��A�q�$9�:��R��b�!�Q��
"�B�t�R��A�q�$9�:��R��b�!�R��R�
(�"�T�2�q�!�Q�*?�@��R��b�!�Q��
"�B�t�R��A�q�$9�:��R��b�!�Q��
"�B�t�R��A�q�$9�:�
���
�
�
�
�
6�
6��G�G�g�J�E�A��=�=��Q��*�7�,��	
�R��a��B��B�
'��D�!�R��Q�)?�@��R��a��B��
"�B�t�Q��B��$:�;��R��a��B��
"�B�t�Q��B��$:�;��R��a��R��R�
(�"�T�1�b�"�a�*@�A��R��a��R��
#�R��a��R��%;�<��R��a��R��
#�R��a��R��%;�<��R��b�!�R��R�
(�"�T�2�q�"�a�*@�A��R��b�!�R��
#�R��b�!�R��%;�<��R��b�!�R��
#�R��b�!�R��%;�<��R��b�!�R��R�
(�"�T�2�q�"�a�*@�A��R��b�!�R��
#�R��b�!�R��%;�<��R��b�!�R��
#�R��b�!�R��%;�<�
���
rlc�@
���tj}��fd�}tjj�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
���j�tjj�jddddtjd
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
���j�tjj�jddddtjdd
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
���j�y)Nc����j|j��}||j�z
}|r(�j|dtj|���yyr�r�r�s    ��rJr�zRTimedRotatingFileHandlerTest.test_compute_rollover_W6_local_interval.<locals>.test�r�rlrHr�Fr�r�r�r��r�r�rrr�rdrnrx�rgrrr��r�r�r��r�r�r�r�r�s`  @rJ�'test_compute_rollover_W6_local_intervalzDTimedRotatingFileHandlerTest.test_compute_rollover_W6_local_interval�s����
�
��	L��
�
�
6�
6��G�G�g�D�e�a�7�I��	
�R��a��R��R�
(�"�T�1�a��A�*>�?��R��a��Q��
"�B�t�Q��A�q�$9�:��R��a��Q��
"�B�t�Q��A�q�$9�:��R��a��B��B�
'��D�!�R��A�)>�?��R��a��A�q�
!�2�d�A�r�1�a�#8�9��R��a��A�q�
!�2�d�A�r�1�a�#8�9��R��b�"�b�"�b�
)�2�d�B��A�q�+A�B��R��b�"�a��
#�R��b�!�Q��%:�;��R��b�"�a��
#�R��b�!�Q��%:�;��R��b�"�b�"�b�
)�2�d�B��A�q�+A�B��R��b�"�a��
#�R��b�"�a��%;�<��R��b�"�a��
#�R��b�"�a��%;�<�
���
�
�
�
�
6�
6��G�G�g�D�e�a��=�=��A�q�)�7�+��	
�R��a��R��R�
(�"�T�1�b�!�Q�*?�@��R��a��Q��
"�B�t�Q��A�q�$9�:��R��a��Q��
"�B�t�Q��A�q�$9�:��R��a��R��R�
(�"�T�1�b�!�Q�*?�@��R��a��Q��
"�B�t�Q��1�a�$8�9��R��a��Q��
"�B�t�Q��1�a�$8�9��R��b�"�b�"�b�
)�2�d�B��1�a�+@�A��R��b�"�a��
#�R��b�"�a��%;�<��R��b�"�a��
#�R��b�"�a��%;�<��R��b�!�R��R�
(�"�T�2�r�1�a�*@�A��R��b�!�Q��
"�B�t�R��Q��$:�;��R��b�!�Q��
"�B�t�R��Q��$:�;�
���
�
�
�
�
6�
6��G�G�g�D�e�a��=�=��Q��*�7�,��	
�R��a��R��R�
(�"�T�1�a��Q�*?�@��R��a��R��
#�R��a��R��%;�<��R��a��R��
#�R��a��R��%;�<��R��a��B��B�
'��D�!�R��Q�)?�@��R��a��B��
"�B�t�Q��B��$:�;��R��a��B��
"�B�t�Q��B��$:�;��R��b�"�b�"�b�
)�2�d�B��B��+B�C��R��b�"�b�!�
$�b��r�1�b�!�&<�=��R��b�"�b�!�
$�b��r�1�b�!�&<�=��R��b�"�b�"�b�
)�2�d�B��B��+B�C��R��b�"�b�!�
$�b��r�2�r�1�&=�>��R��b�"�b�!�
$�b��r�2�r�1�&=�>�
���
rlNr1)rsrtrur�r�rr2r�rHrZr\r`rirrr�r��run_with_tzr�r�r�r�rvrlrJr5r5Os����X�_�_�W�_�_�&E�F��G��((�T)5�V4�B�%�P4�l?L�B&2�T�W���3�4�k�5�k�^�W���3�4�y�5�y�z�W���3�4�.�5�.�d�W���3�4�B�5�Brlr5c�Z�tjdi|��tjd��zS)Nrnr;rv)r�r>)rys rJrCrC�s&�����#��#�x�'9�'9�!�'D�D�Drl)r7rn)�Mr)�Hi)�Drc)rLrc�W0rx�)rQ�hours)rnr�c��tjj|jd||dd��}d}|j	|�}|jd�r|t
d|dz
z�	�z
}n||z}||k7�r=|d
k(�r7	|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��|j!||�|j#�y#t$r(}
td|
ztj��Yd}
~
�Od}
~
wwxYw)NrHrT)rJrMrkrr�grKrOrnrPrLr�rxrrzt: z (�)r=zcurrentHour: %szcurrentMinute: %szcurrentSecond: %szr: %sz
result: %sz exception in diagnostic code: %s)rrBror7rgrrCr�rzr��	localtime�	_MIDNIGHTr�rRr�r�r\rM)rFrMrk�expr�rhrgr��currentHour�
currentMinute�
currentSecondr�r�r*s              rJ�test_compute_rolloverr��s����!�!�:�:����'��x�UV�\`�;�b�B��K��'�'��4�F����s�#��t��H�Q�J��0�0���x����f�}��:�%�W��6�6� $���K� 8�A� $���{� ;�A�&'��d��()�!��
�()�!��
�#�,�,�6�6�;��;K�8E�<F�IK�;L� -�;.�/��"-�q����a����8�s�z�z�J��/�+�=�C�J�J�O��1�M�A��
�
�S��1�M�A��
�
�S��g��k��
�
�;��l�V�3�#�*�*�E�
���S�&�)��H�H�J��%�W��@�1�D�3�:�:�V�V��W�s�<D6G�	H�H�Hztest_compute_rollover_%s�	_intervalz>win32evtlog/win32evtlogutil/pywintypes required for this test.c��eZdZd�Zy)�NTEventLogHandlerTestc���d}tjd|�}tj|�}	tjjd�}tjddi�}|j|�|j�|j|tj|��tjtj z}d}d}	tj"|||	�}
|
D]1}|j$dk7r�t'j(||�}|d	k7r�/d
}nd|	z}|j+||��y#tj$r*}|jdk(rtjd���d}~wwxYw)
N�Application�test_loggingrz#Insufficient privileges to run testrzTest Log MessageFrOzTest Log Message
Tz3Record not found in event log, went back %d recordsr�)�win32evtlog�OpenEventLog�GetNumberOfEventLogRecordsrrB�NTEventLogHandler�
pywintypesr��winerrorr��SkipTestr�rXrM�
assertLess�EVENTLOG_BACKWARDS_READ�EVENTLOG_SEQUENTIAL_READ�ReadEventLog�
SourceName�win32evtlogutil�SafeFormatMessagerE)rF�logtype�elh�num_recsrTr*r��flagsrArB�eventsrs            rJr`z NTEventLogHandlerTest.test_basic'sT�����&�&�t�W�5���9�9�#�>��	�� � �2�2�>�B�A�
�!�!�5�*<�"=�>��	�����	���	�����+�"H�"H��"M�N��3�3��4�4�5�������)�)�#�u�g�>���A��|�|�~�-��!�3�3�A�w�?�C��,�,���E���D�g�M������3��'��1���	��z�z�Q���'�'�(M�N�N���	�s�D6�6E3�	%E.�.E3N)rsrtrur`rvrlrJr�r�%s��(rlr�c��eZdZd�Zy)�MiscTestCasec�D�hd�}tj|t|��y)N>r�r�Filtererr��
RootLoggerr��PlaceHolderr�currentframer��StrFormatStyler�r�r�)�not_exported)r�check__all__r)rFr�s  rJ�test__all__zMiscTestCase.test__all__Js��,��
	���T�7��FrlN)rsrtrur�rvrlrJr�r�Is��Grlr�c�V�tjtjdd��y)N�LC_ALLr)r��enterModuleContextr�run_with_localervrlrJ�setUpModuler�Vs������ 7� 7��"� E�Frl�__main__r�r1)�r�logging.handlers�logging.configr�r�r%r�r�r/r6r�r�r�r3r�r}rWrr�r-rRr1�test.support.script_helperrrr�r�test.supportrrrr	r
rr�test.support.logging_helperr
r�r�r�rzr�r�r�http.serverrr�
unittest.mockr�urllib.parserr�socketserverrrrrr�r�r�r�r&r��HAVE_ASAN_FORK_BUGr��check_sanitizerr��TestCaserrxr��SILENTr��TERSE�EFFUSIVEr�r!�	TALKATIVEr��
CHATTERBOX�BORINGryr�r�r�r�r�r�r8r:r�r�r;r�r�r�r�r�rrr-r;rFrIrNr:r�rPrer=r�r�r�rr<rBrHrSrWre�IPV6_ENABLEDrhrnr�r�r�r�r�r�r�rBr�r�r�r�r�r�r�r�r�r�r@rUrrlrnr{rr�r>r��tzinfor�r�r�r�rrrrr"r*r�rr8rkr�r�rYr�rsr�r|r�r�r�r�r5rCrMr�rkr�rHrsr,r�r�r��mainrvrlrJ�<module>r	s���"����
�����
�	��	��	��
�	�
�
�
�
��N��&�"�&�)�(�!��3��������:��+�D�D�6�3�3�	��$�H�O�O����E�G��$�H�O�O��G���4�(�-�/��
j'�x� � �j'�ZUI��UI�n<%�h�<%�L�������������	��	��
����F�F�Q�J�'���(��*�	�'��*��*��)�
�+�
�+��,�
�(���+�g�n�n�+�:����:�C'��C'�L�U2�(�U2�p1��1�#��-�-�#�
��
�'@��'@�XG;�U�%�%�G;�T0�6�0�d'�\�:�'�R1�L�"4�1�>-�L�"4�-�^�6�9��(�}�(�(��(�
!�� � �"�,��,�,�.��h��/�#��@C5��C5�L-��*�*�-�
�a�X�a�H!�� � �"�,��,�,�.�W+��W+�/�#�W+�t����W�V�Y�/�1H�I�&�-�&�J�&�!�� � �"�,��,�,�.�>:�(�>:�/�#�>:�@����W�V�Y�/�1H�I�(�1�(�J�(�!�� � �"�,��,�,�.�IB��IB�/�#�IB�V����W�V�Y�/�1H�I�&�-�&�J�&�����]�/�/�;�=�
6�-�
6�=�
6�!�� � �"�,��,�,�.�K �h�K �/�#�K �Z1��1�h-L�8�-L�`%K�8�%K�P.�
�
�#�	�G�)�)�	�	�W�%�%�3�3�	�	�%�+�+�	�)�)�
�1�
��2����b?�X�b?�J59�(�9�.&�h�&�>	�w�(�(�	� �8� �F-��,�,�.�iP�x�iP�/�iP�V�7���_�-��#�0��0�0�2�]&�H�]&�3�]&�@�x���!����(�/�/��
�e��.�.�Y)�H�%�%�'9�Y)�x&�W�7�7�&�G�X�.�.�G�&A�H�A�,$;�X�$;�N	�	�$�w�*�*�$�T/�8�T/�nx/�(�x/�vJ0�H�J0�ZY#�h�'�'�Y#�x
l1��)�)�l1�^.�G�)�)�.�+�+�5�7�(�(�5�`>��-�`>�FH�8�H�25�l�5�,Z�l�Z�x[
�<�[
�|E��� �%�,���1�B�/�0�
�I�D�#���-1�H�#�$	�J*�D�0���a�<��K��D�)-��&��,�d�4I�J�U��j����[�"b�c� (�H� (�d� (�FG�8�$�$�G�G��z���H�M�M�O���iX�6�15�5�K�5�/�J�6��
�	��	�s$�^�$^�^�^�^�^

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