403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.216.202
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /Python313/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /Python313/Lib/test/__pycache__/test_logging.cpython-313.opt-2.pyc
�

��i�0���SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSK
r
SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJrJr SSKJr SSKJr SSKJr SSKJr SSKJ r  SSKJ!r! SS	KJ"r" SS
KJ#r# SSK$J%r% SSK&J'r' SSK(r(SSK)r)SSK*r*SSK+r+SSK,r,SSK-r-SSK.r.SS
K/J0r0J1r1 SSK2J3r3 SSK4J5r5J6r6 SSK7J8r8J9r9J:r:J;r; SSK<r<SSK=r=SSK>r>SSK@r@\,R�"\R�S5rC\,R�"\R�"SS9S5rE"SS\,R�5rG"SS\G5rH"SS\G5rISrJSrKSrLSrMSrNS rOS!rPS"rQS#rRS$rS\T"\S\JS%-5rU\JS&\KS'\LS(\MS)\NS*\OS+\PS,\QS-\RS.\SS/0
rV"S0S1\R�5rX"S2S3\R�5rY"S4S5\G5rZS6r["S7S8\G5r\"S9S:\]5r^"S;S<\R�5r`"S=S>\]5ra"S?S@\G5rb"SASB\#R�5rd"SCSD\]5re"SESF\e\05rf"SGSH\e\:5rg"SISJ\e\85rh\i"\SK5(a"SLSM\g5rj"SNSO\h5rk\R�"5\ R�"5"SPSQ\G555rn"SRSS\G5ro"STSU\R�5rqSVrr"SWSX\G5rs\R�"5\ R�"5"SYSZ\G555rt\,R�"\i"\SK5S[5"S\S]\t55rv\R�"5\ R�"5"S^S_\G555rw\,R�"\i"\SK5S[5"S`Sa\w55rx\R�"5\ R�"5"SbSc\G555ry\,R�"\i"\SK5S[5"SdSe\y55rz\,R�"\R�Sf5"SgSh\y55r|\R�"5\ R�"5"SiSj\G555r}"SkSl\G5r~"SmSn\G5r"SoSp\G5r�S�Sqjr�"SrSs5r�Str�"SuSv\R�5r�"SwSx\GR
GR5r�"SySz\GR5r�"S{S|5r�"S}S~\�5r�"SS�\�5r�"S�S�5r�S�r�S�S�jr�"S�S�\G5r�"S�S�\G5r�"S�S�\G5r�"S�S�\GR&5r�"S�S�\G5r�\ R�"5"S�S�\G55r�\i"\GR
S�5(a.SSK�r�SSK2J3r3 \E\ R�"5"S�S�\G555r�\GR2"S5r�"S�S�\GR65r�\�"5r�"S�S�5r�"S�S�\,R�\�5r�"S�S�\GR@5r�"S�S�\,R�5r�"S�S�\G5r�"S�S�\G5r�"S�S�5r�"S�S�\GRL5r�"S�S�\G5r�"S�S�\G5r�"S�S�\G5r�"S�S�\,R�5r�"S�S�\,R�\'5r�"S�S�\GRZ5r�"S�S�5r�"S�S�\GRZ5r�"S�S�\G\�5r�"S�S�\G5r�"S�S�\�5r�"S�S�\�5r�"S�S�\�5r�S�r�S�S�S�S�S�S�\�"S�S�S�944H8ur�r�S�H,r�\�\�\�4S�jr�S�\�-r�\�S%:�a\�S�-
r�\�\�l�\�"\�\�\�5 M. M: \,R�"\<S�5"S�S�\G55r�"S�S�\,R�5r�S�r�\�S�:Xa\,GR�"5 gg!\?a
 S=r<=r=r>GN�f=f!\?a GN�f=f)��N)�assert_python_ok�assert_python_failure)�support)�
import_helper)�	os_helper)�
socket_helper)�threading_helper)�warnings_helper)�asyncore)�smtpd)�TestHandler)�ExtraAssertions)�
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�<�\rSrSrSrSrSrSrSrSSjr	S	r
S
rg)�BaseTest�[z&%(name)s -> %(levelname)s: %(message)sz^([\w.]+) -> (\w+): (\d+)$rc���[R"5Ul[R"5R
Rn[R [RR5Ul
[RSSUlUR5=Ul
n[RR5Ul[R R5Ul0=UlnUHn['X$SS5X4'M SSS5 [R"S5Ul[R"S5Ul[R"S5UlUR,R/5Ul[2R4"5UlUR,R9[R:5 [R<"UR65Ul[R@"URB5Ul"UR>RGURD5 UR(RI5(a;UR(RJUR,RJ-n[MSU-5eUR*RI5(a;UR*RJUR,RJ-n[MSU-5eUR,ROUR>5 URQUR(RI55 URQUR*RI55 g!,(df   GN]=f)N�disabledu«×»uĿÖG�zUnexpected handlers: %s))r	�threading_setup�_threading_key�logging�	getLogger�manager�
loggerDict�_lock�	_handlers�copy�saved_handlers�_handlerList�saved_handler_list�
saved_loggers�_nameToLevel�saved_name_to_level�_levelToName�saved_level_to_name�
logger_states�getattr�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+r0�name�hlists      �&C:\Python313\\Lib\test\test_logging.py�setUp�BaseTest.setUpcsm��/�>�>�@����'�'�)�1�1�<�<��
�]�]�")�"3�"3�"8�"8�":�D��&-�&:�&:�1�&=�D�#�1<�1A�1A�1C�C�D���'.�';�';�'@�'@�'B�D�$�'.�';�';�'@�'@�'B�D�$�13�3�D���%��&-�m�.A�.8�$�'@�
�#�&���(�(��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&�&
M5c��URR5 URRUR5 URR
(aaURR
SnURRU5 UR5 URR
(aMaURR
UR5 [R [RR5 [RRUR5 [RR5 [RRUR5 [R R5 [R RUR"5 UR$[R&SS&[R("5R*nSUlUR.nUR5 URUR05 UR2nUR2H nXEcM
XEUR0UlM" SSS5 UR75 [8R:"UR<6 g!,(df   N<=f)Nr)r9�closer4�
removeHandlerr=rCr:r6r!r%r.�clear�updater/r,r-r&r(r*r)r"r#�disabler$r+r0r�
doCleanupsr	�threading_cleanupr )rG�hr#r$r0rIs      rK�tearDown�BaseTest.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�8K�D�&�&�t�,�5�+��$	
�����*�*�D�,?�,?�@�'�]�s�1E.J3�#J3�3
KNc�.�U=(d URn[R"U=(d UR5nUR	5R5nUR
[U5[U55 [XA5HZupVURU5nU(dURSU-5 UR
[UR55U5 M\ UR5nU(aURSU-5 gg)Nz*Log line does not match expected pattern:
z'Remaining output at end of log stream:
)r9�re�compile�expected_log_pat�getvalue�
splitlines�assertEqual�len�zip�search�fail�tuple�groups�read)	rG�expected_valuesr9�pat�actual_lines�actual�expected�match�ss	         rK�assert_log_lines�BaseTest.assert_log_lines�s����&�4�;�;���j�j��5�� 5� 5�6�����(�3�3�5������\�*�C��,@�A� #�L� B��F��J�J�v�&�E���	�	�G�"�#�$����U�5�<�<�>�2�H�=�!C�
�K�K�M����I�I�@�1�D�E�
�c�J�U=RS-
slSUR-$)N�z%d)�message_num�rGs rK�next_message�BaseTest.next_message�s&��	
���A����d�&�&�&�&rp)r r2r3r0r6r@r=r4r*r(r/r+r-r9�NN)�__name__�
__module__�__qualname__�__firstlineno__r?r\rsrLrWrnru�__static_attributes__�rprKrr[s+��:�J�4���K�%4�NA�>F�$'rprc�>�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�BuiltinLevelsTest��c��URn[R"S5nUR[R5 [R
"[R"S505nUR[R5 [R"S5nUR[R5 UR[RU"55 URU"55 UR[RU"55 URU"55 URU"55 URU"55 UR[RU"55 URU"55 URU"55 URU"55 URU"55 URU"55 URU"55 URU"55 URU"55 UR/SQ5 g)N�ERR�INF�DEB))r��CRITICAL�1)r��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)rur!r"r:r��
LoggerAdapterr�r;�logr��error�warning�info�debugrn)rG�mr�r�r�s     rK�	test_flat�BuiltinLevelsTest.test_flat�sr����������&�����W�]�]�#��#�#�G�$5�$5�e�$<�b�A�����W�\�\�"�����&�����W�]�]�#�	���� � �!�#�&��	�	�!�#������ � �!�#�&��	�	�!�#�����A�C�������
����� � �!�#�&��	�	�!�#�����A�C�������
��	�	�!�#��	���A�C�������
��	�	�!�#���	�	�!�#�����
�	rpc��URn[R"S5nUR[R5 [R"S5nUR[R
5 UR
[RU"55 URU"55 URU"55 URU"55 URU"55 URSS/5 g)Nr��INF.ERR)r�r�r�)r�r�r��
rur!r"r:r�r�r�r�r�r�r�r�rn)rGr�r��INF_ERRs    rK�test_nested_explicit�&BuiltinLevelsTest.test_nested_explicit�s�����������&�����W�\�\�"��$�$�Y�/��������'�	���G�$�$�a�c�*��
�
�a�c��	���������Q�S���
�
�a�c�����(�%�
�	rpc��URn[R"S5nUR[R5 [R"S5nUR[R
5 [R"S5n[R"S5n[R"S5nUR
[RU"55 URU"55 URU"55 URU"55 UR
[RU"55 URU"55 URU"55 URU"55 URU"55 URU"55 UR/SQ5 g)Nr�r��	INF.UNDEF�
INF.ERR.UNDEF�UNDEF))r�r�r�)r�r�r�)r�r�r�)r�r�r�)r�r�r�)r�r�r�r�)rGr�r�r��	INF_UNDEF�
INF_ERR_UNDEFr�s       rK�test_nested_inherited�'BuiltinLevelsTest.test_nested_inheriteds>����������&�����W�\�\�"��$�$�Y�/��������'��%�%�k�2�	��)�)�/�:�
��!�!�'�*��	�
�
�g�&�&���,����������!�#�����q�s�����'�*�*�A�C�0����A�C� �	���������a�c�"����1�3�����A�C� ����
�	rpc�H�URn[R"S5n[R"S5n[R"S5nUR[R5 UR[RU"55 URU"55 UR[RU"55 URU"55 URU"55 URU"55 UR/SQ5 g)Nr��INF.BADPARENT.UNDEF�
INF.BADPARENT))r�r�r�)r�r�r�)r�r�r�)r�r�r�)
rur!r"r:r�r��FATALr�r�rn)rGr�r��
GRANDCHILD�CHILDs     rK�test_nested_with_virtual_parent�1BuiltinLevelsTest.test_nested_with_virtual_parent.s�����������&���&�&�'<�=�
��!�!�/�2�����W�\�\�"�	���w�}�}�a�c�*�������
�	�	�'�-�-���%�
�
�
�1�3��	������
���A�C�����
�	rpc���UR[R"S5[R5 UR[R"[R5S5 g)Nr�)r_r!�getLevelNamer�rts rK�test_regression_22386�'BuiltinLevelsTest.test_regression_22386Hs@������-�-�f�5�w�|�|�D�����-�-�g�l�l�;�V�Drpc�p�[R"S5nURU[R5 g)Nr�)r!r�r_r�)rG�fatals  rK�test_issue27935�!BuiltinLevelsTest.test_issue27935Ms&���$�$�W�-�������
�
�.rpc���[R"[RS5 UR[R[RS5 UR	[R
"[R5S5 UR	[R
"[R5S5 UR	[R
"S5[R5 g)Nrr��NOTSET)r!�addLevelNamer��
addCleanupr_r�r�rts rK�test_regression_29220�'BuiltinLevelsTest.test_regression_29220Qs������W�\�\�2�.�����,�,�g�l�l�F�C�����-�-�g�l�l�;�R�@�����-�-�g�n�n�=�x�H�����-�-�h�7����Hrpr}N)rxryrzr{r�r�r�r�r�r�r�r|r}rprKrr�s)��-�^�.!�F�4E�
/�Irprc�&�\rSrSrSrSrSrSrg)�BasicFilterTestiYc��[R"S5nURRSnUR	U5 [R
"S5n[R
"S5n[R
"S5n[R
"S5nUR
UR55 UR
UR55 UR
UR55 UR
UR55 URSS/5 URU5 g!URU5 f=f)N�	spam.eggsr�spam�spam.eggs.fish�spam.bakedbeans�r�r�r��r�r�r�)
r!�Filterr4rC�	addFilterr"r�rurn�removeFilter)rG�filter_�handlerr��	spam_eggs�spam_eggs_fish�spam_bakedbeanss       rK�test_filter�BasicFilterTest.test_filter]s
���.�.��-���"�"�+�+�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�C8D;�;Ec�|�SnURRSnURU5 [R"S5n[R"S5n[R"S5n[R"S5nURUR
55 URUR
55 URUR
55 URUR
55 URSS/5 URU5 g!URU5 f=f)	Nc�j�URRS5nSRUSS5nUS:H$)N�.�r�)rI�split�join)�record�parts�prefixs   rK�
filterfunc�8BasicFilterTest.test_callable_filter.<locals>.filterfuncys5���K�K�%�%�c�*�E��X�X�e�B�Q�i�(�F��[�(�(rprr�r�r�r�r�r�)	r4rCr�r!r"r�rurnr�)rGr�r�r�r�r�r�s       rK�test_callable_filter�$BasicFilterTest.test_callable_filterus��	)�
�"�"�+�+�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�C8D(�(D;c��[R"5n[R"SS05nURUR	U55 g)NrIr�)r!r��
makeLogRecordrF�filter)rG�f�rs   rK�test_empty_filter�!BasicFilterTest.test_empty_filter�s7���N�N����!�!�6�;�"7�8����������$rpr}N)rxryrzr{r�r�r�r|r}rprKr�r�Ys��*�0-�:%rpr��x�w�v�u�t�s�r�q�p�orr�Silent�Taciturn�Terse�Effusive�Sociable�Verbose�	Talkative�	Garrulous�
Chatterbox�Boringc��\rSrSrSrSrg)�GarrulousFilteri�c�(�UR[:g$�N)�levelno�	GARRULOUS�rGr�s  rKr��GarrulousFilter.filter�s���~�~��*�*rpr}N�rxryrzr{r�r|r}rprKr�r��s��+rpr�c��\rSrSrSrSrg)�VerySpecificFilteri�c�4�UR[[4;$r�)r�SOCIABLE�TACITURNrs  rKr��VerySpecificFilter.filter�s���~�~�h��%9�9�9rpr}Nrr}rprKrr�s��:rprc�B�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rg)�CustomLevelsAndFiltersTesti��^[\w.]+ -> (\w+): (\d+)$c��[RU5 [R5Hup[R
"X5 M gr�)rrL�my_logging_levels�itemsr!r�)rG�k�vs   rKrL� CustomLevelsAndFiltersTest.setUp�s1�����t��%�+�+�-�D�A�� � ��&�.rpc�\�[H"nURX R55 M$ gr�)�LEVEL_RANGEr�ru)rG�logger�lvls   rK�log_at_all_levels�,CustomLevelsAndFiltersTest.log_at_all_levels�s!���C��J�J�s�-�-�/�0�rpc�z�S[R4Sjn[R"S5n[R"S5n[R"5n[R"5n[R
"U5n[R
"U5nUR
U5 URU5 URU5 URS5 UR5 UR5 URUR5S5 URUR5S5 g)Nr�c�@�[R"U5nSUlU$)Nznew message!)r'�msg)r�s rK�replace_message�WCustomLevelsAndFiltersTest.test_handler_filter_replaces_record.<locals>.replace_message�s���Y�Y�v�&�F�'�F�J��Mrp�parentzparent.childzoriginal messagezoriginal message
z
new message!
)r!�	LogRecordr"r7r8r<r�rEr��flushr_r])rGrr�child�stream_1�stream_2�	handler_1�	handler_2s        rK�#test_handler_filter_replaces_record�>CustomLevelsAndFiltersTest.test_handler_filter_replaces_record�s���	�G�$5�$5�	��"�"�8�,���!�!�.�1���;�;�=���;�;�=���)�)�(�3�	��)�)�(�3�	����O�,����)�$�
����#�
�
�
�%�&�������������*�*�,�.B�C�����*�*�,�.>�?rpc�l^�[5m"U4SjS[R5n[R"S5nUR	[R
5 UR
U"55 UR
U"55 URS5 URS[T55 g)Nc�>>�\rSrSrS\R
4U4SjjrSrg)�WCustomLevelsAndFiltersTest.test_logging_filter_replaces_record.<locals>.RecordingFilteri�r�c�d>�TR[U55 [R"U5$r�)�add�idr')rGr��recordss  �rKr��^CustomLevelsAndFiltersTest.test_logging_filter_replaces_record.<locals>.RecordingFilter.filter�s"������B�v�J�'��y�y��(�(rpr}N)rxryrzr{r!r r�r|�r/s�rK�RecordingFilterr+�s���
)�W�%6�%6�
)�
)rpr2rrr�)
�setr!r�r"r:r�r�r�r_r`)rGr2rr/s   @rK�#test_logging_filter_replaces_record�>CustomLevelsAndFiltersTest.test_logging_filter_replaces_record�s~����%��	)�g�n�n�	)�
�"�"�8�,��������%�����*�+�����*�+����E������C��L�)rpc��URR[5 URUR5 UR	/SQ5 g)N)�r�r��r�r��r�r��r�r��r�r��r�r�)r4r:�VERBOSErrnrts rK�test_logger_filter�-CustomLevelsAndFiltersTest.test_logger_filter	s=�����!�!�'�*����t�/�/�0����
�	rpc��URRSR[5 UR	UR5 UR/SQ5 URRSR[R5 g!URRSR[R5 f=f)Nr)r8r9r:r;r<)r4rCr:rrrnr!r�rts rK�test_handler_filter�.CustomLevelsAndFiltersTest.test_handler_filters������!�!�!�$�-�-�h�7�	B��"�"�4�#3�#3�4��!�!�#�
�
���%�%�a�(�1�1�'�.�.�A��D���%�%�a�(�1�1�'�.�.�A�s�.B�8Cc�T�URRSnSn[5nURU5 UR	UR5 /SQnURU5 [
5nURRU5 UR	UR5 URU/SQ-5 U(aURRU5 URU5 g!U(aURRU5 URU5 f=f)Nr)	)r�r�)r�r�)r�r�r7r8r9r:r;r<))r�r�)r��12)r��14)r��15)r��17)r��18)r��20)r4rCr�r�rrnrr�)rGr��specific_filter�garr�first_liness     rK�test_specific_filters�0CustomLevelsAndFiltersTest.test_specific_filters's����"�"�+�+�A�.����� �����$��!	'��"�"�4�#3�#3�4��K�
�!�!�+�.�0�2�O����&�&��7��"�"�4�#3�#3�4��!�!�+�
1
�
#
�

��� � �-�-�o�>�� � ��&���� � �-�-�o�>�� � ��&�s�BC2�25D'r}N)
rxryrzr{r\rLrr'r4r>rArMr|r}rprKrr�s/��
3��'�
1�@�8*�"�B� ('rprc�b�[R"U0UD6up#[R"U5 U$r�)�tempfile�mkstemp�osrO)�args�kwargs�fd�fns    rK�make_temp_filerWRs)��
�
�
�t�
.�v�
.�F�B��H�H�R�L�
�Irpc�n�\rSrSrSrSrSr\R"\	RS:HS5\R"\RS5\
R"5\R"S5S	5555r\R""5\
R"5\\S
5555rSrg)
�HandlerTestiXc��[R"5nSUlURURS5 SUlURURS5 UR	[
URS5 g)N�generic�anothergeneric)r!�HandlerrIr_�assertRaises�NotImplementedError�emit�rGrVs  rK�	test_name�HandlerTest.test_nameYs\���O�O�������������+�!���������!1�2����-�q�v�v�t�<rpc��[RS;Ga2SGH�n[5nU(d[R"U5 [
RRUSSS9nU(a�URURpTURUS5 URUS5 [
R"SS05nURU5 [R"U5 UR[RRU55 URU5 UR![RRU55 O8URURS5 URURS5 UR#5 U(dGM�[R"U5 GM� [RS	:XaS
nOSn[
RR%U5nURUR&UR(5 UR!UR*5 UR#5 SHmnUS
:Xa3UR/[0[
RR2SSU5 M<[
RR3SSU5nUR#5 Mo [
RR5S5n[
R"05nUR!UR7U55 UR#5 [
RR5S5nURUR7U55 UR#5 g![,a GN5f=f)N��linux�android�darwin)TF�utf-8T��encoding�delay���r�Testrhz/var/run/syslogz/dev/log)�GET�POST�PUTrq�	localhostz/logrrr)�sys�platformrWrR�unlinkr!rC�WatchedFileHandler�dev�inor_r��handle�assertFalse�path�existsrFrO�
SysLogHandler�facility�LOG_USER�
unixsocket�OSErrorr^�
ValueError�HTTPHandler�BufferingHandler�shouldFlush)	rG�existingrVrVrwrxr��sockname�methods	         rK�test_builtin_handlers�!HandlerTest.test_builtin_handlersas|���<�<�9�9�)��#�%����I�I�b�M��$�$�7�7��W�TX�7�Y��� �u�u�a�e�e���$�$�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�/����	��8��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�A0M0�0
M>�=M>c�H�[5n[R"U5 [R"U5n[
RUS44[
RRUS44[
RRUS444n[RS;a"U[
RRUS444-
nUHaupEU"USS06nUR[RRU55 UR!5 [R"U5 Mc g)N�w�arVrerkri)rWrRrur�FakePathr!�FileHandlerrC�RotatingFileHandler�TimedRotatingFileHandlerrsrtrvrFr{r|rO)rGrV�pfn�cases�clsrSrVs       rK�test_pathlike_objects�!HandlerTest.test_pathlike_objects�s����
��
�	�	�"�
�� � ��$���(�(�3��*�5��%�%�9�9�C��:�F��%�%�>�>��c�
�K���
�<�<�9�9��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�	rp�ntz/WatchedFileHandler not appropriate for Windows.z'Emscripten cannot fstat unlinked files.�walltimec	�
^�U4SjnSnSnSTlSTlSGHMn[SS5n[R"XU4S9nSUlUR
5 [RRUSUS	9n[R"S
5nURU5 [U5H]n	[R"S5 [R"SS
05n
[R"5TlUR!U
5 M_ UR'5 UR)5 [*R,R/U5(a[*R0"U5 GMMGMP g!["a) [%STR<STR<35 ef=f!UR'5 UR)5 [*R,R/U5(a[*R0"U5 ff=f)Nc�>�[U5Hbn[R"U5 [R"5Tl[R"S[R"SS5-5 Md g![
a N?f=f)Ng����Mbp?r�)	�rangerRru�time�
deletion_timer��sleep�random�randint)�fname�tries�_rGs   �rK�remove_loop�*HandlerTest.test_race.<locals>.remove_loop�sb����5�\����I�I�e�$�)-����D�&��
�
�5�6�>�>�!�Q�#7�7�8�
"������s�0A4�4
B�B���FT�.logztest_logging-3-��targetrSTrirjz'%(asctime)s: %(levelname)s: %(message)s�{�G�zt?r�testingzDeleted at z, opened at )�handle_timer�rW�	threading�Thread�daemon�startr!rCrvr>rAr�r�r�r�ry�	Exception�printr�rOrRr{r|ru)rGr��	del_count�	log_countrlrV�removerrVr�r�r�s`          rK�	test_race�HandlerTest.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�&�/#��%���04�0B�0B�04�0@�0@�B�C��	���������	��7�7�>�>�"�%�%��I�I�b�M�&�s%� <F%�+E/�F%�/3F"�"F%�%AHc�P^^^�"SS[R5nUR[[R5S5 U"5mURTRRR5 STl	UR[[R5S5 UR[[R5S5 [R"S5nURT5 UR[R5 [ R""5m[ R""5mUUU4Sjn[ R$"USS	9nUR'5 TR)5 [*R,"5nUS:Xa)UR/S
5 [*R0"S5 gUR/S5 TR35 UR55 [6R8"USS9 g![*R0"S5 f=f)
Nc�.^�\rSrSrU4SjrSrSrU=r$)�AHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandleri�c�f>�[TU]5 [R"[	SSSS9S9Ulg)Nz	/dev/null�wtri�rk�r9)�super�__init__r!r<�open�sub_handler�rG�	__class__s �rKr��JHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.__init__�s.����� �"�#*�#8�#8���T�G�D�$F�� rpc��URR URRU5 SSS5 g!,(df   g=fr�)r��lockr`rs  rKr`�FHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.emit�s1���%�%�*�*��$�$�)�)�&�1�+�*�*�s	�<�
A
)r��rxryrzr{r�r`r|�
__classcell__�r�s@rK�_OurHandlerr��s���
F�

2�
2rpr�rz*because we need at least one for this testrr� test_post_fork_child_no_deadlockc��>�[R TR TR5 TR	S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)N��?)r!r%r�r3�wait)�+fork_happened__release_locks_and_end_thread�locks_held__ready_to_fork�refed_hs���rK�lock_holder_thread_fn�KHandlerTest.test_post_fork_child_no_deadlock.<locals>.lock_holder_thread_fn�s?���������)�-�-�/�<�@�@��E�!-��������s"�
A#�"A�A#�
A 	�A#�#
A1z,test_post_fork_child_no_deadlock lock holder)r�rIz#Child process did not deadlock. \o/z&Parent process returned from fork. \o/)�exitcode)r!r]r_r`r&r�r�r9rOrI�
assertGreater�_at_fork_reinit_lock_weaksetr"rEr:r;r��Eventr�r�r�rR�forkr��_exitr3r�r�wait_process)	rGr��test_loggerr��lock_holder_thread�pidr�r�r�s	      @@@rKr��,HandlerTest.test_post_fork_child_no_deadlock�s����	2�'�/�/�	2�	
����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�	F�$'�-�-�,�C�E��	� � �"�!�&�&�(��g�g�i���!�8�
�� � �!G�H������
���F�G�7�;�;�=��#�#�%�� � ��q�1�������s�H
�
H%)r�r�N)rxryrzr{rbr�r��unittest�skipIfrRrIr�
is_emscriptenr	�requires_working_threading�requires_resourcer��
requires_fork�skip_if_asan_fork�skip_if_tsan_forkr�r|r}rprKrYrYXs���=�3�j�,�_�_�R�W�W��_�&W�X�
�_�_����H���0�0�2����z�*�)"�+�3��Y�)"�^
�����0�0�2���>2���3��>2rprYc��\rSrSrSrSrg)�	BadStreami&c��[S5e)N�deliberate mistake)�RuntimeError)rG�datas  rK�write�BadStream.write's���/�0�0rpr}N)rxryrzr{r�r|r}rprKr�r�&s��1rpr�c��\rSrSrSrSrg)�TestStreamHandleri*c��Xlgr���error_recordrs  rK�handleError�TestStreamHandler.handleError+s��"�rpr�N)rxryrzr{r�r|r}rprKr�r�*s��#rpr�c�0�\rSrSr\R
rSrSrg)�StreamWithIntNamei.r�r}N)	rxryrzr{r!r��levelrIr|r}rprKr�r�.s���N�N�E��Drpr�c�&�\rSrSrSrSrSrSrg)�StreamHandlerTesti2c���[[55n[R"05n[RnURU5 UR
URU5 [R"[55n[R"5nURU5 SnURXTR55 SSS5 S[l[R"5nURU5 URSUR55 SSS5 U[lg!,(df   Nt=f!,(df   N+=f!U[lf=f)Nz"
RuntimeError: deliberate mistake
Fr)r�r�r!r��raiseExceptionsry�assertIsr�r<r�captured_stderr�assertInr]r_)rGrVr��	old_raise�stderrrs      rK�test_error_handling�%StreamHandlerTest.test_error_handling3s����i�k�*���!�!�"�%���+�+�	�	0�
�H�H�Q�K��M�M�!�.�.�!�,��%�%�i�k�2�A��(�(�*�f������<���
�
�c�?�?�#4�5�+�
',�G�#��(�(�*�f������� � ��V�_�_�%6�7�+�'0�G�#�+�*��+�*��'0�G�#�s<�A E�3D<�(E�62E
�(E�<
E
�E�
E�E�
E+c�B�[R"5n[R"5nUR	U5nURU[R5 UR	U5nURXB5 UR	U5nURU5 gr�)	r!r<r7r8�	setStreamrrsr�assertIsNone)rGrVr9�oldrjs     rK�test_stream_setting�%StreamHandlerTest.test_stream_settingIss��
�!�!�#��������k�k�&�!���
�
�c�3�:�:�&����S�!���
�
�f�%����S�!�����&�!rpc�v�[R"[55nUR[	U5S5 g)Nz<StreamHandler 2 (NOTSET)>)r!r<r�r_�reprras  rK�'test_can_represent_stream_with_int_name�9StreamHandlerTest.test_can_represent_stream_with_int_nameWs+���!�!�"3�"5�6������a��">�?rpr}N)rxryrzr{rrrr|r}rprKr�r�2s��0�,"�@rpr�c�2�\rSrSrSrSrSrSrSrSr	g)	�TestSMTPServeri^c��[RRXSUSS9 URR	5SUlX lSUlSUlX0l	g)NT)�map�decode_datarrF)
r�
SMTPServerr��socket�getsockname�port�_handler�_thread�_quit�
poll_interval)rG�addrr�r�sockmaps     rKr��TestSMTPServer.__init__ssV��
���!�!�$�d��.2�	"�	4��K�K�+�+�-�a�0��	��
������
�*�rpc�(�URXX45 gr�)r)rG�peer�mailfrom�rcpttosr�s     rK�process_message�TestSMTPServer.process_message|s��	
�
�
�d�g�4rpc��[R"URUR4S9=UlnSUlUR
5 g�Nr�T�r�r��
serve_foreverrrr�r��rG�ts  rKr��TestSMTPServer.start��C��%�+�+�4�3E�3E�26�2D�2D�1F�H�	H���q����	���	rpc��UR(d3[R"XRSS9 UR(dM2gg)Nrr)r�count)rr�loop�_map)rGrs  rKr+�TestSMTPServer.serve_forever�s(���*�*��M�M�-�Y�Y�a�@��*�*�*rpc��SUl[R"UR5 SUlUR	5 [
R"URSS9 g)NT)r�
ignore_all)rr	�join_threadrrOr�	close_allr3rts rK�stop�TestSMTPServer.stop�sA��
��
��$�$�T�\�\�2�����
�
�����t�y�y�T�:rp)rrrrrN)
rxryrzr{r�r&r�r+r9r|r}rprKrr^s��*+�
5��	A�	;rprc�:^�\rSrSrSrSrU4SjrSrSrU=r	$)�ControlMixini�c�^�SUlX lXl[R"5Ulgr�)rrrr�r��ready)rGr�rs   rKr��ControlMixin.__init__�s"�����*���
��_�_�&��
rpc��[R"URUR4S9=UlnSUlUR
5 gr)r*r,s  rKr��ControlMixin.start�r/rpc�`>�URR5 [[U]U5 gr�)r>r3r�r<r+)rGrr�s  �rKr+�ControlMixin.serve_forever�s"���
	
�
�
����
�l�D�/�
�>rpc���UR5 URb'[R"UR5 SUlUR	5 UR
R
5 gr�)�shutdownrr	r7�server_closer>rQrts rKr9�ControlMixin.stop�sL��	
�
�
���<�<�#��(�(����6��D�L������
�
���rp)rrrr>)
rxryrzr{r�r�r+r9r|r�r�s@rKr<r<�s��� '��?�	�	rpr<c�(�\rSrSrSSjrSrSrg)�TestHTTPServeri�Nc�^^�"UU4SjS[5m[R"XT5 [RXU5 XPlg)Nc�>>^�\rSrSrSSjrSrUUU4SjrSrU=r$)�=TestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandleri�c�\�URS5(aUR$[U5e)N�do_)�
startswith�process_request�AttributeError)rGrI�defaults   rK�__getattr__�ITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.__getattr__�s(���?�?�5�)�)��/�/�/�$�T�*�*rpc�:�URRU5 gr���serverrrts rKrP�MTestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.process_request�������$�$�T�*rpc�:>�T(a[TU]"U/UQ76 ggr�)r��log_message)rG�formatrS�DelegatingHTTPRequestHandlerr�r�s   ���rKr[�ITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.log_message�s1�����6��,� +�,�,2�;�59�;�rpr}r�)	rxryrzr{rSrPr[r|r�)r�r]r�s@��rKr]rL�s���
+�

+�
;�
;rpr])rrr�r<�sslctx)rGrr�rr�r_r]s    ` @rKr��TestHTTPServer.__init__�s=���	;�	;�+A�	;�	���D�(D�E����d�]�;��rpc��URR5upUR(aURRUSS9nX4$![a(n[
RRSU-5 eSnAff=f)NT)�server_sidezGot an error:
%s
)r�acceptr_�wrap_socketr�rsrr�)rG�sockr�es    rK�get_request�TestHTTPServer.get_request�sr��	����+�+�-�J�D��{�{��{�{�.�.�t��.�F��
�z���	�	��J�J���2�Q�6�7���	�s�AA�
A>�#A9�9A>�r_)r�FN)rxryrzr{r�rgr|r}rprKrIrI�s��58�#'��&	rprIc�:^�\rSrSrSrSSjrU4SjrSrU=r$)�
TestTCPServeriTc�~�"SS[5n[R"XUU5 [RXU5 g)Nc��\rSrSrSrSrg)�;TestTCPServer.__init__.<locals>.DelegatingTCPRequestHandleric�:�URRU5 gr�rVrts rKry�BTestTCPServer.__init__.<locals>.DelegatingTCPRequestHandler.handlerYrpr}N)rxryrzr{ryr|r}rprK�DelegatingTCPRequestHandlerrns��
+rprq)rrr�r<)rGrr�r�bind_and_activaterqs      rKr��TestTCPServer.__init__s7��	+�*>�	+�	�#�#�D�0K�$5�	7����d�]�;rpc�n>�[[U]5 URR	5SUlg�Nrr)r�rk�server_bindrrrr�s �rKrv�TestTCPServer.server_bind�)���
�m�T�.�0��K�K�+�+�-�a�0��	rp)r�r�T)	rxryrzr{�allow_reuse_addressr�rvr|r�r�s@rKrkrks �����47�#'�<�1�1rprkc�B^�\rSrSrSSjrU4SjrU4SjrSrU=r$)�
TestUDPServeri"c�^�"U4SjS[5m[R"XTU5 [RXU5 SUlg)Nc�2>^�\rSrSrSrUU4SjrSrU=r$)�;TestUDPServer.__init__.<locals>.DelegatingUDPRequestHandleri5c�:�URRU5 gr�rVrts rKry�BTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.handle7rYrpc�>�URR5nU(a[TU]5 gg![a UR
R(degf=fr�)�wfiler]r��finishr�rW�_closed)rGr��DelegatingUDPRequestHandlerr�s  ��rKr��BTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.finish:sV����z�z�*�*�,���"��9�4�G�I���#�"�#�{�{�2�2�!� 3�"�s�4�&A�Ar})rxryrzr{ryr�r|r�)r�r�s@�rKr�r5s���
+�
"�
"rpr�F)rrr�r<r�)rGrr�rrrr�s     @rKr��TestUDPServer.__init__3sA���	"�*@�	"�	�#�#�D�$?�$5�	7�	���d�]�;���rpc�n>�[[U]5 URR	5SUlgru)r�r|rvrrrr�s �rKrv�TestUDPServer.server_bindIrxrpc�8>�[[U]5 SUlg)NT)r�r|rFr�r�s �rKrF�TestUDPServer.server_closeMs���
�m�T�/�1���rp)r�rry)	rxryrzr{r�rvrFr|r�r�s@rKr|r|"s���"58�#'��,1��rpr|�AF_UNIXc�,�\rSrSr\R
rSrg)�TestUnixStreamServeriRr}N�rxryrzr{rr��address_familyr|r}rprKr�r�R������rpr�c�,�\rSrSr\R
rSrg)�TestUnixDatagramServeriUr}Nr�r}rprKr�r�Ur�rpr�c�8�\rSrSr\R
rSrSrSr	g)�SMTPHandlerTestiZc���0n[[RS4URSU5nUR	5 [RUR
4n[RRUSSSURS9nURURS/5 /Ul[R"SS05n[R"5UlUR#U5 UR R%UR5 UR'5 UR)UR R+55 UR[-UR5S	5 URSupgp�URUS5 URUS/5 UR/S
U	5 UR)U	R1S55 UR35 g)Nr���MbP?�me�you�Log��timeoutru	Hello ✓rrz
Subject: Log
u

Hello ✓)rr�HOSTr&r�rr!rC�SMTPHandler�TIMEOUTr_�toaddrs�messagesr�r�r��handledryr�r9rF�is_setr`r�endswithrO)
rGr rWrrVr�r#r$r%r�s
          rK�
test_basic�SMTPHandlerTest.test_basic`sq������!3�!3�Q� 7��9M�9M�u� '�)�������"�"�F�K�K�0�����(�(��t�U�E�15���
)�
?��������U�G�,���
��!�!�5�.�"9�:�� ���(���	����������$�,�,�'����
�������+�+�-�.�����T�]�]�+�Q�/�(,�
�
�a�(8�%�������4�(�����5�'�*��
�
�(�$�/�����
�
�&8�9�:�	���	rpc�n�URRU5 URR5 gr�)r��appendr�r3)rGrSs  rKr&�SMTPHandlerTest.process_messagexs$���
�
���T�"������rp)r�r�N)
rxryrzr{r�LONG_TIMEOUTr�r�r&r|r}rprKr�r�Zs���"�"�G��0rpr�c�d�\rSrSrSrSrSrSrSrSr	\
R"5S5rS	r
g
)�MemoryHandlerTesti|r
c�L�[RU5 [RR	S[R
UR5Ul[R"S5Ul	SURl
URRUR5 g)N�
�memr)rrLr!rC�
MemoryHandlerr�r=�mem_hdlrr"�
mem_logger�	propagaterErts rKrL�MemoryHandlerTest.setUp�sj�����t���(�(�6�6�r�7�?�?�7;�~�~�G��
�!�+�+�E�2���$%����!����"�"�4�=�=�1rpc�b�URR5 [RU5 gr�)r�rOrrWrts rKrW�MemoryHandlerTest.tearDown�� ���
�
�������$�rpc	�^�URRUR55 UR/5 URR	UR55 UR/5 URRUR55 /SQnURU5 SH�n[
S5H,nURRUR55 M. URU5 URRUR55 U[
X"S-5Vs/sHnS[U54PM sn-nURU5 M� URRUR55 URU5 gs snf)N)�r;r��r�r�)r�r�)r���	r�r;)r�r�rurnr�r�r��str)rG�lines�n�is    rK�
test_flush�MemoryHandlerTest.test_flush�sR��	
�����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���URRUR55 UR/5 URR	UR55 UR/5 URRUR5 URR5 SS/nURU5 [RRS[RURS5UlURRUR5 URRUR55 URU5 URR	UR55 URU5 URRUR5 URR5 URU5 g)Nr�r�r�F)r�r�rurnr�rPr�rOr!rCr�r�r=rE�rGr�s  rK�test_flush_on_close�%MemoryHandlerTest.test_flush_on_close�sa��	
�����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�$rpc���URRUR55 UR/5 URR	UR55 UR/5 [
R"[
RRUR5/S9 SS/nURU5 [
RRS[
RURS5Ul	URRUR5 URRUR55 URU5 URR	UR55 URU5 [
R"[
RRUR5/S9 URU5 g)N��handlerListr�r�r�F)r�r�rurnr�r!rE�weakref�refr�rCr�r�r=rEr�s  rK�test_shutdown_flush_on_close�.MemoryHandlerTest.test_shutdown_flush_on_close�s]��
	
�����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�$rpc���"SS5nU"UR5nURRU5 [S5HOn[R"S5 UR
R
S5 UR
RS5 MQ URHn[R"U5 M g!URHn[R"U5 M f=f)Nc�&�\rSrSrSrSrSrSrg)�ZMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandleri�c��Xl/Ulgr��r��threads)rGr�s  rKr��cMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.__init__�s�� (�
�!��rpc�:�URRS5 gr�)r��	setTargetrts rK�removeTarget�gMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.removeTarget�s���
�
�'�'��-rpc��[R"URS9nURR	U5 UR5 g)N�r�)r�r�r�r�r�r�)rGrrs   rKry�aMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.handle�s3��"�)�)��1B�1B�C�����#�#�F�+����rpr�N)rxryrzr{r�r�ryr|r}rprK�MockRaceConditionHandlerr��s��
"�
.�
rpr�r�r�znot flushed�flushed)r�r�r�r�r�r�r�r�r�r	r7)rGr�r�r�rs     rK�&test_race_between_set_target_and_flush�8MemoryHandlerTest.test_race_between_set_target_and_flush�s���	�	�*�$�-�-�8��		5��M�M�#�#�F�+��2�Y���
�
�5�!����$�$�]�3����'�'�	�2��
!�.�.�� �,�,�V�4�)��&�.�.�� �,�,�V�4�)�s�A9C�+C,)r�r�N)rxryrzr{r\rLrWr�r�r�r	r�r�r|r}rprKr�r�|s@��
3��2� �%�8%�<%�:�0�0�2�5�3�5rpr�c��\rSrSrSrSrg)�ExceptionFormatteric�&�SUSR-$)Nz
Got a [%s]r)rx)rG�eis  rK�formatException�"ExceptionFormatter.formatExceptions���b��e�n�n�,�,rpr}N)rxryrzr{r�r|r}rprKr�r�s��-rpr�c�P�UR5 [R"U5 gr��rOrR�remove)rVrVs  rK�closeFileHandlerr�s���G�G�I��I�I�b�Mrpc�>�\rSrSr\R
rSrSrSrSr	\RSS5r\RSS	5rS
\-S-r
\RSS
5rSrSrSrSrSrSrSrSr\4SjrSrSrSrSrSrSrSrSrSr S r!S!r"S"r#S#r$S$r%S%r&g&)'�ConfigFileTesti�^(\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��[R"[R"U55n[R
R"U4SS0UD6 g)Nrkri)r7r8�textwrap�dedentr!�config�
fileConfig)rG�confrT�files    rK�apply_config�ConfigFileTest.apply_config%s5���{�{�8�?�?�4�0�1�����!�!�$�C��C�F�Crpc��[R"5nURUR5 [R
"5nUR
UR55 URUR55 URS/US9 UR/5 SSS5 g!,(df   g=f�N�r�r�r�)
r�captured_stdoutr��config0r!r"r�rur�rn�rG�outputrs   rK�test_config0_ok�ConfigFileTest.test_config0_ok)s���
�
$�
$�
&�&����d�l�l�+��&�&�(�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!��#��
"�
�
�!�!�"�%�'�
&�
&�s�BB0�0
B>c�>�[R"5n[R"[R
"UR55n[R"5nURU5 [RRU5 [R"5nURUR55 UR!UR55 UR#S/US9 UR#/5 SSS5 g!,(df   g=fr�)rr�r7r8r�r�r��configparser�ConfigParser�	read_filer!r�r�r"r�rur�rn)rGr�r��cprs     rK�test_config0_using_cp_ok�'ConfigFileTest.test_config0_using_cp_ok8s���
�
$�
$�
&�&��;�;�x���t�|�|�<�=�D��*�*�,�B��L�L����N�N�%�%�b�)��&�&�(�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!��#��
"�
�
�!�!�"�%�'�
&�
&�s�C/D�
Dc�r�[R"5nURU5 [R"S5nURUR
55 URUR
55 URSS/US9 UR/5 SSS5 g!,(df   g=f�N�compiler.parser�r�r�r�r��	rr�r�r!r"r�rur�rn�rGr�r�rs    rK�test_config1_ok�ConfigFileTest.test_config1_okJ���
�
$�
$�
&�&����f�%��&�&�'8�9�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!���#��
"�
�

�!�!�"�%�'�
&�
&���B	B(�(
B6c�Z�UR[URUR5 gr��r^r�r��config2rts rK�test_config2_failure�#ConfigFileTest.test_config2_failureY������)�T�%6�%6����Erpc�Z�UR[URUR5 gr��r^r�r��config3rts rK�test_config3_failure�#ConfigFileTest.test_config3_failure]rrpc���[R"5nURUR5 [R
"5n[
5e![a [R"S5 Of=f[RRS5 URUR5S5 UR/5 SSS5 g!,(df   g=f�N�just testingr�-ERROR:root:just testing
Got a [RuntimeError]
)rr�r��config4r!r"r��	exceptionrs�stdout�seekr_r]rnr�s   rK�test_config4_ok�ConfigFileTest.test_config4_okas���
�
$�
$�
&�&����d�l�l�+��&�&�(�F�
2�"�n�$���
2��!�!�.�1�
2���J�J�O�O�A�����V�_�_�.�A�
C�
�!�!�"�%�'�
&�
&�s*�1C�
A� A5�2C�4A5�5AC�
Cc�6�URURS9 g�N�r�)r
�config5rts rK�test_config5_ok�ConfigFileTest.test_config5_okp������D�L�L��1rpc�6�URURS9 gr')r
�config6rts rK�test_config6_ok�ConfigFileTest.test_config6_oksr,rpc��[R"5nURUR5 [R
"S5n[R
"S5nUR
UR55 URUR55 URUR55 UR/SQUS9 UR/5 SSS5 [R"5nURUR5 [R
"S5nURUR5 UR
UR55 URUR55 [R
"S5nUR
UR55 URUR55 WRUR55 UR/SQUS9 UR/5 SSS5 g!,(df   GNN=f!,(df   g=f)Nr	�compiler-hyphenated�r
r�)r�r�r��compiler.lexer�)r�r�)r�r�)r�r�)r�r�)rr�r��config1ar!r"r�rur��criticalrn�config7rzr�rGr�r�
hyphenateds    rK�test_config7_ok�ConfigFileTest.test_config7_okvs���
�
$�
$�
&�&����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�CH%�;D!H7�%
H4�7
Ic��UR5 [SS5n[RS:XaUR	SS5nUR
R
US9nURU5 URU5 SSS5 [RRSnUR[UW5 g!,(df   NC=f)Nr��test_logging-X-r��\z\\)rPr)
�check_no_resource_warningrWrRrI�replace�config8r\r�r!�rootrCr�r�)rGrVrBr�s    rK�test_config8_ok�ConfigFileTest.test_config8_ok�s���
�
+�
+�
-���(9�:�B��w�w�$���Z�Z��f�-���l�l�)�)�2�)�6�G����g�&����g�&�.��,�,�'�'��*�����(�'�2�6�.�
-�s�A.B<�<
C
c�n�URUR5 [RRSR
nUR
[R"SS055nURUS5 UR
[R"SSS.55nURUS5 g)Nrr�testztest ++ defaultvalue�customvalue�r�customfieldztest ++ customvalue)	r��config9r!rCrC�	formatterr\r�r_)rGrL�results   rK�test_config9_ok�ConfigFileTest.test_config9_ok�s������$�,�,�'��L�L�)�)�!�,�6�6�	��!�!�'�"7�"7����"H�I������!7�8��!�!�'�"7�"7��=�9�#;�<������!6�7rpc�r�URUR5 [R"S5nUR	UR
5 URUR5 UR
UR
5 URURSS9 UR	UR
5 g)N�some_pristine_loggerF)�disable_existing_loggers)r��disable_testr!r"rzrrF�rGrs  rK�test_logger_disabling�$ConfigFileTest.test_logger_disabling�s������$�+�+�,��"�"�#9�:��������)����$�+�+�,�������(����$�+�+�e��L�������)rpc��SnURU5 UR[R"5RSR
S5 g)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_r!r"rCrI)rG�test_configs  rK�test_config_set_handler_names�,ConfigFileTest.test_config_set_handler_names�sC����(	
���+�&�����*�*�,�5�5�a�8�=�=�w�Grpc��Sn[R"[R"U55nUR	[
[RRU5 g)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
            )	r7r8r�r�r^r�r!r�r�)rGrYr�s   rK�'test_exception_if_confg_file_is_invalid�6ConfigFileTest.test_exception_if_confg_file_is_invalid�s>����.�{�{�8�?�?�;�7�8�����,����(A�(A�4�Hrpc���[R"SSS9up[R"U5 UR	[
[RRU5 [R"U5 g)N�test_empty_�.ini�r��suffix)
rPrQrRrOr^r�r!r�r�r�)rGrUrVs   rK�%test_exception_if_confg_file_is_empty�4ConfigFileTest.test_exception_if_confg_file_is_empty�sH���!�!��v�F���
��������,����(A�(A�2�F�
�	�	�"�
rpc�b�UR[[RRS5 g)N�filenotfound)r^�FileNotFoundErrorr!r�r�rts rK�,test_exception_if_config_file_does_not_exist�;ConfigFileTest.test_exception_if_config_file_does_not_exist�s�����+�W�^�^�-F�-F��Wrpc
��[R"S5R5n[R"SSS9up#[
R"X!RS55 [
R"U5 [RRUS[SSS	S
SSS
.0S9S9 [
R"U5 g![
R"U5 f=f)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_rarb�asciirirrFr[z5%(asctime)s [%(process)d] [%(levelname)s] %(message)sz[%Y-%m-%d %H:%M:%S %z]zlogging.Formatter)r\�datefmt�class)�versionrR�
formatters)rk�defaults)r�r��striprPrQrRr��encoderOr!r�r��dictru)rG�inirUrVs    rK�!test_defaults_do_no_interpolation�0ConfigFileTest.test_defaults_do_no_interpolations����o�o���&���'	�(�!�!���H���	��H�H�R���G�,�-��H�H�R�L��N�N�%�%�� ���-2�!�&]�'?�%8�$� �
�
&�
� 
�I�I�b�M��B�I�I�b�M�s�A)B=�=Cr}N)'rxryrzr{r
r@r\r��config1r6rArrr r)r.r8rBrKrSr�r�rr
rrr$r*r/r;rDrNrUrZr]rdrirwr|r}rprKr�r�s
��!0� 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�*rpr�c�:�\rSrSr\rSrSrSrSr	Sr
SrSrg	)
�SocketHandlerTesti/�rrrc�
�[RU5 S=Ul=UlUlURURURS5=UlnUR5 URR5 [RRn[UR ["5(aU"SUR$5UlOU"UR S5UlSUlUR(R+UR(RS5 UR(R-UR5 [.R0"S5Ulg![anX lSnAgSnAff=f�N�{�G�z�?rrrr)rrLrW�	sock_hdlr�server_exception�server_class�address�
handle_socketr�r�r>r�r!rC�
SocketHandler�
isinstance�server_addressrdr�
log_outputr4rPrEr��	Semaphorer��rGrWrf�hclss    rKrL�SocketHandlerTest.setUp8s-��	���t��?C�C���C�d�n�t�'<�	�#'�#4�#4�T�\�\�59�5G�5G��$O�
O�D�K�&��L�L�N�	���������-�-���f�+�+�U�3�3�!�+�v�{�{�;�D�N�!�&�"7�"7��>�D�N�������&�&�t�'7�'7�'@�'@��'C�D����#�#�D�N�N�3� �*�*�1�-�����	�$%�!���	�s�>E(�(
F�2E=�=Fc�Z�UR(a?URRUR5 URR5 UR(aURR5 [RU5 g![RU5 f=fr�)r�r4rPrOrWr9rrWrts rKrW�SocketHandlerTest.tearDownRsj��	$��~�~�� � �.�.�t�~�~�>����$�$�&��{�{���� � �"����d�#��H���d�#���A;B�B*c��URnURS5n[U5S:ag[R"SU5SnURU5n[U5U:a0X2RU[U5-
5-n[U5U:aM0[
R"U5n[R"U5nU=RURS--
sl	URR5 M�)Nr��>Lr�
)
�
connection�recvr`�struct�unpack�pickle�loadsr!r�r�rr��release)rG�request�conn�chunk�slen�objr�s       rKr��SocketHandlerTest.handle_socket]s����!�!����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� � �"�rpc�l�UR(aURUR5 [R"S5nUR	S5 UR
R
5 URS5 UR
R
5 URURS5 g)N�tcpr��eggs�
spam
eggs
)
r��skipTestr!r"r�r��acquirer�r_r�rTs  rK�test_output�SocketHandlerTest.test_outputlsy��� � ��M�M�$�/�/�0��"�"�5�)�����V�����������V��������������.�9rpc�b�UR(aURUR5 SURlURR5 [
S5e![a URRS5 Of=fURRS5 [R"5nURURRU5 [R"URRU-
S-5 URRS5 g)Ng@zDeliberate mistakez
Never sentzNever sent, eitherr�zNor this)r�r�r��
retryStartrWr9r�r4r!r�r�r��	retryTimer�)rG�nows  rK�
test_noserver�SocketHandlerTest.test_noserverws���� � ��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�B�r�r�rWr�r�N)
rxryrzr{rkr�r�rLrWr�r�r�r|r}rprKr{r{/s'��!�L��G�.�4	$�
#�	:�+rpr{zUnix sockets requiredc�:�\rSrSr\"\S5(a\rSrSr	g)�UnixSocketHandlerTesti�r�c��[R"5UlUR[R
UR5 [RU5 gr�)r�create_unix_domain_namer�r�rrur{rLrts rKrL�UnixSocketHandlerTest.setUp��8��$�<�<�>������	�(�(�$�,�,�7�����%rp�r�N)
rxryrzr{�hasattrrr�r�rLr|r}rprKr�r��s��
�v�y�!�!�+��&rpr�c�4�\rSrSr\rSrSrSrSr	Sr
Srg)	�DatagramHandlerTesti�r|c��[RU5 S=Ul=UlUlURURURS5=UlnUR5 URR5 [RRn[UR ["5(aU"SUR$5UlOU"UR S5UlSUlUR(R+UR(RS5 UR(R-UR5 [.R0"5Ulg![anX lSnAgSnAff=fr~)rrLrWr�r�r�r��handle_datagramr�r�r>r�r!rC�DatagramHandlerr�r�rdrr�r4rPrEr�r�r�r�s    rKrL�DatagramHandlerTest.setUp�s)��	���t��?C�C���C�d�n�t�'<�	�#'�#4�#4�T�\�\�59�5I�5I�4�$Q�
Q�D�K�&��L�L�N�	���������/�/���f�+�+�U�3�3�!�+�v�{�{�;�D�N�!�&�"7�"7��>�D�N�������&�&�t�'7�'7�'@�'@��'C�D����#�#�D�N�N�3� ���(�����	�$%�!���	�s�>E'�'
F�1E<�<Fc�Z�UR(aURR5 UR(a?URR	UR5 URR5 [RU5 g![RU5 f=fr�)rWr9r�r4rPrOrrWrts rKrW�DatagramHandlerTest.tearDown�sj��	$��{�{���� � �"��~�~�� � �.�.�t�~�~�>����$�$�&����d�#��H���d�#�r�c�2�[R"SS5nUR[U5Sn[R
"U5n[R"U5nU=RURS--
slURR5 g)Nr�rr�)r��pack�packetr`r�r�r!r�r�rr�r3)rGr�r�r�r�r�s      rKr��#DatagramHandlerTest.handle_datagram�sk���{�{�4��#������D�	�
�+���l�l�6�"���&�&�s�+�����6�:�:��,�,�������rpc��UR(aURUR5 [R"S5nUR	S5 UR
R
5 UR
R5 UR	S5 UR
R
5 URURS5 g)N�udpr�r�r�)
r�r�r!r"r�r�r�rQr_r�rTs  rKr��DatagramHandlerTest.test_output�s���� � ��M�M�$�/�/�0��"�"�5�)�����V�����������������V��������������.�9rpr�N)rxryrzr{r|r�r�rLrWr�r�r|r}rprKr�r��s"��!�L��G�)�4	$��
:rpr�c�:�\rSrSr\"\S5(a\rSrSr	g)�UnixDatagramHandlerTesti�r�c��[R"5UlUR[R
UR5 [RU5 gr�)rr�r�r�rrur�rLrts rKrL�UnixDatagramHandlerTest.setUp�s8��$�<�<�>������	�(�(�$�,�,�7��!�!�$�'rpr�N�
rxryrzr{r�rr�r�rLr|r}rprKr�r��s��
�v�y�!�!�-��(rpr�c�:�\rSrSr\rSrSrSrSr	Sr
SrSrg	)
�SysLogHandlerTesti�r|c�"�[RU5 S=Ul=UlUlURURURS5=UlnUR5 URR5 [RRn[UR ["5(a'U"UR SUR$45UlOU"UR 5UlSUlUR(R+UR(RS5 UR(R-UR5 [.R0"5Ulg![anX lSnAgSnAff=f)Nrrrp)rrLrW�sl_hdlrr�r�r�r�r�r�r>r�r!rCr}r�r�rdrr�r4rPrEr�r�r�r�s    rKrL�SysLogHandlerTest.setUp�s5��	���t��=A�A���A�d�l�T�%:�	�#'�#4�#4�T�\�\�59�5I�5I�4�$Q�
Q�D�K�&��L�L�N�	���������-�-���f�+�+�U�3�3���!6�!6�q�!9�6�;�;� G�H�D�L��� 5� 5�6�D�L�������&�&�t�'7�'7�'@�'@��'C�D����#�#�D�L�L�1� ���(�����	�$%�!���	�s�>E4�4
F�>F	�	Fc�Z�UR(aURR5 UR(a?URR	UR5 URR5 [RU5 g![RU5 f=fr�)rWr9r�r4rPrOrrWrts rKrW�SysLogHandlerTest.tearDownsj��	$��{�{���� � �"��|�|�� � �.�.�t�|�|�<����"�"�$����d�#��H���d�#�r�c�Z�URUlURR5 gr�)r�r�r�r3)rGr�s  rKr��!SysLogHandlerTest.handle_datagrams��!�.�.��������rpc�8�UR(aURUR5 [R"S5nUR	S5 UR
R
[R5 URURS5 UR
R5 SURl
UR	S5 UR
R
[R5 URURS5 UR
R5 SURlUR	S5 UR
R
[R5 URURS5 g)N�slh�späm�
<11>spämFs	<11>spämuhäm-s<11>häm-späm)r�r�r!r"r�r�r�rr�r_r�rQr��
append_nul�identrTs  rKr��SysLogHandlerTest.test_outputs��� � ��M�M�$�/�/�0��"�"�5�)�����Y�������'�.�.�/�������*@�A�������"'��������Y�������'�.�.�/�������*<�=�������&��������Y�������'�.�.�/�������*G�Hrpc�D�[R"S5nURR5 URR5 UR
S5 URR[R5 URURS5 g)Nr�r�r�)r!r"r�rOr�rQr�r�rr�r_r�rTs  rK�test_udp_reconnection�'SysLogHandlerTest.test_udp_reconnection.sk���"�"�5�)�����������������Y�������'�.�.�/�������*@�Arp)r�r�rWr�r�N)
rxryrzr{r|r�r�rLrWr�r�r�r|r}rprKr�r��s)��!�L��G�)�4	$��I�&Brpr�c�:�\rSrSr\"\S5(a\rSrSr	g)�UnixSysLogHandlerTesti6r�c��[R"5UlUR[R
UR5 [RU5 gr�)rr�r�r�rrur�rLrts rKrL�UnixSysLogHandlerTest.setUp>r�rpr�Nr�r}rprKr�r�6s��
�v�y�!�!�-��&rpr�z$IPv6 support required for this test.c�<^�\rSrSr\rSrU4SjrU4SjrSr	U=r
$)�IPv6SysLogHandlerTestiD)z::1rc�h>�[RURl[[
U]5 gr�)r�AF_INET6r�r�r�r�rLr�s �rKrL�IPv6SysLogHandlerTest.setUpMs#���+1�?�?����(�
�#�T�0�2rpc�h>�[RURl[[
U]5 gr�)r�AF_INETr�r�r�r�rWr�s �rKrW�IPv6SysLogHandlerTest.tearDownQs#���+1�>�>����(�
�#�T�3�5rpr})rxryrzr{r|r�r�rLrWr|r�r�s@rKr�r�Ds���!�L��G�3�6�6rpr�c�&�\rSrSrSrSrSrSrg)�HTTPHandlerTestiUc�b�[RU5 [R"5Ulgr�)rrLr�r�r�rts rKrL�HTTPHandlerTest.setUpZs��	���t�� ���(��rpc�~�URUl[UR5UlURS:Xa9[	UR
S5nURRU5UlURS5 UR5 URR5 g! SUlNG=f)NrpzContent-Length��)
�commandrr{�log_data�int�headers�rfilerf�	post_data�
send_response�end_headersr�r3)rGr��rlens   rK�handle_request�HTTPHandlerTest.handle_request`s�������� ����.��
��<�<�6�!�
&��7�?�?�+;�<�=��!(���!3�!3�D�!9���	���c�"������������	
&�!%���s�8B1�1	B<c	��[R"S5nURnURURRS5 SGH�nSnU(a�SSKn[RR[5n[RRUSS5nURUR5nURU5 URUS9n	OSnSn	[!X@R"SUS	9=Uln
U
R'5 U
R(R+5 S
U
R,-nU=(a Un[RR/USUW	SS
9UlSUlUR5UR05 SGHJn
X�R0lUR8R;5 SnUR=U5 UR8R+[>R@5nURCUS5 UREUR2RS5 UREURFU
5 U
S:Xa [IUR2RJ5nO$[IURLROS55nUREUSS/5 UREUSS/5 UREUSU/5 GMM UR$RQ5 URRUR05 UR0RS5 GM� g![a SnGNgf=f)N�httprr�r|�certdatazkeycert.pem)�cafilerrizlocalhost:%dz/frob)�foo�bar)�secure�context�credentials)rorpr�zHTTP request timed outrorirI�funcNamer�r)*r!r"r4rPrC�sslrRr{�dirname�__file__r��
SSLContext�PROTOCOL_TLS_SERVER�load_cert_chain�create_default_context�ImportErrorrIr�rWr�r>r��server_portr��h_hdlrr�rEr�r�rQr�r�
SHORT_TIMEOUTrFr_r�r�queryr��decoder9rO)rGrr4rrr�here�localhost_certr_rrW�host�
secure_clientr�rr��ds                 rKr��HTTPHandlerTest.test_outputms����"�"�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�!��,�,�+�+�G�,A�,A�B������)A�B�� � ����!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����c$��
#�"�!�F�"�s�L;�;M�
M)r�rr�r�r�rWN)rxryrzr{rLr�r�r|r}rprKr�r�Us��
)��6 rpr�c�,�\rSrSrSrSrSrSrSrg)�
MemoryTesti�c�<�[RU5 0Ulgr�)rrL�
_survivorsrts rKrL�MemoryTest.setUp�s�����t����rpc��UH<n[U5[U54n[R"U5URU'M> gr�)r.rr�r�r)rGrSr��keys    rK�_watch_for_survival�MemoryTest._watch_for_survival�s7���C��S�'�4��9�$�C�#*�;�;�s�#3�D�O�O�C� �rpc� �[R"5 /nURR5H#uup#nU"5bMUR	U5 M% U(a/URS[
U5SRU54-5 gg)Nz;%d objects should have survived but have been destroyed: %sz, )�gc�collectrrr�rcr`r�)rG�dead�id_�repr_r�s     rK�_assertTruesurvival�MemoryTest._assertTruesurvival�sy��	�
�
����!%���!6�!6�!8��L�S�#��u�}����E�"�"9���I�I�.�14�T��D�I�I�d�O�0L�M�
N�rpc�H�URR[R5 [R"S5nURU5 UR[R5 URRUR55 URUR55 URS/5 AUR5 [R"S5nURUR55 URSS/5 g)Nr�)r�r;r�)r�r;r�)r4r:r!r�r"rr;r�rurnr')rGr�rs   rK�test_persistent_loggers�"MemoryTest.test_persistent_loggers�s���	
���!�!�'�,�,�/�����&��� � ��%����W�]�]�#������t�0�0�2�3��	�	�$�#�#�%�&����!�
�	�
�� � �"�����&���	�	�$�#�#�%�&����!�!�
�	rp)rN)	rxryrzr{rLrr'r*r|r}rprKrr�s���
4�
N�rprc� �\rSrSrSrSrSrg)�EncodingTesti�c��[R"S5n[SS5nSn[R"USS9nUR	U5 URU5 UR
U5 UR5 [USS9nURUR5R5U5 UR5 [RRU5(a[R"U5 gg!UR
U5 UR5 f=f!UR5 f=f![RRU5(a[R"U5 ff=f)NrGr�ztest_logging-1-ufoo€rir�)r!r"rWr�rEr�rPrOr�r_rf�rstriprRr{�isfiler�)rGr�rVr�r�r�s      rK�test_encoding_plain_file�%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;�&E�
D�+E�
.D+�8E�#D(�(E�+D=�=E�=E=c���[R"S5nSn[R"S5nSUl[
R"5nU"US5n[R"U5nURU5 URU5 URU5 UR5 UR5nURUS5 g!URU5 UR5 f=f)NrGuдо свидания�cp1251�stricts�� �������
)r!r"�codecs�	getwriterrkr7�BytesIOr<rEr�rPrOr]r_)rGr��message�writer_classr9�writerr�rms        rK�test_encoding_cyrillic_unicode�+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�<C�#C4r}N)rxryrzr{r1r<r|r}rprKr-r-�s
���2Lrpr-c� �\rSrSrSrSrSrg)�WarningsTesti		c	�@�[R"5 [R"S5 UR	[RS5 [R
"S[S9 [R"5n[R"U5n[R"S5nURU5 [R"S5 URU5 UR5nUR5 UR!UR#S5S5 [R"5n[R$"S	[S
SUS5 UR5nUR5 UR'US
5 SSS5 g!,(df   g=f)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�UserWarningr7r8r<r"rE�warnrPr]rOr��find�showwarningr_)rGr9rVrrm�a_files      rK�
test_warnings�WarningsTest.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�E0F�
Fc��[R"5 [R"S5 UR	[RS5 [R
"S5nUR
UR/5 [R"S[SS5 UR
[UR5S5 URURS[R5 SSS5 g!,(df   g=f)	NTFrCrDrErFrrr)
rGrHr!rIr�r"r_rCrNrKr`�assertIsInstance�NullHandlerrTs  rK�test_warnings_no_handlers�&WarningsTest.test_warnings_no_handlers#	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�CC7�7
Dr}N)rxryrzr{rPrUr|r}rprKr?r?		s��F�0Krpr?c�.�[R"X5$r�)r!r>)r\rns  rK�
formatFuncrX1	s�����V�-�-rpc��\rSrSrSSjrSrg)�myCustomFormatteri4	Nc��gr�r})rG�fmtrns   rKr��myCustomFormatter.__init__5	���rpr}r�)rxryrzr{r�r|r}rprKrZrZ4	s��
rprZc�,�[R"5$r�)r!r<r}rprK�handlerFuncr`8	s��� � �"�"rpc��\rSrSrSrg)�
CustomHandleri;	r}N�rxryrzr{r|r}rprKrbrb;	���rprbc��\rSrSrSrg)�CustomListeneri>	r}Nrcr}rprKrfrf>	rdrprfc��\rSrSrSrg)�CustomQueueiA	r}Nrcr}rprKrhrhA	rdrprhc�$�\rSrSrSSjrSrSrg)�CustomQueueProtocoliD	c�:�[R"U5Ulgr���queue�Queue)rG�maxsizes  rKr��CustomQueueProtocol.__init__E	s���[�[��)��
rpc�D�[RUS5n[X!5$)Nrm)�object�__getattribute__r1)rG�	attributerms   rKrS�CustomQueueProtocol.__getattr__H	s���'�'��g�6���u�(�(rp)rmN)r)rxryrzr{r�rSr|r}rprKrjrjD	s��*�)rprjc��\rSrSrSrSrg)�CustomQueueFakeProtocoliL	c��gr�r}rts rK�
put_nowait�"CustomQueueFakeProtocol.put_nowaitT	r^rpr}N�rxryrzr{ryr|r}rprKrwrwL	s��
rprwc��\rSrSrSrSrg)�CustomQueueWrongProtocoliW	Nr}r{r}rprKr}r}W	s���Jrpr}c� �\rSrSrSrSrSrg)�MinimalQueueProtocoliZ	c��gr�r})rG�xs  rKry�MinimalQueueProtocol.put_nowait[	s��Trpc��gr�r}rts rK�get�MinimalQueueProtocol.get\	s��4rpr}N)rxryrzr{ryr�r|r}rprKrrZ	s��!�rprc�,�[R"5$r�rlr}rprK�
queueMakerr�^	s���;�;�=�rpc�^�U4SjnU$)Nc�F>�URST5 [U/UQ70UD6$)N�respect_handler_level)�
setdefaultrf)rmrCrTr�s   �rK�func�listenerMaker.<locals>.funcb	s*������1�3H�I��e�9�h�9�&�9�9rpr})�arg1�arg2r�r�s  ` rK�
listenerMakerr�a	s���:��Krpc
��
�\rSrSr\R
rSrSSSS00SSSS	S
S.0SS/S
.S.rSSSS00SSSS	S
S.0SSS/S
.0SS0S.rSSSS00SSSS	S
S.0SSS00SS/S
.S.r	SSSS00SSSS	SS.0SSS/S
.0SS0S.r
SSSS00SSSSS
S.0SSS/S
.0SS0S.rSSSS00SSSS	S
S.0SSS/S
.0SS0S.rSSSS00SSSS	S
S.0SSS/S
.0SS0S.r
SS\S-SS.0SSSS	S
S.0S	S/S
.S.rS\SS.\S-SS.\SS.S.SSS	S
S.S\0S.S	S/S
.S.rSSSS00S\S-SS	S
S.0SSS/S
.0SS0S.rSSSS00S\S-SS	S
SS .0SSS/S
.0SS0S.rSSSS00SSSS	S
S.0S!SS/S
.0SS0S.rSS"SSS00SSSS	S
S.0SS/S
.0S#.SS0S$.rSS%SSS00SSSS	S
S.0SS/S
.0S#.SS0S$.rSSSS00SSSSS
S.0SSS/S
.0SS	0S.rSS%SSS00SSS&00S'.rSS%SSS&00SSS&00S'.rSSSS00S(S)S00SSSS	S
S(/S*.0SSS(/S+.0SS/S
.S,.rSSSS00SSSS	S
S.0S-SS.0SSS/S
.0SS0S/.rSSS00SSSS	S
S.0S-SS.0SSS/S
.0SS0S0.rS1SSS00SSSS	S
S.0S-SS.0SSS/S
.0SS0S/.rSSSS00SSSS	S
S2S3S4.S5.0SS/S
.S.rSSS6S7S80S9.0SSSS	S
S.0SS/S
.S.r "S:S;\!RD5r#SS<\#S=S>S?S@SA0SB.0SSS<S	S
S.0SS/S
.S.r$SSSSC.SDSESFSSGSH.SI.SJSSK/SLSM.0SN.r%SSOSPSQSR.0SSSOSS.SDSESOSTSSU.SV.SJSSW/SLSM.0SX.r&SS\S-SS"SY.0SSSS	S
S.0SZSS/SLSM.0SX.r'SS\S-SS"S[.0SSSS	S
S.0SZSS/SLSM.0SX.r(SS\S\-SS"S[.0SSSS	S
S.0SZSS/SLSM.0SX.r)SS\SS"SY.0SSSS	S
S.0SZSS/SLSM.0SX.r*SS\S]S7S^0S_.0SSSS	S
S.0SZSS/SLSM.0SX.r+SS`Sa0SbSc/Sd.Se.SSf/S
.Sg.r,Shr-Sir.Sjr/\4Skjr0Slr1Smr2Snr3Sor4Spr5Sqr6Srr7Ssr8Str9Sur:Svr;Swr<Sxr=Syr>Szr?S{r@S|rAS}rBS~rCSrDS�rES�S�jrF\GR�"5S�5rI\GR�"5S�5rJ\GR�"5S�5rKS�rLS�rMS�rNS�rOS�rPS�rQS�rRS�rSS�rTS�rUS�rVS�rWS�rXS�rYS�rZ\[R�"5\GR�"5S�55r^S�r_\[R�"5\GR�"5\`"S�5S�555ra\`"S�5S�5rb\c\GR�"5\dR�"\GR�S�5S�555rg\c\GR�"5\dR�"\GR�S�5S�555rh\iS�5rj\c\GR�"5S�55rkS�rlS�rmS�rnS�rog�)��ConfigDictTestig	r�rr�form1r\z%(levelname)s ++ %(message)srX�logging.StreamHandlerr�zext://sys.stdout)rorLr�r9r��r�rC)rprqrCrCr	r;r�)rprqrC�loggersrCzext://sys.stdbout�NTOSET�WRANING�misspelled_namez.ExceptionFormatterz"%(levelname)s:%(name)s:%(message)s)�()r\z.formatFunc)r��form2�form3r�)rX�hand2z.CustomHandlerzinvalid parameter name)rorLr�r9r�r4F)�compilerr4)rprRrqrCr�rCTr�)rp�incrementalrCr��filt1rI)rorLr�r9�filters�r�r�)rprqr�rCr�rCzcfg://true_formatterszcfg://handler_configs[hand1])rp�true_formatters�handler_configsrqrCr�rC)r�r�rqrCr�rCr�r�!
)r��
terminator)rorLr�r9r�z%(message)s ++ %(customfield)srJ�defaultvalue)r\rrc�,^�\rSrSrSrU4SjrSrU=r$)�ConfigDictTest.CustomFormatteri�r�c�">�[TU]U5$r�)r�r\�rGr�r�s  �rKr\�%ConfigDictTest.CustomFormatter.format�s����7�>�&�)�)rpr})rxryrzr{�custom_propertyr\r|r�r�s@rK�CustomFormatterr��s�����	*�	*rpr��custom�{�%Y-%m-%d %H:%M:%S�	{message}r��value)r��stylernr\r�)ror�zlogging.handlers.MemoryHandler��consoler�)ro�capacityr�r��
flushLevel)r��	buffering�mymoduler��true)r�rCr�)rprCr��mySimpleFormatterz1%(asctime)s (%(name)s) %(levelname)s: %(message)s�$)r\r�)ror�rL�
fileGlobal)ror�rLr�r�)r��bufferGlobalr�)rprqrCr�)r�r\�validate�my_test_logger_custom_formatter)ror\r�z.myCustomFormatterz2%(levelname)s:%(name)s:%(message)s:%(customfield)s�myvalue)r�r\rrro�logging.FileHandler�logging.handlers.QueueHandler�h1)rorC)r��ahr��rprCrCc�B�[RRU5 gr�)r!r��
dictConfig)rGr�s  rKr��ConfigDictTest.apply_config�s�����!�!�$�'rpc�R�[R"U5nURX25 gr�)r!�getHandlerByNamerS)rGrIr�rVs    rK�
check_handler�ConfigDictTest.check_handler�s ���$�$�T�*�����a�%rpc���[R"5nURUR5 UR	S[
R5 [
R"5nURUR55 URUR55 URS/US9 UR/5 SSS5 g!,(df   g=f)NrXr�r�)rr�r�r�r�r!r<r"r�rur�rnr�s   rKr��ConfigDictTest.test_config0_ok�s���
�
$�
$�
&�&����d�l�l�+����w��(=�(=�>��&�&�(�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!��#��
"�
�
�!�!�"�%�'�
&�
&�s�B1C�
Cc�r�[R"5nURU5 [R"S5nURUR
55 URUR
55 URSS/US9 UR/5 SSS5 g!,(df   g=frrrs    rKr
�ConfigDictTest.test_config1_ok�rrc�Z�UR[URUR5 gr�rrts rKr�#ConfigDictTest.test_config2_failure�rrpc�Z�UR[URUR5 gr�)r^r�r��config2arts rK�test_config2a_failure�$ConfigDictTest.test_config2a_failure�������)�T�%6�%6��
�
�Frpc�Z�UR[URUR5 gr�)r^r�r��config2brts rK�test_config2b_failure�$ConfigDictTest.test_config2b_failure�r�rpc�Z�UR[URUR5 gr�rrts rKr�#ConfigDictTest.test_config3_failure�rrpc���[R"5nURUR5 UR	S[
R5 [5e![a [
R"S5 Of=f[RRS5 URUR5S5 UR/5 SSS5 g!,(df   g=f)NrXrrr)rr�r�r r�r!r<r�r!rsr"r#r_r]rn�rGr�s  rKr$�ConfigDictTest.test_config4_ok
s���
�
$�
$�
&�&����d�l�l�+����w��(=�(=�>�
2�"�n�$���
2��!�!�.�1�
2���J�J�O�O�A�����V�_�_�.�A�
C�
�!�!�"�%�'�
&�
&�s*�<C�
A� B�=C�?B�AC�
C*c��[R"5nURUR5 [	5e![a [
R"S5 Of=f[RRS5 URUR5S5 UR/5 SSS5 g!,(df   g=fr)
rr�r��config4ar�r!r!rsr"r#r_r]rnr�s  rK�test_config4a_ok�ConfigDictTest.test_config4a_ok
s���
�
$�
$�
&�&����d�m�m�,�
2�"�n�$���
2��!�!�.�1�
2���J�J�O�O�A�����V�_�_�.�A�
C�
�!�!�"�%�'�
&�
&�s'�B<�
=� A �B<�A � AB<�<
C
c�b�URURS9 URS[5 g)Nr(rX)r
r)r�rbrts rKr*�ConfigDictTest.test_config5_ok 
s'�����D�L�L��1����7�M�2rpc�Z�UR[URUR5 gr�)r^r�r�r.rts rK�test_config6_failure�#ConfigDictTest.test_config6_failure$
s�����)�T�%6�%6����Erpc��[R"5nURUR5 [R
"S5nUR
UR55 URUR55 URSS/US9 UR/5 SSS5 [R"5nURUR5 URS[R5 [R
"S5nURUR5 [R
"S5nUR
UR55 URUR55 URSS/US9 UR/5 SSS5 g!,(df   GN=f!,(df   g=f)	Nr	r
r�r�rXr4�r�r��r�r�)rr�r�ryr!r"r�rur�rnr8r�r<rFrr�s   rKr;�ConfigDictTest.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�BF3�C$G�3
G�
Gc�(�[R"5nURUR5 [R
"S5nUR
UR55 URUR55 URSS/US9 UR/5 SSS5 [R"5nURUR5 URS[R5 [R
"S5nURUR5 UR
UR55 URUR55 [R
"S5nUR
UR55 URUR55 UR/SQUS9 UR/5 SSS5 g!,(df   GNO=f!,(df   g=f)Nr	r
r�r�rXr4)r�r��r�r��r�r�)rr�r�ryr!r"r�rur�rnrBr�r<rzrr�s   rK�test_config_8_ok�ConfigDictTest.test_config_8_okE
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�BG1�D"H�1
H�
Hc��[R"5nURUR5 UR	S[
R5 [
R"S5n[
R"S5nURUR55 URUR55 URUR55 UR/SQUS9 UR/5 SSS5 [R"5nURUR5 UR	S[
R5 [
R"S5nURUR5 URUR55 URUR55 [
R"S5nURUR55 URUR55 WRUR55 UR/SQUS9 UR/5 SSS5 g!,(df   GNn=f!,(df   g=f)NrXr	r2r3r�r4r5)rr�r�r6r�r!r<r"r�rur�r7rn�config8arzrr9s    rK�test_config_8a_ok� ConfigDictTest.test_config_8a_okg
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%�EI7�%
I4�7
Jc��[R"5nURUR5 UR	S[
R5 [
R"S5nURUR55 UR/US9 URUR5 URUR55 UR/US9 URUR5 URUR55 URS/US9 SSS5 g!,(df   g=f)NrXr	r�r�)
rr�r�rKr�r!r<r"r�rurn�config9a�config9br�s   rK�test_config_9_ok�ConfigDictTest.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�DD5�5
Ec��[R"5nURUR5 UR	S[
R5 [
R"S5nURUR55 [
R"S5nURUR55 [
R"S5nURUR55 [
R"S5nURUR55 URSS/US9 SSS5 g!,(df   g=f�	NrXr	r�r4zcompiler.parser.codegen)r�r�r�r�)rr�r��config10r�r!r<r"r�rur�rnr�s   rK�test_config_10_ok� 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"E�
Ec�:�URUR5 gr�)r
�config11rts rK�test_config11_ok�ConfigDictTest.test_config11_ok�
s�����T�]�]�+rpc�Z�UR[URUR5 gr�)r^r�r��config12rts rK�test_config12_failure�$ConfigDictTest.test_config12_failure�
������)�T�%6�%6��
�
�Frpc�Z�UR[URUR5 gr�)r^r�r��config13rts rK�test_config13_failure�$ConfigDictTest.test_config13_failure�
rrpc��[R"5nURUR5 [R
SnUR
URS5 UR
URS5 [R"S5 URUR5RS55 SSS5 g!,(df   g=f)NrXrr��Exclamationz
Exclamation!
)
rr�r��config14r!r&r_r�r�r�rFr]r�)rGr�rVs   rK�test_config14_ok�ConfigDictTest.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�
'�
&�
&���B+C
�

Cc�:�UR5 [SS5nSSSUSS.0SS/0S	.nURU5 URU5 SSS5 [RR
S
nUR
[UW5 g!,(df   NC=f)Nr�r>rrr�r�ri)ro�filenamerkrCr�r)r@rWr�r!rCrCr�r�)rGrVr�r�s    rK�test_config15_ok�ConfigDictTest.test_config15_ok�
s���
�
+�
+�
-���(9�:�B���!6�$&�$+��������F�
���f�%����f�%�%.�(�,�,�'�'��*�����(�'�2�6�+.�
-�s�>B�
Bc�n�URUR5 [RSnURR[R"SSS.55nURUS5 URR[R"SS055nURUS5 g)NrX�HellorHrIzHello ++ customvaluerzHello ++ defaultvalue)r��config16r!r&rLr\r�r_)rGrVrMs   rK�test_config16_ok�ConfigDictTest.test_config16_ok�
s������$�-�-�(����g�&�����#�#�G�$9�$9��M�:�%<�=������!7�8����#�#�G�$9�$9�
�G��%�������!8�9rpc��URUR5 [RSnUR	UR
RS5 g)NrXr�)r��config17r!r&r_rLr�ras  rK�test_config17_ok�ConfigDictTest.test_config17_ok�
s>�����$�-�-�(����g�&��������4�4�g�>rpc���URUR5 [R"S5RSnURUR[R5 g)Nr�r)r��config18r!r"rCr_r�r��rGr�s  rK�test_config18_ok�ConfigDictTest.test_config18_ok�
sI�����$�-�-�(��#�#�J�/�8�8��;������+�+�W�]�]�;rpNc���URS5n[RRSU5nUR	5 UR
R
5 URnUR
R5 [R"[R[R5nURS5 URSU45 [R"S[!U55nXa-nSn[!U5n	U	S:�a#UR#XxS5n
X�-
nX�-n	U	S:�aM#UR%5 UR
R
S5 [RR'5 [(R*"U5 g!UR
R
S5 [RR'5 [(R*"U5 f=f)Nrirg@rrr�)rtr!r��listenr�r>r�rrQrr��SOCK_STREAM�
settimeout�connectr�r�r`�sendrO�
stopListeningr	r7)rG�text�verifyr-rrer�rm�	sentsofar�left�sents           rK�setup_via_listener�!ConfigDictTest.setup_via_listener�
sS���{�{�7�#���N�N�!�!�!�V�,��	���	�	�������v�v��	���
�
��	,��=�=�����1C�1C�D�D��O�O�C� ��L�L�+�t�,�-��;�;�t�S��Y�/�D���A��I��q�6�D���(��y�y��:��/���!�	������(�
�J�J�L�
�G�G�L�L����N�N�(�(�*��(�(��+��
�G�G�L�L����N�N�(�(�*��(�(��+�s�B/F�4F�AG%c���[R"5nUR[R"UR
55 UR
S[R5 [R"S5nURUR55 [R"S5nURUR55 [R"S5nURUR55 [R"S5nURUR55 URSS/US9 SSS5 g!,(df   g=fr�)rr�r4�json�dumpsrr�r!r<r"r�rur�rnr�s   rK�test_listen_config_10_ok�'ConfigDictTest.test_listen_config_10_oks��
�
$�
$�
&�&��#�#�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�D6E�
E#c��[R"5nUR[R"[
R55 [R"S5nURUR55 URUR55 URSS/US9 UR/5 SSS5 g!,(df   g=fr)
rr�r4r�r�r�ryr!r"r�rur�rnr�s   rK�test_listen_config_1_ok�&ConfigDictTest.test_listen_config_1_ok/s���
�
$�
$�
&�&��#�#�H�O�O�N�4J�4J�$K�L��&�&�'8�9�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!���#��
"�
�

�!�!�"�%�'�
&�
&�rc��SnSn[R"S5n[R"[R
5n[R"5nURXA5 URUR55 URUR55 SSS5 UR/WS9 URSS/SS9 [R"5nURU5 [R"S5nURUR55 URUR55 SSS5 URS	S
/US9 URSS/SS9 [R"5nURUSSS2U5 [R"S5nURUR55 URUR55 SSS5 URSS
/US9 URSS/SS9 g!,(df   GN�=f!,(df   N�=f!,(df   NV=f)Nc��gr�r}��stuffs rK�verify_fail�6ConfigDictTest.test_listen_verify.<locals>.verify_failAs��rpc��USSS2$)Nrmr}r@s rK�verify_reverse�9ConfigDictTest.test_listen_verify.<locals>.verify_reverseDs����2��;�rpr	r�r
r�r
)rhr�r�rmr�r�)
r!r"r�r�r�ryrr�r4r�rur�rn)rGrBrEr�to_sendr�s      rK�test_listen_verify�!ConfigDictTest.test_listen_verify>s.��	�	��"�"�#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'�AH&�%A&H8�A-I	�&
H5�8
I�	
Ic�Z�UR[URUR5 gr�)r^r�r��
bad_formatrts rK�test_bad_format�ConfigDictTest.test_bad_format}s�����*�d�&7�&7����Irpc���[R"UR5nSUSSS'URU5 [R
"S5RSnURUR[R5 URURR[R5 UR[[R"55SS/5 g)	Nz-${asctime} (${name}) ${levelname}: ${message}rqr�r\r�rr�r�)r'�deepcopyrKr�r!r"rCrSr�r]rL�_style�StringTemplateStyler_�sorted�getHandlerNames�rGr�r�s   rK�!test_bad_format_with_dollar_style�0ConfigDictTest.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�	9rpc��URUR5 [R"S5RSnURUR[5 g�Nr�r)r��custom_formatter_class_validater!r"rCrSrLr�r%s  rK�)test_custom_formatter_class_with_validate�8ConfigDictTest.test_custom_formatter_class_with_validate�sJ�����$�>�>�?��#�#�$E�F�O�O�PQ�R�����g�/�/�1C�Drpc��URUR5 [R"S5RSnURUR[5 grX)r�� custom_formatter_class_validate2r!r"rCrSrLr�r%s  rK�*test_custom_formatter_class_with_validate2�9ConfigDictTest.test_custom_formatter_class_with_validate2�sJ�����$�?�?�@��#�#�$E�F�O�O�PQ�R�����g�/�/�1C�Drpc��URR5nSUSSS'URU5 [R"S5R
SnUR
UR[5 g)Nr�rqr�r�r�r)	rYr'r�r!r"rCrSrLr�rTs   rK�9test_custom_formatter_class_with_validate2_with_wrong_fmt�HConfigDictTest.test_custom_formatter_class_with_validate2_with_wrong_fmt�sn���5�5�:�:�<��14��|��W�%�g�.�	
���&�!��#�#�$E�F�O�O�PQ�R�����g�/�/�1C�Drpc�Z�UR[URUR5 gr�)r^r�r�� custom_formatter_class_validate3rts rK�*test_custom_formatter_class_with_validate3�9ConfigDictTest.test_custom_formatter_class_with_validate3�s �����*�d�&7�&7��9^�9^�_rpc�Z�UR[URUR5 gr�)r^r�r��custom_formatter_with_functionrts rK�,test_custom_formatter_function_with_validate�;ConfigDictTest.test_custom_formatter_function_with_validate�� �����*�d�&7�&7��9\�9\�]rpc�Z�UR[URUR5 gr�)r^r�r��custom_formatter_with_defaultsrts rK�,test_custom_formatter_function_with_defaults�;ConfigDictTest.test_custom_formatter_function_with_defaults�rkrpc�	�S/SQSSSSSSS	S
SSSSSSSS
SSS.S.S.
SSSS/S//SQS.n[RRU5nURUR	S5S5 URUR	S5S5 URUR	S5S5 URUR	S5S5 URUR	S5S5 URUR	S 5S5 URUR	S!5S5 URUR	S"5S5 URUR	S#5S5 URUR	S$5S5 URUR	S%5S5 URUR	S&5S5 URUR	S'5S5 URUR	S(5S5 URUR	S)5S5 URUR	S*5S5 URUR	S+5S,5 URUR	S-5S5 URUR	S.5S/5 URUR	S05S15 URUR	S25S
5 URUR	S35S
5 URUR	S45S5 URUR	S55S5 URUR	S65S/5 URUR	S75S15 URUR	S85S
5 URUR	S95S
5 UR	S:5nURURS
5/SQ5 UR
[URS;5 UR
[URS<5 UR
[URS=5 UR
[URS>5 UR
[URS?5 UR
[URS@5 g)AN)rrr��)r��b�crfrqr�r����� r�)�g)rVr��jrrr�)r�za with 1 and spaceza with ( and space)rr��alpha numeric 1 with spaces�alpha numeric 1 %( - © ©ß¯r�somelist�somedict)
rr�rzr{zalpha numeric ] 1 with spacesu"alpha ]] numeric 1 %( - © ©ß¯]u# alpha [ numeric 1 %( - © ©ß¯] z alpha r�nest4r�lr�r�)�ozcfg://alist�p)�atuple�alist�adict�nest1�nest2�nest3zcfg://atuple[1]r�zcfg://alist[1]rrzcfg://nest1[1][0]rVzcfg://nest2[1][1]z
cfg://adict.dzcfg://adict[f]z(cfg://adict[alpha numeric 1 with spaces]u+cfg://adict[alpha numeric 1 %( - © ©ß¯]z
cfg://adict[]zcfg://adict.nest4.dzcfg://adict.nest4[d]zcfg://adict[nest4].dzcfg://adict[nest4][f]z/cfg://adict[nest4][alpha numeric 1 with spaces]u2cfg://adict[nest4][alpha numeric 1 %( - © ©ß¯]zcfg://adict[nest4][]zcfg://adict[nest4][somelist][0]rxz"cfg://adict[nest4][somelist][1][0]z"cfg://adict[nest4][somelist][1][1]r�zcfg://adict[nest4][somelist][2]ryzcfg://adict[nest4].somedict.azcfg://adict[nest4].somedict[a]z/cfg://adict[nest4].somedict[a with 1 and space]z/cfg://adict[nest4].somedict[a with ( and space]z cfg://adict.nest4.somelist[1][1]zcfg://adict.nest4.somelist[2]zcfg://adict.nest4.somedict.azcfg://adict.nest4.somedict[a]zcfg://nest3zcfg://nosuchzcfg://!zcfg://adict[2]z*cfg://adict[alpha numeric ] 1 with spaces]u1cfg://adict[ alpha ]] numeric 1 %( - © ©ß¯] ]u0cfg://adict[ alpha [ numeric 1 %( - © ©ß¯] ])	r!r��BaseConfiguratorr_�convert�popr^�KeyErrorr�)rGr�bcrs    rK�test_baseconfig�ConfigDictTest.test_baseconfig�s���$��q�01�34�24�79�8:����1�45�78��"8��/0�/0�"�
��,,��C��:�s�+�.�7
��:�^�^�
,�
,�Q�
/��������$5�6��:�������$4�5�s�;�������$7�8�#�>�������$7�8�#�>�������O�4�c�:�������$4�5�q�9�������$N�O�QR�S�������$Q�R�TU�V�������O�4�b�9�������$9�:�C�@�������$:�;�S�A�������$:�;�S�A�������$;�<�a�@�������$U�V�XY�Z�������$X�Y�[\�]�������$:�;�R�@�������$E�F��L�������$H�I�3�O�������$H�I�3�O�������$E�F��L�������$C�D�a�H�������$D�E�q�I�������$U�V�XY�Z�������$U�V�XY�Z�������$F�G��M�������$C�D�c�J�������$B�C�Q�G�������$C�D�a�H��J�J�}�%��������q��?�3����(�B�J�J��?����*�b�j�j�)�<����(�B�J�J�0@�A����(�B�J�J�0\�]����*�b�j�j�2e�f����*�b�j�j�2d�erpc�z^�SSKJm "U4SjS[R5nT"SSS/5nU"SS	/S
9nSSUUS
.0SS/S.S.n[R
"5nUR
U5 [R"S5 SSS5 URWR5S5 g!,(df   N/=f)Nr)�
namedtuplec�8>^�\rSrSrUU4SjrU4SjrSrU=r$)�1ConfigDictTest.test_namedtuple.<locals>.MyHandleri�c�2>�[TU]"U0UD6 Xlgr�)r�r��resource)rGr�rSrTr�r�s    ��rKr��:ConfigDictTest.test_namedtuple.<locals>.MyHandler.__init__�s����� �$�1�&�1�,4�
rpc�z>�U=RSURR3-
sl[TU]U5$�N� )rr��typer�r`r�s  �rKr`�6ConfigDictTest.test_namedtuple.<locals>.MyHandler.emit�s2����
�
��$�-�-�"4�"4�!5�6�6�
��w�|�F�+�+rp)r�r�)r�r�s@�rK�	MyHandlerr��s���
5�
,�
,rpr��Resourcer��labels�my_typer�)r�r�rr�	myhandler)r�r�r�r�r�zsome logzsome log my_type
)
�collectionsr�r!r<rrr�r�r_r])rGr�r�r�r�rr�s      @rK�test_namedtuple�ConfigDictTest.test_namedtuple�s����*�	,��-�-�	,��j�6�8�*<�=����C�5�9����#� (��� &�K�=�A�	
���
$�
$�
&�&����f�%��L�L��$�'�	
������*�,@�A�'�
&�s�(B,�,
B:c�n�SnURSSU/S.S.5 /[R"5lg)Nc��grur})r�s rKr��AConfigDictTest.test_config_callable_filter_works.<locals>.filter_s��rprrr;r��rprC�r�r!r"r��rGr�s  rK�!test_config_callable_filter_works�0ConfigDictTest.test_config_callable_filter_workss9��	�����G��	�"J�
�	�')�����#rpc��[R"S5nURSSU/S.S.5 /[R"5lg)Nr�rrr;r�r�)r!r�r�r"r�r�s  rK�test_config_filter_works�'ConfigDictTest.test_config_filter_workssB���.�.��-������G��	�"J�
�	�')�����#rpc��"SS5nU"5nURSSU/S.S.5 /[R"5lg)Nc��\rSrSrSrSrg)�BConfigDictTest.test_config_filter_method_works.<locals>.FakeFilteric��grur})rGr�s  rKr��IConfigDictTest.test_config_filter_method_works.<locals>.FakeFilter.filters��rpr}Nrr}rprK�
FakeFilterr�s��
rpr�rrr;r�r�r�)rGr�r�s   rK�test_config_filter_method_works�.ConfigDictTest.test_config_filter_method_workssG��	�	��,������G��	�"J�
�	�')�����#rpc	��"SS5nSSU"54H+nUR[URSSU/S.S.5 M- g)Nc��\rSrSrSrg)�;ConfigDictTest.test_invalid_type_raises.<locals>.NotAFilteri(r}Nrcr}rprK�
NotAFilterr�(s��$rpr�rrr;r�r�)r^r�r�)rGr�r�s   rK�test_invalid_type_raises�'ConfigDictTest.test_invalid_type_raises'sD�����a���.�G������!�!���g�Y�'O�P�
�/rpc��[R"UR5n[SS5nXCSSS'Ub
XSSS'Ub
X#SSS'SnUR	U5 [
R"S5nUR[[
R"55SS/5 URUR5 URR5 [
R"S	5 [
R"S
5 [
R"S5 [ R""[ R$S5(aVURR&R)5(aO,[ R""[ R$S5(aMVURR&R+5 [-US
S9nUR/5R15nSSS5 URW/SQ5 U(aURR35 [
R"S5nU(aUR5[6X�5 gUR5[8R:U5 g!,(df   N�=f!U(aURR35 [
R"S5nU(aUR5[6X�5 fUR5[8R:U5 f=f)Nr�ztest_logging-cqh-rCr�rr�rm�listenerr�r�bazzqueue not emptyrir�)r�rr�)r'rO�config_queue_handlerrWr�r!r�r_rRrS�assertIsNotNoner�r�r�r�r�r�sleeping_retryr�rm�emptyr�r�rfr^r9r�r�rRr�)	rG�qspec�lspec�cdrV�qhr�r�rVs	         rK�do_queuehandler_configuration�,ConfigDictTest.do_queuehandler_configuration0s6��
�]�]�4�4�4�
5��
�F�$7�
8��+-�:��t��Z�(���,1�z�N�4� ��)���/4�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�!�8�����	�	�2�.�,�+������ � �"��(�(��.�A����� 0�!�8�����	�	�2�.�s,�EJ�".J�J�/J�
J�J�A7L	c��[5[5/nSVs/sHn[SU3SS.PM nn[S-SSSS.nS[S-[S	-/UQUQ7nS[S
-U[4n[R
"XV5HupxUR
Xx5 M SS[SS
4nSS[SS4n[R
"XV5HcupxUcUcM
UR[5n	UR
Xx5 SSS5 [W	R5n
URU
S5 Me gs snf!,(df   N?=f)N)rhrjr�r��r�roz.listenerMakerT)r�r�r�r�z.queueMakerz.CustomQueuez.CustomListenerr�rr�rz Unable to configure handler 'ah')
rhrjrxrf�	itertools�productr�r�r^r�r�r!r_)rG�qsr��dqs�dl�qvalues�lvaluesr�r��ctxrs           rK�test_config_queue_handler�(ConfigDictTest.test_config_queue_handlerXsU���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�?�L�E��.�.�u�<�@���C��U�+����C��U�+��%�-�-�g�?�L�E��}�����"�"�:�.�#��2�2�5�@�/��c�m�m�$�C����S�"D�E�
@��!B�&/�.�s�D.�(D3�3
E	c�6�URSSSUS.0S.5 g)Nrr�queue_listenerr��rorm)rprC)r�)rGr�s  rK�*_apply_simple_queue_listener_configuration�9ConfigDictTest._apply_simple_queue_listener_configurationts+������ �<�"�#��
�	rpzmultiprocessing.Managerc�(�SSS.[R"5[R"5[5[	54H<nURUS9 UR
U5 UR5 SSS5 M> g!,(df   MP=f)Nzqueue.Queuermr��r�)rmrn�SimpleQueuerwr�subTestr��assert_not_called�rGr#r�s   rK�Atest_config_queue_handler_does_not_create_multiprocessing_manager�PConfigDictTest.test_config_queue_handler_does_not_create_multiprocessing_managersv��!�R�0��K�K�M�����
$�%� �"�
�E����E��*��?�?��F��)�)�+�+�*�
�+�*�s�"B�
B	c�.�[5[54HZnURUS9 UR[5 URU5 UR
5 SSS5 SSS5 M\ g!,(df   N=f!,(df   M=f)Nr�)rrr}r�r^r�r�r�r�s   rK�Ptest_config_queue_handler_invalid_config_does_not_create_multiprocessing_manager�_ConfigDictTest.test_config_queue_handler_invalid_config_does_not_create_multiprocessing_manager�sh���h� 8� :�;�E����E��*�D�,=�,=�j�,I��?�?��F��)�)�+�-J�*�*�<�,I�,I��*�*�s"�B�"A4�B�4
B�>B�
B	z@requires a debug build for testing assertions in multiprocessingc�p�SSKn[R(aS/nO/SQnUHlnURUS9 UR"U5nUR5nUR
[5 URU5 SSS5 SSS5 Mn g!,(df   N=f!,(df   M�=f)Nr�spawn�r�r��
forkserver��start_method)	�multiprocessingr�
MS_WINDOWSr��get_contextr�r^r�r�)rGr��
start_methodsr�r�r�s      rK�?test_config_reject_simple_queue_handler_multiprocessing_context�NConfigDictTest.test_config_reject_simple_queue_handler_multiprocessing_context�s���	����$�I�M�;�M�)�L����<��8�%�1�1�,�?�����)���&�&�z�2��C�C�E�J�3�9�8�*�3�2��9�8�s#�8B&�.B�B&�
B#�B&�&
B5	c
�j�[R(aS/nO/SQnUH�nURUS9 [R"U5nUR5nUR
5n/nURSURUS4SS9 URURSS95 SSS5 URUR55 SSS5 UR[W5S5 SSS5 M� g!,(df   N]=f!,(df   NG=f!,(df   GM=f)	Nr�r�r�rrr/)�initializer�initargs�maxtasksperchild�<r�)rr�r�r�r��Managerrn�Pool�_mpinit_issue121723r�r�rFr�r_r`)rGr�r�r�r#�qr/s       rK�1test_config_queue_handler_multiprocessing_context�@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"�1D�
D	�)'D�#D"�
D
�
D�
D�D"�"
D2	c��[RRSSSSUS.0S/SS.S.5 [R"5R	U5 g)	NrrT�
log_to_parentr�r�r;�rCr�)rprRrCrC)r!r�r�r"r�)r��message_to_logs  rKr��"ConfigDictTest._mpinit_issue121723�sZ��	���!�!��(,��<�"�"��#2�!2�W�E�
#
�
	�	���� � ��0rpc���[R"UR5nSSKJnJn U"5nU"5R	5nU"5R
5nXEU4GH1n[SS5nX�SSS'XqSSS	'Sn	URU5 [R"S5n	UR[[R"55SS/5 URU	R5 UR!U	R"U5 UR!U	RR"U5 [R"S5n
U
(aUR%[&X�5 GMUR%[(R*U5 GM4 g![R"S5n
U
(aUR%[&X�5 fUR%[(R*U5 f=f)
Nr)rnr�r�ztest_logging-cmpqh-rCr�rr�rm)r'rOr�r�rnr��
JoinableQueuerWr�r!r�r_rRrSr�r�rrmr�r�rRr�)rGr��MQ�MM�q1�q2�q3r�rVr�rVs           rK�test_multiprocessing_queues�*ConfigDictTest.test_multiprocessing_queues�sn��
�]�]�4�4�4�
5��>�
�T��
�T�Z�Z�\��
�T�
�
�
!���b�\�E���(=�>�B�/1�z�N�4� ��,�,1�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�B4F�AG+c��SSSSSS.0SSS/S.0S	.n[R"S5nURUR5 UR	U5 URUR5 UR	S
S05 URUR5 US	UR	U5 URUR5 g)NrrFr�r;r�)r�ror�r�)rprRrCr�rprR)r!r"rzrr�rF)rGr�rs   rK�
test_90195�ConfigDictTest.test_90195�s����(-��$�4����$�!*����
�� �"�"�3�'��������)����&�!�������)����9�a�.�)�������(��-�.����&�!�������)rpc���[R"S5 [R"S5nSSSURS5R5S.0S/SS	.S
.n[R
R
U5 g)N�_multiprocessingr�rr�sinkr�r�r�r;r�r�)r�
import_moduler�rnr!r�r�)rG�mpr�s   rK�test_111615�ConfigDictTest.test_111615sv���#�#�$6�7�
�
(�
(�):�
;����<��^�^�G�4�:�:�<���$�H� ��
��	���!�!�&�)rpc��"SS[RR5nSS0nSSSU0UE0SS/S	.S
.n[RR	U5 [R
"S5nUR
URU5 g)Nc�(^�\rSrSrU4SjrSrU=r$)�>ConfigDictTest.test_kwargs_passing.<locals>.CustomQueueHandleri.c�V>�[TU][R"55 X lgr�)r�r�rmrn�
custom_kwargs�rGrSrTr�s   �rKr��GConfigDictTest.test_kwargs_passing.<locals>.CustomQueueHandler.__init__/s����� �����/�%+�"rp)r)rxryrzr{r�r|r�r�s@rK�CustomQueueHandlerr.s
���
,�
,rprr�rrrr�ror;r�r�)r!rC�QueueHandlerr�r�r�r_r)rGrrr�r�s     rK�test_kwargs_passing�"ConfigDictTest.test_kwargs_passing-s���	,��!1�!1�!>�!>�	,�
���
����/��#���!�%�J��
��	���!�!�&�)��*�*�8�4������.�.�
�>rpr}r�)prxryrzr{r
r@r\r�ryr6rr�r�rr r�rXr`r�r)r.r8rBr�rKr�r�rrrr
rrr!r>r�r r$rKrYr]rdrhrmr�r�r�r�r
rr�r�rr$r�r*r�r;r�r�r�rrr	rrrrr!r&r4r�requires_working_socketr9r<rHrLrUrZr^rarerirnr�r�r�r�r�r�r�r	r��requires_subprocessr�r�rr�r�r�r��
skipUnless�Py_DEBUGr�r��staticmethodr�rrrrr|r}rprKr�r�g	s1��!0� 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
�$�$�&��'��(
�$�$�&�&�'�&�
�$�$�&�<,�'�<,�|J�
9�E�
E�
E�`�^�^�Bf�HB�>)�)�	)��&/�P�0�0�2�� � �"�F�#�3�F�4	��0�0�2�� � �"�
�$�%�,�&�#�3�,�(�$�%�,�&�,��� � �"�
����)�)�,L�M�K�M�#��K�$�� � �"�
����)�)�,L�M�2�M�#��2�&�1��1� �� � �"�3�#��3�6*�<*�*?rpr�c� �\rSrSrSrSrSrg)�ManagerTestiIc�p^�/m"U4SjS[R5n[R"S5nUR[UR
[5 URU5 URS5nURS5 [R"S5 URTS/5 g)Nc�&>�\rSrSrSU4SjjrSrg)�6ManagerTest.test_manager_loggerclass.<locals>.MyLoggeriMNc�(>�TRU5 gr��r�)rGr�rrS�exc_info�extra�loggeds      �rK�_log�;ManagerTest.test_manager_loggerclass.<locals>.MyLogger._logNs����
�
�c�"rpr}rw)rxryrzr{r.r|)r-s�rK�MyLoggerr(Ms
���
#�
#rpr0rGzshould appear in loggedzshould not appear in logged)
r!�Loggerr�r^�	TypeError�setLoggerClassr�r"r�r_)rGr0�manrr-s    @rK�test_manager_loggerclass�$ManagerTest.test_manager_loggerclassJs������	#�w�~�~�	#��o�o�d�#�����)�S�%7�%7��=����8�$����v�&�����0�1����5�6�����";�!<�=rpc��[R"S5n[5nURU5 UR	UR
U5 gr�)r!r�rr�setLogRecordFactoryr_�logRecordFactory)rGr4rks   rK�test_set_log_record_factory�'ManagerTest.test_set_log_record_factoryZs;���o�o�d�#���8������)�����-�-�x�8rpr}N)rxryrzr{r5r:r|r}rprKr%r%Is��>� 9rpr%c� �\rSrSrSrSrSrg)�ChildLoggerTesti`c��[R"5n[R"S5n[R"S5nURS5nURS5nURU[R"S55 URU[R"S55 URS5nURS5nURS5nURU[R"S55 URU[R"S55 URXV5 g)	N�abczdef.ghi�xyzzuvw.xyz�def�ghi�abc.defzabc.def.ghi)r!r"�getChildr)rGr��l1�l2�c1�c2�c3s       rK�test_child_loggers�"ChildLoggerTest.test_child_loggersas��������
�
�
�u�
%��
�
�
�y�
)��
�Z�Z��
��
�Z�Z�	�
"���
�
�b�'�+�+�E�2�3��
�
�b�'�+�+�I�6�7�
�[�[��
��
�[�[��
��
�[�[��
#���
�
�b�'�+�+�I�6�7��
�
�b�'�+�+�M�:�;��
�
�b�rpc���[R"5n[R"S5n[R"S5n[R"S5n[R"S5nUR5nX%1nURXvU-5 UR	X75 UR5nURU1U5 UR5nUR[5U5 g)Nr��foo.barzfoo.bar.baz.bozzr)r!r"�getChildrenr_�assertNotInr3)rGr�rErF�l3�l4�kidsrks        rK�test_get_children�!ChildLoggerTest.test_get_childrenps��������
�
�
�u�
%��
�
�
�y�
)��
�
�
�1�
2��
�
�
�u�
%���}�}����8������(�?�3�����&��~�~������"��t�$��~�~���������%rpr}N)rxryrzr{rJrSr|r}rprKr=r=`s��
�
&rpr=c��\rSrSrSrg)�DerivedLogRecordir}Nrcr}rprKrVrVrdrprVc�&�\rSrSrSrSrSrSrg)�LogRecordFactoryTesti�c��"SS[R5n[RU5 U"[5UlURRUR
5 [R"5Ul	g)Nc� �\rSrSrSrSrSrg)�2LogRecordFactoryTest.setUp.<locals>.CheckingFilteri�c��Xlgr��r�)rGr�s  rKr��;LogRecordFactoryTest.setUp.<locals>.CheckingFilter.__init__�s���rpc�t�[U5nX RLaSU<SUR<3n[U5eg)NzUnexpected LogRecord type z, expected T)r�r�r2)rGr�r-rs    rKr��9LogRecordFactoryTest.setUp.<locals>.CheckingFilter.filter�s3����L���H�H�$�IJ� �H�H�&�C�#�C�.�(�rpr]N)rxryrzr{r�r�r|r}rprK�CheckingFilterr[�s��
�
rpra)
r!r�rrLrVr�r4r��getLogRecordFactory�orig_factory)rGras  rKrL�LogRecordFactoryTest.setUp�sV��
	�W�^�^�
	�	���t��$�%5�6������"�"�4�;�;�/�#�7�7�9��rpc��URRUR5 [R	U5 [
R"UR5 gr�)r4r�r�rrWr!r8rcrts rKrW�LogRecordFactoryTest.tearDown�s<�����%�%�d�k�k�2����$���#�#�D�$5�$5�6rpc� �UR[URRUR	55 [
R"[5 URRUR	55 URS/5 g)N)rCr�r�)
r^r2r4r�rur!r8rVr�rnrts rK�test_logrecord_class�)LogRecordFactoryTest.test_logrecord_class�sn�����)�T�%5�%5�%=�%=��+�+�-�	/��#�#�$4�5������t�0�0�2�3����!�
�	rp)r�rcN)rxryrzr{rLrWrhr|r}rprKrXrX�s��:�$7�
rprXc�H�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
g)
�QueueHandlerTesti�r
c���[RU5 [R"S5Ul[R
R
UR5UlSUl[R"S5Ul
SURlURR[R5 URRUR5 g)Nrm�queF)rrLrmrnr!rCr�que_hdlrrIr"�
que_loggerr�r:r�rErts rKrL�QueueHandlerTest.setUp�s������t���[�[��_��
��(�(�5�5�d�j�j�A��
���	�!�+�+�E�2���$)����!���� � ����1����"�"�4�=�=�1rpc�b�URR5 [RU5 gr�)rnrOrrWrts rKrW�QueueHandlerTest.tearDown�r�rpc��URRUR55 UR[R
URR5 URRUR55 UR[R
URR5 UR5nURRU5 URR
5nUR[U[R55 URURURR5 URURUR 4US45 gr�)ror�rur^rm�Empty�
get_nowaitr�r�rFr�r!r r_rIrrS)rGrr�s   rK�test_queue_handler�#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��<rpc���UR5n[R"[R5nSnUR	UR
X!S9n[R"UR5nURRU5 URRU5 URR5nURXFR5 URXFR 5 g)Nz {name} -> {levelname}: {message})rI�	levelnamer9)rur!r�r�r\rIr>r?rnrAror�rmrur_rr9)rGrry�log_format_str�
formatted_msgrL�
log_records       rK�test_formatting� QueueHandlerTest.test_formatting�s������!���(�(����9�	�;��&�-�-�4�9�9�8A�.�P�
��%�%�d�o�o�6�	��
�
�"�"�9�-�������$��Z�Z�*�*�,�
�������7�����(:�(:�;rpc��[[R"55n[RRURU5nUR5 URRUR55 URRUR55 URRUR55 UR5 UR5 URUR[R SS95 URUR[R"SS95 URUR[R$SS95 UR'5 [[R"55nUR)[R$5 [RRURUSS9nUR5 URRUR55 URRUR55 URRUR55 UR5 UR+UR[R SS95 UR+UR[R"SS95 URUR[R$S	S95 UR'5 UR5 UR-UR.5 g!UR5 UR5 f=f!UR5 f=f)
Nr�)rr9r�r�T)r�r�r�r�)r
r�Matcherr!rC�
QueueListenerrmr�ror�rur�r7r9rF�matchesr�r�r�rOr:rzr
r�rGr�r�s   rK�test_queue_listener�$QueueHandlerTest.test_queue_listener�sa���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�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��
�
��	�
�
�����(�*�*�+��7
�M�M�O��M�M�O��$
�M�M�O�s�A;M�A;M6�"M3�6Nc�J�[[R"55n[RRURU5nUR5 UR[UR5 UR5 URUR5 gr�)
r
rr�r!rCr�rmr�r^r�r9r
rr�s   rK�test_queue_listener_multi_start�0QueueHandlerTest.test_queue_listener_multi_start�sj���g�o�o�/�0���#�#�1�1�$�*�*�g�F���������,����7��
�
�����(�*�*�+rpc��[RRURUR5nUR5 SS- URRUR5SS9 UR5 URURR5R5R!S5S5 URURR5R5R!S5S5 g![a5nUnURRUR5US9 SnAGNSnAff=f)Nrrr�r+T��
stack_info�	Traceback�Stack)r!rCr�rmr=r��ZeroDivisionErrorror!rur�r9r_r9r]rsr1)rGr�rf�excs    rK�&test_queue_listener_with_StreamHandler�7QueueHandlerTest.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��	I�s�D�
E�*E�Ec���URRUR5 URR	UR
5 [RRURUR5nUR5 URRS5 UR5 URURR5R!5S5 g)Nr�zque -> ERROR: error)rnrAr@rorEr=r!rCr�rmr�r�r9r_r9r]rs)rGr�s  rK�*test_queue_listener_with_multiple_handlers�;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�Orp)rIrnrormN)rxryrzr{r\rLrWrvr}r�r�r�r�r|r}rprKrkrk�s5��3��2� �
=�<�$,�L,�K�	Prprkr�c��\rSrSrSr\S5r\R"\	RRS5S5r\R"\	RRS5S5r
\S5rSrS	rS
rg)�QueueListenerTesti�c�>�[R"SU-5nUR[R5 [RRU5nUR
U5 [RRU5nUR5 URS5 URS5 URS5 URS5 URS5 UR5 URU5 UR5 g)Nztest_logger_with_id_%s�one�two�three�four�five)
r!r"r:r;rCrrEr�r�r�r9rPrO)�	log_queuer�rr�r�s     rK�
setup_and_log�QueueListenerTest.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�Orpryc��[UR5H>n[R"5nUR	X0R5<SU<35 M@ UR
URSUR-S5 g�Nr�r�z&correct number of handled log messages)r��repeatrmrnr�r.r_�
call_count�rG�mock_handler�r�s    rK�#test_handle_called_with_queue_queue�5QueueListenerTest.test_handle_called_with_queue_queue>s_���4�;�;�'��!�K�K�M�	��"�"�9����A�.F�G�(�
���[�3�3�Q����_�E�
Grpc�p�[R"5 [UR5H^n[R
"5nUR
X0R5<SU<35 UR5 UR5 M` URURSUR-S5 gr�)r�*skip_if_broken_multiprocessing_synchronizer�r�r�rnr�r.rOr7r_r�r�s    rK� test_handle_called_with_mp_queue�2QueueListenerTest.test_handle_called_with_mp_queueFs���
�>�>�@��4�;�;�'��+�1�1�3�	��"�"�9����A�.F�G����!��%�%�'�	(�

���[�3�3�Q����_�E�
Grpc#�n# �UR5v� M![Ra /s$f=f7fr�)rurmrt)r�s rK�get_all_from_queue�$QueueListenerTest.get_all_from_queueSs8���
��#�.�.�0�0����;�;�
��	�
�s�5��2�5�2�5c
�N�[R"5 [UR5H�n[R
"5nUR
X R5<SU<35 [URU55nUR"5 UR"5 /[RRR//nUR!X4SUVs/sH0n[#U[R$5(aUR&OUPM2 sn-5 M� gs snf)Nr�z&Found unexpected messages in queue: %s)rr�r�r�r�rnr�r.�listr�rOr7r!rCr��	_sentinelrr�r r)rGr�rmrrkr�s      rK�$test_no_messages_in_queue_after_stop�6QueueListenerTest.test_no_messages_in_queue_after_stop[s���
�>�>�@��4�;�;�'��'�-�-�/���"�"�5�G�G�I�q�*A�B��T�4�4�U�;�<�����
��!�!�#���!1�!1�!?�!?�!I�!I� J�K���
�
�e�F�5:�%<�5:��/9��G�<M�<M�.N�.N�Q�U�U�*+�&,�5:�%<�=�>�(��%<s�7D"c�*�[R"5n[RR	U5nUR5 UR
5 UR[5 UR5 SSS5 g!,(df   g=fr�)
rmrnr!rCr�r�r9r^r��	task_done)rGr�r�s   rK�test_calls_task_done_after_stop�1QueueListenerTest.test_calls_task_done_after_stopss\�����
�I��'�'�5�5�i�@�H��N�N���M�M�O��"�"�:�.��#�#�%�/�.�.�s�*B�
Br}N)rxryrzr{r�r#r�rrrr!rCr�r�r�r�r�r�r|r}rprKr�r�s�����	�	�
�	�.
���g�&�&�4�4�h�	?�	G�
@�	G�
���g�&�&�4�4�h�	?�
	G�
@�
	G�
�	�
�	�	>�0	&rpr�c�$�\rSrSrSr\rSrSrg)�UTCi�c��[$r�)�ZERO�rG�dts  rK�	utcoffset�
UTC.utcoffset�s���rpc��g)Nr�r}r�s  rK�tzname�
UTC.tzname�s��rpr}N)rxryrzr{r��dstr�r|r}rprKr�r��s����C�rpr�c��\rSrSrSrSrg)�AssertErrorMessagei�c��UR"S/UQ70UD6 g!Ua%nURU[U55 SnAgSnAff=f)Nr})r^r_r�)rGr!r9rSrTrfs      rK�assert_error_message�'AssertErrorMessage.assert_error_message�sF��	.����b�2�4�2�6�2���	.����W�c�!�f�-�-��	.�s��A�?�Ar}N)rxryrzr{r�r|r}rprKr�r��s��.rpr�c�f�\rSrSrSrSSjrSrSrSrSr	S	r
S
rSrSr
S
rSrSrSrg)�
FormatterTesti�c	��S[R[RR	SSS5SSSSSS.UlS	S	S
00Ulg)Nzformatter.testr{�toz	dummy.extrFzMessage with %d %s)r��placeholders)rIr��pathname�linenor+r�rrSr�i�)r!r;rRr{r��common�variantsrts rKrL�FormatterTest.setUp�sP��$��]�]������V�T�;�?����'�'�	
���
��$��
��
rpNc��[UR5nUbURURU5 [R
"U5$r�)rur�rRr�r!r�)rGrIrMs   rK�
get_record�FormatterTest.get_record�s<���d�k�k�"�����M�M�$�-�-��-�.��$�$�V�,�,rpc�|�UR5n[R"S5nURUR	U5S5 [R"S5nUR[URU5 URUR55 [R"S5nURUR55 [R"S5nURUR55 [R"S5nURUR55 g)Nz${%(message)s}z${Message with 2 placeholders}z
%(random)s�%(asctime)sz%(asctime)-15sz%(asctime)#15s�
r�r!r>r_r\r^r�rz�usesTimerF�rGr�r�s   rK�test_percent�FormatterTest.test_percent�s����O�O������.�/��������!��&F�G����l�+�����*�a�h�h��2��������&����m�,������
�
��%����.�/������
�
��%����.�/������
�
��%rpc��UR5n[R"SSS9nURUR	U5S5 [R"SSS9nUR[URU5 [R"SSS9nURUR55 [R"SSS9nURUR55 [R"SSS9nURUR55 [R"S	SS9nURUR55 g)
Nz
$%{message}%$r��r��$%Message with 2 placeholders%$z{random}r��	{asctime}z{asctime!s:15}z{asctime:15}r�r�s   rK�test_braces�FormatterTest.test_braces�s����O�O������o�S�9��������!��&G�H����j��4�����*�a�h�h��2����k��5���������&����k��5������
�
��%����.�c�:������
�
��%����n�C�8������
�
��%rpc��UR5n[R"SSS9nURUR	U5S5 [R"SSS9nURUR	U5S5 [R"SSS9nURUR	U5S5 [R"SSS9nUR[URU5 URUR55 [R"S	SS9nURUR55 [R"S
SS9nURUR55 [R"SSS9nURUR55 [R"SSS9nURUR55 g)N�
${message}r�r�zMessage with 2 placeholdersz$messagez$$%${message}%$$r�z	${random}z
${asctime}z$asctimez${asctime}--r�r�s   rK�test_dollars�FormatterTest.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������
�
��%rpc��[R"S5nURURS5 [R"S5nURURS5 [R"S5nURURS5 [R"S5nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"S	SS9nURURS	5 [R"S
SS9nURURS
5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"S
SS9nURURS
5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 [R"SSS9nURURS5 UR	[
[RS5 UR	[
[RS5 UR	[
[RS5 UR	[
[RS5 UR	[
[RS5 UR	[
[RS5 UR	[
[RS5 UR	[
[RS 5 UR	[
[RS!5 UR
[
S"[RS#SS9 UR
[
S$[RS%SS9 UR
[
S&5 UR	[
[RS'SS9 UR
[
S([RS)SS9 UR
[
S*[RS+SS9 UR	[
[RS,SS9 UR	[
[RS-SS9 UR	[
[RS.SS9 UR	[
[RS/SS9 UR
[
S0[RS1SS9 UR
[
S2[RS3SS9 UR	[
[RS4SS9 UR	[
[RS5SS9 UR	[
[RS6SS9 UR	[
[RS7SS9 UR	[
[RS8SS9 UR	[
[RS9SS9 UR	[
[RS:SS9 UR	[
[RS;SS9 UR	[
[RS<SS9 UR
[
S=[RS>SS9 UR
[
S=[RS?SS9 UR
[
S=[RS@SS9 UR
[
S$[RSSS9 UR	[
[RS%SS9 UR
[
S$[RSASS9 UR	[
[RSBSS9 g)CNzM%(levelname)-15s - %(message) 5s - %(process)03d - %(module) - %(asctime)*.3sz1%(asctime)*s - %(asctime)*.3s - %(process)-34.33oz%(process)#+027.23Xz
%(foo)#.*gz5$%{message}%$ - {asctime!a:15} - {customfield['key']}r�r�z{process:.2f} - {custom.f:.4f}z{customfield!s:#<30}z{message!r}z{message!s}z{message!a}z{process!r:4.2}z8{process!s:<#30,.12f}- {custom:=+#30,.1d} - {module:^30}z{process!s:{w},.{p}}z{foo:12.{p}}z{foo:{w}.6}z{foo[0].bar[1].baz}z{foo[k1].bar[k2].baz}z{12[k1].bar[k2].baz}z${asctime} - $messager�z$bar $$z	$bar $$$$z%(asctime)Zz%(asctime)bz%(asctime)*z
%(asctime)*3sz%(asctime)_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)r!r>r_�_fmtr^r�r��rGr�s  rK�test_format_validate�"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��Prpc�P�/SQn/SQn[X5GHup4[R"X4SS0S9nUR5nUR	URU5S5 URS5nUR	URU5S5 [R"X4S9nUR5nUR
[UR
U5 [R"X4S	S0S9nURS5nUR	URU5S5 GM g)
N)z%(custom)s %(message)sz{custom} {message}z$custom $message)�%r�r�r��Default)r�rrz#Default Message with 2 placeholdersz 1234 Message with 2 placeholdersr�zNon-existing)rar!r>r�r_r\r^r�)rG�fmts�stylesr\r�r�r�s       rK�test_defaults_parameter�%FormatterTest.test_defaults_parameterus���S�� ���d�+�J�C��!�!�#�h�	�=R�S�A����!�A����Q�X�X�a�[�*O�P�����)�A����Q�X�X�a�[�*L�M��!�!�#�3�A����!�A����j�!�(�(�A�6��!�!�#�n�i�=X�Y�A�����)�A����Q�X�X�a�[�*L�M�,rpc�R�UR[[RSSS5 g)Nr�)r^r�r!r>rts rK�test_invalid_style� FormatterTest.test_invalid_style�s�����*�g�&7�&7��t�S�Irpc
��UR5n[R"SSSSSSS[5n[R"URS5R
55UlSUl[R"S5n[RUlURURU5S	5 URURUS
5S5 URU5 URUR S	5 g)N��r���rqr�{�%(asctime)s %(message)sz1993-04-21 08:03:00,123z%Y:%dz1993:21)r��datetime�utcr��mktime�
astimezone�	timetuple�created�msecsr!r>�gmtime�	converterr_�
formatTimer\�asctime)rGr�r�r�s    rK�	test_time�FormatterTest.test_time�s����O�O���
�
�
�t�Q��A�q�!�Q��
<���K�K��
�
�d� 3� =� =� ?�@��	�������7�8���k�k���������a��*C�D�������a��1�9�=�	�����������$=�>rpc
��"SS[R5nUR5n[R"SSSSSSS	[5n[
R"URS5R55Ul	U"5n[
RUlURURU5S
5 g)Nc��\rSrSrSrSrSrg)�DFormatterTest.test_default_msec_format_none.<locals>.NoMsecFormatteri�Nz%d/%m/%Y %H:%M:%Sr})rxryrzr{�default_msec_format�default_time_formatr|r}rprK�NoMsecFormatterr
�s��"&��"5�rprr�r�r�r�rqrr�z21/04/1993 08:03:00)r!r>r�r�r�r�rrrrrrr_r)rGrr�r�r�s     rK�test_default_msec_format_none�+FormatterTest.test_default_msec_format_none�s���	6�g�/�/�	6�
�O�O���
�
�
�t�Q��A�q�!�S�#�
>���K�K��
�
�d� 3� =� =� ?�@��	�����k�k���������a��*?�@rpc��[R"SSSS9n[S5HZn[R"S5 [R
"SSUS	--05nUR
U5nURS
U5 M\ g)Nz!{asctime}.{msecs:03.0f} {message}r�r�)r\r�rni�	g-C��6:?rz
Message %drrz.1000)r!r>r�r�r�r�r\rO)rGr�r�r�rms     rK�test_issue_89047�FormatterTest.test_issue_89047�sm�����"E�S�Zm�n���t��A��J�J�v���%�%�u�l�a�!�e�.D�&E�F�A������A����W�a�(�	rpc���SnUH�up#[S5nX$l[R"SS05nSSS5 UR	U5 URWRU5 URURUS-5 URUR[UR5-
URS-SS9 SSS5 M� g!,(df   N�=f!,(df   M�=f)	N))l�$�lH:gY@)l'$�T�rH:g8�@)�g�]�rH:�)l�)�T�rH:rztime.time_nsrrG�e��Ag@�@r�)�delta)
r�return_valuer!r�r�r_rr�assertAlmostEqualr�)rG�tests�ns�want�
patched_nsr�s      rK�/test_msecs_has_no_floating_point_precision_loss�=FormatterTest.test_msecs_has_no_floating_point_precision_loss�s���
���H�B��~�&�*�*,�'� �.�.��v��?��'����b�!�� � ����t�4�� � �����c��:��&�&�v�~�~��F�N�N�8K�'K�'-�|�|�c�'9�-1�'�3�"�!�	�&�&��"�!�s�C�
A:C%�
C"	�%
C4	c��SnSn[R"SU<SU<S35n[SU5upEnUR5n[	X%R5SS9HfupxUR
US	9 [[UR55up�URX�U-S
-SS9 URX�S
-SS9 SSS5 Mh g!,(df   Mz=f)Nr)r�r�iB0i��l*�C7qH:z
            start_ns = z
            offsets_ns = a�
            start_monotonic_ns = start_ns - 1

            import time
            # Only time.time_ns needs to be patched for the current
            # implementation, but patch also other functions to make
            # the test less implementation depending.
            old_time_ns = time.time_ns
            old_time = time.time
            old_monotonic_ns = time.monotonic_ns
            old_monotonic = time.monotonic
            time_ns_result = start_ns
            time.time_ns = lambda: time_ns_result
            time.time = lambda: time.time_ns()/1e9
            time.monotonic_ns = lambda: time_ns_result - start_monotonic_ns
            time.monotonic = lambda: time.monotonic_ns()/1e9
            try:
                import logging

                for offset_ns in offsets_ns:
                    # mock for log record creation
                    time_ns_result = start_ns + offset_ns
                    record = logging.makeLogRecord({'msg': 'test'})
                    print(record.created, record.relativeCreated)
            finally:
                time.time_ns = old_time_ns
                time.time = old_time
                time.monotonic_ns = old_monotonic_ns
                time.monotonic = old_monotonic
        �-cT)r5)�	offset_nsr�)�places���.A�)r�r�rrrar^r�r�floatr�r)rG�start_ns�
offsets_ns�code�rc�out�errr%�liner�relativeCreateds           rK�)test_relativeCreated_has_higher_precision�7FormatterTest.test_relativeCreated_has_higher_precision�s���-��J�
����$� �|�$�$��(	� �
��@(��d�3�����j�j�l��"�:�~�~�/?��M�O�I����	��2�+.�u�d�j�j�l�+C�(���&�&�w�I�1E��0L�UV�&�W��&�&��C��PQ�&�R�	3�2� N�2�2�s
�/A
C�
C	)r�r�r�)rxryrzr{rLr�r�r�r�r�r�r�r	rrr!r3r|r}rprKr�r��sJ��
�"-�
&�&� &�*TQ�lN�(J�?�
A�)�3�*0Srpr�c� �\rSrSrSrSrSrg)�TestBufferingFormatteri�c��S[U5-$)Nz[(%d)�r`�rGr/s  rK�formatHeader�#TestBufferingFormatter.formatHeader������W��%�%rpc��S[U5-$)Nz(%d)]r8r9s  rK�formatFooter�#TestBufferingFormatter.formatFooter�r<rpr}N)rxryrzr{r:r>r|r}rprKr6r6�s��&�&rpr6c�&�\rSrSrSrSrSrSrg)�BufferingFormatterTesti�c�n�[R"SS05[R"SS05/Ulg)Nrr�r�)r!r�r/rts rKrL�BufferingFormatterTest.setUp�s/���!�!�5�%�.�1��!�!�5�%�.�1�
��rpc���[R"5nURSUR/55 URSURUR55 g)Nr�onetwo)r!�BufferingFormatterr_r\r/r�s  rK�test_default�#BufferingFormatterTest.test_defaultsE���&�&�(������Q�X�X�b�\�*�����1�8�8�D�L�L�#9�:rpc��[5nURSURUR55 [R
"S5n[U5nURSURUR55 g)Nz[(2)onetwo(2)]z
<%(message)s>z[(2)<one><two>(2)])r6r_r\r/r!r>)rGr��lfs   rK�test_custom�"BufferingFormatterTest.test_custom	s`��"�$�����)�1�8�8�D�L�L�+A�B�
�
�
��
/��"�2�&�����-�q�x�x����/E�Frpr1N)rxryrzr{rLrGrKr|r}rprKrArA�s��
�;�
GrprAc��\rSrSrSrSrg)�
ExceptionTestic�R�URn[5nURU5 [S5e! [R
"SSS9 O=fUR
U5 UR5 URSnURURRS55 URURRS55 URURRS55 URURRS	55 g)
Nr��failedTr�rz#Traceback (most recent call last):
z!
RuntimeError: deliberate mistake�Stack (most recent call last):
z,logging.exception('failed', stack_info=True))r4�RecordingHandlerrEr�r!r!rPrOr/rF�exc_textrOr�r�)rGr�rVs   rKr}�ExceptionTest.test_formattings����������	���Q��	9��3�4�4��	9����h�4�8��	�����	���	�
�I�I�a�L������
�
�-�-�/>�?�	@�����
�
�+�+�-A�B�	C�������/�/�1>�?�	@�������-�-�/?�@�	As	�4�A
r}N)rxryrzr{r}r|r}rprKrNrNs��ArprNc��\rSrSrSrSrg)�LastResortTesti&c��URnURUR5 [Rn[R
n[R"5nURS5 URUR5S5 URS5 URUR5S5 SSS5 S[l[R"5nURS5 SnURUR5U5 SSS5 [R"5nURS5 URUR5S5 SSS5 SURl
S[l[R"5nURS5 URUR5S5 SSS5 URUR5 U[lU[lg!,(df   GNW=f!,(df   GN
=f!,(df   N�=f!,(df   Nu=f!URUR5 U[lU[lf=f)NzThis should not appearrz
Final chance!zFinal chance!
z-No handlers could be found for logger "root"
F)r4rPr=r!�
lastResortrrrr�r_r]r�r#�emittedNoHandlerWarningrE)rGrC�old_lastresort�old_raise_exceptionsrrs      rK�test_last_resort�LastResortTest.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�	I�A#H�(I�)4H#�I�:2H5�,9I�%2I�I�
H �I�#
H2�-I�5
I�?I�
I�I�3J
r}N)rxryrzr{r\r|r}rprKrVrV&s��#;rprVc� �\rSrSrSrSrSrg)�FakeHandleriMc
�N�SHn[XURXU55 M! g)N)r�r!rOr�)�setattr�record_call)rG�
identifier�calledr�s    rKr��FakeHandler.__init__Os#��>�F��D�$�"2�"2�:�v�"N�O�?rpc�^^^�UUU4SjnU$)Nc�H>�TRSRTT55 g)Nz{} - {})r�r\)rdrc�method_names���rK�inner�&FakeHandler.record_call.<locals>.innerTs����M�M�)�*�*�:�{�C�Drpr})rGrcrhrdris ``` rKrb�FakeHandler.record_callSs���	E��rpr}N)rxryrzr{r�rbr|r}rprKr_r_Ms
��P�rpr_c�.^�\rSrSrU4SjrSrSrU=r$)rRiYc�<>�[[U]
"U0UD6 /Ulgr�)r�rRr�r/rs   �rKr��RecordingHandler.__init__[s���
���.��?��?���rpc�:�URRU5 gr�)r/r�rs  rKry�RecordingHandler.handle_s�������F�#rpr1)rxryrzr{r�ryr|r�r�s@rKrRrRYs����$�$rprRc�^�\rSrSrU4SjrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrU=r$)�ShutdownTestidc�>�[[U]5 /Ul[R
nUR
[[SU5 g)Nr)r�rrrLrdr!rr�ra)rG�raise_exceptionsr�s  �rKrL�ShutdownTest.setUphs7���
�l�D�'�)����"�2�2�������*;�=M�Nrpc�^�U4SjnU$)Nc�>�T"5er�r})r�s�rKri�'ShutdownTest.raise_error.<locals>.innerps
����'�Mrpr})rGr�ris ` rK�raise_error�ShutdownTest.raise_erroros
���	��rpc�L�[SUR5n[SUR5n[SUR5n[[RR
XU/5n[R"[U5S9 /SQnURXPR5 g)Nrrrr�r�)z2 - acquirez	2 - flushz	2 - closez2 - releasez1 - acquirez	1 - flushz	1 - closez1 - releasez0 - acquirez	0 - flushz	0 - close�0 - release)	r_rdrr!r�r�rEr�r_)rG�handler0�handler1�handler2rCrks      rK�test_no_failure�ShutdownTest.test_no_failurets}���q�$�+�+�.���q�$�+�+�.���q�$�+�+�.���w���*�*�X��,J�K�����T�(�^�4�L��	
����;�;�/rpc��[SUR5n[X1URU55 [R
R
U5/n[R"[U5S9 URSURS5 g)Nrr�r|rm)
r_rdraryr!r�r�rEr�r_)rGr�r�r�rCs     rK�_test_with_failure_in_method�)ShutdownTest._test_with_failure_in_method�sh���a����-�����!1�!1�%�!8�9��O�O�'�'��0�1�����T�(�^�4��������B��8rpc�0�URS[5 g�Nr��r�r�rts rK�test_with_ioerror_in_acquire�)ShutdownTest.test_with_ioerror_in_acquire�s���)�)�)�W�=rpc�0�URS[5 g�Nr!r�rts rK�test_with_ioerror_in_flush�'ShutdownTest.test_with_ioerror_in_flush�����)�)�'�7�;rpc�0�URS[5 g�NrOr�rts rK�test_with_ioerror_in_close�'ShutdownTest.test_with_ioerror_in_close�r�rpc�0�URS[5 gr��r�r�rts rK�test_with_valueerror_in_acquire�,ShutdownTest.test_with_valueerror_in_acquire�s���)�)�)�Z�@rpc�0�URS[5 gr�r�rts rK�test_with_valueerror_in_flush�*ShutdownTest.test_with_valueerror_in_flush�����)�)�'�:�>rpc�0�URS[5 gr�r�rts rK�test_with_valueerror_in_close�*ShutdownTest.test_with_valueerror_in_close�r�rpc�F�S[lURS[5 g)NFr��r!rr��
IndexErrorrts rK�.test_with_other_error_in_acquire_without_raise�;ShutdownTest.test_with_other_error_in_acquire_without_raise�s��"'����)�)�)�Z�@rpc�F�S[lURS[5 g)NFr!r�rts rK�,test_with_other_error_in_flush_without_raise�9ShutdownTest.test_with_other_error_in_flush_without_raise����"'����)�)�'�:�>rpc�F�S[lURS[5 g)NFrOr�rts rK�,test_with_other_error_in_close_without_raise�9ShutdownTest.test_with_other_error_in_close_without_raise�r�rpc�f�S[lUR[URS[5 g)NTr��r!rr^r�r�rts rK�+test_with_other_error_in_acquire_with_raise�8ShutdownTest.test_with_other_error_in_acquire_with_raise�s'��"&������*�d�&G�&G�#�Z�	1rpc�f�S[lUR[URS[5 g)NTr!r�rts rK�)test_with_other_error_in_flush_with_raise�6ShutdownTest.test_with_other_error_in_flush_with_raise��'��"&������*�d�&G�&G�!�:�	/rpc�f�S[lUR[URS[5 g)NTrOr�rts rK�)test_with_other_error_in_close_with_raise�6ShutdownTest.test_with_other_error_in_close_with_raise�r�rp)rd)rxryrzr{rLryr�r�r�r�r�r�r�r�r�r�r�r�r�r�r|r�r�s@rKrrrrds[���O��
0� 9�>�<�<�A�?�?�A�?�?�1�
/�
/�/rprrc�l�\rSrSrSrSSjrSrSrSrSr	S	r
S
rSrSr
S
rSrSrSrSrg)�ModuleLevelMiscTesti�c���[RRRnUR	US5 UR[RU5 [R"S5 UR	[RRRS5 UR
[[RS5 "SS5nUR
[[RU"55 [R"S5 [R"5 UR	[RRR[R5 g)Nr�S�
doesnotexistsc��\rSrSrSrg)�;ModuleLevelMiscTest.test_disable.<locals>._NotAnIntOrStringi�r}Nrcr}rprK�_NotAnIntOrStringr�����rpr��WARN)
r!rCr#rSr_r�r^r�r2r�)rG�old_disabler�s   rK�test_disable� 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�HrpNc�<^�/m[R"U[SU4Sj5 [5n[RRU5 [
[U5nUbU"USU5 O	U"SU5 UR[UR5S5 URSnURUR5SU-5 UbUO[
[UR55nURURU5 URT/5 g)N�basicConfigc�(>�TRX45$r�r*)r��kwrds  �rK�<lambda>�/ModuleLevelMiscTest._test_log.<locals>.<lambda>�s���v�}�}�a�W�'=rpztest me: %rrrr)
rrr!rRrCrEr1r_r`r/�
getMessage�upperr)rGr�r��	recording�
log_methodr��expected_levelrds       @rK�	_test_log�ModuleLevelMiscTest._test_log�s�������
�
�d�G�]�=�	?�%�&�	������	�*��W�f�-�
����u�m�Y�7��}�i�0�����Y�.�.�/��3��"�"�1�%������*�*�,�m�i�.G�H�"'�"3����&�,�,�.�9Y���������8�	
�����$rpc�D�URS[R5 g�Nr�)r�r!r�rts rK�test_log�ModuleLevelMiscTest.test_log�s�����u�g�m�m�,rpc�&�URS5 g�Nr��r�rts rK�
test_debug�ModuleLevelMiscTest.test_debug�������w�rpc�&�URS5 g�Nr�r�rts rK�	test_info�ModuleLevelMiscTest.test_info�������v�rpc�&�URS5 g�Nr�r�rts rK�test_warning� ModuleLevelMiscTest.test_warning�������y�!rpc�&�URS5 g�Nr�r�rts rK�
test_error�ModuleLevelMiscTest.test_error�r�rpc�&�URS5 g�Nr7r�rts rK�
test_critical�!ModuleLevelMiscTest.test_critical�������z�"rpc��UR[[R[5 "SS[R
5n[R"U5 UR
[R"5U5 [R"[R
5 UR
[R"5[R
5 g)Nc��\rSrSrSrg)�;ModuleLevelMiscTest.test_set_logger_class.<locals>.MyLoggerir}Nrcr}rprKr0r�r�rpr0)r^r2r!r3rrr1r_�getLoggerClass)rGr0s  rK�test_set_logger_class�)ModuleLevelMiscTest.test_set_logger_classs������)�W�%;�%;�V�D�	�w�~�~�	�	���x�(�����/�/�1�8�<����w�~�~�.�����/�/�1�7�>�>�Brpc�^�/m"U4SjS[R"55n[R"U5 [R"S5nUR	TS/5 [
R"5n[R"U5nURU5 UR[R5 URS5 UR	UR5R5S5 URS5 URS5 UR[R 5 URS5 UR	UR5S5 UR#U5 UR%5 [R"[R&5 g!UR#U5 UR%5 [R"[R&5 f=f)Nc�H>^�\rSrSrS\R
4UU4SjjrSrU=r$)�@ModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLoggerir0c�F>�[TU]X5 TRS5 g)N�initialized)r�r�r�)rGrIr�r�r9s   ��rKr��IModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLogger.__init__s����� ��-����}�-rpr})	rxryrzr{r!r�r�r|r�)r�r9s@�rKr0r�s���$.�g�n�n�
.�
.rpr0�just_some_loggerr��hellorr)r!r�r3r"r_r7r8r<rEr:r;r�r]rs�truncater#r�rPrOr1)rGr0rr9rVr9s     @rK�test_subclass_logger_cache�.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�!CF7�7AG>c��[R"S5n[SU5up#nUR5nUR	SU5 UR	SU5 g)Na*
            import logging

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

            a = A()
        r$zexception in __del__zValueError: some error)r�r�rrr�rGr-r.r/r0s     rK�test_logging_at_shutdown�,ModuleLevelMiscTest.test_logging_at_shutdown+sP����� �
��(��d�3�����j�j�l���
�
�,�c�2��
�
�.��4rpc�V�[RnUR[RU5 [R
"SU<S35n[
SU5 [USS9nURUR5R5S5 SSS5 g!,(df   g=f)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$rir�zERROR:root:log in __del__)r�TESTFNr�rur�r�rr�r_rfr/)rGrr-�fps    rK�test_logging_at_shutdown_open�1ModuleLevelMiscTest.test_logging_at_shutdown_open>s����#�#�����	�(�(�(�3����$*�+3��6	� �
��&	��t�$�
�(�W�
-�����R�W�W�Y�-�-�/�1L�M�.�
-�
-�s�"/B�
B(c��[R"S5n[SU5up#nUR5nUR	SU5 URUS5 g)Nz�
            import logging

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

            rec()
        r$z#Cannot recover from stack overflow.rr)r�r�rrrOr_r�s     rK�test_recursion_error�(ModuleLevelMiscTest.test_recursion_error]sS����� �
��-�T�4�8�����j�j�l�����>��D�����Q�rpc��[R"5nUR[RU5 UR	[RU5 [R"5nUR	X5 URX5 gr�)r!�getLevelNamesMappingr_r,�assertIsNot)rG�mapping�new_mappings   rK�test_get_level_names_mapping�0ModuleLevelMiscTest.test_get_level_names_mappingmsf���.�.�0������-�-�w�7�����-�-�w�7��2�2�4������.�����.rpr}r�)rxryrzr{r�r�r�r�r�r�r�r�r�r�r�rrrr|r}rprKr�r��sK��I�.%�0-� ��"� �#�
C�3�>5�&N�> � /rpr�c��\rSrSrSrSr\SSj5r\S5r	Sr
Sr\R"5S	5r\R"5S
5rSrg)
�
LogRecordTestivc���[R"05n[U5nURUR	S55 URURS55 g)Nz<LogRecord: �>)r!r�r�rFrOr�)rGr�rms   rK�test_str_rep�LogRecordTest.test_str_repwsD���!�!�"�%����F��������^�4�5�����
�
�3��(rpc��[5n[R"5nURU5 SS0n[R"SU5 URURSRU5 URURSRS5 URU5 UR5 g)N�less�morezless is %(less)srzless is more)rRr!r"rEr�rr/rSr_r9rPrO)rGrVr�rs    rK�
test_dict_arg�LogRecordTest.test_dict_arg}s�����������	���Q��
�f������*�A�.��
�
�a�i�i��l�'�'��+�������1��-�-�~�>�	�����	���	rpNc��[RnU[lSSKnUR5Rn[R
"SSU305n[R"[RSS5 [R
"SSU305nSSS5 UURWRS.nU[lU(aURU5 gU$!,(df   NN=f!U[lf=f)Nrr�msg1_r��msg2_)�processName�r1.processName�r2.processName)r!�logMultiprocessingr��current_processrIr�r�	swap_itemrs�modulesrr-)	rr!r��prev_logMultiprocessingrrI�r1�r2�resultss	         rK�_extract_logrecord_process_name�-LogRecordTest._extract_logrecord_process_name�s���")�"<�"<��%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$�AC1�<C �"C1� 
C.�*C1�1
C>c�&�[R"5 S[R;nUR	[
RS5 Sn[
R"05nUR	URS5 URSU5nUR	SUS5 UR	SUS5 UR	SUS5 SSK
nUR"5upgUR"URS	X'4S
9nUR5 UR5nURSUS5 UR	USUS5 UR	SUS5 UR!5 U(aSSK
ngg!U(aSSK
nff=f)Nr�T�MainProcessrrrrr rr�r�)rr�rsr$r_r!r!r�rr)r��Pipe�Processr�r��assertNotEqualr�)	rG�multiprocessing_imported�LOG_MULTI_PROCESSINGr�r(r��parent_conn�
child_connr�s	         rK�test_multiprocessing�"LogRecordTest.test_multiprocessing�sr���:�:�<�#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�
#�&5�&:�&:�&<�#�K��'�'��;�;��-�;��A�
�G�G�I�!�&�&�(�G����
�w�}�/E�F����W�]�3�W�=M�5N�O����]�G�4D�,E�F�
�F�F�H�(�&�(��'�&�(�s�EF�Fc��URnURn[R"05nU"UR5 U"UR
5 U"UR5 U"UR5 U"UR5 [Rn[Rn[Rn[RnS[l	S[l
S[lS[l[R"05nU"UR5 U"UR
5 U"UR5 U"UR5 U"UR5 U[l	U[l
U[lU[lg!U[l	U[l
U[lU[lf=f)NF)
r
r�r!r�r�
threadName�processr�taskName�
logThreads�logProcessesr!�logAsyncioTasks)rG�NONE�NOT_NONEr��log_threads�
log_processes�log_multiprocessing�log_asyncio_taskss        rK�
test_optional�LogRecordTest.test_optional�sE��� � ���'�'���!�!�"�%�����������������������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�.Gc��\# �[R"05nU"UR5 g7fr�)r!r�r9)rG�	assertionr�s   rK�_make_record_async� LogRecordTest._make_record_async�s!����!�!�"�%���!�*�*��s�*,c��URn[R"5nS[lURU"UR55 S[lURU"UR55 SSS5 [R"S5 g!,(df   N%=f![R"S5 f=f)NTF)	rG�asyncio�Runnerr!r<�runr�r
�set_event_loop_policy�rG�make_record�runners   rK�#test_taskName_with_asyncio_imported�1LogRecordTest.test_taskName_with_asyncio_imported�s���	0��1�1�K����!�V�*.��'��
�
�;�t�';�';�<�=�*/��'��
�
�;�t�'8�'8�9�:�	"�
�)�)�$�/�
"�!��
�)�)�$�/�s#�!B,�AB�<B,�
B)�%B,�,Cc��URn[R"5n[R"[
RSS5 S[lURU"UR55 S[lURU"UR55 SSS5 SSS5 [R"S5 g!,(df   N-=f!,(df   N6=f![R"S5 f=f)NrJTF)rGrJrKrr#rsr$r!r<rLr
rMrNs   rK�&test_taskName_without_asyncio_imported�4LogRecordTest.test_taskName_without_asyncio_imported�s���	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,�,Dr}r�)rxryrzr{rrr#r)r�r4rCrGrrrQrTr|r}rprKrrvsz��)�	�����0�#'��#'�J8�@�
�$�$�&�	0�'�	0�
�$�$�&�	0�'�	0rprc�^�\rSrSrU4SjrU4SjrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrSr\R2"5S5rSSjrSrSrSrSrSr Sr!Sr"U=r#$) �BasicConfigTestic�|>�[[U]5 [RR
Ul[RR5Ul[RSSUl
[RRUlURUR5 /[Rlgr�)r�rWrLr!rCrCr&r'r(r)r*r�r6r��cleanupr�s �rKrL�BasicConfigTest.setUpsy���
�o�t�*�,����-�-��
�%�/�/�4�4�6���")�"6�"6�q�"9���&-�l�l�&8�&8��#�������%� "����rpc��>�[RRSSH2n[RRU5 UR	5 M4 [
[U]5 gr�)r!rCrCrPrOr�rWrW)rGrVr�s  �rKrW�BasicConfigTest.tearDownsF������&�&�q�)�A��L�L�&�&�q�)�
�G�G�I�*�	�o�t�-�/rpc�h�[[RSUR5 [RR5 [RR
UR5 UR[RSS&[RRUR5 g)NrC)rar!rCrCr&rQrRr(r*r)r:r6rts rKrY�BasicConfigTest.cleanupsp������j�$�-�-�8������!���� � ��!4�!4�5�"&�"9�"9����Q�������d�9�9�:rpc���[R"5 UR[[RR
5S5 [RR
SnUR
U[R5 URUR[R5 URnURURR[R5 URUR 5 UR
UR[R"5 UR[RR$UR&5 g)Nrrr)r!r�r_r`rCrCrSr<r9rsrrLrPr��BASIC_FORMATr
rn�PercentStyler�r6)rGr�rLs   rK�test_no_kwargs�BasicConfigTest.test_no_kwargss�������	
����W�\�\�2�2�3�Q�7��,�,�'�'��*�����g�w�'<�'<�=����������4��%�%�	�����)�)�.�.��0D�0D�E����)�+�+�,����i�.�.��0D�0D�E�	
������+�+�T�-H�-H�Irpc�n�[R"5n[R"[R
SS9 [R"S5 [R
RS5 URUR5R5S5 SSS5 g!,(df   g=f)Nr��r9r��Log an errorr�ERROR:root:Log an error�rr�r!r�rsr"r�r#r_r]rsr�s  rK�test_strformatstyle�#BasicConfigTest.test_strformatstyle2�o��
�
$�
$�
&�&����s�z�z��=��M�M�.�)��J�J�O�O�A�����V�_�_�.�4�4�6�)�
+�	'�
&�
&���BB&�&
B4c�n�[R"5n[R"[R
SS9 [R"S5 [R
RS5 URUR5R5S5 SSS5 g!,(df   g=f)Nr�rerfrrgrhr�s  rK�test_stringtemplatestyle�(BasicConfigTest.test_stringtemplatestyle:rkrlc�N�Sn[R"SSS9 UR[[RR
5S5 [RR
SnUR
U[R5 [R"SSSS9nURURRURR5 URURRURR5 URXUS5 g)	Nc�p�UR5 UR5 [R"U5 gr�r��r��h2rVs   rKrY�.BasicConfigTest.test_filename.<locals>.cleanupD����H�H�J��H�H�J��I�I�b�Mrp�test.logri)rrkrrrr�r�)r!r�r_r`rCrCrSr�r9�moderIr��rGrYr�rks    rK�
test_filename�BasicConfigTest.test_filenameBs���	�
	���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�?rpc�6�Sn[R"SSS9 [RRSn[R"SS5nURURRURR5 URXUS5 g)Nc�p�UR5 UR5 [R"U5 gr�r�rrs   rKrY�.BasicConfigTest.test_filemode.<locals>.cleanupVrurprv�wb�r�filemoder)	r!r�rCrCr�r_r9rwr�rxs    rK�
test_filemode�BasicConfigTest.test_filemodeTss��	�
	���Z�$�?��,�,�'�'��*���&�&�z�4�8��������,�,�h�o�o�.B�.B�C�����(�J�?rpc��[R"5nURUR5 [R
"US9 UR
[[RR5S5 [RRSnURU[R5 UR
URU5 g)Nr�rrr)
r7r8r�rOr!r�r_r`rCrCrSr<r9)rGr9r�s   rK�test_stream�BasicConfigTest.test_streambs��������������%����6�*�����W�\�\�2�2�3�Q�7��,�,�'�'��*�����g�w�'<�'<�=��������0rpc���[R"SS9 [RRSRnURURRS5 g)Nz%(asctime)s - %(message)s)r\r)r!r�rCrCrLr_rPr��rGrLs  rK�test_format�BasicConfigTest.test_formatlsH�����#>�?��L�L�)�)�!�,�6�6�	�����)�)�.�.�0K�Lrpc��[R"SS9 [RRSRnURURS5 g)Nr)rnr)r!r�rCrCrLr_rnr�s  rK�test_datefmt�BasicConfigTest.test_datefmtrs@�����E�*��L�L�)�)�!�,�6�6�	�����*�*�E�2rpc���[R"SS9 [RRSRnURUR[R5 g)Nr�r�r)r!r�rCrCrLrSrPrQr�s  rK�
test_style�BasicConfigTest.test_stylexsF�����#�&��L�L�)�)�!�,�6�6�	����i�.�.��0K�0K�Lrpc��[RRnUR[RRU5 [R
"SS9 UR
[RRS5 [R
"SS9 UR
[RRS5 g)N�9)r��:)r!rCr�r�r:r�r_)rG�	old_levels  rK�
test_level�BasicConfigTest.test_level~sy���L�L�&�&�	�������-�-�y�9����"�%�������+�+�R�0����"�%�������+�+�R�0rpc��URn[R"5/n[RnU"[
[RSUS9 U"[
[RSUS9 U"[
[RUUS9 U"[
[R[RS9 [R"SSS9 g)Nrv)rr9)rrC)r9rC)�loglevelr�r)r^r!r<rsrr�r�r�)rGr^rCr9s    rK�test_incompatible�!BasicConfigTest.test_incompatible�s����(�(���)�)�+�,�������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�8rpc�F�[R"5[R"[R5[R"5/n[R"5nUSRU5 [R"US9 URUS[RRS5 URUS[RRS5 URUS[RRS5 URUSR5 URUSR5 URUSRU5 URUSRUSR5 g)Nr�)rCrrr)r!r<rsr"r>rAr�rrCrCr�rL)rGrCr�s   rK�
test_handlers�BasicConfigTest.test_handlers�s0���!�!�#��!�!�#�*�*�-��!�!�#�
��

�������� � ��#����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�Crpc���[R"5n[R"5n[R"U5/n[R"U5/n[R"[R
US9 [R"S5 [R"S5 [R"S5 UR[[RR5S5 [R"[RUSS9 [R"S5 [R"S5 [R"S5 UR[[RR5S5 URUR5R5S5 URUR5R5S	5 g)
Nr�rLr�r�rrT)r�rC�forcezWARNING:root:warnz WARNING:root:warn
INFO:root:info)r7r8r!r<r�r�r�r�r�r_r`rCrCr�r]rs)rG�
old_string_io�
new_string_io�old_handlers�new_handlerss     rK�
test_force�BasicConfigTest.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�<�	>rpc��Sn[R"SUSS[RS9 UR[	[R
R5S5 [R
RSnURU[R5 URURU5 [R"S5 UR5 [SSS	9nUR5R5nSSS5 [R "S5 URWS5 g!,(df   N7=f!WR5 [SSS	9nUR5R5nSSS5 O!,(df   O=f[R "S5 URWS5 f=f)
Nrirvr5�%(message)s�rrk�errorsr\r�rrr�.The Øresund Bridge joins Copenhagen to Malmör��r!r�r;r_r`rCrCrSr�rkr�rOr�rfrsrRr��rGrkr�r�r�s     rK�
test_encoding�BasicConfigTest.test_encoding�sE��	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�C
E�&D6�6
E�G�"F
�	G�

F�0Gc��Sn[R"SUSS[RS9 UR[	[R
R5S5 [R
RSnURU[R5 URURU5 [R"S5 UR5 [SS	S
9nUR5R5nSSS5 [R "S5 URWS5 g!,(df   N7=f!WR5 [SS	S
9nUR5R5nSSS5 O!,(df   O=f[R "S5 URWS5 f=f)Nrmrv�ignorer�r�rrrr�rir�z*The resund Bridge joins Copenhagen to Malmr�r�s     rK�test_encoding_errors�$BasicConfigTest.test_encoding_errors�s?��	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���Sn[R"SUS[RS9 UR[	[R
R5S5 [R
RSnURU[R5 URURU5 URURS5 [R"S5 UR5 [SS	S
9nUR5R5nSSS5 [ R""S5 URWS5 g!,(df   N7=f!WR5 [SS	S
9nUR5R5nSSS5 O!,(df   O=f[ R""S5 URWS5 f=f)Nrmrvr�)rrkr\r�rrr�backslashreplaceu<😂: ☃️: The Øresund Bridge joins Copenhagen to Malmörir�zL\U0001f602: \u2603\ufe0f: The \xd8resund Bridge joins Copenhagen to Malm\xf6)r!r�r;r_r`rCrCrSr�rkr�r�rOr�rfrsrRr�r�s     rK�test_encoding_errors_default�,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�%
F3�/0Gc�.^�Sn[R"SUSS[RS9 UR[	[R
R5S5 [R
RSnURU[R5 URURU5 URUR5 /mU4SjnX2l[R"S5 URT5 URS	TS5 UR!5 [#SS
S9nUR%5R'5nSSS5 [(R*"S5 URWS5 g!,(df   N7=f!WR!5 [#SS
S9nUR%5R'5nSSS5 O!,(df   O=f[(R*"S5 URWS5 f=f)
Nrmrvr�r�rrrc�`>�TR[[R"555 gr�)r�r�rsr!)r�r9s �rK�dummy_handle_error�EBasicConfigTest.test_encoding_errors_none.<locals>.dummy_handle_errors������s�3�=�=�?�3�4rpr�z:'ascii' codec can't encode character '\xd8' in position 4:rir�r)r!r�r;r_r`rCrCrSr�rkr
r�r�r�rFrrOr�rfrsrRr�)rGrkr�r�r�r�r9s      @rK�test_encoding_errors_none�)BasicConfigTest.test_encoding_errors_none�s����	(��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���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�6F�
F�H�2G�	H�
G(�$0Hc��SnSn[SS5nUR[RU5 Sn[R
"USU[RSS9 UR[[RR5S5 [RRS	nURU[R5 [R"S
S9nS
[lUR!U"55 SSS5 [#USS9nUR%5R'5nSSS5 UR)WS
5 [R*"S5 U(aUR-5 gg!,(df   N�=f!,(df   N`=f![R*"S5 U(aUR-5 ff=f)Nc��8# �[R"S5 g7f)Nzhello world)r!r�r}rprKr|�5BasicConfigTest.test_log_taskName.<locals>.log_records����O�O�M�*�s�r�ztest-logging-taskname-rir5z%(taskName)s - %(message)s)rr�rkr�r\rrrT)r�r�zTask-\d+ - hello world)rWr�rRr�r!r�r�r_r`rCrCrSr�rJrKr<rLr�rfrs�assertRegexrMrO)rGr|r��log_filenamerkrPr�r�s        rK�test_log_taskName�!BasicConfigTest.test_log_taskNamesS��	+���%�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<�B,F�"E;�F�F�2F�;
F	�F�
F�F�0G
c��^^^�/m[RmUUU4Sjn[R"T[SU5 [	[U5nUb
U"US5 OU"S5 TRTS04/5 g)Nc�>�T"5 [RRn[RRS5 TR	[RRU5 TRX45 g)N�d)r!rCr�r:r�r�)r�r�r�rd�old_basic_configrGs   ���rK�my_basic_config�2BasicConfigTest._test_log.<locals>.my_basic_config;sP��������*�*�I��L�L�!�!�#�&��O�O�G�L�L�1�1�9�=��M�M�1�'�"rpr�ztest mer})r!r�rrr1r_)rGr�r�r�r�rdr�s`    @@rKr��BasicConfigTest._test_log6si�����"�.�.��	#�	�
�
�d�G�]�O�D��W�f�-�
����u�i�(��y�!�	
����2�r�(��,rpc�D�URS[R5 gr�)r�r!r�rts rKr��BasicConfigTest.test_logMs�����u�g�o�o�.rpc�&�URS5 gr�r�rts rKr��BasicConfigTest.test_debugPr�rpc�&�URS5 gr�r�rts rKr��BasicConfigTest.test_infoSr�rpc�&�URS5 gr�r�rts rKr��BasicConfigTest.test_warningVr�rpc�&�URS5 gr�r�rts rKr��BasicConfigTest.test_errorYr�rpc�&�URS5 gr�r�rts rKr��BasicConfigTest.test_critical\r�rp)rCr6r*r(r�)$rxryrzr{rLrWrYrbrirnryr�r�r�r�r�r�r�r�r�r�r�r�r�rrr�r�r�r�r�r�r�r�r|r�r�s@rKrWrWs����#�0�;�J�(+�+�@�$@�1�M�3�M�1�
9�D�">�*O�(Q�&K�((�@
�$�$�&� �'� �:-�./� ��"� �#�#rprWc�|^�\rSrSrU4SjrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrU=r$)�LoggerAdapterTesti`c�@>^�[[U]5 [RSSm[5Ul[RUlURRUR5 URURRUR5 URURR5 U4SjnURU5 UR[R5 [R"URS9Ulg)Nc�,>�T[RSS&gr�)r!r))�old_handler_lists�rKrY�(LoggerAdapterTest.setUp.<locals>.cleanupks���&6�G� � ��#rp)r)r�r�rLr!r)rRr�rCrrEr�rPrOrEr��adapter)rGrYr�r�s  @�rKrL�LoggerAdapterTest.setUpas����
���,�.�"�/�/��2��)�+����l�l��������t�~�~�.�������1�1�4�>�>�B�������,�,�-�	7�	
���� �����(�(�)��,�,�D�K�K�@��rpc�d�SnSnSS- UR	[URR5S5 URRSnUR	UR[R5 UR	URU5 UR	URUR45 UR	URURX"R45 g![a2nUnURRXR5 SnAGNSnAff=f�Nztesting exception: %rrrr)r�r�r!r�r_r`r/rr!r�rrSr+r��
__traceback__�rGrr�rfr�s     rK�test_exception� LoggerAdapterTest.test_exceptionrs���%����	8�
��E�
	
����T�^�^�3�3�4�a�8����'�'��*�����������7�������S�)�������t�~�~�&7�8��������-�-��.?�.?�@�	B��!�	8��C��L�L�"�"�3���7�7��	8���C3�3
D/�='D*�*D/c�j�SS- URRSWS9 UR[	UR
R5S5 UR
RSnURURURX"R45 g![anUnSnAN�SnAff=f)Nrrrz
exc_info testr�)
r�r�r!r_r`r�r/r+r�r�)rGrfr�r�s    rK�test_exception_excinfo�(LoggerAdapterTest.test_exception_excinfo�s���	�
��E�	
��������=�����T�^�^�3�3�4�a�8����'�'��*���������-�-��.?�.?�@�	B��!�	��C��	�s�B�
B2�&B-�-B2c���SnURRXR5 UR[	URR
5S5 URR
SnURUR[R5 URURU5 URURUR45 URURS5 g)Nzcritical test! %rrrrr�)r�r7r�r_r`r/rr!r�rrSr)rGrr�s   rKr��LoggerAdapterTest.test_critical�s���!�������c�>�>�2�����T�^�^�3�3�4�a�8����'�'��*���������)9�)9�:�������S�)�������t�~�~�&7�8�������/�:rpc�b�URRRRnSURRRlUR	[
URRRSU5 UR
URRS55 g)N�!rSrw)r�rr#rSr�rarz�isEnabledFor�rGr�s  rK�test_is_enabled_for�%LoggerAdapterTest.test_is_enabled_for�sw���l�l�)�)�1�1�9�9��.0������#�#�+��������!4�!4�!<�!<�i�#�	%�������2�2�2�6�7rpc�j�URURR55 URRHnURRU5 M  UR
URR55 UR
URR55 gr�)rFr�rBrrCrPrzr%s  rK�test_has_handlers�#LoggerAdapterTest.test_has_handlers�sy��������0�0�2�3��{�{�+�+�G��K�K�%�%�g�.�,�	
������0�0�2�3�������1�1�3�4rpc���Sn[URSS9n[USS9nSUlUR[	U5[	U55 UR[RXR5 UR[URR5S5 URRSnURUR[R5 URURSU35 URURUR45 URURS5 URnUR!URU5 UR!URRU5 [#5nXclUR!URU5 UR!URU5 UR!URRU5 XSlUR!URU5 UR!URU5 UR!URRU5 g!XSlf=f)NzAdapters can be nested, yo.�rr,�AdapterAdapterrrrzAdapter AdapterAdapter �test_nested)�
PrefixAdapterrr�r_rr�r!r�r�r`r/rrrSrr#rrr)rGrr��adapter_adapterr��orig_manager�temp_managers       rKr��LoggerAdapterTest.test_nested�s���+���t�{�{�$�?��'�w�d�C��!1�������g���_�(=�>����G�,�,�c�>�>�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�#��M�M�/�1�1�<�@��M�M�'�/�/�<�8��M�M�$�+�+�-�-�|�<�&2�#��
�
�o�-�-�|�<��
�
�g�o�o�|�4��
�
�d�k�k�)�)�<�8��'3�#�s
�#A$I,�,I4c���URRn[UR5nUR	SS5 UR[
USR5S5 URUSRS5 UR[RSS5 UR[
USR5S5 URUSRS5 g)N�
Hello, {}!�worldrmz
Hello, world!�test_styled_adapter�Goodbye {}.zGoodbye world.)r�r/�StyleAdapterrr�r_r�rrr�r!r�)rGr/r�s   rKr	�%LoggerAdapterTest.test_styled_adapter�s����.�.�(�(���t�{�{�+������g�.�����W�R�[�_�_�-��?�������-�-�/D�E����G�O�O�]�G�<�����W�R�[�_�_�-�/?�@�������-�-�/D�Erpc��URRn[UR5nSUl[U5nUR
SS5 UR[USR5S5 URUSRS5 UR[RSS5 UR[USR5S5 URUSRS5 g)	Nz{}r�r�rmz{} Hello, world!�test_nested_styled_adapterr	z{} Goodbye world.)r�r/r�rr�r	r�r_r�rrr�r!r�)rGr/r��adapter2s    rKr	�,LoggerAdapterTest.test_nested_styled_adapter�s����.�.�(�(������,�������(������w�/�����W�R�[�_�_�-�/A�B�������-�-�/K�L����W�_�_�m�W�=�����W�R�[�_�_�-�/B�C�������-�-�/K�Lrpc��^^^^�SmURRmUU4SjmU4SjmU4SjnURRnU"5 UR	USR
S5 USRnTS-
mU"5 UR	USR
S5 URUSRU5 USRnTS-
mU"5 UR	USR
S5 URUSRU5 USRnTS-
mU"5 UR	USR
S	5 URUSRU5 g)
Nrrc�>�T"STS9 g�NrG��
stacklevelr}��	the_level�triggers��rK�	innermost�ELoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.innermost��
����F�y�1rpc�>�T"5 gr�r}�r	s�rKri�ALoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.inner������Krpc�>�T"5 gr�r}�ris�rK�outer�ALoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.outer������Grprmr	rir	� test_find_caller_with_stacklevel)r�r�r�r/r_rr�r�)rGr	r/r�rir	r	r	s    @@@@rKr	�2LoggerAdapterTest.test_find_caller_with_stacklevel�sJ����	��,�,�&�&��	2�	�	��.�.�(�(��
��������-�-�{�;����#�#���Q��	�
��������-�-�w�7����7�2�;�-�-�v�6����#�#���Q��	�
��������-�-�w�7����7�2�;�-�-�v�6����#�#���Q��	�
��������-�-�/Q�R����7�2�;�-�-�v�6rpc��[R"URSS0S9UlURR	S5 UR[
URR5S5 URRSnUR[US55 URURS5 g)Nr�r�r��foo should be hererrr�r!r�rr�r7r_r`r�r/rFr�r�rs  rK�test_extra_in_records�'LoggerAdapterTest.test_extra_in_records�s����,�,�D�K�K�49�3�<�A���	
�����2�3�����T�^�^�3�3�4�a�8����'�'��*��������.�/�������S�)rpc��URRSSS0S9 UR[URR
5S5 URR
SnUR
[US55 g)Nzfoo should NOT be herer��nope�r,rrr)r�r7r_r`r�r/rzr�rs  rK� test_extra_not_merged_by_default�2LoggerAdapterTest.test_extra_not_merged_by_defaultsf�������6�u�f�o��N�����T�^�^�3�3�4�a�8����'�'��*��������/�0rpc�8�[R"URSS0SS9UlURR	SSS0S9 UR[
URR5S	5 URRS
nUR[US55 UR[US55 URURS5 URURS5 URR	S5 UR[
URR5S5 URRS
nURURS5 URUS5 URR	SSS9 UR[
URR5S5 URRS
nURURS5 URUS5 g)Nr�r�T�rr,�merge_extrazfoo and bar should be hererr�r%	rrr�no extrar�rm�
none extrarq)r!r�rr�r7r_r`r�r/rFr�r�r�assertNotHasAttrrs  rK�test_extra_merged�#LoggerAdapterTest.test_extra_mergeds����,�,�D�K�K�49�3�<�9=�?���	
�����:�5�#�,��O�����T�^�^�3�3�4�a�8����'�'��*��������.�/�������.�/�������S�)�������S�)������j�)�����T�^�^�3�3�4�a�8����'�'��+��������S�)����f�e�,������l�$��7�����T�^�^�3�3�4�a�8����'�'��+��������S�)����f�e�,rpc��[R"URSS0SS9UlURR	SSS0S9 UR[
URR5S5 URRS	nUR[US55 URURS5 g)
Nr�r�Tr)	zfoo shall be minr�r%	rrrr 	rs  rK�)test_extra_merged_log_call_has_precedence�;LoggerAdapterTest.test_extra_merged_log_call_has_precedence's����,�,�D�K�K�49�3�<�9=�?���	
�����0�����E�����T�^�^�3�3�4�a�8����'�'��*��������.�/�������S�)rpc��[R"URSS9UlURR	SSS0S9 UR[
URR5S5 URRSnURURS5 URR	S	5 UR[
URR5S
5 URRSnURUS5 URR	SSS9 UR[
URR5S5 URRSnURUS5 g)
NT)rr*	r	r�r�r%	rrrmr+	r�r,	rq)r!r�rr�r7r_r`r�r/r�r-	rs  rK�test_extra_merged_without_extra�1LoggerAdapterTest.test_extra_merged_without_extra2s1���,�,�D�K�K�9=�?���	
�����2�5�#�,��G�����T�^�^�3�3�4�a�8����'�'��+��������S�)������j�)�����T�^�^�3�3�4�a�8����'�'��+�����f�e�,������l�$��7�����T�^�^�3�3�4�a�8����'�'��+�����f�e�,rp)r�rr�)rxryrzr{rLr�r�r�r�r�r�r	r	r	r!	r&	r.	r1	r4	r|r�r�s@rKr�r�`sY���A�"B�"B�	;�8�5�9�8	F�
M�7�@*�1�-�2	*�-�-rpr�c��\rSrSrSrSrSrg)r�iF�Adapterc�(�URSU3U4$r��r�)rGrrTs   rKr8�PrefixAdapter.processIs���+�+��a��u�%�v�-�-rpr}N)rxryrzr{r�r8r|r}rprKr�r�Fs��
�F�.rpr�c� �\rSrSrSrSrSrg)�MessageiMc��XlX lgr�)r\rS)rGr\rSs   rKr��Message.__init__Ns�����	rpc�H�URR"UR6$r�)r\r\rSrts rK�__str__�Message.__str__Rs���x�x����	�	�*�*rp)rSr\N)rxryrzr{r�r@	r|r}rprKr<	r<	Ms���+rpr<	c�"�\rSrSrSS.SjrSrg)r	iVrrr	c��URU5(aBURX%5up%URR"U[	X$540UDSUS-0D6 gg)Nr	rr)r�r8rr�r<	)rGr�rr	rSrTs      rKr��StyleAdapter.logWsT�����U�#�#��,�,�s�3�K�C��K�K�O�O�E�7�3�#5�
5��
5�'1�!�|�
5�$rpr}N)rxryrzr{r�r|r}rprKr	r	Vs��34�5�5rpr	c�^�\rSrSrU4SjrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrU=r$)�
LoggerTesti^c�>�[[U]5 [5Ul[
R"SS9UlURRUR5 URURRUR5 URURR5 UR[
R5 g)N�blah�rI)
r�rF	rLrRr�r!r1rrEr�rPrOrEr�s �rKrL�LoggerTest.setUp`s����
�j�$�%�'�)�+����n�n�&�1��������t�~�~�.�������1�1�4�>�>�B�������,�,�-�����(�(�)rpc��UR[SURRS5 UR[SURRS5 g)Nz,Level not an integer or a valid string: Nonez.Level not an integer or a valid string: (0, 0))rr)r�r2rr:rts rK�test_set_invalid_level�!LoggerTest.test_set_invalid_levelisJ���!�!��E��K�K� � �$�	(�	
�!�!��G��K�K� � �&�	*rpc�d�SnSnSS- UR	[URR5S5 URRSnUR	UR[R5 UR	URU5 UR	URUR45 UR	URURX"R45 g![a2nUnURRXR5 SnAGNSnAff=fr�)r�rr!r�r_r`r/rr!r�rrSr+r�r�r�s     rKr��LoggerTest.test_exceptionqs���%����	7�
��E�
	
����T�^�^�3�3�4�a�8����'�'��*�����������7�������S�)�������t�~�~�&7�8��������-�-��.?�.?�@�	B��!�	7��C��K�K�!�!�#�~�~�6�6��	7�r�c���[R"[SS5 UR[UR
RSS5 SSS5 g!,(df   g=f)NrTr��test message)r�	swap_attrr!r^r2rr�rts rK�!test_log_invalid_level_with_raise�,LoggerTest.test_log_invalid_level_with_raise�s>��
�
�
�w�(9�4�
@����i������$��O�A�
@�
@�s�-A�
A!c��[R"[SS5 URR	SS5 SSS5 g!,(df   g=f)NrFr�rQ	)rrR	r!rr�rts rK�test_log_invalid_level_no_raise�*LoggerTest.test_log_invalid_level_no_raise�s4��
�
�
�w�(9�5�
A��K�K�O�O�D�.�1�B�
A�
A�s�A�
Ac��^�/m[R"U[RSU4Sj5 URRSS9 UR
[T5S5 UR
STS5 g)N�print_stackc�B>�TRUR55$r�)r�r])r�r�rds  �rKr��=LoggerTest.test_find_caller_with_stack_info.<locals>.<lambda>�s���f�m�m�D�M�M�O�&DrpTr�rrrQr)rrr!�	tracebackr�
findCallerr_r`)rGrds @rK� test_find_caller_with_stack_info�+LoggerTest.test_find_caller_with_stack_info�sd������
�
�d�G�-�-�}�D�	F�	
�����$��/�����V��a�(����;�V�A�Y�Grpc�^^^^�SmURRmUU4SjmU4SjmU4SjnURRnU"5 UR	USR
S5 USRnTS-
mU"5 UR	USR
S5 URUSRU5 USRnTS-
mU"5 UR	USR
S5 URUSRU5 USRn[R"5nURUR5 [RmU"5 UR	USR
S5 URUR5 URRmTS-
mU"5 UR	USR
S	5 URUSRU5 g)
Nrrc�>�T"STS9 gr
	r}r
	s��rKr	�>LoggerTest.test_find_caller_with_stacklevel.<locals>.innermost�r	rpc�>�T"5 gr�r}r	s�rKri�:LoggerTest.test_find_caller_with_stacklevel.<locals>.inner�r	rpc�>�T"5 gr�r}r	s�rKr	�:LoggerTest.test_find_caller_with_stacklevel.<locals>.outer�r	rprmr	rir	r	)rr�r�r/r_rr�r�r!r"rErP)	rGr	r/r�r4rir	r	r	s	     @@@@rKr	�+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�6rpc��SnSnS=n=n=n=n=n=p�[R"XX4XVXxU	5	n
S[U
RR	55-H4nUS0nUR[URRXX4XVUX�S9 M6 g)N�	my record�
)r9r�
some value�r,�sinfo)	r!�_logRecordFactoryrd�__dict__�keysr^r�r�
makeRecord)
rGrIr�rV�lnorrSr+r�rm	�rvrr,s
             rK�%test_make_record_with_extra_overwrite�0LoggerTest.test_make_record_with_extra_overwrite�s�������:>�>��>�S�>�3�>��>��>�4�
�
&�
&�t�B�S�'/�u�>��*�E�"�+�+�2B�2B�2D�,E�E�C��,�'�E����h����(>�(>�� �s�(�$)�
�
8�Frpc��SnSnS=n=n=n=n=n=p�SS0n
URRXX4XVXzU	S9	nURSUR5 g)Nri	rj	�	valid_keyrk	rl	)rrq	rro	)rGrIr�rVrr	rrSr+r�rm	r,rMs            rK�(test_make_record_with_extra_no_overwrite�3LoggerTest.test_make_record_with_extra_no_overwrite�sn������:>�>��>�S�>�3�>��>��>�4��l�+�����'�'��R�c�(0�U�(�L���
�
�k�6�?�?�3rpc��URURR55 URRHnURR	U5 M  URURR55 gr�)rFrrBrCrPrzr%s  rKr��LoggerTest.test_has_handlers�s\��������/�/�1�2��{�{�+�+�G��K�K�%�%�g�.�,�������0�0�2�3rpc�|�[R"S5nSUlURUR	55 g)Nz
blah.childF)r!r"r�rzrB)rG�child_loggers  rK�test_has_handlers_no_propagate�)LoggerTest.test_has_handlers_no_propagate�s1���(�(��6��!&�������1�1�3�4rpc�&�URRRnSURRlUR[URRSU5 URURR
S55 g)N�rS�)rr#rSr�rarzr�r�s  rKr��LoggerTest.test_is_enabled_for�sb���k�k�)�)�1�1��&(������#��������!4�!4�i��M�������1�1�"�5�6rpc��URRnURRRnSURlSURRlUR	[
URSU5 UR	[
URRSU5 UR
URRS55 g)NTr�rrSr�	)rrr#rSr�rarzr�)rG�old_disabledr�s   rK�#test_is_enabled_for_disabled_logger�.LoggerTest.test_is_enabled_for_disabled_logger�s����{�{�+�+���k�k�)�)�1�1��#�����&(������#��������j�,�G��������!4�!4�i��M�������1�1�"�5�6rpc��[R"5nURU[R5 URU[R"S55 URU[R"S55 URU[R"S55 URU[R"S5R5 URU[R"S5R5 URU[R"S5R5 URU[R"S55 URU[R"S5R5 g)NrrCr�rM�)r!r"rrCrr)rGrCs  rK�test_root_logger_aliases�#LoggerTest.test_root_logger_aliases�s��� � �"���
�
�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�Crpc��UR[[R[5 UR[[RS5 g)Nsfoo)r^r2r!r"�anyrts rK�test_invalid_names�LoggerTest.test_invalid_names�s2�����)�W�%6�%6��<����)�W�%6�%6��?rpc��[[RS-5H_nSHVn[R"U5n[R
"X15n[R"U5nURXS5 MX Ma g)Nrr)rrCr�rMzbaz.bar)r�r��HIGHEST_PROTOCOLr!r"r8r�r)rG�protorIrrm�	unpickleds      rK�
test_pickling�LoggerTest.test_picklings^���6�2�2�Q�6�7�E�A�� �*�*�4�0���L�L��/��"�L�L��O�	��
�
�i�0�	B�8rpc�t
�URn[R"S5n[R"S5nUR[R5 URUR
5[R5 URUR05 URUR[R55 URUR[R55 URUR[RS[RS05 URUR05 URUR[R55 URUR05 URUR[R55 URUR[RS05 UR[R5 URUR
5[R5 URUR05 URUR[R55 UR[R5 URUR
5[R5 URUR05 URUR05 URUR05 URUR[R55 URUR[R55 URUR[R55 URUR[R55 URUR[R55 [R"5 URUR
5[R5 URUR05 URUR05 URUR05 URUR[R55 URUR[R55 URUR[R55 g)Nr?rCTF)r4r!r"r:r�r_r5�_cacherFr�rzr;r�r�rS)rGrCr2r3s    rK�test_caching�LoggerTest.test_cachingsz�������#�#�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�+;�+;�<�=rp)rr�)rxryrzr{rLrL	r�rS	rV	r^	r	rt	rx	r�r~	r�r�	r�	r�	r�	r�	r|r�r�s@rKrF	rF	^sc���*�*�B�"P�2�H�%7�N8�4�4�5�
7�
7�D�@�1�6>�6>rprF	c�,�\rSrSrSrSrSrSrSrg)�BaseFileTestiAc�^�[RU5 [SS5Ul/Ulg)Nr�ztest_logging-2-)rrLrWrV�rmfilesrts rKrL�BaseFileTest.setUpDs$�����t�� ��):�;�����rpc��URHn[R"U5 M [RR	UR
5(a [R"UR
5 [RU5 gr�)r�	rRrur{r|rVrrW)rGrVs  rKrW�BaseFileTest.tearDownIsP���,�,�B��I�I�b�M��
�7�7�>�>�$�'�'�"�"��I�I�d�g�g�����$�rpc��UR[RRU5SU-S9 URRU5 g)NzLog file %r does not exist�r)rFrRr{r|r�	r�)rGrs  rK�
assertLogFile�BaseFileTest.assertLogFilePs=����������x�0�8�8�C�	�	E������H�%rpc
�t�[R"S[RSSUR5SSS5$)Nr�r�rr)r!r r;rurts rK�next_rec�BaseFileTest.next_recVs5��� � ��g�m�m�S�!�!%�!2�!2�!4�d�D�$�H�	Hrp)rVr�	N)	rxryrzr{rLrWr�	r�	r|r}rprKr�	r�	As���
 �&�Hrpr�	c� �\rSrSrSrSrSrg)�FileHandlerTestiZc�:�[R"UR5 [R"URSSS9nURUR5 UR[RRUR55 UR[R"055 URUR5 URRUR55 UR5 g)NriTrj)rRrurVr!r�r
r9rzr{r|ryr�r�rFrO)rG�fhs  rK�
test_delay�FileHandlerTest.test_delay[s���
�	�	�$�'�'��
�
 �
 ����7�$�
G�����"�)�)�$������������0�1�
�	�	�'�'�'��+�,����R�Y�Y�'���������t�w�w�/�0�
���
rpc�$�[R"UR5 [R"URSSS9nUR[R"S55 URUR55 UR5 URUR55 [UR5nURUR5R5S5 SSS5 g!,(df   g=f)Nrir�)rkrwr�r�)rRrurVr!r�rAr>r`r�	rOr�r_rfrs)rGr�	rs   rK�%test_emit_after_closing_in_write_mode�5FileHandlerTest.test_emit_after_closing_in_write_modees���
�	�	�$�'�'��
�
 �
 ����7��
E��
����)�)�-�8�9�
����
�
�� �
���
�
����
�
�� �
�$�'�'�]�b����R�W�W�Y�_�_�.��4��]�]�s�	/D�
Dr}N)rxryrzr{r�	r�	r|r}rprKr�	r�	Zs���	5rpr�	c��\rSrSrSr\R"\RS5S5r	\R"\"\S5S5S5r
SrS	rSS
jrSrSrS
r\R("5S5rSrg)�RotatingFileHandlerTestipc��[RRURSSS9nUR	URS55 UR
5 [RRURSSS9nUR	URS55 UR
5 [URS5nURS5 SSS5 [RRURSSS9nUR	URS55 UR
5 g!,(df   Nh=f)Nrirr�rk�maxBytesrr~�
)	r!rCr�rVrz�shouldRolloverrOr�r�)rG�rhr�s   rK�test_should_not_rollover�0RotatingFileHandlerTest.test_should_not_rolloverqs��
�
�
�
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�	D=�=
E�WASI does not have /dev/null.c���[RR[RSSS9nURUR
UR555 UR5 g)Nrirrr�	)	r!rCr�rR�devnullrzr�	r�	rO�rGr�	s  rK�!test_should_not_rollover_non_file�9RotatingFileHandlerTest.test_should_not_rollover_non_file�sR��
�
�
�
1�
1��
�
�W�q�2�:������*�*�4�=�=�?�;�<�
���
rp�mkfifozrequires os.mkfifo()c� ^^�[RmUR[RT5 [R
"T5 SmUU4Sjn[R"US9n[R"U/5 [RRTSSS9n[R "U5 UR#5nUR%UR'U55 UR)U5 SSS5 SSS5 UR+TR-5WR.[R0-5 g![anURSU-5 SnAGNSnAff=f!,(df   N~=f!,(df   N�=f)Nzos.mkfifo(): %sznot readc�r>�[TS5nUR5mSSS5 g!,(df   g=f)N�rb)r�rf)r�r�rs ��rK�
other_side�ORotatingFileHandlerTest.test_should_not_rollover_named_pipe.<locals>.other_side�s&����h��%���v�v�x��&�%�%�s�(�
6r�rirrr�	)rrr�rurRr�	�PermissionErrorr�r�r�r	�
start_threadsr!rCr��
contextlib�closingr�	rzr�	r`r_rr�linesep)rGrfr�	rr�	r�r�rs      @@rK�#test_should_not_rollover_named_pipe�;RotatingFileHandlerTest.test_should_not_rollover_named_pipe�s*����#�#�����	�(�(�(�3�	1��I�I�h����	 �
�!�!��4��
�
+�
+�V�H�
5��!�!�5�5��w��6�<�B��#�#�B�'��M�M�O��� � ��!2�!2�1�!5�6�����
�(�6�	
�����������
�
�(:�;��#�	1��M�M�+�a�/�0�0��	1��(�'��6�
5�s<�E�>6E?�4AE.�6E?�
E+�E&�&E+�.
E<	�8E?�?
F
c�T�[URS5nURS5 SSS5 [RRURSSS9nUR
URUR555 UR5 g!,(df   Nv=f)Nr~r�	rir�r�	)
r�rVr�r!rCr�rFr�	r�	rO)rGr�r�	s   rK�test_should_rollover�,RotatingFileHandlerTest.test_should_rollover�ss��
�$�'�'�4�
 �A�
�G�G�E�N�!�
�
�
�
1�
1�$�'�'�G�VW�
1�
X������)�)�$�-�-�/�:�;�
���
�	!�
 �s�B�
B'c�(�[R"UR5 [RRURSS9nUR
UR55 URUR5 UR5 g)Nrir�)
rRrurVr!rCr�r`r�	r�	rOr�	s  rK�test_file_created�)RotatingFileHandlerTest.test_file_created�s`��	�	�	�$�'�'��
�
�
�
1�
1�$�'�'�G�
1�
L��
����
�
�� ����4�7�7�#�
���
rpc�J�U(aSU0O0n[R"UR5 [RR
"UR4SSSS.UD6nUR
[RRUR5U(+5 [R"SS05n[R"SS05nURURU55 URURU55 URU5 URUR5 UR[RRURS	-55 URURU55 URURU55 URU5 UR[RRUR55 URURS	-5 UR[RRURS
-55 URURU55 URURU55 UR5 g)Nrlrir�r��rk�backupCountr�	rr��dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb�.1�.2)rRrurVr!rCr�rr{r|r�rzr�	r`r�	rFrO)rGrlrTr�	�small�larges      rK�test_max_bytes�&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�
���
rpc�"�URSS9 g)NT)rl)r�	rts rK�test_max_bytes_delay�,RotatingFileHandlerTest.test_max_bytes_delay�s�����$��'rpc�P�Sn[RRURSSSS9nXlURUR
55 URUR5 UR[RRU"URS-555 URUR
55 URU"URS-55 UR[RRU"URS-555 URUR
55 URU"URS-55 UR[RRU"URS-555 URUR
55 UR[RRU"URS-555 UR5 g)	Nc��US-$�N�.testr}rI	s rK�namer�>RotatingFileHandlerTest.test_rollover_filenames.<locals>.namer�s���'�>�!rprir�rrr�	r�	r�	�.3)
r!rCr�rVr�	r`r�	r�	rzrRr{r|rO)rGr�	r�	s   rK�test_rollover_filenames�/RotatingFileHandlerTest.test_rollover_filenames�sn��	"�
�
�
�
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�(=�>�?�
���
rpc��"SS[RR5nU"URSSSS9nUR	URUR5URS-5 UR
UR55 URUR5 UR
UR55 URURURS-5S	-5 UR[RRURURS-555 UR5 g)
Nc� �\rSrSrSrSrSrg)�ZRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotatori�c��US-$r�	r})rGrIs  rKr�	�`RotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.namer�s���g�~�%rpc��[RRU5(a[R"XS-5 gg)N�.rotated)rRr{r|rA)rG�source�dests   rK�rotator�bRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.rotator�s+���7�7�>�>�&�)�)��J�J�v�j�'8�9�*rpr}N)rxryrzr{r�	r�	r|r}rprK�HandlerWithNamerAndRotatorr�	�s��
&�
:rpr�	rir�rrr�	r�	r�	r�	)r!rCr�rVr_r�	r`r�	r�	rzrRr{r|rO)rGr�	r�	s   rK�test_namer_rotator_inheritance�6RotatingFileHandlerTest.test_namer_rotator_inheritance�s���	:��)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�
���
rpc��SnSn[RRURSSSS9nX#lXlUR
5nURU5 URUR5 UR
5nURU5 U"URS-5nURU5 [Rn[US5nUR5n	[R"U	5n
URU
R!S	5UR"U-5 SSS5 URUR
55 U"URS
-5nURU5 [US5nUR5n	[R"U	5n
URU
R!S	5UR"U-5 SSS5 URUR
55 U"URS
-5n[US5nUR5n	[R"U	5n
URU
R!S	5UR"U-5 SSS5 UR%[R&R)U"URS-555 UR+5 g!,(df   GN�=f!,(df   GN=f!,(df   N�=f)Nc��US-$)Nz.gzr}rI	s rKr�	�3RotatingFileHandlerTest.test_rotator.<locals>.namer�s���%�<�rpc�8�[US5nUR5n[R"US5n[US5nUR	U5 SSS5 SSS5 [
R"U5 g!,(df   N-=f!,(df   N6=f)Nr�	r�r~)r�rf�zlib�compressr�rRr�)r�	r�	�sfr��
compressed�dfs      rKr�	�5RotatingFileHandlerTest.test_rotator.<locals>.rotator�sk���f�d�#�r��w�w�y��!�]�]�4��3�
��$��%���H�H�Z�(�&�$�

�I�I�f��&�%��$�#�s#�4B�A:�B�:
B	�B�
Brir�rrr�	r�	r�	rmr�	r�	)r!rCr�rVr�	r�	r�	r`r�	rRr�	r�rfr�	�
decompressr_rrrzr{r|rO)rGr�	r�	r�	�m1�m2rV�newliner�r�	r�s           rK�test_rotator�$RotatingFileHandlerTest.test_rotator�s.��	 �	��
�
�
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(�'AK:�
K%�(
K7�:
Lr}N�F)rxryrzr{r�	r�r�r�is_wasir�	r!r�rRr�	r�	r�	r�	r�	r�	r�	�
requires_zlibr
r|r}rprKr�	r�	ps����(�_�_�W�_�_�&E�F��G�������X�.�0F�G�<�H�<�2���.(��&�&
����*��*rpr�	c�N�\rSrSr\R
"\RS5S5rSr	SSjr
SrSrSr
S	rS
rSr\R""S5S
5r\R""S5S5r\R""S5S5r\R""S5S5rSrg)�TimedRotatingFileHandlerTesti&r�	c��[RR[RSSSS9n[
R"S5 [R"SS05nURURU55 UR5 g)N�Srirr�rkr�	皙�����?rztesting - device file)r!rCr�rRr�	r�r�r�rzr�	rO)rGr�	r�s   rKr�	�5TimedRotatingFileHandlerTest.test_should_not_rollover'sp���
�
�
6�
6��
�
�C�'�q�7�B���
�
�3���!�!�5�*A�"B�C������*�*�1�-�.�
���
rpc��[RRURSSSS9n[R"S5nURU5 [R"SS05nURU5 URUR5 [R"S5 [R"SS	05nURU5 UR5 S
n[RR5nSn[U5H{nU[R"US9-
n	URU	R!S
5-n
["R$R'U
5nU(dM`UR(R+U
5  O SU-nU(Gd["R$R-UR5up�["R."U5V
s/sHo�R1U
5(dMU
PM nn
[3SUR!S5-[4R6S9 [3SU-[4R6S9 UH^n
[3SU
-5 ["R$R9X�5n[;US5n[3UR=55 SSS5 M` UR?X[S9 gs sn
f!,(df   M�=f)Nr
rirrr
r�rztesting - initialr
ztesting - 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�	) r!rCr�rVr>rAr�r`r�	r�r�rOr�r�r��	timedelta�strftimerRr{r|r�	r�r��listdirrOr�rsrr�r�rfrF)rGr�	r\r&r'�foundr��GO_BACK�secs�prevrVr�dnr��filesr{�tfs                 rK�
test_rollover�*TimedRotatingFileHandlerTest.test_rollover2s��
�
�
�
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��u����#�#�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�*���$��_���"�'�'�)�$�%�_��
	
�����'��D�%�_�s�!J?�>J?�	K�
K	c�H�[R"UR5 [RR	5nUR5nSURS-s=:aS:dYO [
R"SURS--
S-5 [RR	5nUR5nURSS9n[R"S5nU(aSUR53OS	n[S
5Hyn[RRURSXSS9nURU5 [R "S
SU305nUR#U5 UR%5 M{ UR'UR5 [)URSS9n	[+U	5HupjUR-SU3U
5 M SSS5 [.R0"URUR35S-
4S-5 [S5Hyn[RRURSXSS9nURU5 [R "S
SU305nUR#U5 UR%5 M{ U[R4"U(aSOSS9-
nURSUS3nUR'U5 [)URSS9n	[+U	5HupjUR-SU3U
5 M SSS5 [)USS9n	[+U	5HupjUR-SU3U
5 M SSS5 g!,(df   GN�=f!,(df   N]=f!,(df   g=f)Ng�������?r(g�������?g�?r)�microsecondr��W�MIDNIGHTrqri)rk�when�atTimerz	testing1 r�rrr�z	testing2 r)��daysr�z%Y-%m-%d)rrurVr�r�r�r#
r�rAr!r>�weekdayr�rCr�rAr�r`rOr�	r��	enumeraterrR�utime�	timestampr
)
rG�weeklyr�r'
r\r&
r�r�	r'r�r1�rolloverDate�otherfns
             rK�test_rollover_at_midnight�6TimedRotatingFileHandlerTest.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��!�!�:�:����'��;�E�B��O�O�C� ��&�&���1�#��'?�@�B��G�G�B�K��H�H�J�
�	
���4�7�7�#�
�$�'�'�G�
,��$�Q�<����
�
�	�!��o�t�4�(�-�	������3�=�=�?�Q�.�0��2�3��q��A��!�!�:�:����'��;�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�<����
�
�	�!��o�t�4�(�-��'�G�
,��$�Q�<����
�
�	�!��o�t�4�(�-�
,�%-�
,��-�
,��-�
,�s$�:*M0�*N�=*N�0
M?�
N�
N!c�"�URSS9 g)NT)r.
)r1
rts rK�test_rollover_at_weekday�5TimedRotatingFileHandlerTest.test_rollover_at_weekday�s���&�&�d�&�3rpc	�B�URnU"[[RRUR
SSSS9 U"[[RRUR
SSSS9 U"[[RRUR
SSSS9 g)N�XriTrjr$
�W7)r^r�r!rCr�rV)rGr^s  rK�test_invalid�)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�	Brpc��Sn[RRURSSSSS9nUR	U5nURX1S-5 UR	US-S-
5nURX1S-5 UR	US-5nURX1S-5 UR	US	-5nURX1S-5 UR
5 [R"S
SS5n[RRURSSSUS9nUR	U5nURX1S-5 UR	US-S-
5nURX1S-5 UR	US-5nURX1S-5 UR	US
-5nURX1S-5 UR
5 g!UR
5 f=f!UR
5 f=f)Nrrir%
T�rkr&
r�r'
�Qrri�i�_��i@��ж)	r!rCr�rV�computeRolloverr_rOr�r�)rG�currentTimer�	rjr'
s     rK�"test_compute_rollover_daily_attime�?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 G)�G&�)G;c���[[R"55nXS--
n[R"SSS5n[R"U5Rn[S5GH�n[RRURSSU-SSSUS	9nXE:�a	SU-
U-nOXT-
nUS-nUS
-
nXr-
nURU5nX�:wa2[S[R-5 [S[5-5 URX�5 URUS
-S-
5nX�:wa2[S[R-5 [S[5-5 URX�5 XT:XaUS
-
nURUS
-5nX�:wa2[S[R-5 [S[5-5 URX�5 URUS-5nX�:wa2[S[R-5 [S[5-5 URX�5 UR5 GM� g!UR5 f=f)Nr=
r>
rr)rizW%drrT)rkr&
�intervalr�	r�r'
r?
zfailed in timezone: %dzlocal vars: %si�:	r@
)r�r�r�r�tm_wdayr�r!rCr�rVrA
r��timezone�localsr_rO)	rGrB
�todayr'
�wday�dayr�	rkrjs	         rK�#test_compute_rollover_weekly_attime�@TimedRotatingFileHandlerTest.test_compute_rollover_weekly_attime�s���$�)�)�+�&���E�1�1�����r�1�a�(���{�{�5�!�)�)����8�C��!�!�:�:����'����a�UV���;�)�B�)
��:�!"�D��3��H� #�
�H��L�(���L�(���!���+�+�E�2���%��2�T�]�]�B�C��*�V�X�5�6�� � ��2��+�+�E�L�,@�1�,D�E���%��2�T�]�]�B�C��*�V�X�5�6�� � ��2��;�� 0�0�H��+�+�E�L�,@�A���%��2�T�]�]�B�C��*�V�X�5�6�� � ��2��+�+�E�L�,@�A���%��2�T�]�]�B�C��*�V�X�5�6�� � ��2����
�[��Z���
�s
�FI�I c	���[R"SS9nUR[RU5 /n[
R
R
5n[S5H:nURURS55 U[
R"SS9-
nM< Sn/n/nUGHn[RRUSU-5n	[RR!U	S	SS
SS9n
URU
5 UR#S
5(a#UHnURU<SU<35 M M�UR#S5(a-SnX�lUHnURU<SU<S35 M M�US:XdM�SnX�lUHnURSU-5 M GM UH8n
[RRX5n	['U	S5nSSS5 M: [)U5GH�upHXtn
U
R+5nUR-[/U5SU5 UR#S
5(aRSU-n	UHEn[RR1U5unn
UR3U
R#U	55 MG M�UR#S5(a�UH�n[RR1U5unn
UR3U
R5S5U
5 UR3U
R#US-5=(a U
[/U5S-R755 M� GMLUS:XdGMUUHn[RR1U5unn
UR3U
R5S55 UR3U
R#S5=(a U
SR755 M� GM� g!,(df   GM7=f)Nrlr9	r��%Y-%m-%d_%H-%M-%Sr�r
)�a.bza.b.c�d.ezd.e.frxz%s.logrmr)T�r&
rF
r�	rlrQ
z.log.rR
c��[RRU5upURSS5S-n[RR	X5$)Nr�r)rRr{r�rAr��rr�basenames   rKr�	�HTimedRotatingFileHandlerTest.test_compute_files_to_delete.<locals>.namer	sA��(*���
�
�h�(?�%�G�'�/�/���;�f�D�H��7�7�<�<��:�:rpr�r�rxc��[RRU5upSUSS-S-n[RRX5$)Nrxr&�.oldlog)rRr{r�r�rU
s   rKr�	rW
s?��(*���
�
�h�(?�%�G�"�X�a�b�\�1�I�=�H��7�7�<�<��:�:rpz
g%s.oldlogr~rqz%s.log.r�rY
rr)rP�mkdtempr��shutil�rmtreer�r�r�r�r
r
rRr{r�r!rCr�rOr�	r�r+
�getFilesToDeleter_r`r�rFr��isdigit)rG�wd�timesr�r��prefixesr
�rotatorsr�r�r�	r-r�	rVr��
candidatesrsrs                  rK�test_compute_files_to_delete�9TimedRotatingFileHandlerTest.test_compute_files_to_delete�s$��
�
�
�_�
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��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�O�
O'	c	�f�[R"[R"SS95nUR	[
RU5 /n[RR5nSn[U5H:nURURS55 U[R"SS9-
nM< Sn/n/n[U5H_up�U	S-n[RR!X-S	SUS
S9nURU5 UHn
URU
<SU
<35 M Ma UHn
URS
U
-5 M UHnX-R#5 M [U5H�up�U	S-nX�nUR%5nUR'[)U5XK-
U5 [*R,"S5nUHkn[.R0R3U5unnUR5UR7U
S-55 U[)U
5S-SnUR9UU5 Mm M� g)Nrlr9	r�rP
r�r
)za.logza.log.brrrmTrS
r�z
a.log.%s.cz&^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}\Z)�pathlib�PathrPrZ
r�r[
r\
r�r�r�r�r
r
r+
r!rCr��touchr]
r_r`rZr[rRr{r�rFrOr�)rGr_
r`
r��n_filesr�ra
r
rb
r�r�r�	r�	r-r�rc
�matcherrsrrVrcs                     rK�?test_compute_files_to_delete_same_filename_different_extensions�\TimedRotatingFileHandlerTest.test_compute_files_to_delete_same_filename_different_extensions3s���
�\�\�(�*�*�/�B�
C������
�
�r�*���
�
�
�
"�
"�
$�����w��A��L�L����%8�9�:��(�$�$�Q�/�/�B� �(������"�8�,�I�A��A�#�K��&�&�?�?���RU�IJ�LW�FJ�@�L�G�
�O�O�G�$��������2�3��-��A��L�L���)�*���A�
�V�N�N���#�8�,�I�A��A�#�K��k�G� �1�1�3�J����S��_�g�.C�Z�P��j�j�!J�K�G������
�
�a�(���2�����
�
�f�S�j� 9�:��S��[��]�,�-��� � ���1�	 �
-rpzEST+05EDT,M3.2.0,M11.1.0c�b^^�[RnUU4Sjn[RRTRSSSS9mU"U"SSSS	S
S
5U"SSSSS55 U"U"SSSSS5U"SSS
SS55 U"U"SSSSS5U"SSS
SS55 U"U"SSSS	S
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 TR5 [RRTRSSS[R"S
SS5S9mU"U"SSSSS
S
5U"SSSS
S55 U"U"SSSS
S5U"SSSS
S55 U"U"SSSSS5U"SSSS
S55 U"U"SSSSS
S
5U"SSSS
S55 U"U"SSSS
S5U"SSSS
S55 U"U"SSSSS5U"SSSS
S55 TR5 [RRTRSSS[R"SSS5S9mU"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS5U"SSS
SS55 U"U"SSSSS5U"SSS
SS55 U"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS
S
SS9U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 TR5 [RRTRSSS[R"SSS5S9mU"U"SSSSSS
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS5U"SSS
SS55 U"U"SSSSS5U"SSS
SS55 U"U"SSSSSS
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 TR5 [RRTRSSS[R"SSS5S9mU"U"SSSSSS
5U"SSSSS55 U"U"SSSSS5U"SSS
SS55 U"U"SSSSS
S
5U"SSS
SS55 U"U"SSSSS5U"SSS
SS55 U"U"SSSSS5U"SSS
SS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSSS
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS
S
5U"SSSSS55 U"U"SSSSSSS9U"SSSSSSS95 U"U"SSSSSS
SS9U"SSSSSSS95 U"U"SSSSSSS9U"SSSSS55 U"U"SSSSS
S
SS9U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 TR5 g)Nc��>�TRUR55nX!R5-
nU(a&TRUS[R"US95 gg�Nrr
�rA
r-
r_r�r
��currentrkrj�diffr�	rGs    ��rKrG�OTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local.<locals>.testa�R����'�'��(9�(9�(;�<�F��.�.�0�0�D��� � ��q�(�*<�*<�T�*J�K�rprir%
F�rkr&
r���rqr�r�	�;rvrr>
rrr�r�r<
rj	r���fold���r�r!rCr�rVrOr��rG�DTrGr�	s`  @rK�$test_compute_rollover_MIDNIGHT_local�ATimedRotatingFileHandlerTest.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��%;�<�
���
rpc�d^^�[RnUU4Sjn[RRTRSSSS9mU"U"SSSS	S
S
5U"SSSSS55 U"U"SSSSS5U"SSS
SS55 U"U"SSSSS5U"SSS
SS55 U"U"SSSS	S
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 TR5 [RRTRSSS[R"SSS5S9mU"U"SSSS	S
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSS	S
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 TR5 [RRTRSSS[R"S
SS5S9mU"U"SSSSS
S
5U"SSSS
S55 U"U"SSSS
S5U"SSSS
S55 U"U"SSSSS5U"SSSS
S55 U"U"SSSSS
S
5U"SSSS
S55 U"U"SSSS
S5U"SSSS
S55 U"U"SSSSS5U"SSSS
S55 TR5 [RRTRSSS[R"SSS5S9mU"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS
S
SS9U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 TR5 [RRTRSSS[R"SSS5S9mU"U"SSSSSS
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSSS
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 TR5 [RRTRSSS[R"SSS5S9mU"U"SSSSSS
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSSS
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS
S
5U"SSSSS55 U"U"SSSSSSS9U"SSSSSSS95 U"U"SSSSSS
SS9U"SSSSSSS95 U"U"SSSSSSS9U"SSSSS55 U"U"SSSSS
S
SS9U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 TR5 g)Nc��>�TRUR55nX!R5-
nU(a&TRUS[R"US95 ggrp
rq
rr
s    ��rKrG�ITimedRotatingFileHandlerTest.test_compute_rollover_W6_local.<locals>.test�rv
rpri�W6Frw
rx
rqr�r�	ry
r�rr>
rrr��r}
rvr<
�rj	r�rz
r|
r~
r
s`  @rK�test_compute_rollover_W6_local�;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��%<�=�
���
rpc��^^�[RnUU4Sjn[RRTRSSSSS9mU"U"SSSS	S
S
5U"SSSSS55 U"U"SSS
SS5U"SSSSS55 U"U"SSS
SS5U"SSSSS55 U"U"SSSS	S
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSS	S
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSS	S
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 TR5 [RRTRSSSS[R"SSS5S9mU"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS
S
5U"SSSSS55 U"U"SSSSS5U"SSSSS55 U"U"SSSSS5U"SSSSS55 TR5 g)Nc��>�TRUR55nX!R5-
nU(a&TRUS[R"US95 ggrp
rq
rr
s    ��rKrG�XTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_interval.<locals>.testOrv
rprir%
Frq�rkr&
r�rF
rx
r�r�	ry
rvrr�r>
rrr�rj	r�r�r�r�r&r)�rkr&
r�rF
r'
r~
r
s`  @rK�-test_compute_rollover_MIDNIGHT_local_interval�JTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_intervalKs����
�
��	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��%;�<�
���
rpc�4
^^�[RnUU4Sjn[RRTRSSSSS9mU"U"SSS	S
SS5U"SSSS
S
55 U"U"SSSS
S
5U"SSSS
S
55 U"U"SSSSS
5U"SSSS
S
55 U"U"SSSS
SS5U"SSS	S
S
55 U"U"SSSS
S
5U"SSSS
S
55 U"U"SSSSS
5U"SSSS
S
55 U"U"SSSS
SS5U"SSSS
S
55 U"U"SSSS
S
5U"SSSS
S
55 U"U"SSSSS
5U"SSSS
S
55 U"U"SSSS
SS5U"SSSS
S
55 U"U"SSSS
S
5U"SSS	S
S
55 U"U"SSSSS
5U"SSS	S
S
55 TR5 [RRTRSSSS[R"S
S
S
5S9mU"U"SSSS
SS5U"SSSS
S
55 U"U"SSSS
S
5U"SSSS
S
55 U"U"SSSSS
5U"SSSS
S
55 U"U"SSSS
SS5U"SSSS
S
55 U"U"SSSS
S
5U"SSSS
S
55 U"U"SSSSS
5U"SSSS
S
55 U"U"SSSS
SS5U"SSSS
S
55 U"U"SSSS
S
5U"SSSS
S
55 U"U"SSSSS
5U"SSSS
S
55 U"U"SSSS
SS5U"SSSS
S
55 U"U"SSSS
S
5U"SSSS
S
55 U"U"SSSSS
5U"SSSS
S
55 TR5 [RRTRSSSS[R"SS
S
5S9mU"U"SSSSSS5U"SSSSS
55 U"U"SSS	SS
5U"SSSSS
55 U"U"SSS	SS
5U"SSSSS
55 U"U"SSSSSS5U"SSSSS
55 U"U"SSSSS
5U"SSSSS
55 U"U"SSSSS
5U"SSSSS
55 U"U"SSSSSS5U"SSSSS
55 U"U"SSSSS
5U"SSSSS
55 U"U"SSSSS
5U"SSSSS
55 U"U"SSSSSS5U"SSSSS
55 U"U"SSSSS
5U"SSSSS
55 U"U"SSSSS
5U"SSSSS
55 TR5 g)Nc��>�TRUR55nX!R5-
nU(a&TRUS[R"US95 ggrp
rq
rr
s    ��rKrG�RTimedRotatingFileHandlerTest.test_compute_rollover_W6_local_interval.<locals>.test�rv
rprir�
Frqr�
rx
r�rur�	ry
r�rr�r>
rrr��r�r�r}
rtrvr�
r�
�r�
r�rj	r~
r
s`  @rK�'test_compute_rollover_W6_local_interval�DTimedRotatingFileHandlerTest.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�&=�>�
���
rpr}Nr
)rxryrzr{r�r�rr	
r�	r 
r1
r4
r9
rC
rM
rd
rl
�run_with_tzr�
r�
r�
r�
r|r}rprKr
r
&s���
�_�_�W�_�_�&E�F��G��((�T)5�V4�B�%�P4�l?L�B&2�T
���3�4�k�5�k�^
���3�4�y�5�y�z
���3�4�.�5�.�d
���3�4�B�5�Brpr
c�X�[R"S0UD6[R"SS9-$)Nrrr
r})r�r
)r�s rKr
r
�s&�����#��#�x�'9�'9�!�'D�D�Drp)r
rr)�Mr�)�Hi)�Dr=
)r%
r=
�W0r��)r)
�hours)rrrqc	���[RRURSXSSS9nSnUR	U5nURS5(aU[
SUS-
-S	9-
nOX2-nX6:wGa4US
:XGa-UR(a[R"U5nO[R"U5nUSnUSn	US
n
[RRUS-U	-S-U
--
nX[-n[SU<SUR<S3[RS9 [SU-[RS9 [SU	-[RS9 [SU
-[RS9 [SU-[RS9 [SU-[RS9 UR!X65 UR#5 g![a%n
[SU
-[RS9 Sn
A
NLSn
A
ff=f)NrirT)rkr&
rF
r�	r�rr$
r)rrr(
r%
rqr�r�r�zt: z (�)r
zcurrentHour: %szcurrentMinute: %szcurrentSecond: %szr: %sz
result: %sz exception in diagnostic code: %s)r!rCr�rVrA
rOr
r�r�r�	localtime�	_MIDNIGHTr�rsrr�r_rO)rGr&
rF
�expr�	rB
rjr-�currentHour�
currentMinute�
currentSecondr�rMrfs              rK�test_compute_rolloverr�
�s����!�!�:�:����'��UV�\`�;�b�B��K��'�'��4�F����s�#�#��t��H�Q�J��0�0������}��:�%�W��6�6� $���K� 8�A� $���{� ;�A�&'��d��()�!��
�()�!��
�#�,�,�6�6�;��;K�8E�<F�IK�;L� -�;.�/��"-����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��W�s�:D,G�
G7�G2�2G7ztest_compute_rollover_%s�	_intervalz>win32evtlog/win32evtlogutil/pywintypes required for this test.c��\rSrSrSrSrg)�NTEventLogHandlerTesti�c��Sn[R"SU5n[R"U5n[RRS5n[R"SS05nURU5 UR5 URU[R"U55 [R[R -nSnSn	[R""X'U	5n
U
H5nUR$S:waM[&R("XQ5nUS	:waM3S
n O SU	-nUR+X�S9 g![Ra,nURS:Xa[R"S5eeSnAff=f)
N�Application�test_loggingr�z#Insufficient privileges to run testrzTest Log MessageFr�zTest Log Message
Tz3Record not found in event log, went back %d recordsr�	)�win32evtlog�OpenEventLog�GetNumberOfEventLogRecordsr!rC�NTEventLogHandler�
pywintypesr��winerrorr��SkipTestr�ryrO�
assertLess�EVENTLOG_BACKWARDS_READ�EVENTLOG_SEQUENTIAL_READ�ReadEventLog�
SourceName�win32evtlogutil�SafeFormatMessagerF)rG�logtype�elh�num_recsrVrfr��flagsr
r
�eventsrs            rKr�� NTEventLogHandlerTest.test_basic�sN�����&�&�t�W�5���9�9�#�>��	�� � �2�2�>�B�A�
�!�!�5�*<�"=�>��	�����	���	�����+�"H�"H��"M�N��3�3��4�4�5�������)�)�#�g�>���A��|�|�~�-��!�3�3�A�?�C��,�,���E���D�g�M�������'��1���	��z�z�Q���'�'�(M�N�N���	�s�D;�;E;�'E6�6E;r}N)rxryrzr{r�r|r}rprKr�
r�
�s��(rpr�
c��\rSrSrSrSrg)�MiscTestCasei c�@�1Skn[R"U[US9 g)N>rCr��Filtererr��
RootLoggerr:�PlaceHolderra�currentframer;�StrFormatStyler<r!rQ)�not_exported)r�check__all__r!)rGr�
s  rK�test__all__�MiscTestCase.test__all__!s��,��
	���T�7��Frpr}N)rxryrzr{r�
r|r}rprKr�
r�
 s��Grpr�
c�Z�[R"[R"SS55 g)N�LC_ALLr)r��enterModuleContextr�run_with_localer}rprK�setUpModuler�
-s������ 7� 7��"� E�Frp�__main__r�r
)�r!�logging.handlers�logging.configr6rr�	r'r�rg
r�r7r�r"r7rRrmr�rZr[
rr�rsrP�test.support.script_helperrrrGr�test.supportrrrr	r
rr�test.support.logging_helperr
�test.support.testcaserr�r�rJr�r�rGr��http.serverrr�
unittest.mockr�urllib.parserr�socketserverrrrrr�
r�
r�
rr�	r��HAVE_ASAN_FORK_BUGr��check_sanitizerr��TestCaserrr��SILENTr	�TERSE�EFFUSIVErr=�	TALKATIVEr�
CHATTERBOX�BORINGr�rrr�r�rrrWrYrrr�r<r�r�r�rrr<rIrkr|r�r�r�rr�r�r�r>r�r�r�r{r!r�r�r�r�r��IPV6_ENABLEDr�r�rr-r?rXrZr`rbrCr�rfrnrhrjrwr}rr�r�r�r%r=r rVrXrkr�r�r
r��tzinfor�r�r�r�rFr6rArNrVr_rTrRrrr�rrWr�r�r�r<	r	rF	r�	r�	r�	r
r
r&
r�
rF
r�
rIrxrar�
r�
r�
�mainr}rprK�<module>r�
s���*���
������
�	��	��	��
�	�
�
�
�
��N��&�"�&�)�(�!��3�1��������:��+�D�D�6�3�3�	���O�O����E�G���O�O����4�(�-�/��
d'�x� � �d'�NUI��UI�n<%�h�<%�L�������������	��	��
����F�F�Q�J�'���(��*�	�'��*��*��)�
�+�
�+��,�
�(���+�g�n�n�+�:����:�C'��C'�L�K2�(�K2�\1��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�	� � �"��,�,�.�L �h�L �/�#�L �\1��1�h-L�8�-L�`%K�8�%K�P.�
�
�#�	�G�)�)�	�	�W�%�%�3�3�	�	�%�+�+�	�)�)�	
�1�	
��2������_?�X�_?�D79�(�9�.&�h�&�>	�w�(�(�	� �8� �F�,�,�.�pP�x�pP�/�pP�d�7���_�-�-��#���0�0�2�]&�H�]&�3��]&�@���!����(�/�/��
�e��.�.�`S�H�%�%�'9�`S�F&�W�7�7�&�G�X�.�.�G�&A�H�A�,$;�X�$;�N	�	�$�w�*�*�$�T/�8�T/�nx/�(�x/�vK0�H�K0�\Y#�h�'�'�Y#�x
c-��)�)�?�c-�L.�G�)�)�.�+�+�5�7�(�(�5�`>��-�`>�FH�8�H�25�l�5�,t�l�t�l[
�<�[
�|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���M�M�O���S_�6�15�5�K�5�/�J�6��
�	��	�s$� ^&�-^9�&^6�5^6�9_�_

Youez - 2016 - github.com/yon3zu
LinuXploit