403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.217.64
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 :  C:/Python315/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python315/Lib/test/__pycache__/test_logging.cpython-315.opt-2.pyc
R
>lqj�Jc���]PHs]PHs]PHs]PHs]PHs]PHs]PHs]PHs]PH s]PH$s	]PH(s
]PH,s]PH0s]PH4s
]PH8s]PH<s]PH@s]PHDs]PHHs]PHLs]PHPs]PHTs]PHXs]QH\GsGs]QHhGs]QHpGs]QHpGs]QHpGs]QHpG s ]QHpG!s!]QHpG"s"]Q	HpG#s#]Q
H�G%s%]PH�s&]PH�s']PH�s(]PH�s)]PH�s*]PH�s+]PH�s,]QH�G.s.G/s/]QH�G1s1G2s2G3s3]Q
H�G5s5G6s6]QH�G8s8G9s9G:s:G;s;]PH�s<]PH�s=]PH�s>]PCHs@\*O�\O�Q2sC\*O�\O�P	Q5Q2sEQQ\*O�2sGQQ\G2sHQQ\G2sI]xsJ]wsK]vsL]usM]tsN]ssO]rsP]qsQ]psR]osS\T\S\J]*2sU\JQ\KQ\LQ\MQ\NQ\OQ\PQ\QQ\RQ \SQ!-
sVQ"Q#\O�2sXQ$Q%\O�2sYQ&Q'\G2sZQ(s[Q)Q*\G2s\Q+Q,\]2s^Q-Q.\O�2s`Q/Q0\]2saQ1Q2\G2sbQ3Q4\#O�2sdQ5Q6\]2seQ7Q8\e\.2sfQ9Q:\e\:2sgQ;Q<\e\82sh\i\Q=2%cQ>Q?\g2sjQ@QA\h2sk\O�2\ O�2QBQC\G222snQDQE\G2soQFQG\O�2sqQHsrQIQJ\G2ss\O�2\ O�2QKQL\G222st\*O�\i\Q=2QM2QNQO\t22sv\O�2\ O�2QPQQ\G222sw\*O�\i\Q=2QM2QRQS\w22sx\O�2\ O�2QTQU\G222sy\*O�\i\Q=2QM2QVQW\y22sz\*O�\O�QX2QYQZ\y22s|\O�2\ O�2Q[Q\\G222s}Q]Q^\G2s~Q_Q`\G2sQaQb\G2s�Q�Qcks�QdQe2s�Qfs�QgQh\O�2s�QiQj\CO
CO2s�QkQl\CO2s�QmQn2s�QoQp\�2s�QqQr\�2s�QsQt2s�Qus�Q�Qvks�QwQx\G2s�QyQz\G2s�Q{Q|\G2s�Q}Q~\CO&2s�QQ�\G2s�\ O�2Q�Q�\G22s�\i\CO
Q�2%c0]PCH\s�]Q�H�G3s3\E\ O�2Q�Q�\G222s�\CO2]2s�Q�Q�\CO62s�\�2s�Q�Q�2s�Q�Q�\*O�\�2s�Q�Q�\CO@2s�Q�Q�\*O�2s�Q�Q�\G2s�Q�Q�\G2s�Q�Q�2s�Q�Q�\COL2s�Q�Q�\G2s�Q�Q�\G2s�Q�Q�\G2s�Q�Q�\*O�2s�Q�Q�\*O�2s�Q�Q�\COZ2s�Q�Q�2s�Q�Q�\COZ2s�Q�Q�\G\�2s�Q�Q�\G2s�Q�Q�\�2s�Q�Q�\�2s�Q�Q�\�2s�Q�s�Q�Q�Q�Q�Q�Q�\�]]Q�511FDBvs�s�Q�FD5s�\�\�\�1Q�ks�Q�\�*s�\�]6�c
\�Q�*
s�\�\�m�\�\�\�\�2J7	JD	Q�Q�\G2s�Q�Q�\*O�2s�Q�Q�\*O�2s�Q�s�\�Q�6Xc\*CO�2P!P!\?cP9s<9s=s>CK�h9h\?cCK�h9h)��)�assert_python_ok�assert_python_failure)�support)�
import_helper)�	os_helper)�
socket_helper)�threading_helper)�warnings_helper)�asyncore)�smtpd)�TestHandler)�
HTTPServer�BaseHTTPRequestHandler)�call�Mock�patch)�urlparse�parse_qs)�ThreadingUDPServer�DatagramRequestHandler�ThreadingTCPServer�StreamRequestHandlerz?libasan has a pthread_create() dead lock related to thread+fork)�threadz'TSAN doesn't support threads after forkc�J`�\sQs][snQsQs]sQsQsQQks	Qs
QsUsP!)	�BaseTestz&%(name)s -> %(levelname)s: %(message)sz^([\w.]+) -> (\w+): (\d+)$c	�>�[O2Um[O2O
Oo[O9^tt^2[OO2Um
[OQ*UmUO29Um
o[OO2Um[O O2Um-9UmoSFDo['V$*QP2V4$J	PPP2[OQ2Um[OQ2Um[OP2UmUO,O/2Um[2O42UmUO,O9[O:2[O<UO62Um[O@UOB2Um"UO>OGUOD2UO(OI2%cDUO(OJUO,OJ*o[MQU*2gUO*OI2%cDUO*OJUO,OJ*o[MQU*2gUO,OOUO>2UOQUO(OI22UOQUO*OI22P!)%fhCKr9h)�NNN�disabledu«×»uĿÖGzUnexpected 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*r/�name�hlists&     �&C:\Python315\\Lib\test\test_logging.py�setUp�BaseTest.setUpcsq��/�>�>�@����'�'�)�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�CN�N	�N	c��UOO2UOOUO2UOO
%cKUOO
]*oUOOU2UO2JfUOO
UO2[O9^tt^2[OO2[OOUO2[OO2[OOUO2[O O2[O OUO"2UO$[O&Q$[O(2O*o]UmUO.oUO2UOUO02UO2oUO2FD-oVE*eJVE*UO0U*mJ/	PPP2UO72[8O:UO<P!)%fhKA9h)rr)r8�closer3�
removeHandlerr<rBr9r5r r$r-�clear�updater.r+r,r%r'r)r(r!r"�disabler#r*r/r�
doCleanupsr�threading_cleanupr)rF�hr"r#r/rHs&     rJ�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�$E3J7�"J7�7K	�K	c�N�S9%f
UOo[OS9%f
UO2oUO	2O2oUO
[U2[U22[VA2FD_vqVUOU2oU%fUOQU*2UO
[UO22U2Ja	UO2oU%cUOQU*2P!P!)z*Log line does not match expected pattern:
z'Remaining output at end of log stream:
)r8�re�compile�expected_log_pat�getvalue�
splitlines�assertEqual�len�zip�search�fail�tuple�groups�read)	rF�expected_valuesr8�pat�actual_lines�actual�expected�match�ss	&&&&     rJ�assert_log_lines�BaseTest.assert_log_lines�s����&�&�4�;�;���j�j��5�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�\�U9O]*
tmQUO*!)�z%d)�message_num�rFs&rJ�next_message�BaseTest.next_message�s&��	
���A����d�&�&�&�&ro)rr1r2r/r5r?r<r3r)r'r.r*r,r8�NN)
�__name__�
__module__�__qualname__�__firstlineno__r>r[rrrKrVrmrt�__static_attributes__�__classdictcell__��
__classdict__s@rJrr[s3����:�J�4���K�%4�NA�>F�$'�'rorc�L`�\sQs]�snQsQsQsQsQsQs	Qs
QsUsP!)	�BuiltinLevelsTestc��UOo[OQ2oUO[O2[O
[OQ2-2oUO[O2[OQ2oUO[O2UO[OU22UOU22UO[OU22UOU22UOU22UOU22UO[OU22UOU22UOU22UOU22UOU22UOU22UOU22UOU22UOU22UO,QN2P!)�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)rtr r!r9r��
LoggerAdapterr�r:�logr��error�warning�info�debugrm)rF�mr�r�r�s&    rJ�	test_flat�BuiltinLevelsTest.test_flat�sr����������&�����W�]�]�#��#�#�G�$5�$5�e�$<�b�A�����W�\�\�"�����&�����W�]�]�#�	���� � �!�#�&��	�	�!�#������ � �!�#�&��	�	�!�#�����A�C�������
����� � �!�#�&��	�	�!�#�����A�C�������
��	�	�!�#��	���A�C�������
��	�	�!�#���	�	�!�#�����
�	roc��UOo[OQ2oUO[O2[OQ2oUO[O
2UO
[OU22UOU22UOU22UOU22UOU22UOQQ,2P!)r��INF.ERR)r�r�r�)r�r�r��
rtr r!r9r�r�r�r�r�r�r�r�rm)rFr�r��INF_ERRs&   rJ�test_nested_explicit�&BuiltinLevelsTest.test_nested_explicit�s�����������&�����W�\�\�"��$�$�Y�/��������'�	���G�$�$�a�c�*��
�
�a�c��	���������Q�S���
�
�a�c�����(�%�
�	roc��UOo[OQ2oUO[O2[OQ2oUO[O
2[OQ2o[OQ2o[OQ2oUO
[OU22UOU22UOU22UOU22UO
[OU22UOU22UOU22UOU22UOU22UOU22UO,QN2P!)r�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�)rFr�r�r��	INF_UNDEF�
INF_ERR_UNDEFr�s&      rJ�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� ����
�	roc�L�UOo[OQ2o[OQ2o[OQ2oUO[O2UO[OU22UOU22UO[OU22UOU22UOU22UOU22UO,QN2P!)r��INF.BADPARENT.UNDEF�
INF.BADPARENT))r�r�r�)r�r�r�)r�r�r�)r�r�r�)
rtr r!r9r�r��FATALr�r�rm)rFr�r��
GRANDCHILD�CHILDs&    rJ�test_nested_with_virtual_parent�1BuiltinLevelsTest.test_nested_with_virtual_parent.s�����������&���&�&�'<�=�
��!�!�/�2�����W�\�\�"�	���w�}�}�a�c�*�������
�	�	�'�-�-���%�
�
�
�1�3��	������
���A�C�����
�	roc���UO[OQ2[O2UO[O[O2Q2P!)r�)r^r �getLevelNamer�rss&rJ�test_regression_22386�'BuiltinLevelsTest.test_regression_22386Hs@������-�-�f�5�w�|�|�D�����-�-�g�l�l�;�V�Droc�t�[OQ2oUOU[O2P!)r�)r r�r^r�)rF�fatals& rJ�test_issue27935�!BuiltinLevelsTest.test_issue27935Ms&���$�$�W�-�������
�
�.roc���[O[OP2UO[O[OQ2UO	[O
[O2P2UO	[O
[O2Q2UO	[O
Q2[O2P!)�r��NOTSET)r �addLevelNamer��
addCleanupr^r�r�rss&rJ�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����Hro�)
rwrxryrzr�r�r�r�r�r�r�r{r|r}s@rJr�r��s2����-�^�.!�F�4E�
/�I�Iror�c�F`�\sQsQsnQsQsQsQsQsQs	Qs
UsP!)	�BasicFilterTest�Yc��[OQ2oUOO]*oUO	U2[O
Q2o[O
Q2o[O
Q2o[O
Q2oUO
UO22UO
UO22UO
UO22UO
UO22UOQQ,2UOU2P!SOS2h9h)�	spam.eggs�spam�spam.eggs.fish�spam.bakedbeans�r�r�r��r�r�r�)
r �Filterr3rB�	addFilterr!r�rtrm�removeFilter)rF�filter_�handlerr��	spam_eggs�spam_eggs_fish�spam_bakedbeanss&      rJ�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�C8E�Ec��QoUOO]*oUOU2[OQ2o[OQ2o[OQ2o[OQ2oUOUO
22UOUO
22UOUO
22UOUO
22UOQQ,2UOU2P!SOS2h9h)c�t�UOOQ2oQOUQ*2oUQ6H!)�.:N�Nr�)rH�split�join)�record�parts�prefixs&  rJ�
filterfunc�8BasicFilterTest.test_callable_filter.<locals>.filterfuncys3���K�K�%�%�c�*�E��X�X�e�B�i�(�F��[�(�(ror�r�r�r�r�r�)	r3rBr�r r!r�rtrmr�)rFr�r�r�r�r�r�s&      rJ�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.�.Ec��[O2o[OQQ-2oUOUO	U22P!)rHr�)r r��
makeLogRecordrE�filter)rF�f�rs&  rJ�test_empty_filter�!BasicFilterTest.test_empty_filter�s7���N�N����!�!�6�;�"7�8����������$roc�j�[OQ2oUO[U2Q2P!)�myappz<Filter (myapp)>�r r�r^�repr�rFr�s& rJ�test_filter_repr� BasicFilterTest.test_filter_repr�s%���N�N�7�#������a��"4�5roc�h�[O2oUO[U2Q2P!)z<Filter ()>r�r�s& rJ�test_filter_repr_empty�&BasicFilterTest.test_filter_repr_empty�s"���N�N�������a��-�0roc��QQ[O2oUQ2oUO[U2Q2P!)c��\sQsQsQsP!)�;BasicFilterTest.test_filter_repr_subclass.<locals>.MyFilter�r��rwrxryrzr{r�rorJ�MyFilterr�����ror�r�z<MyFilter (myapp)>r�)rFr�r�s&  rJ�test_filter_repr_subclass�)BasicFilterTest.test_filter_repr_subclass�s1��	�w�~�~�	��W�������a��"6�7ror�)rwrxryrzr�r�r�r�r�r�r{r|r}s@rJr�r�Ys(����*�0-�:%�
6�1�8�8ror��Silent�Taciturn�Terse�Effusive�Sociable�Verbose�	Talkative�	Garrulous�
Chatterbox�Boringc�(`�\sQsQsnQsQsUsP!)�GarrulousFilter��c�*�UO[6g!�N)�levelno�	GARRULOUS�rFr�s&&rJr��GarrulousFilter.filter�s���~�~��*�*ror��rwrxryrzr�r{r|r}s@rJr	r	�s����+�+ror	c�(`�\sQsQsnQsQsUsP!)�VerySpecificFilter��c�6�UO[[17!r)r
�SOCIABLE�TACITURNrs&&rJr��VerySpecificFilter.filter�s���~�~�h��%9�9�9ror�rr}s@rJrr�s����:�:rorc�P`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sUs
P!)�CustomLevelsAndFiltersTest���^[\w.]+ -> (\w+): (\d+)$c��[OU2[O2FDvq[O
V2J	P!r)rrK�my_logging_levels�itemsr r�)rF�k�vs&  rJrK� CustomLevelsAndFiltersTest.setUp�s1�����t��%�+�+�-�D�A�� � ��&�.roc�b�[FD"oUOV O22J$	P!r)�LEVEL_RANGEr�rt)rF�logger�lvls&& rJ�log_at_all_levels�,CustomLevelsAndFiltersTest.log_at_all_levels�s#���;�C��J�J�s�-�-�/�0�roc�`�QQko[OQ2o[OQ2o[O2o[O2o[OU2o[OU2oUOU2UO
U2UO
U2UOQ2UO2UO2UOUO2Q2UOUO2Q2P!)c�:�U]6�cPgQ[O-!�r�r��r �	LogRecord)�formats"rJ�__annotate__�dCustomLevelsAndFiltersTest.test_handler_filter_replaces_record.<locals>.replace_message.__annotate__�s��	�	�G�$5�$5�	roc�B�[OU2oQUmU!)znew message!)r&�msg)r�s&rJ�replace_message�WCustomLevelsAndFiltersTest.test_handler_filter_replaces_record.<locals>.replace_message�s���Y�Y�v�&�F�'�F�J��Mro�parentzparent.childzoriginal messagezoriginal message
z
new message!
)r r!r6r7r;r�rDr��flushr^r\)rFr3r5�child�stream_1�stream_2�	handler_1�	handler_2s&       rJ�#test_handler_filter_replaces_record�>CustomLevelsAndFiltersTest.test_handler_filter_replaces_record�s���	��"�"�8�,���!�!�.�1���;�;�=���;�;�=���)�)�(�3�	��)�)�(�3�	����O�,����)�$�
����#�
�
�
�%�&�������������*�*�,�.B�C�����*�*�,�.>�?roc�p`�[2nU1QkQ[O2o[OQ2oUO	[O
2UO
U22UO
U22UOQ2UO][R22P!)c�<:`�\sQsQsnU1QkU1QkksQsUsP!)�WCustomLevelsAndFiltersTest.test_logging_filter_replaces_record.<locals>.RecordingFilter�	c�6:�U]6�cPgQRZO-!r+r,)r.r~s"�rJr/�kCustomLevelsAndFiltersTest.test_logging_filter_replaces_record.<locals>.RecordingFilter.filter.__annotate__
s���
)�
)�W�%6�%6�
)roc�f:�RO[U22[OU2!r)�add�idr&)rFr��recordss&&�rJr��^CustomLevelsAndFiltersTest.test_logging_filter_replaces_record.<locals>.RecordingFilter.filter
s"������B�v�J�'��y�y��(�(ror�r)r~rGs@�rJ�RecordingFilterr@	s����
)�
)�
)rorIr%r2)
�setr r�r!r9r�r�r�r^r_)rFrIr%rGs&  @rJ�#test_logging_filter_replaces_record�>CustomLevelsAndFiltersTest.test_logging_filter_replaces_records~����%��	)�g�n�n�	)�
�"�"�8�,��������%�����*�+�����*�+����E������C��L�)roc��UOO[2UOUO2UO	,QN2P!)r)�rr��rr��rr��rr��r�r��r�r�)r3r9�VERBOSEr'rmrss&rJ�test_logger_filter�-CustomLevelsAndFiltersTest.test_logger_filters=�����!�!�'�*����t�/�/�0����
�	roc��UOO]*O[2UO	UO2UO,QN2UOO]*O[O2P!SOO]*O[O2h9h)r)rOrPrQrRrS)r3rBr9rr'rmr r�rss&rJ�test_handler_filter�.CustomLevelsAndFiltersTest.test_handler_filter%s������!�!�!�$�-�-�h�7�	B��"�"�4�#3�#3�4��!�!�#�
�
���%�%�a�(�1�1�'�.�.�A��D���%�%�a�(�1�1�'�.�.�A�s�.B�<Cc�l�UOO]*oPo[2oUOU2UO	UO2,QNoUOU2[
2oUOOU2UO	UO2UOU,QN*2U%cUOOU2UOU2P!S%cSOOS2SOS2h9h)r)	)rr�)rr�)rr�rNrOrPrQrRrS))rr�)r�12)r�14)r�15)r�17)r�18)r��20)r3rBr	r�r'rmrr�)rFr��specific_filter�garr�first_liness&    rJ�test_specific_filters�0CustomLevelsAndFiltersTest.test_specific_filters5s����"�"�+�+�A�.����� �����$��!	'��"�"�4�#3�#3�4��K�
�!�!�+�.�0�2�O����&�&��7��"�"�4�#3�#3�4��!�!�+�
1
�
#
�

��� � �-�-�o�>�� � ��&���� � �-�-�o�>�� � ��&�s�B
C=�=D3�-D3r�)rwrxryrzr[rKr'r<rKrUrXrdr{r|r}s@rJrr�s7����
3��'�
1�@�8*�"�B� ('�('rorc�f�[OU-U@vq#[OU2U!r)�tempfile�mkstemp�osrN)�args�kwargs�fd�fns*,  rJ�make_temp_filern`s)��
�
�
�t�
.�v�
.�F�B��H�H�R�L�
�Iroc�j`�\sQsQsnQsQsQs\O\	OQ6HQ2\O2\
OQ2Q222s\O"2\
O$2\O2\\Q	22222sQ
sQsUsP!)�HandlerTest�fc��[O2oQUmUOUOQ2QUmUOUOQ2UO	[
UOP2P!)�generic�anothergeneric)r �HandlerrHr^�assertRaises�NotImplementedError�emit�rFrUs& rJ�	test_name�HandlerTest.test_namegs\���O�O�������������+�!���������!1�2����-�q�v�v�t�<roc	��[OQ7Cc;QFCD�o[2oU%f[OU2[
OOUQP	Q5oU%c�UOUOqTUOUP2UOUP2[
OQQ-2oUOU2[OU2UO[OOU22UOU2UO![OOU22L8UOUOP2UOUOP2UO#2U%fCJ�[OU2CJ�	[OQ6XcQoLQo[
OO%U2oUOUO&UO(2UO!UO*2UO#2Q
FDnoUQ6Xc4UO/[0[
OO2Q	Q
U2J=[
OO3Q	Q
U2oUO#2Jp	[
OO5]2o[
O-2oUO!UO7U22UO#2[
OO5]2oUOUO7U22UO#2P![,cCK9h9h)�linux�darwin�utf-8��encoding�delayr2�Testz/var/run/syslogz/dev/log�PUT�	localhostz/log�r}�androidr~)TF)�GET�POSTr�)�sys�platformrnri�unlinkr rB�WatchedFileHandler�dev�inor^r��handle�assertFalse�path�existsrErN�
SysLogHandler�facility�LOG_USER�
unixsocket�OSErrorrv�
ValueError�HTTPHandler�BufferingHandler�shouldFlush)	rF�existingrmrUr�r�r��sockname�methods	&        rJ�test_builtin_handlers�!HandlerTest.test_builtin_handlersos|���<�<�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�"A0M=�=	N�N�Nc�Z�[2o[OU2[OU2o[
OUQ11[
OOUQ11[
OOUQ111o[OQ7c'U[
OOUQ111*
oSFDbvqEUUQQ-oUO[OOU22UO!2[OU2Jd	P!)�w�arUr�rr�)rnrir�r�FakePathr �FileHandlerrB�RotatingFileHandler�TimedRotatingFileHandlerr�r�r�rEr�r�rN)rFrm�pfn�cases�clsrjrUs&      rJ�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�	ro�ntz/WatchedFileHandler not appropriate for Windows.�walltimec�$`�U1QkoQoQoPRmPRmQ
FCDUo[QQ2o[OVU1Q5oP	UmUO
2[OOUQUQ5o[OQ2oUOU2[U2FD]o	[OQ2[OQ	Q
-2o
[O2RmUO!U
2J_	UO'2UO)2[*O,O/U2%c[*O0U2CJUCJX	P!["c*[%QRO8QRO802gh9hSO'2SO)2[*O,O/S2%c[*O0S2hh9h)c	�:�[U2FDfo[OU2[O2Rm[OQ[O]]2*2Jh	P![
cKEh9h)g����Mbp?)	�rangerir��time�
deletion_timer��sleep�random�randint)�fname�tries�_rFs&& �rJ�remove_loop�*HandlerTest.test_race.<locals>.remove_loop�sb����5�\����I�I�e�$�)-����D�&��
�
�5�6�>�>�!�Q�#7�7�8�
"������s�0A;�;	B	�B	�B	���.logztest_logging-3-��targetrjrr�z'%(asctime)s: %(levelname)s: %(message)s�{�G�zt?r2�testingzDeleted at z, opened at �FT)�handle_timer�rn�	threading�Thread�daemon�startr rBr�r=r@r�r�r�r�r��	Exception�printr�rNrir�r�r�)rFr��	del_count�	log_countr�rm�removerrUr�r�r�sf          rJ�	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�&�s1�(=F1�&+E:�F1�:	F.�*F.�.F1�1AH�7Hc�d```�QQ[O2oUO[[O2]2U2nUOROOO2QRm	UO[[O2]2UO[[O2]2[OQ2oUOR2UO[O2[ O"2n[ O"2nUUU1Qko[ O$UQQ5oUO'2RO)2[*O,2oU]6Xc+UO/Q2[*O0]2P!UO/Q2RO32UO52[6O8U]Q	5P![*O0]2h9h)
c�:``�\sQsQsnU1QksQsQsUsU9s!)�AHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler��c�v:�[RU_2[O[	QQQQ5Q5UmP!)z	/dev/null�wtr�r��r8)�super�__init__r r;�open�sub_handler�rF�	__class__s&�rJr��JHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.__init__�s.����� �"�#*�#8�#8���T�G�D�$F�� roc��UOO9^tt^2UOOU2PPP2P!)%fhP!9hr)r��lockrxrs&&rJrx�FHandlerTest.test_post_fork_child_no_deadlock.<locals>._OurHandler.emit�s7���%�%�*�*�*��$�$�)�)�&�1�+�*�*�*�s�A�A	�A	)r��	rwrxryrzr�rxr{r|�
__classcell__�r�r~s@@rJ�_OurHandlerr��s����
F�

2�
2ror�z*because we need at least one for this test� test_post_fork_child_no_deadlockc	�:�[O9^tt^2RO9^tt^2RO2RO	Q2PPP2PPP2P!)%fhK9h)%fhP!9h)��?)r r$r�rJ�wait)�+fork_happened__release_locks_and_end_thread�locks_held__ready_to_fork�refed_hs���rJ�lock_holder_thread_fn�KHandlerTest.test_post_fork_child_no_deadlock.<locals>.lock_holder_thread_fn
sE�����������)�-�-�/�<�@�@��E�!-���������s.�A7�"A$	�A7�$A4
�-A4
�/A7�7B	�B	z,test_post_fork_child_no_deadlock lock holder)r�rHz#Child process did not deadlock. \o/z&Parent process returned from fork. \o/)�exitcode)r rur^r_r%r�r�r8rNrH�
assertGreater�_at_fork_reinit_lock_weaksetr!rDr9r:r��Eventr�r�r�ri�forkr��_exitrJr�r�wait_process)	rFr��test_loggerr��lock_holder_thread�pidr�r�r�s	&     @@@rJr��,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/c�P``�[OQ2n,nUU1QkQ[O2oU1QkQ[O2oROU22ROU22RO	Q2UORQQ,2P!)�"test_remove_handler_while_emittingc�2:`�\sQsQsnUU1QksQsUsP!)�GHandlerTest.test_remove_handler_while_emitting.<locals>.RemovingHandler�6c�N:�ROQ2ROU2P!)�removing)�appendrO)rFr��callsr%s&&��rJrx�LHandlerTest.test_remove_handler_while_emitting.<locals>.RemovingHandler.emit7s������Z�(��$�$�T�*ror��rwrxryrzrxr{r|)r~rr%s@��rJ�RemovingHandlerr�6s����
+�
+rorc�0:`�\sQsQsnU1QksQsUsP!)�GHandlerTest.test_remove_handler_while_emitting.<locals>.CountingHandler�:c�,:�ROQ2P!)�counting�r)rFr�rs&&�rJrx�LHandlerTest.test_remove_handler_while_emitting.<locals>.CountingHandler.emit;s������Z�(ror�r)r~rs@�rJ�CountingHandlerr:s����
)�
)ror
r�rr
)r �LoggerrurDr�r^)rFrr
rr%s&  @@rJr��.HandlerTest.test_remove_handler_while_emitting1s������� D�E����	+�	+�g�o�o�	+�	)�g�o�o�	)�	���/�+�,����/�+�,����V�������Z� 8�9ro)r�r�)rwrxryrzrzr�r��unittest�skipIfrirHr�requires_working_threadingr�requires_resourcer�r	�*ignore_fork_in_thread_deprecation_warnings�
requires_fork�skip_if_asan_fork�skip_if_tsan_forkr�r�r{r|r}s@rJrprpfs�����=�3�j�,�_�_�R�W�W��_�&W�X��0�0�2����z�*�)"�+�3�Y�)"�^�?�?�A������0�0�2���>2���3��B�
>2�@:�:rorpc�(`�\sQsQsnQsQsUsP!)�	BadStream�Cc��[Q2g)�deliberate mistake)�RuntimeError)rF�datas&&rJ�write�BadStream.writeDs���/�0�0ror�)rwrxryrzrr{r|r}s@rJrrCs����1�1rorc�(`�\sQsQsnQsQsUsP!)�TestStreamHandler�Gc��VmP!r��error_recordrs&&rJ�handleError�TestStreamHandler.handleErrorHs��"�ror%)rwrxryrzr'r{r|r}s@rJr"r"Gs����#�#ror"c�4�\sQsQs\O
s]sQsP!)�StreamWithIntName�Kr�)	rwrxryrzr r��levelrHr{r�rorJr*r*Ks���N�N�E��Dror*c�4`�\sQsQsnQsQsQsQsUsP!)�StreamHandlerTest�Oc��[[22o[O-2o[OoUOU2UO
UOU2[O[22o[O29^tt^2oUOU2QoUOVTO22PPP2P
[m[O29^tt^2oUOU2UOPUO22PPP2U[mP!)%fhK9h)%fhK09hS[mh9h)z"
RuntimeError: deliberate mistake
)r"rr r��raiseExceptionsr��assertIsr&r;r�captured_stderr�assertInr\r^)rFrUr��	old_raise�stderrr2s&     rJ�test_error_handling�%StreamHandlerTest.test_error_handlingPs����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�#�sH�A(E4�$3E�0E4�2E!�9E4�E	�E	�E4�!E1	�*E1	�,E4�4
Fc�F�[O2o[O2oUO	U2oUOU[O2UO	U2oUOVB2UO	U2oUOU2P!r)	r r;r6r7�	setStreamr2r�r6�assertIsNone)rFrUr8�oldris&    rJ�test_stream_setting�%StreamHandlerTest.test_stream_settingfss��
�!�!�#��������k�k�&�!���
�
�c�3�:�:�&����S�!���
�
�f�%����S�!�����&�!roc�z�[O[22oUO[	U2Q2P!)z<StreamHandler 2 (NOTSET)>)r r;r*r^r�rys& rJ�'test_can_represent_stream_with_int_name�9StreamHandlerTest.test_can_represent_stream_with_int_namets+���!�!�"3�"5�6������a��">�?ror�)	rwrxryrzr7r=r@r{r|r}s@rJr.r.Os����0�,"�@�@ror.c�@`�\sQsQsnQsQsQsQsQsQs	Us
P!)�TestSMTPServer�{c���[OOVPUP	Q5UOO	2]*UmV mPUmP
UmV0m	P!)N)�map�decode_data)
r�
SMTPServerr��socket�getsockname�port�_handler�_thread�_quit�
poll_interval)rF�addrr�rO�sockmaps&&&&&rJr��TestSMTPServer.__init__�sV��
���!�!�$�d��.2�	"�	4��K�K�+�+�-�a�0��	��
������
�*�roc�,�UOVV42P!r)rL)rF�peer�mailfrom�rcpttosrs&&&&&rJ�process_message�TestSMTPServer.process_message�s��	
�
�
�d�g�4roc��[OUOUO1Q59UmoP	UmUO
2P!�r��r�r��
serve_foreverrOrMr�r��rF�ts& rJr��TestSMTPServer.start��C��%�+�+�4�3E�3E�26�2D�2D�1F�H�	H���q����	���	roc�t�UO%f%[OVO]Q5J6P!)rq)rF�count)rNr
�loop�_map)rFrOs&&rJr\�TestSMTPServer.serve_forever�s$���*�*�*��M�M�-�Y�Y�a�@�roc���P	Um[OUO2PUmUO	2[
OUOP	Q5P!)T)rF�
ignore_all)rNr�join_threadrMrNr
�	close_allrdrss&rJ�stop�TestSMTPServer.stop�sA��
��
��$�$�T�\�\�2�����
�
�����t�y�y�T�:ro)rLrNrMrOrK)rwrxryrzr�rWr�r\rjr{r|r}s@rJrCrC{s$����*+�
5��	A�	;�	;rorCc�F``�\sQsQsnQsQsU1QksQsQsUs	U9s
!)�ControlMixin��c�b�PUmV mVm[O2UmP!r)rMrOrLr�r��ready)rFr�rOs&&&rJr��ControlMixin.__init__�s"�����*���
��_�_�&��
roc��[OUOUO1Q59UmoP	UmUO
2P!rZr[r]s& rJr��ControlMixin.start�r`roc�d:�UOO2[[U_U2P!r)rprJr�rmr\)rFrOr�s&&�rJr\�ControlMixin.serve_forever�s"���
	
�
�
����
�l�D�/�
�>roc���UO2UOd([OUO2PUmUO	2UO
O
2P!r)�shutdownrMrrh�server_closerprPrss&rJrj�ControlMixin.stop�sL��	
�
�
���<�<�#��(�(����6��D�L������
�
���ro)rLrMrOrp)rwrxryrzr�r�r\rjr{r|r�r�s@@rJrmrm�s���� '��?�	�	rormc�2`�\sQsQsnQQksQsQsUsP!)�TestHTTPServer�c�``�UU1QkQ[2n[OVR2[OVU2VPmP!)c�J:``�\sQsQsnQQksQsUUU1QksQsUsU9s	!)�=TestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandleric�`�UOQ2%c
UO![U2g)�do_)�
startswith�process_request�AttributeError)rFrH�defaults&&&rJ�__getattr__�ITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.__getattr__s(���?�?�5�)�)��/�/�/�$�T�*�*roc�>�UOOU2P!r��serverrLrss&rJr��MTestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.process_request
������$�$�T�*roc�F:�R%c[RU_U,UN3P!P!r)r��log_message)rFr.rj�DelegatingHTTPRequestHandlerr�r�s&&*���rJr��ITestHTTPServer.__init__.<locals>.DelegatingHTTPRequestHandler.log_message
s1�����6��,� +�,�,2�;�59�;�ror�r)
rwrxryrzr�r�r�r{r|r�)r�r~r�r�s@@��rJr�rs����
+�

+�
;�
;ror�)rr
r�rm�sslctx)rFrPr�rOr�r�r�s&&&&f&@rJr��TestHTTPServer.__init__s=���	;�	;�+A�	;�	���D�(D�E����d�]�;��roc��UOO2vqUO%cUOOUP	Q5oV1![c-o[
OOQS*2gPo=hh9h)T)�server_sidezGot an error:
%s
)rI�acceptr��wrap_socketr�r�r6r)rF�sockrP�es&   rJ�get_request�TestHTTPServer.get_requestst��	����+�+�-�J�D��{�{�{��{�{�.�.�t��.�F��
�z���	�	��J�J���2�Q�6�7���	�s"�-A�A�	B�B�'B�B�r�)r�FN)rwrxryrzr�r�r{r|r}s@rJr{r{�s�����&	�	ror{c�F``�\sQsQsnP	sP
sQQksU1QksQsUs	U9s
!)�
TestTCPServeri c��QQ[2o[OVUU2[OVU2P!)c�(`�\sQsQsnQsQsUsP!)�;TestTCPServer.__init__.<locals>.DelegatingTCPRequestHandleri4c�>�UOOU2P!rr�rss&rJr��BTestTCPServer.__init__.<locals>.DelegatingTCPRequestHandler.handle6r�ror�)rwrxryrzr�r{r|r}s@rJ�DelegatingTCPRequestHandlerr�4s����
+�
+ror�)rrr�rm)rFrPr�rO�bind_and_activater�s&&&&& rJr��TestTCPServer.__init__2s7��	+�*>�	+�	�#�#�D�0K�$5�	7����d�]�;roc�z:�[[U_2UOO	2]*UmP!�rq)r�r��server_bindrIrJrKr�s&�rJr��TestTCPServer.server_bind<�)���
�m�T�.�0��K�K�+�+�-�a�0��	ro)rK�r�T)rwrxryrz�allow_reuse_address�allow_reuse_portr�r�r{r|r�r�s@@rJr�r� s"��������<�1�1ror�c�J``�\sQsQsnQQksU1QksU1QksQsUsU9s	!)�
TestUDPServeri@c�`�U1QkQ[2n[OVRU2[OVU2P
UmP!)c�>:``�\sQsQsnQsUU1QksQsUsU9s!)�;TestUDPServer.__init__.<locals>.DelegatingUDPRequestHandleriSc�>�UOOU2P!rr�rss&rJr��BTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.handleUr�roc��:�UOO2oU%c[RU_2P!P![c"SO
O%fgP!h9hr)�wfiler\r��finishr�r��_closed)rFr�DelegatingUDPRequestHandlerr�s& ��rJr��BTestUDPServer.__init__.<locals>.DelegatingUDPRequestHandler.finishXsY����z�z�*�*�,���"��9�4�G�I���#�"�#�{�{�2�2�2�!� 3�"�s�8�	A$�A$�A$�#A$r�)	rwrxryrzr�r�r{r|r�)r�r~r�s@@�rJr�r�Ss����
+�
"�
"ror�)rrr�rmr�)rFrPr�rOr�r�s&&&&&@rJr��TestUDPServer.__init__QsA���	"�*@�	"�	�#�#�D�$?�$5�	7�	���d�]�;���roc�z:�[[U_2UOO	2]*UmP!r�)r�r�r�rIrJrKr�s&�rJr��TestUDPServer.server_bindgr�roc�<:�[[U_2P	UmP!�T)r�r�rxr�r�s&�rJrx�TestUDPServer.server_closeks���
�m�T�/�1���ro)r�rKr�)
rwrxryrzr�r�rxr{r|r�r�s@@rJr�r�@s����"�,1��ror��AF_UNIXc�0�\sQsQs\O
sQsP!)�TestUnixStreamServeripr��rwrxryrzrIr��address_familyr{r�rorJr�r�p������ror�c�0�\sQsQs\O
sQsP!)�TestUnixDatagramServerisr�r�r�rorJr�r�sr�ror�c�F`�\sQsQsn\O
sQsQsQs	Us
P!)�SMTPHandlerTestixc���-o[[O]1UOQU2oUO	2[OUO
1o[OOUQQQUOQ5oUOUOQ,2,Um[OQQ-2o[O2UmUO#U2UO O%UO2UO'2UO)UO O+22UO[-UO2]2UO]*vqgq�UOUQ2UOUQ,2UO/QU	2UO1U	Q	2UO32P!)
r���MbP?�me�you�Log��timeoutr2u	Hello ✓z
Subject: Log
u

Hello ✓)rCr�HOSTrWr�rKr rB�SMTPHandler�TIMEOUTr^�toaddrs�messagesr�r�r��handledr�r�rjrE�is_setr_r4�assertEndsWithrN)
rFrQr�rPrUr�rTrUrVrs
&         rJ�
test_basic�SMTPHandlerTest.test_basic~sl������!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�'�*��
�
�(�$�/����D�"4�5�	���	roc�r�UOOU2UOO2P!r)r�rr�rJ)rFrjs&*rJrW�SMTPHandlerTest.process_message�s$���
�
���T�"������ro)r�r�)rwrxryrzr�LONG_TIMEOUTr�r�rWr{r|r}s@rJr�r�xs!�����"�"�G��0�ror�c�r`�\sQsQsnQsQsQsQsQsQs	\
O2Q2sQ	s
UsP!)
�MemoryHandlerTesti�rc�P�[OU2[OO	]
[O
UO2Um[OQ2Um	]UOm
UOOUO2P!)�
�mem)rrKr rB�
MemoryHandlerr�r<�mem_hdlrr!�
mem_logger�	propagaterDrss&rJrK�MemoryHandlerTest.setUp�sj�����t���(�(�6�6�r�7�?�?�7;�~�~�G��
�!�+�+�E�2���$%����!����"�"�4�=�=�1roc�f�UOO2[OU2P!r)r�rNrrVrss&rJrV�MemoryHandlerTest.tearDown�� ���
�
�������$�roc�v�UOOUO22UO,2UOO	UO22UO,2UOOUO22,QNoUOU2QFD�o[
]	2FD,oUOOUO22J.	UOU2UOOUO22S[
V"]
*2Tt,tFDoQ[U21MJ	to*oUOU2J�	UOOUO22UOU2P!ttoh)r:)�r:r��r�r�)r�r�)��)r�r�rtrmr�r�r��str)rF�lines�n�is&   rJ�
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�F6
c���UOOUO22UO,2UOO	UO22UO,2UOOUO2UOO2QQ,oUOU2[OO]
[OUOP
2UmUOOUO2UOOUO22UOU2UOO	UO22UOU2UOOUO2UOO2UOU2P!)r:r�r�)r�r�rtrmr�rOr�rNr rBr�r�r<rD�rFr�s& rJ�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�$roc���UOOUO22UO,2UOO	UO22UO,2[
O[
OOUO2,Q5QQ,oUOU2[
OO]
[
OUOP
2Um	UOOUO2UOOUO22UOU2UOO	UO22UOU2[
O[
OOUO2,Q5UOU2P!)��handlerListr�r�)r�r�rtrmr�r rw�weakref�refr�rBr�r�r<rDr�s& rJ�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�$roc���QQ2oUUO2oUOOU2[]
2FDOo[OQ2UO
O
Q2UO
OQ2JQ	UOFDo[OU2J	P!SOFDo[OS2J	h9h)c�4`�\sQsQsnQsQsQsQsUsP!)�ZMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandleric�"�Vm,UmP!r�r��threads)rFr�s&&rJr��cMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.__init__s�� (�
�!��roc�>�UOOP2P!r)r��	setTargetrss&rJ�removeTarget�gMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.removeTargets���
�
�'�'��-roc��[OUOQ5oUOO	U2UO2P!)�r�)r�r�rrrr�)rFr2rs&& rJr��aMemoryHandlerTest.test_race_between_set_target_and_flush.<locals>.MockRaceConditionHandler.handles3��"�)�)��1B�1B�C�����#�#�F�+����ror)	rwrxryrzr�rr�r{r|r}s@rJ�MockRaceConditionHandlerrs����
"�
.�
�
rorr�znot flushed�flushed)r�r
r�r�r�r�r�r�rrrh)rFrr�r�rs&    rJ�&test_race_between_set_target_and_flush�8MemoryHandlerTest.test_race_between_set_target_and_flushs���	�	�*�$�-�-�8��		5��M�M�#�#�F�+��2�Y���
�
�5�!����$�$�]�3����'�'�	�2��
!�.�.�� �,�,�V�4�)��&�.�.�� �,�,�V�4�)�s�A:C�,C1)r�r�)rwrxryrzr[rKrVr�r�rrrrr{r|r}s@rJr�r��sC����
3��2� �%�8%�<%�:�0�0�2�5�3�5ror�c�(`�\sQsQsnQsQsUsP!)�ExceptionFormatteri c�8�QU]*O*!)z
Got a [%s])rw)rF�eis&&rJ�formatException�"ExceptionFormatter.formatException"s���b��e�n�n�,�,ror�)rwrxryrzrr{r|r}s@rJrr s����-�-rorc�T�UO2[OU2P!r�rNri�remove)rUrms&&rJ�closeFileHandlerr%s���G�G�I��I�I�b�Mroc�\`�\sQsQsn\O
sQsQsQsQs	\OQQ2s\OQQ	2sQ
\*Q*s
\OQQ
2sQsQsQsQsQsQsQsQs\1QksQsQsQsQsQsQsQsQsQs Q s!Q!s"Q"s#Q#s$Q$s%Q%s&Us'P!)&�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��[O[OU22o[O
OU1QQ-U@P!)r�r)r6r7�textwrap�dedentr �config�
fileConfig)rF�confrk�files&&, rJ�apply_config�ConfigFileTest.apply_configCs5���{�{�8�?�?�4�0�1�����!�!�$�C��C�F�Croc��[O29^tt^2oUOUO2[O
2oUO
UO22UOUO22UOQ,UQ5UO,2PPP2P!)%fhP!9h�r�r��r�r�)
r�captured_stdoutr(�config0r r!r�rtr�rm�rF�outputr%s&  rJ�test_config0_ok�ConfigFileTest.test_config0_okGs���
�
$�
$�
&�
&�&����d�l�l�+��&�&�(�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!��#��
"�
�
�!�!�"�%�'�
&�
&�
&�s�BB=�=C	�C	c�^�[O29^tt^2o[O[O
UO22o[O2oUOU2[OOU2[O2oUOUO22UO!UO22UO#Q,UQ5UO#,2PPP2P!)%fhP!9hr+)rr-r6r7r"r#r.�configparser�ConfigParser�	read_filer r$r%r!r�rtr�rm)rFr0r'�cpr%s&    rJ�test_config0_using_cp_ok�'ConfigFileTest.test_config0_using_cp_okVs���
�
$�
$�
&�
&�&��;�;�x���t�|�|�<�=�D��*�*�,�B��L�L����N�N�%�%�b�)��&�&�(�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!��#��
"�
�
�!�!�"�%�'�
&�
&�
&�s�C2D�D,	�$D,	c��[O29^tt^2oUOU2[OQ2oUOUO
22UOUO
22UOQQ,UQ5UO,2PPP2P!)%fhP!9h��compiler.parserr��r�r�r,�	rr-r(r r!r�rtr�rm�rFr$r0r%s&&  rJ�test_config1_ok�ConfigFileTest.test_config1_okh���
�
$�
$�
&�
&�&����f�%��&�&�'8�9�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!���#��
"�
�

�!�!�"�%�'�
&�
&�
&���BB5�5C	�>C	c�^�UO[UOUO2P!r�rvr�r(�config2rss&rJ�test_config2_failure�#ConfigFileTest.test_config2_failurew������)�T�%6�%6����Eroc�^�UO[UOUO2P!r�rvr�r(�config3rss&rJ�test_config3_failure�#ConfigFileTest.test_config3_failure{rIroc���[O29^tt^2oUOUO2[O
2o[
2g[c[OQ2Lh9h[OO]2SOSO2Q2SO,2PPP2P!)%fhP!9h��just testing�-ERROR:root:just testing
Got a [RuntimeError]
)rr-r(�config4r r!r�	exceptionr��stdout�seekr^r\rmr/s&  rJ�test_config4_ok�ConfigFileTest.test_config4_oks���
�
$�
$�
&�
&�&����d�l�l�+��&�&�(�F�
2�"�n�$���
2��!�!�.�1�
2���J�J�O�O�A�����V�_�_�.�A�
C�
�!�!�"�%�'�
&�
&�
&�s6�1C�
A�	A?�%A?�<C�>A?�?AC�C-	�%C-	c�@�UOUOQ5P!��r$)r@�config5rss&rJ�test_config5_ok�ConfigFileTest.test_config5_ok�������D�L�L��1roc�@�UOUOQ5P!rZ)r@�config6rss&rJ�test_config6_ok�ConfigFileTest.test_config6_ok�r_roc���[O29^tt^2oUOUO2[O
Q2o[O
Q2oUO
UO22UOUO22UOUO22UO,QNUQ5UO,2PPP2[O29^tt^2oUOUO2[O
Q2oUOUO2UO
UO22UOUO22[O
Q2oUO
UO22UOUO22WOUO22UO,QNUQ5UO,2PPP2P!)%fhCK\9h)%fhP!9h)r<�compiler-hyphenatedr��compiler.lexer�r=r,)r�r��)r�r�)r�r�)r�r�)r�r�)rr-r(�config1ar r!r�rtr��criticalrm�config7r�r�rFr0r%�
hyphenateds&   rJ�test_config7_ok�ConfigFileTest.test_config7_ok�s���
�
$�
$�
&�
&�&����d�m�m�,��&�&�'8�9�F�!�*�*�+@�A�J��K�K��)�)�+�,��L�L��*�*�,�-����� 1� 1� 3�4��!�!�#��	
"�
�
�!�!�"�%�''�(�
$�
$�
&�
&�&����d�l�l�+��&�&�'8�9�F����V�_�_�-��K�K��)�)�+�,��L�L��*�*�,�-��&�&�'7�8�F��K�K��)�)�+�,��L�L��*�*�,�-����� 1� 1� 3�4��!�!�#�
�
"�
�
�!�!�"�%�)'�
&�)'�
&�
&��('�
&�
&�s%�CH=�D$I�=I	�I	�I"	�I"	c���UO29^tt^2[QQ2o[OQ6XcUO	QQ2oUO
O
UQ5oUOU2UOU2PPP2[OO]*oUO[UW2P!)%fhKJ9h)r��test_logging-X-r��\z\\)rg)
�check_no_resource_warningrnrirH�replace�config8r.r(r �rootrBr�r)rFrmrur�s&   rJ�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�!C�AC�C	�C	c�|�UOUO2[OO]*O
oUO
[OQQ-22oUOUQ2UO
[OQQQQ-22oUOUQ2P!)rr2�testztest ++ defaultvalue�customfield�customvalueztest ++ customvalue)	r(�config9r rvrB�	formatterr.r�r^)rFr~�results&  rJ�test_config9_ok�ConfigFileTest.test_config9_ok�s������$�,�,�'��L�L�)�)�!�,�6�6�	��!�!�'�"7�"7����"H�I������!7�8��!�!�'�"7�"7�
�F�M�=�9�#;�<������!6�7roc�|�UOUO2[OQ2oUO	UO
2UOUO2UO
UO
2UOUOP
Q5UO	UO
2P!)�some_pristine_logger)�disable_existing_loggers)r(�disable_testr r!r�rrE�rFr%s& rJ�test_logger_disabling�$ConfigFileTest.test_logger_disabling�s������$�+�+�,��"�"�#9�:��������)����$�+�+�,�������(����$�+�+�e��L�������)roc��QoUOU2UO[O2O]*O
Q2P!)aw
            [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
            �hand1)r(r^r r!rBrH)rF�test_configs& rJ�test_config_set_handler_names�,ConfigFileTest.test_config_set_handler_names�sC����(	
���+�&�����*�*�,�5�5�a�8�=�=�w�Groc��Qo[O[OU22oUO	[
[OOU2P!)a�
            [loggers]
            keys=root

            [handlers]
            keys=hand1

            [formatters]
            keys=form1

            [logger_root]
            handlers=hand1

            [handler_hand1]
            class=StreamHandler
            formatter=form1

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

            prince
            )	r6r7r"r#rvrr r$r%)rFr�r's&  rJ�'test_exception_if_confg_file_is_invalid�6ConfigFileTest.test_exception_if_confg_file_is_invalid�s>����.�{�{�8�?�?�;�7�8�����,����(A�(A�4�Hroc���[OQQQ5vq[OU2UO	[
[OOU2[OU2P!)�test_empty_�.ini�r��suffix)
rgrhrirNrvrr r$r%r)rFrlrms&  rJ�%test_exception_if_confg_file_is_empty�4ConfigFileTest.test_exception_if_confg_file_is_emptysH���!�!��v�F���
��������,����(A�(A�2�F�
�	�	�"�
roc�f�UO[[OOQ2P!)�filenotfound)rv�FileNotFoundErrorr r$r%rss&rJ�,test_exception_if_config_file_does_not_exist�;ConfigFileTest.test_exception_if_config_file_does_not_exists�����+�W�^�^�-F�-F��Wroc���[OQ2O2o[OQQQ5vq#[
OV!OQ22[
OU2[OOUQ[]P
QQQQ	Q
QQ--Q
5Q5[
OU2P![
OS2h9h)at
            [formatters]
            keys=default

            [formatter_default]

            [handlers]
            keys=console

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

            [loggers]
            keys=root

            [logger_root]
            formatter=default
            handlers=console
            �
test_logging_r�r��asciirrsr.z5%(asctime)s [%(process)d] [%(levelname)s] %(message)s�datefmtz[%Y-%m-%d %H:%M:%S %z]�class�logging.Formatter)�versionr��
formatters)r��defaults)r"r#�striprgrhrir�encoderNr r$r%�dictr�)rF�inirlrms&   rJ�!test_defaults_do_no_interpolation�0ConfigFileTest.test_defaults_do_no_interpolation s����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
�A1C
�
C"r�)(rwrxryrzr	rsr[r.�config1rirtrFrLrSr\rarkrur}r�r(r1r8r@rGrMrWr]rbrnrwr�r�r�r�r�r�r�r{r|r}s@rJrr)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�*�*rorc�H`�\sQsQsn\sQsQsQsQs	Qs
QsQsUs
P!)	�SocketHandlerTestiMc��[OU2P9Um9UmUmUOUOUOQ29UmoUO2UOO2[OOo[UO ["2%cUQUO$2UmLUUO P2UmPUmUO(O+UO(O]*2UO(O-UO2[.O0]2UmP![coX mPo=P!Po=hh9h�N�{�G�z�?r�)rrKr��	sock_hdlr�server_exception�server_class�address�
handle_socketr�r�rpr�r rB�
SocketHandler�
isinstance�server_addressrcrK�
log_outputr3rOrDr��	Semaphorer��rFr�r��hclss&   rJrK�SocketHandlerTest.setUpVs-��	���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�9F�:F�Fc�b�UO%c@UOOUO2UOO2UO%cUOO2[OU2P![OS2h9hr)r�r3rOrNr�rjrrVrss&rJrV�SocketHandlerTest.tearDownpsn��	$��~�~�~�� � �.�.�t�~�~�>����$�$�&��{�{�{���� � �"����d�#��H���d�#�s�B�AB�&B�B.c��UOoUO]2o[U2]6cP![OQU2]*oUOU2o[U2U6c*V2OU[U2*
2*oJ9[
OU2o[OU2oU9OUOQ**
tm	UOO2J�)T�>L�
)
�
connection�recvr_�struct�unpack�pickle�loadsr r�r�r2r��release)rF�request�conn�chunk�slen�objr�s&&     rJr��SocketHandlerTest.handle_socket{s����!�!����I�I�a�L�E��5�z�A�~���=�=��u�-�a�0�D��I�I�d�O�E��e�*�t�#��	�	�$��U��*;� <�<���,�,�u�%�C��*�*�3�/�F��O�O�v�z�z�D�0�0�O��L�L� � �"roc�r�UO%cUOUO2[OQ2oUO	Q2UO
O
2UOQ2UO
O
2UOUOQ2P!)�tcpr��eggs�
spam
eggs
)
r��skipTestr r!r�r��acquirer�r^r�r�s& rJ�test_output�SocketHandlerTest.test_output�s|��� � � ��M�M�$�/�/�0��"�"�5�)�����V�����������V��������������.�9roc�z�UO%cUOUO2QUOmUOO2[
Q2g[cSOOQ2Lh9hSOOQ2[O2oSOSOOS2[OSOOS*
Q*2SOOQ2P!)g@zDeliberate mistakez
Never sentzNever sent, eitherr�zNor this)r�r�r��
retryStartr�rjrr3rTr�r�r��	retryTimer�)rF�nows& rJ�
test_noserver�SocketHandlerTest.test_noserver�s���� � � ��M�M�$�/�/�0�%(����!�������	5��3�4�4���	5����&�&�|�4�	5�������3�4��i�i�k�����4�>�>�3�3�S�9��
�
�4�>�>�+�+�c�1�E�9�:������z�*s�A&�&	B�0B�B�r�r�r�r�r��r�r)rwrxryrzr�r�r�rKrVr�r�r�r{r|r}s@rJr�r�Ms/����!�L��G�.�4	$�
#�	:�+�+ror�zUnix sockets requiredc�J`�\sQsQsn\\Q2%c\sQsQs	Us
P!)�UnixSocketHandlerTesti�r�c��[O2UmUO[O
UO2[OU2P!r)r�create_unix_domain_namer�r�rr�r�rKrss&rJrK�UnixSocketHandlerTest.setUp��8��$�<�<�>������	�(�(�$�,�,�7�����%ro�r�)rwrxryrz�hasattrrIr�r�rKr{r|r}s@rJr�r��s#����
�v�y�!�!�+��&�&ror�c�B`�\sQsQsn\sQsQsQsQs	Qs
QsUsP!)�DatagramHandlerTesti�c��[OU2P9Um9UmUmUOUOUOQ29UmoUO2UOO2[OOo[UO ["2%cUQUO$2UmLUUO P2UmPUmUO(O+UO(O]*2UO(O-UO2[.O02UmP![coX mPo=P!Po=hh9hr�)rrKr�r�r�r�r��handle_datagramr�r�rpr�r rB�DatagramHandlerr�r�rcrKr�r3rOrDr�r�r�r�s&   rJrK�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
�8F
�9F�F
c�b�UO%cUOO2UO%c@UOO	UO2UOO2[OU2P![OS2h9hr)r�rjr�r3rOrNrrVrss&rJrV�DatagramHandlerTest.tearDown�sn��	$��{�{�{���� � �"��~�~�~�� � �.�.�t�~�~�>����$�$�&����d�#��H���d�#���B�+B�?B�B.c�F�[OQ]2oUO[U2Po[O
U2o[OU2oU9OUOQ**
tmUOO2P!)r�r�)r��pack�packetr_r�r�r r�r�r2r�rJ)rFr�r�r�r�r�s&&    rJr��#DatagramHandlerTest.handle_datagram�sk���{�{�4��#������D�	�
�+���l�l�6�"���&�&�s�+�����6�:�:��,�,�������roc��UO%cUOUO2[OQ2oUO	Q2UO
O
2UO
O2UO	Q2UO
O
2UOUOQ2P!)�udpr�r�r�)
r�r�r r!r�r�r�rPr^r�r�s& rJr��DatagramHandlerTest.test_output�s���� � � ��M�M�$�/�/�0��"�"�5�)�����V�����������������V��������������.�9ror�r�)
rwrxryrzr�r�r�rKrVr�r�r{r|r}s@rJr�r��s*����!�L��G�)�4	$��
:�
:ror�c�J`�\sQsQsn\\Q2%c\sQsQs	Us
P!)�UnixDatagramHandlerTesti�r�c��[O2UmUO[O
UO2[OU2P!r)rr�r�r�rr�r�rKrss&rJrK�UnixDatagramHandlerTest.setUps8��$�<�<�>������	�(�(�$�,�,�7��!�!�$�'ror��rwrxryrzr�rIr�r�rKr{r|r}s@rJr�r��s#����
�v�y�!�!�-��(�(ror�c�d`�\sQsQsn\sQ
sQsQsQs	Qs
Qs\Q2Q2s
Q	sUsP!)�SysLogHandlerTestic�<�[OU2P9Um9UmUmUOUOUOQ29UmoUO2UOO2[OOo[UO ["2%c,UUO ]*UO$12UmLUUO 2UmQUmUO(O+UO(O]*2UO(O-UO2[.O02UmP![coX mPo=P!Po=hh9h)Nr�ro)rrKr��sl_hdlrr�r�r�r�r�r�rpr�r rBr�r�r�rcrKr�r3rOrDr�r�r�r�s&   rJrK�SysLogHandlerTest.setUps5��	���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�>E?�?	F�	F�
F�Fc�b�UO%cUOO2UO%c@UOO	UO2UOO2[OU2P![OS2h9hr)r�rjrr3rOrNrrVrss&rJrV�SysLogHandlerTest.tearDown*sn��	$��{�{�{���� � �"��|�|�|�� � �.�.�t�|�|�<����"�"�$����d�#��H���d�#�r�c�^�UOUmUOO2P!r)r�r�r�rJ)rFr�s&&rJr��!SysLogHandlerTest.handle_datagram5s��!�.�.��������roc�>�UO%cUOUO2[OQ2oUO	Q2UO
O
[O2UOUOQ2UO
O2P
UOm
UO	Q2UO
O
[O2UOUOQ2UO
O2QUOmUO	Q2UO
O
[O2UOUOQ2P!)�slh�späm�
<11>späms	<11>spämuhäm-s<11>häm-späm)r�r�r r!r�r�r�rr�r^r�rPr�
append_nul�identr�s& rJr��SysLogHandlerTest.test_output9s��� � � ��M�M�$�/�/�0��"�"�5�)�����Y�������'�.�.�/�������*@�A�������"'��������Y�������'�.�.�/�������*<�=�������&��������Y�������'�.�.�/�������*G�Hroc�H�[OQ2oUOO2UOO2UO
Q2UOO[O2UOUOQ2P!)rr	r
)r r!rrNr�rPr�r�rr�r^r�r�s& rJ�test_udp_reconnection�'SysLogHandlerTest.test_udp_reconnectionLsk���"�"�5�)�����������������Y�������'�.�.�/�������*@�Aroz
socket.socketc�x�UOo[OUOmUO[O29^tt^2[OOQ[O]Q5PPP2UOO2P!)%fhK,9h)r�)r��socktyper�)r��)�return_valuerIr��connect�side_effectrvr rBr��SOCK_STREAMrN�
assert_called)rF�mock_socket�instance_mock_socks&& rJ�test_tcp_timeout�"SysLogHandlerTest.test_tcp_timeoutTs���(�5�5��17����"�"�.�
�
�
�v�~�~�
.�
.����*�*�3E�4:�4F�4F�34�
+�
6�/�
	� � �.�.�0�/�
.�s�1B)�)B9	�2B9	)r�r�r�r�rr�)rwrxryrzr�r�r�rKrVr�r�rrrr{r|r}s@rJr�r�sE����!�L��G�)�4	$��I�&B��?��	1��	1ror�c�J`�\sQsQsn\\Q2%c\sQsQs	Us
P!)�UnixSysLogHandlerTesti`r�c��[O2UmUO[O
UO2[OU2P!r)rr�r�r�rr�r�rKrss&rJrK�UnixSysLogHandlerTest.setUphr�ror�r�r}s@rJrr`s#����
�v�y�!�!�-��&�&rorz$IPv6 support required for this test.c�H``�\sQsQsn\sQsU1QksU1QksQs	Us
U9s!)�IPv6SysLogHandlerTestinc�l:�[OUOm[[
U_2P!r)rI�AF_INET6r�r�r�r"rKr�s&�rJrK�IPv6SysLogHandlerTest.setUpws#���+1�?�?����(�
�#�T�0�2roc�l:�[OUOm[[
U_2P!r)rI�AF_INETr�r�r�r"rVr�s&�rJrV�IPv6SysLogHandlerTest.tearDown{s#���+1�>�>����(�
�#�T�3�5ror�)z::1r)rwrxryrzr�r�r�rKrVr{r|r�r�s@@rJr"r"ns ����!�L��G�3�6�6ror"c�4`�\sQsQsnQsQsQsQsUsP!)�HTTPHandlerTestic�f�[OU2[O2UmP!r)rrKr�r�r�rss&rJrK�HTTPHandlerTest.setUp�s��	���t�� ���(��roc��UOUm[UO2UmUOQ6Xc>[	UO
Q*2oUOOU2UmUO]�2UO2UOO2P!PSmKH9h)r�zContent-Length)
�commandrr��log_data�int�headers�rfilere�	post_data�
send_response�end_headersr�rJ)rFr��rlens&& rJ�handle_request�HTTPHandlerTest.handle_request�s�������� ����.��
��<�<�6�!�
&��7�?�?�+;�<�=��!(���!3�!3�D�!9���	���c�"������������	
&�!%���s�<B8�8	Cc
���[OQ2oUOoUOUOO]*2QFCDoQoU%c�]PHo[OO[2o[OOUQQ2oUOUO2oUOU2UOUQ5o	LPoPo	[!V@O"QUQ59Umo
U
O'2U
O(O+2QU
O,*oS9%cSo[OO/UQUW	QQ5UmPUmUO5UO02QFCDWo
V�O0mUO8O;2Q
oUO=U2UO8O+[>O@2oUOCUQ2UOEUO2OQ2UOEUOFU
2U
Q	6Xc![IUO2OJ2oL$[IUOLOOQ22oUOEUQ
*Q,2UOEUQ*Q,2UOEUQ*U,2CJZ	UO$OQ2UOOUO02UO0OS2CJ	P![cPoCK�h9h)�http�certdatazkeycert.pem)�cafiler�r�zlocalhost:%dz/frob)�secure�context�credentialsr�r	zHTTP request timed outrrH�funcNamer�r2r�r�)�foo�bar)r�r�)*r r!r3rOrB�sslrir��dirname�__file__r��
SSLContext�PROTOCOL_TLS_SERVER�load_cert_chain�create_default_context�ImportErrorr{r7r�r�rpr��server_portr��h_hdlrr/rDr�r�rPr�r�
SHORT_TIMEOUTrEr^r.r�queryr3�decoderjrN)rFr%r3r=rPrC�here�localhost_certr�r>r��host�
secure_clientr�r2r��ds&                rJr��HTTPHandlerTest.test_output�s����"�"�6�*���&�&���!�!�$�"2�"2�";�";�A�">�?�#�F�#�D��
P���7�7�?�?�8�4�D�%'�W�W�\�\�$�
�M�%R�N� �^�^�C�,C�,C�D�F��*�*�>�:�!�8�8��8�O�G�����#1�$�8K�8K�48��$I�
I�D�K�&��L�L�N��L�L����!�F�$6�$6�6�D�"�-�-�v�M�!�*�*�6�6�t�W�>K�?F�CQ�7�S�D�K�!�D�M��"�"�4�;�;�/�)��%+���"����"�"�$������S�!��,�,�+�+�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�"M�	M0�)M0�/M0)r.rLr�r/r3r�)	rwrxryrzrKr7r�r{r|r}s@rJr*r*s����
)��6 �6 ror*c�:`�\sQsQsnQsQsQsQsQsUs	P!)�
MemoryTesti�c�@�[OU2-UmP!r)rrK�
_survivorsrss&rJrK�MemoryTest.setUp�s�����t����roc��SFD<o[U2[U21o[OU2UOU$J>	P!r)rFr�r�r�rY)rFrjr��keys&*  rJ�_watch_for_survival�MemoryTest._watch_for_survival�s7���C��S�'�4��9�$�C�#*�;�;�s�#3�D�O�O�C� �roc�4�[O2,oUOO2FD$vvq#oU2dJUO	U2J&	U%c5UOQ[
U2QOU21*2P!P!)Nz;%d objects should have survived but have been destroyed: %sz, )�gc�collectrYrrrbr_r�)rF�dead�id_�repr_r�s&    rJ�_assertTruesurvival�MemoryTest._assertTruesurvival�sy��	�
�
����!%���!6�!6�!8��L�S�#��u�}����E�"�"9���I�I�.�14�T��D�I�I�d�O�0L�M�
N�roc�L�UOO[O2[OQ2oUOU2UO[O2UOOUO22UOUO22UOQ,2=UO2[OQ2oUOUO22UOQQ,2P!)rA)rAr:r�)rAr:r�)r3r9r r�r!r]r:r�rtrmre)rFrArBs&  rJ�test_persistent_loggers�"MemoryTest.test_persistent_loggers�s���	
���!�!�'�,�,�/�����&��� � ��%����W�]�]�#������t�0�0�2�3��	�	�$�#�#�%�&����!�
�	�
�� � �"�����&���	�	�$�#�#�%�&����!�!�
�	ro)rY)
rwrxryrzrKr]rerhr{r|r}s@rJrWrW�s�����
4�
N��rorWc�.`�\sQsQsnQsQsQsUsP!)�EncodingTesti	c��[OQ2o[QQ2oQo[OUQQ5oUO	U2UOU2UO
U2UO2[UQQ5oUOUO2O2U2UO2[OOU2%c[OU2P!P!SO
S2SO2h9hSO2h9h[OOS2%c[OS2hh9h)rzr�ztest_logging-1-ufoo€rr�)r r!rnr�rDr�rOrNr�r^re�rstriprir��isfiler)rFr�rmrr�r�s&     rJ�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�!�!��	�	�"�
�"�sA�)E
�D�".E
�.D5�?E
�#D2�2E
�5E�E
�
%F�0Fc���[OQ2oQo[OQ2oQUm[
O2oUUQ2o[OU2oUOU2UOU2UOU2UO2UO2oUOUQ2P!SOS2SO2h9h)rzuдо свидания�cp1251�stricts�� �������
)r r!�codecs�	getwriterr�r6�BytesIOr;rDr�rOrNr\r^)rFr��message�writer_classr8�writerr�rls&       rJ�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�#C6r�)rwrxryrzrorzr{r|r}s@rJrkrk	s�����2L�Lrorkc�.`�\sQsQsnQsQsQsUsP!)�WarningsTesti3	c
�`�[O29^tt^2[OP	2UO	[OP
2[O
Q[Q5[O2o[OU2o[OQ2oUOU2[OQ2UOU2UO2oUO2UO!UO#Q2]2[O2o[O$Q[Q]*UQ2UO2oUO2UO'UQ	2PPP2P!)%fhP!9h)
T�always)�category�py.warningszI'm warning you...z UserWarning: I'm warning you...
�Explicit�dummy.pyz
Dummy linez0dummy.py:42: UserWarning: Explicit
  Dummy line
)�warnings�catch_warningsr �captureWarningsr��filterwarnings�UserWarningr6r7r;r!rD�warnrOr\rNr��find�showwarningr^)rFr8rUr%rl�a_files&     rJ�
test_warnings�WarningsTest.test_warnings5	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�E3F�F-	�%F-	c�2�[O29^tt^2[OP	2UO	[OP
2[O
Q2oUO
UO,2[OQ[Q]*2UO
[UO2]2UOUO]*[O2PPP2P!)%fhP!9h)Tr�r�r�)
r�r�r r�r�r!r^rBr�r�r_�assertIsInstance�NullHandlerr�s& rJ�test_warnings_no_handlers�&WarningsTest.test_warnings_no_handlersM	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�CD�D	�D	r�)rwrxryrzr�r�r{r|r}s@rJr}r}3	s����F�0K�Kror}c�0�[OV2!r)r r=)r.r�s&&rJ�
formatFuncr�[	s�����V�-�-roc�,`�\sQsQsnQQksQsUsP!)�myCustomFormatteri^	c��P!rr�)rF�fmtr�s&&&rJr��myCustomFormatter.__init___	���ror�r)rwrxryrzr�r{r|r}s@rJr�r�^	s����
�
ror�c�.�[O2!r)r r;r�rorJ�handlerFuncr�b	s��� � �"�"roc��\sQsQsQsP!)�
CustomHandlerie	r�r�r�rorJr�r�e	���ror�c��\sQsQsQsP!)�CustomListenerih	r�r�r�rorJr�r�h	r�ror�c��\sQsQsQsP!)�CustomQueueik	r�r�r�rorJr�r�k	r�ror�c�2`�\sQsQsnQQksQsQsUsP!)�CustomQueueProtocolin	c�>�[OU2UmP!r��queue�Queue)rF�maxsizes&&rJr��CustomQueueProtocol.__init__o	s���[�[��)��
roc�F�[OUQ2o[V!2!�r�)�object�__getattribute__r0)rF�	attributer�s&& rJr��CustomQueueProtocol.__getattr__r	s���'�'��g�6���u�(�(ror�)r)rwrxryrzr�r�r{r|r}s@rJr�r�n	s����*�)�)ror�c�(`�\sQsQsnQsQsUsP!)�CustomQueueFakeProtocoliv	c��P!rr�rss&rJ�
put_nowait�"CustomQueueFakeProtocol.put_nowait~	r�ror�)rwrxryrzr�r{r|r}s@rJr�r�v	s����
�
ror�c��\sQsQsPsQsP!)�CustomQueueWrongProtocoli�	r�)rwrxryrzr�r{r�rorJr�r��	s���Jror�c�.`�\sQsQsnQsQsQsUsP!)�MinimalQueueProtocoli�	c��P!rr�)rF�xs&&rJr��MinimalQueueProtocol.put_nowait�	s��Troc��P!rr�rss&rJ�get�MinimalQueueProtocol.get�	s��4ror�)rwrxryrzr�r�r{r|r}s@rJr�r��	s����!��ror�c�.�[O2!rr�r�rorJ�
queueMakerr��	s���;�;�=�roc�`�U1QkoU!)c�J:�UOQR2[U,UN3-U@!��respect_handler_level)�
setdefaultr�)r�rBrkr�s&*,�rJ�func�listenerMaker.<locals>.func�	s*������1�3H�I��e�9�h�9�&�9�9ror�)�arg1�arg2r�r�s&&f rJ�
listenerMakerr��	s���:��Kroc�`�\sQsQsn\O
sQsQ]QQQQ--QQ	Q
QQQQ
QQQ--QQ
QQQ	,--sQ]QQQQ--QQ	Q
QQQQ
QQQ--QQQ
QQQ	,--QQ
Q--sQ]QQQQ--QQ	Q
QQQQ
QQQ--QQQ
Q--QQ
QQQ	,--s	Q]QQQQ--QQ	Q
QQQQ
QQQ--QQQ
QQQ	,--QQ
Q--s
Q]QQQQ--QQ	Q
QQQQ
QQQ--QQQ
QQQ	,--QQ
Q--sQ]QQQQ--QQ	Q
QQQQ
QQQ--QQQ
QQQ	,--QQ
Q--sQ]QQQQ--QQ	Q
QQQQ
QQQ--QQQ
QQQ	,--QQ
Q--s
Q]QQQ\Q*QQ--QQ	Q
QQQQ
QQQ--QQ
QQQ	,--sQ]QQQ\QQ-QQ\Q*QQ-QQ\QQ--QQ	Q
QQQQ
QQQ-Q Q\--QQ
QQQ	,--sQ]QQQQ--QQ	Q
\Q!*QQQ
QQQ--QQQ
QQQ	,--QQ
Q--sQ]QQQQ--QQ	Q
\Q!*QQQ
QQQQ"Q#--QQQ
QQQ	,--QQ
Q--sQ]QQQQ--QQ	Q
QQQQ
QQQ--QQ$Q
QQQ	,--QQ
Q--sQ]Q%P
QQQQ--QQ	Q
QQQQ
QQQ--QQ&Q
QQQ	,-Q$--QQ
Q--sQ]Q%P	QQQQ--QQ	Q
QQQQ
QQQ--QQ&Q
QQQ	,-Q$--QQ
Q--sQ]QQQQ--QQ	Q
QQQQ
QQQ--QQQ
QQQ	,--QQ
Q--sQ]Q'P	QQ	Q
Q--QQQ
Q(---sQ]Q'P	QQ	Q
Q(--QQQ
Q(---sQ]QQQQ--Q)Q*Q+Q--QQ	Q
QQQQ
QQQQ)Q*,--QQQ
QQ)Q*,--QQ
QQQ	,--sQ]Q,QQQ--Q-Q	Q
QQQQ
QQQ--QQ.QQ	Q/-QQQ
QQQ	,--QQ
Q--sQ,QQQ--Q-Q	Q
QQQQ
QQQ--QQ.QQ	Q/-QQQ
QQQ	,--QQ
Q--sQ]Q,QQQ--Q-Q	Q
QQQQ
QQQ--QQ.QQ	Q/-QQQ
QQQ	,--QQ
Q--sQ]QQQQ--QQ	Q
QQQQ
QQQQ0Q1Q2Q3Q4---QQ
QQQ	,--sQ]QQQQ5Q6Q7Q8---QQ	Q
QQQQ
QQQ--QQ
QQQ	,--s Q9Q:\!OD2s#Q]QQ;Q\#Q<Q=Q>Q?QQ@Q0QAQB---QQ	Q
QQQ;Q
QQQ--QQ
QQQ	,--s$Q]QQCQ
QQ
Q-QDQ
QEQF]QGQCQ
QQHQI--QQJQ
QQQD,QKQL---s%Q]QQMQQNQ<QO--QQPQ
QQ
QQQM-QQQ
QEQF]QQMQGQPQ
Q--QQJQ
QQQQ,QKQL---s&Q]QQQ\Q*QQQRP
--QQ	Q
QQQQ
QQQ--QQSQ
QQQ	,QKQL---s'Q]QQQ
\Q*QQQRP
--QQ	Q
QQQQ
QQQ--QQSQ
QQQ	,QKQL---s(Q]QQQ
\QT*QQQRP
--QQ	Q
QQQQ
QQQ--QQSQ
QQQ	,QKQL---s)Q]QQQ\QQQRP
--QQ	Q
QQQQ
QQQ--QQSQ
QQQ	,QKQL---s*Q]QQQ\QQUQ6Q7QV---QQ	Q
QQQQ
QQQ--QQSQ
QQQ	,QKQL---s+Q]QQWQ
QX-QYQ
QZQQW,--QQ
QQQY,--s,Q[Q\\!OZ2s.Q]QQQQ--QQ	Q
\.QQQ
QQQ--QQQ
QQQ	,--QQ
Q--s/Q]s0Q^s1Q_s2\1Q`ks3Qas4Qbs5Qcs6Qds7Qes8Qfs9Qgs:Qhs;Qis<Qjs=Qks>Qls?Qms@QnsAQosBQpsCQqsDQrsEQssFQtsGQusHQvsIQ�QwksJ\KO�2Qx2sM\KO�2Qy2sN\KO�2Qz2sO\KO�2Q{2sPQ|sQQ}sRQ~sSQsTQ�sUQ�sVQ�sWQ�sXQ�sYQ�sZQ�s[Q�s\Q�s]Q�s^Q�s_\`O�2\KO�2Q�22scQ�sd\`O�2\KO�2\eQ�2Q�222sf\eQ�2Q�2sg\O�2\i\KO�2\jO�\KO�Q�2Q�2222sm\O�2\i\KO�2\jO�\KO�Q�2Q�2222sn\oQ�2sp\O�2\i\KO�2Q�222sqQ�srQ�ssQ�stQ�suUsvP!)��ConfigDictTesti�	r r�r��form1r.z%(levelname)s ++ %(message)srBr�r��logging.StreamHandlerr~r,r�r8zext://sys.stdoutrvr��loggersr<r:zext://sys.stdbout�NTOSET�WRANING�misspelled_name�()z.ExceptionFormatterz"%(levelname)s:%(name)s:%(message)s�form2z.formatFunc�form3�hand2z.CustomHandlerr�zinvalid parameter namerfr��compiler�incrementalr��filters�filt1rH�true_formatters�handler_configszcfg://true_formatterszcfg://handler_configs[hand1]r�rArB�
terminator�!
z%(message)s ++ %(customfield)sr�r{�defaultvaluec�8``�\sQsQsnQsU1QksQsUsU9s!)�ConfigDictTest.CustomFormatterir�c�$:�[RU_U2!r)r�r.�rFr�r�s&&�rJr.�%ConfigDictTest.CustomFormatter.formats����7�>�&�)�)ror�)	rwrxryrz�custom_propertyr.r{r|r�r�s@@rJ�CustomFormatterr�s������	*�	*ror��custom�style�{r��%Y-%m-%d %H:%M:%S�	{message}r��value�console�	bufferingzlogging.handlers.MemoryHandler�capacityr��
flushLevelr��mymoduler��true�mySimpleFormatterz1%(asctime)s (%(name)s) %(levelname)s: %(message)s�$�
fileGlobal�bufferGlobal�validate�my_test_logger_custom_formatterz.myCustomFormatterz2%(levelname)s:%(name)s:%(message)s:%(customfield)s�myvalue�h1�logging.FileHandler�ah�logging.handlers.QueueHandlerc�8``�\sQsQsnQU1QkksQsUsU9s!)�$ConfigDictTest.DeprecatedStrmHandleri�c�*:�[RU_UQ5P!�r�)r�r�)rF�strmr�s&&�rJr��-ConfigDictTest.DeprecatedStrmHandler.__init__�s����G��D��)ror�r�rwrxryrzr�r{r|r�r�s@@rJ�DeprecatedStrmHandlerr�s����	*�	*rorc�F�[OOU2P!r)r r$�
dictConfig)rFr&s&&rJr(�ConfigDictTest.apply_config
s�����!�!�$�'roc�V�[OU2oUOV22P!r)r �getHandlerByNamer�)rFrHr�rUs&&& rJ�
check_handler�ConfigDictTest.check_handler
s ���$�$�T�*�����a�%roc���[O29^tt^2oUOUO2UO	Q[
O2[
O2oUOUO22UOUO22UOQ,UQ5UO,2PPP2P!)%fhP!9h)r�r�r,)rr-r(r.rr r;r!r�rtr�rmr/s&  rJr1�ConfigDictTest.test_config0_ok
s���
�
$�
$�
&�
&�&����d�l�l�+����w��(=�(=�>��&�&�(�F��K�K��)�)�+�,��L�L��*�*�,�-��!�!��#��
"�
�
�!�!�"�%�'�
&�
&�
&�s�B4C�C.	�&C.	c��[O29^tt^2oUOU2[OQ2oUOUO
22UOUO
22UOQQ,UQ5UO,2PPP2P!)%fhP!9hr;r>r?s&&  rJr@�ConfigDictTest.test_config1_ok+
rBrCc�^�UO[UOUO2P!rrErss&rJrG�#ConfigDictTest.test_config2_failure:
rIroc�^�UO[UOUO2P!r)rvr�r(�config2arss&rJ�test_config2a_failure�$ConfigDictTest.test_config2a_failure>
������)�T�%6�%6��
�
�Froc�^�UO[UOUO2P!r)rvr�r(�config2brss&rJ�test_config2b_failure�$ConfigDictTest.test_config2b_failureB
rroc�^�UO[UOUO2P!rrKrss&rJrM�#ConfigDictTest.test_config3_failureF
rIroc��[O29^tt^2oUOUO2UO	Q[
O2[2g[c[
OQ2Lh9h[OO]2SOSO2Q2SO,2PPP2P!)%fhP!9h)r�rQrR)rr-r(rSrr r;rrTr�rUrVr^r\rm�rFr0s& rJrW�ConfigDictTest.test_config4_okJ
s���
�
$�
$�
&�
&�&����d�l�l�+����w��(=�(=�>�
2�"�n�$���
2��!�!�.�1�
2���J�J�O�O�A�����V�_�_�.�A�
C�
�!�!�"�%�'�
&�
&�
&�s6�<C'�
A&�&	B
�0B
�C'�	B
�
AC'�'C8	�0C8	c��[O29^tt^2oUOUO2[	2g[c[
OQ2Lh9h[OO]2SOSO2Q2SO,2PPP2P!)%fhP!9hrP)
rr-r(�config4arr rTr�rUrVr^r\rmr"s& rJ�test_config4a_ok�ConfigDictTest.test_config4a_okZ
s���
�
$�
$�
&�
&�&����d�m�m�,�
2�"�n�$���
2��!�!�.�1�
2���J�J�O�O�A�����V�_�_�.�A�
C�
�!�!�"�%�'�
&�
&�
&�s5�C�
A�	A*�A*�'C�)A*�*AC�C	�C	c�l�UOUOQ5UOQ[2P!)r[r�)r@r\rr�rss&rJr]�ConfigDictTest.test_config5_oki
s'�����D�L�L��1����7�M�2roc��QoUO[U29^tt^2UOUOQ5PPP2P!)%fhP!9h)z�Support for custom logging handlers with the 'strm' argument is deprecated and scheduled for removal in Python 3.16. Define handlers with the 'stream' argument instead.r[)�assertWarnsRegex�DeprecationWarningr@�.config_custom_handler_with_deprecated_strm_arg)rFr2s& rJ�5test_deprecation_warning_custom_handler_with_strm_arg�DConfigDictTest.test_deprecation_warning_custom_handler_with_strm_argm
sI��
B�	�
�
"�
"�#5�s�
;�
;�� � ��([�([� �\�<�
;�
;�
;�s�A	�	A	�A	c�^�UO[UOUO2P!r)rvr�r(rarss&rJ�test_config6_failure�#ConfigDictTest.test_config6_failurev
s�����)�T�%6�%6����Eroc���[O29^tt^2oUOUO2[O
Q2oUO
UO22UOUO22UOQQ,UQ5UO,2PPP2[O29^tt^2oUOUO2UOQ[O2[O
Q2oUOUO2[O
Q2oUO
UO22UOUO22UOQQ,UQ5UO,2PPP2P!)%fhCK9h)%fhP!9h)r<r�r�rfr=r,�r�r��r�r�)rr-r(r�r r!r�rtr�rmrkrr;rErr/s&  rJrn�ConfigDictTest.test_config7_oky
s���
�
$�
$�
&�
&�&����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%�BG�C'G�G	�G	�G0	�(G0	c�b�[O29^tt^2oUOUO2[O
Q2oUO
UO22UOUO22UOQQ,UQ5UO,2PPP2[O29^tt^2oUOUO2UOQ[O2[O
Q2oUOUO2UO
UO22UOUO22[O
Q2oUO
UO22UOUO22UO,QNUQ5UO,2PPP2P!)%fhCK]9h)%fhP!9h)r<r�r�rfr=r,)r4r5�r�r��r�r�)rr-r(r�r r!r�rtr�rmrurr;r�rr/s&  rJ�test_config_8_ok�ConfigDictTest.test_config_8_ok�
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%�BH	�D%H�	H	�H	�H.	�&H.	c�J�[O29^tt^2oUOUO2UO	Q[
O2[
OQ2o[
OQ2oUOUO22UOUO22UOUO22UO,QNUQ5UO,2PPP2[O29^tt^2oUOUO2UO	Q[
O2[
OQ2oUOUO2UOUO22UOUO22[
OQ2oUOUO22UOUO22WOUO22UO,QNUQ5UO,2PPP2P!)%fhCK|9h)%fhP!9h)r�r<rer�rfrgrh)rr-r(rirr r;r!r�rtr�rjrm�config8ar�rrls&   rJ�test_config_8a_ok� ConfigDictTest.test_config_8a_ok�
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=�/EJ�=J	�J	�J"	�J"	c��[O29^tt^2oUOUO2UO	Q[
O2[
OQ2oUOUO22UO,UQ5UOUO2UOUO22UO,UQ5UOUO2UOUO22UOQ,UQ5PPP2P!)%fhP!9h)r�r<r�r4)
rr-r(r}rr r;r!r�rtrm�config9a�config9br/s&  rJ�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�DE�E	�E	c���[O29^tt^2oUOUO2UO	Q[
O2[
OQ2oUOUO22[
OQ2oUOUO22[
OQ2oUOUO22[
OQ2oUOUO22UOQQ,UQ5PPP2P!)%fhP!9h�r�r<r�rfzcompiler.parser.codegenr�)r�r�r5)rr-r(�config10rr r;r!r�rtr�rmr/s&  rJ�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�E	�E	c�>�UOUO2P!r)r@�config11rss&rJ�test_config11_ok�ConfigDictTest.test_config11_ok
s�����T�]�]�+roc�^�UO[UOUO2P!r)rvr�r(�config12rss&rJ�test_config12_failure�$ConfigDictTest.test_config12_failure������)�T�%6�%6��
�
�Froc�^�UO[UOUO2P!r)rvr�r(�config13rss&rJ�test_config13_failure�$ConfigDictTest.test_config13_failurerRroc��[O29^tt^2oUOUO2[O
Q*oUO
UOQ2UO
UOQ2[OQ2UOUO2Q2PPP2P!)%fhP!9h)r�rBr��Exclamationz
Exclamation!
)rr-r(�config14r r%r^rAr�r�r�r\)rFr0rUs&  rJ�test_config14_ok�ConfigDictTest.test_config14_oks���
�
$�
$�
&�
&�&����d�m�m�,��!�!�'�*�A����Q�U�U�E�*����Q�\�\�5�1��O�O�M�*������� 1�3C�D�
'�
&�
&�
&�s�B!C
�
C	�C	c�b�UO29^tt^2[QQ2oQ]QQQQQUQQ	--Q
QQ,--oUOU2UOU2PPP2[OO
]*oUO
[UW2P!)%fhKJ9h)r�rqr�rBr'r�r��filenamer�rrv)rsrnr(r rvrBr�r)rFrmr$r�s&   rJ�test_config15_ok�ConfigDictTest.test_config15_oks���
�
+�
+�
-�
-���(9�:�B��1����!6�"�B�"�G���������F�
���f�%����f�%�%.�(�,�,�'�'��*�����(�'�2�6�+.�
-�s�AB�B.	�'B.	c�|�UOUO2[OQ*oUOO[OQQQQ-22oUOUQ2UOO[OQQ-22oUOUQ2P!)r�r2�Hellor{r|zHello ++ customvaluezHello ++ defaultvalue)r(�config16r r%r~r.r�r^)rFrUrs&  rJ�test_config16_ok�ConfigDictTest.test_config16_ok8s������$�-�-�(����g�&�����#�#�G�$9�$9�
�G�]�M�:�%<�=������!7�8����#�#�G�$9�$9�
�G��%�������!8�9roc��UOUO2[OQ*oUO	UO
OQ2P!)r�r�)r(�config17r r%r^r~r�rys& rJ�test_config17_ok�ConfigDictTest.test_config17_okFs>�����$�-�-�(����g�&��������4�4�g�>roc���UOUO2[OQ2O]*oUOUO[O2P!)r�)r(�config18r r!rBr^r�r��rFr�s& rJ�test_config18_ok�ConfigDictTest.test_config18_okKsI�����$�-�-�(��#�#�J�/�8�8��;������+�+�W�]�]�;roc��UOQ2o[OO]U2oUO	2UOUOO[O2QQ5UOoUOO2[OQU1QQ5o[OQ[!U22oVa*o]o[!U2o	U	]6�c&UO#VxP2o
V�*
oV�*o	J,UO%2UOOQ2[OO'2[(O*U2P!SOOQ2[OO'2[(O*S2h9h)rzthe listener did not start�r2r�g@r�r�)r�r r$�listenr�rErpr�rr�rKrPrI�create_connectionr�r�r_�sendrN�
stopListeningrrh)rF�text�verifyr^rKr�r�rl�	sentsofar�left�sents&&&        rJ�setup_via_listener�!ConfigDictTest.setup_via_listenerPsF���{�{�7�#���N�N�!�!�!�V�,��	���	���������W�%9�%9�:�8�	�	:��v�v��	���
�
��	,��+�+�[�$�,?��M�D��;�;�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�$AF�:5F�AGc���[O29^tt^2oUO[OUO
22UO
Q[O2[OQ2oUOUO22[OQ2oUOUO22[OQ2oUOUO22[OQ2oUOUO22UOQQ,UQ5PPP2P!)%fhP!9hrF)rr-ry�json�dumpsrGrr r;r!r�rtr�rmr/s&  rJ�test_listen_config_10_ok�'ConfigDictTest.test_listen_config_10_okls
��
�
$�
$�
&�
&�&��#�#�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�D9E"�"E3	�+E3	c���[O29^tt^2oUO[O[
O22[OQ2oUOUO22UOUO22UOQQ,UQ5UO,2PPP2P!)%fhP!9hr;)
rr-ryr"r#rr�r r!r�rtr�rmr/s&  rJ�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��*�*�,�-��!�!���#��
"�
�

�!�!�"�%�'�
&�
&�
&�s�B.C�C(	� C(	c�"�QoQo[OQ2o[O[O
2o[O29^tt^2oUOVA2UOUO22UOUO22PPP2UO,WQ5UOQQ,QQ5[O29^tt^2oUOU2[OQ2oUOUO22UOUO22PPP2UOQQ	,UQ5UOQQ,QQ5[O29^tt^2oUOUPPP/*U2[OQ2oUOUO22UOUO22PPP2UOQ
Q,UQ5UOQQ,QQ5P!)%fhCK�9h)%fhCK9h)%fhKd9h)c��P!rr���stuffs&rJ�verify_fail�6ConfigDictTest.test_listen_verify.<locals>.verify_fail�s��roc��UPPP/*!rr�r�s&rJ�verify_reverse�9ConfigDictTest.test_listen_verify.<locals>.verify_reverse�s����2��;�ror<r�r)rgr=r,r4r5r8r9)
r r!r"r#rr�rr-ryr�rtr�rm)rFr�r�r%�to_sendr0s&     rJ�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'�
&�
&��'�
&�
&��$'�
&�s9�AI�<A&I*�1A1I>�I'	�I'	�*I;	�3I;	�>J	�J	c���[OOP2oP	Um[O
29^tt^2oUO
2UOUOO[O2QQ5[OU2UOUO[2PPP2P!)%fhP!9h)rqz'the listener did not report the failurero)r r$rpr�r�catch_threading_exceptionr�rErpr�rrMrhr2�exc_type�
OverflowError)rFr^�cms&  rJ�test_listen_server_error�'ConfigDictTest.test_listen_server_error�s���
�N�N�!�!�"�%�����
�
7�
7�
9�
9�R�
�G�G�I��O�O�A�G�G�L�L��)>�)>�?� I�
�
K��(�(��+��M�M�"�+�+�}�5�:�
9�
9�
9�s�BC�C!	�C!	c�^�UO[UOUO2P!r)rvr�r(�
bad_formatrss&rJ�test_bad_format�ConfigDictTest.test_bad_format�s�����*�d�&7�&7����Iroc��[OUO2oQUQ*Q*Q$UOU2[O
Q2O]*oUOUO[O2UOUOO[O2UO[[O22QQ,2P!)z-${asctime} (${name}) ${levelname}: ${message}r�r�r.r�r�r�)r&�deepcopyr�r(r r!rBr�r�rur~�_style�StringTemplateStyler^�sorted�getHandlerNames�rFr$r�s&  rJ�!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�	9roc���UOUO2[OQ2O]*oUOUO[2P!�r�)r(�custom_formatter_class_validater r!rBr�r~rrks& rJ�)test_custom_formatter_class_with_validate�8ConfigDictTest.test_custom_formatter_class_with_validate�sJ�����$�>�>�?��#�#�$E�F�O�O�PQ�R�����g�/�/�1C�Droc���UOUO2[OQ2O]*oUOUO[2P!r�)r(� custom_formatter_class_validate2r r!rBr�r~rrks& rJ�*test_custom_formatter_class_with_validate2�9ConfigDictTest.test_custom_formatter_class_with_validate2�sJ�����$�?�?�@��#�#�$E�F�O�O�PQ�R�����g�/�/�1C�Droc��UOO2oQUQ*Q*Q$UOU2[OQ2O
]*oUO
UO[2P!)r�r�r�r�r�)	r�r&r(r r!rBr�r~rr�s&  rJ�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�Droc�^�UO[UOUO2P!r)rvr�r(� custom_formatter_class_validate3rss&rJ�*test_custom_formatter_class_with_validate3�9ConfigDictTest.test_custom_formatter_class_with_validate3�s �����*�d�&7�&7��9^�9^�_roc�^�UO[UOUO2P!r)rvr�r(�custom_formatter_with_functionrss&rJ�,test_custom_formatter_function_with_validate�;ConfigDictTest.test_custom_formatter_function_with_validate� �����*�d�&7�&7��9\�9\�]roc�^�UO[UOUO2P!r)rvr�r(�custom_formatter_with_defaultsrss&rJ�,test_custom_formatter_function_with_defaults�;ConfigDictTest.test_custom_formatter_function_with_defaultsr�roc+��	�QQAQ,QBNQQQQ]Q]Q	]	Q
]Q]Q]Q
] P]
QQQQ]Q]Q	]	P]
QQCQQ]Q]Q]---
QQCQQQQ,Q,Q,QDN-o[OOU2oUOUO	Q2]2UOUO	Q2Q2UOUO	Q 2Q2UOUO	Q!2Q2UOUO	Q"2Q2UOUO	Q#2]2UOUO	Q$2]2UOUO	Q%2]	2UOUO	Q&2]
2UOUO	Q'2Q2UOUO	Q(2Q2UOUO	Q)2Q2UOUO	Q*2]2UOUO	Q+2]2UOUO	Q,2]	2UOUO	Q-2]
2UOUO	Q.2Q2UOUO	Q/2Q2UOUO	Q02Q2UOUO	Q12Q2UOUO	Q22]2UOUO	Q32]2UOUO	Q42]2UOUO	Q52]2UOUO	Q62Q2UOUO	Q72Q2UOUO	Q82]2UOUO	Q92]2UO	Q:2oUOUO]2,QBN2UO
[UOQ;2UO
[UOQ<2UO
[UOQ=2UO
[UOQ>2UO
[UOQ?2UO
[UOQ@2P!)E�atuple�alistr��b�adictrTr�r�zalpha numeric 1 with spacesualpha numeric 1 %( - © ©ß¯zalpha numeric ] 1 with spacesu"alpha ]] numeric 1 %( - © ©ß¯]u# alpha [ numeric 1 %( - © ©ß¯] z alpha �nest4�somelist�grUr��j�somedictza with 1 and spaceza with ( and space�nest1�nest2r �lr�r��nest3zcfg://atuple[1]zcfg://alist[1]zcfg://nest1[1][0]zcfg://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]z"cfg://adict[nest4][somelist][1][0]z"cfg://adict[nest4][somelist][1][1]zcfg://adict[nest4][somelist][2]zcfg://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 %( - © ©ß¯] ])rqr��)r�r��c)r�)rUr�r�)�ozcfg://alist�p)	r r$�BaseConfiguratorr^�convert�poprv�KeyErrorr�)rFrT�bcr!s&   rJ�test_baseconfig�ConfigDictTest.test_baseconfigsB���i��_���S�#�q�-��0�1�/�"�4�r�5���B��R����c�1�1�A�4�q����"8���a�,�q�,�q�"�
��,
�+��c�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�eroc	��]QHGoQQ[O2oUQQQ,2oUQQ,Q	5oQ
]QQQ
UQU--QQQQQ,--o[O
29^tt^2oUO
U2[OQ2PPP2UOWO2Q2P!)%fhK29h)r)�
namedtuplec�@``�\sQsQsnU1QksU1QksQsUsU9s!)�1ConfigDictTest.test_namedtuple.<locals>.MyHandleriNc�8:�[RU_U-U@VmP!r)r�r��resource)rFr�rjrkr�s&&*,�rJr��:ConfigDictTest.test_namedtuple.<locals>.MyHandler.__init__Os����� �$�1�&�1�,4�
roc�:�U9OQUOO0*
tm[RU_U2!�� )r2r��typer�rxr�s&&�rJrx�6ConfigDictTest.test_namedtuple.<locals>.MyHandler.emitSs2����
�
��$�-�-�"4�"4�!5�6�6�
��w�|�F�+�+ro)r�r�r�s@@rJ�	MyHandlerr�Ns����
5�
,�
,ror��Resourcer��labels�my_typer�)r�r�r�rB�	myhandlerr�r�rvr,r�zsome logzsome log my_type
)
�collectionsr�r r;rr3r(r�r^r\)rFr�r�r�r�r$r6s&      rJ�test_namedtuple�ConfigDictTest.test_namedtupleJs���*�	,��-�-�	,��j�6�8�*<�=����C�5�9��
�q����)�����
�g�v�z�K�=�A�	
���
$�
$�
&�
&�&����f�%��L�L��$�'�	
������*�,@�A�'�
&�s�'(B9�9C		�C		c	�v�QoUOQ]QQQQU,--2,[O2mP!)c��]!r�r�)r�s&rJr��AConfigDictTest.test_config_callable_filter_works.<locals>.filter_js��ror�rvr,r:r��r(r r!r��rFr�s& rJ�!test_config_callable_filter_works�0ConfigDictTest.test_config_callable_filter_worksisA��	�����q�&�7�G�Y��	�"J�
�	�')�����#roc	��[OQ2oUOQ]QQQQU,--2,[O2mP!)r�r�rvr,r:r�)r r�r(r!r�r�s& rJ�test_config_filter_works�'ConfigDictTest.test_config_filter_worksrsJ���.�.��-������q�&�7�G�Y��	�"J�
�	�')�����#roc	��QQ2oU2oUOQ]QQQQU,--2,[O2mP!)c�(`�\sQsQsnQsQsUsP!)�BConfigDictTest.test_config_filter_method_works.<locals>.FakeFilteri{c��]!r�r�)rFr�s&&rJr��IConfigDictTest.test_config_filter_method_works.<locals>.FakeFilter.filter|s��ror�rr}s@rJ�
FakeFilterr�{s����
�
ror�r�rvr,r:r�r�)rFr�r�s&  rJ�test_config_filter_method_works�.ConfigDictTest.test_config_filter_method_workszsO��	�	��,������q�&�7�G�Y��	�"J�
�	�')�����#roc
��QQ2oP]U21FD-oUO[UOQ]QQQQU,--2J/	P!)c��\sQsQsQsP!)�;ConfigDictTest.test_invalid_type_raises.<locals>.NotAFilteri�r�r�r�rorJ�
NotAFilterr��s��$ror�r�rvr,r:r�)rvr�r()rFr�r�s&  rJ�test_invalid_type_raises�'ConfigDictTest.test_invalid_type_raises�sL�����a���.�G������!�!��A�v���)�g�Y�'O�P�
�/roc�$�[OUO2o[QQ2oVCQ*Q*Q$UdVQ*Q*Q$UdV#Q*Q*Q$PoUO	U2[
OQ2oUO[[
O22QQ,2UOUO2UOO2[
OQ2[
OQ	2[
OQ
2[ O"[ O$Q2%c.UOO&O)2%fJWUOO&O+2[-UQQ
59^tt^2oUO/2O12oPPP2UOW,QN2U%cUOO32[
OQ2oU%cUO5[6V�2P!UO5[8O:U2P!)%fhK�9hS%cSOO32[
OQ2oS%cSO5[6X�2hSO5[8O:S2h9h)r�ztest_logging-cqh-rBr�r]r�r��listenerrArB�bazzqueue not emptyrr�)rArBr)r&r��config_queue_handlerrnr(r r
r^r�r��assertIsNotNonerr�r�r�r�r�sleeping_retryr�r��emptyr�r�rer]rjr�rrir)	rF�qspec�lspec�cdrm�qhr�rrUs	&&&      rJ�do_queuehandler_configuration�,ConfigDictTest.do_queuehandler_configuration�s��
�]�]�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�.�sC�/C8J�('J�:J�J�-J�J	�J	�J�L�7L�8Lc	���[2[2,oQQ,Tt,tFDoQ[QU0Q]
-MJ	ooQ[Q*QPQPQP	-oP[Q	*[Q
*,UNUN3oP[Q*U[1o[O
VV2FDvqxUO
Vx2J	P][PQ1oP][PQ
1o[O
VV2FDmvqxUeUeJUO[29^tt^2o	UO
Vx2PPP2[W	O2o
UOU
Q2Jo	P!ttoh)%fhKB9h)r�r�r�r�r�z.listenerMakerr�r�r�z.queueMakerz.CustomQueuez.CustomListenerrArBz Unable to configure handler 'ah')
r�r�rwr��	itertools�productrr0rvr�r�rTr^)rF�qsr��dqs�dl�qvalues�lvaluesrr	�ctxr2s&          rJ�test_config_queue_handler�(ConfigDictTest.test_config_queue_handler�sj���m�0�2�
3��(�*?�@�B�@�3���
�!�C�5�)�9�b�9�@�	�B�
�(�-�-��D��D�#�T�	
����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�E�E	�E'
� E'
c
�>�UOQ]QQQQQU---2P!)r�rB�queue_listenerr�rr�)r()rFrs&&rJ�*_apply_simple_queue_listener_configuration�9ConfigDictTest._apply_simple_queue_listener_configuration�s5������q�� ��<��U�#��
�	rozmultiprocessing.Managerc	�J�QQQP-[O2[O2[2[	21FDGoUOUQ59^tt^2UO
U2UO2PPP2JI	P!)%fhJ^9h)r�zqueue.Queuer��r)r�r��SimpleQueuer�r��subTestr�assert_not_called�rFr"rs&& rJ�Atest_config_queue_handler_does_not_create_multiprocessing_manager�PConfigDictTest.test_config_queue_handler_does_not_create_multiprocessing_manager�s����=�)�R�0��K�K�M�����
$�%� �"�
�E����E��*�*��?�?��F��)�)�+�+�*�
�+�*�*�s�!"B	�B"
�B"
c�b�[2[21FDmoUOUQ59^tt^2UO[29^tt^2UOU2UO
2PPP2PPP2Jo	P!)%fhK9h)%fhJ�9h)r)r�r�r rvr�rr!r"s&& rJ�Ptest_config_queue_handler_invalid_config_does_not_create_multiprocessing_manager�_ConfigDictTest.test_config_queue_handler_invalid_config_does_not_create_multiprocessing_manager�sq���h� 8� :�;�E����E��*�*�D�,=�,=�j�,I�,I��?�?��F��)�)�+�-J�*�*�<�,I�,I��*�*�*�s/�B	�"B

�4B	�
B�B�B	�B.
�&B.
z@requires a debug build for testing assertions in multiprocessingc��]PHo[O%cQ,oL,QNoSFDoUOUQ59^tt^2UOU2oUO2oUO
[29^tt^2UOU2PPP2PPP2J�	P!)%fhK9h)%fhJ�9h)r�spawn��start_method�r)r��
forkserver)	�multiprocessingr�
MS_WINDOWSr �get_contextrrvr�r)rFr.�
start_methodsr+rrs&     rJ�?test_config_reject_simple_queue_handler_multiprocessing_context�NConfigDictTest.test_config_reject_simple_queue_handler_multiprocessing_context�s���	�����$�I�M�;�M�)�L����<��8�8�%�1�1�,�?�����)���&�&�z�2�2��C�C�E�J�3�9�8�*�3�2��9�8�8�s1�AB?	�B,
�B?	�,B<�5B<�7B?	�?C
�C
c��[O%cQ,oL,QNoSFD�oUOUQ59^tt^2[OU2oUO29^tt^2oUO
2o,oUO]UOUQ1]Q59^tt^2UOUO]<Q52PPP2UOUO22PPP2UO[W2]2PPP2J�	P!)%fhK`9h)%fhKL9h)%fhCJ:9h)r)r*rt)�initializer�initargs�maxtasksperchildr�r,)rr/r r.r0�Managerr��Pool�_mpinit_issue121723rr�rErr^r_)rFr1r+rr"�qrGs&      rJ�1test_config_queue_handler_multiprocessing_context�@ConfigDictTest.test_config_queue_handler_multiprocessing_contexts������$�I�M�;�M�)�L����<��8�8�%�1�1�,�?���[�[�]�]�g��
�
��A� �G����!��1I�1I�,-�v�;��"�L�L����q�u�u�R�u�'8�9�L��O�O�A�G�G�I�.�#�� � ��W��q�1�9�8�*�L�L��	#�]��9�8�8�sN�/E	�/<D8
�+"D%�
'D8
�4#E	�%D5�.D5�0D8
�8E�E�E	�E
�E
c
��[OOQ]QP	QQQQQU--QQQ,QQ	--2[O2O	U2P!)
r�r�rB�
log_to_parentr�rr�rvr,r:)r r$r
r!r�)r�message_to_logs&&rJr:�"ConfigDictTest._mpinit_issue121723,sl��	���!�!��q�&�����<��U�"��
�Z�/�!2�G�W�E�
#
�
	�	���� � ��0roc	��[OUO2o]QHGoGoU2oU2O	2oU2O
2oVEU1FCDBo[QQ2oV�Q*Q*Q$VqQ*Q*Q$Po	UOU2[OQ2o	UO[[O22QQ,2UOU	O2UO!U	O"U2UO!U	OO"U2[OQ2o
U
%cUO%[&V�2CJ"UO%[(O*U2CJE	P![OQ2o
S
%cSO%[&X�2hSO%[(O*S2h9h)	r)r�r8r�ztest_logging-cmpqh-rBr�r]r�r�)r&r�rr.r�r8�
JoinableQueuernr(r r
r^r�r�rrr2r�r�rrir)rFr
�MQ�MM�q1�q2�q3rrmrrUs&          rJ�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)�)H�8Hc��Q]QP
QQQQQQ--QQ	QQQQ,---o[OQ	2oUOUO2UO	U2UOUO2UO	Q]-2UOUO2UQUO	U2UOUO2P!)
r�r�rBr�r,r:r�r�r�r�)r r!r�rr(rE)rFr$r%s&  rJ�
test_90195�ConfigDictTest.test_90195[s���
�q�&�����W��4���
���W������
�� �"�"�3�'��������)����&�!�������)����9�a�.�)�������(��-�.����&�!�������)roc
��[OQ2[OQ2oQ]QQQQQUOQ2O2--Q	QQ,Q
Q--o[O
O
U2P!)�_multiprocessingr.r�rB�sinkr�rr�r)rvr,r:)r�
import_moduler0r�r r$r
)rF�mpr$s&  rJ�test_111615�ConfigDictTest.test_111615ys����#�#�$6�7�
�
(�
(�):�
;��
�q����<��R�^�^�G�4�:�:�<���
��V�H����
��	���!�!�&�)roc	��QQ[OO2oQQ-oQ]QQQU-UA-QQ	Q
QQ,--o[OO	U2[O
Q2oUO
UOU2P!)c�4``�\sQsQsnU1QksQsUsU9s!)�>ConfigDictTest.test_kwargs_passing.<locals>.CustomQueueHandleri�c�Z:�[RU_[O22V mP!r)r�r�r�r��
custom_kwargs�rFrjrkr�s&*,�rJr��GConfigDictTest.test_kwargs_passing.<locals>.CustomQueueHandler.__init__�s����� �����/�%+�"ro)rYrr�s@@rJ�CustomQueueHandlerrW�s����
,�
,ror\rArBr�rBr�r�rvr,r:)r rB�QueueHandlerr$r
r
r^rY)rFr\rYr$r�s&    rJ�test_kwargs_passing�"ConfigDictTest.test_kwargs_passing�s���	,��!1�!1�!>�!>�	,�
���
�
�q����/��#���
����X�J��
��	���!�!�&�)��*�*�8�4������.�.�
�>ror�r)wrwrxryrzr	rsr[r.r�rirFrrrLrSrr�r�r%r\rarkrur=r}rArBrGrKrOrTrYrbr r=r�rfrjr�r�r�r�r�r�rr;rr-r(rr1r@rGrrrMrWr&r]r.r1rnr:r>rCrHrLrPrUrZr^rcrgrlryr�requires_working_socketr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr�requires_subprocessrrrr#r&rrr�
skipUnless�Py_DEBUGr2r<�staticmethodr:rIrLrSr^r{r|r}s@rJr�r��	s����!0� I� I��,��	�1����9��
�
	���1��g��(��.�	�
�	��i��'��
��G�.	�1����9��
�
	���1��g��(��.�	�
�	���'��g�Y�!�
�	��i�
�+�G�8	�1����9��
�
	���1��g��(��.�	�
�	���'�!�
�
	��i��'��
�)�H�8	�1����9��
�
	���1��g��(��/�	�
�	���'��g�Y�!�
�	��i�
�+�G�8	�1����9��
�
	���1��g��(��.�	�
�	���'��g�Y�!�
�	��i�
�+�H�:	�1����9��
�
	���1��g��(��.�	�
�	���'��g�Y�!�
�	��i�
�+�H�8	�1����9��
�
	���1��/��(��.�	�
�	���'��g�Y�!�
�	��i�
�+�G�8	�1����x�"7�7��?��
�	���1��g��(��.�	�
�	��h��g�Y�
�!�G�0	�1����)��?��
��x�-�/��?��
��z��?��

�	���1��g��(��.�	�
��{��

�	��h��g�Y�
�7�H�F	�1����9��
�
	���(�%5�5��g��(��.�	�
�	���'��g�Y�!�
�	��i�
�+�G�:	�1����9��
�
	���(�%5�5��g��(��.��.��
�	���'��g�Y�!�
�	��i�
�-�G�<	�1����9��
�
	���1��g��(��.�	�
�	���'��g�Y� �
�	��i�
�+�G�<	�1�"�U����9��
�
	���1��g��(��.�	�
�	���'��g�Y��
� �
�	��i�
�1�G�>	�1�"�T����9��
�
	���1��g��(��.�	�
�	���'��g�Y��
� �
�	��i�
�1�H�<	�1����9��
�
	���1��g��)��.�	�
�	���)��g�Y�!�
�	��h�
�+�G�6	�1������)��
�
	���&�!�
�
�H� 	�1������&��
�
	���&�!�
�
�H�"	�1����9��
�
	���*��
�
	���1��g��(��.��W�I��
�	���'��W�I�!�
�	��i��'��
�7�H�F	�1����9��
�
	���1��g��(��.�	�
�	�.���4�
�	���'��g�Y�!�
�	��i�
�3�H�@	���9��
�
	���1��g��(��.�	�
�	�.���4�
�	���'��g�Y�!�
�	��i�
�1�H�>	�1����9��
�
	���1��g��(��.�	�
�	�.���4�
�	���'��g�Y�!�
�	��i�
�3�H�@	�1����9��
�
	���1��g��(��.���5� �%��	�
�	��i��'��
�'�H�8	�1����;��]�N�;��
�	���1��g��(��.�	�
�	��i��'��
�!�H�,*�'�+�+�*�	�1����o����.��+��%�w���

�	���1��h��(��.�	�
�	��i��'��
�+�H�8	�1����0����
��9��A��)����g��
�	�����[�M��V��
��H�2	�1����M���"�
�	���0����0��

��9��A��0��,����


�	�����^�,��V��
�-�J�B	�1����h�!6�6��>��E��
�	���0��W����,�	�
�	�-����W�I��V�0�
�#'�#�8	�1�����$9�9��>��E��
�	���0��W����,�	�
�	�-����W�I��V�0�
�#(�$�8	�1�����$8�8��>��E��
�	���0��W����,�	�
�	�-����W�I��V�0�
�#(�$�8	�1����j��>��E��
�	���0��W����,�	�
�	�-����W�I��V�0�
�#&�"�8	�1����j��N��]�I�6��
�	���0��W����,�	�
�	�-����W�I��V�0�
�#&�"�6	�1����.��
��8��T�F��	
�	��W����
���&*�� 5� 5�*�
	�1����8��
�
	���.��W����,�	�
�	�����W�I� �
�	��Y�
�+6�2�4(�&�&� &-�
&�F�G�G�F�&� 
&�3�]�F�&�< &�D+&�Z�&�(,�G�G�E�7�2:�?�
<�
,�8
�$�$�&��'��(
�$�$�&�&�'�&�
�$�$�&�<,�'�<,�|
�$�$�&�	6�'�	6�J�
9�E�
E�
E�`�^�^�Bf�HB�>)�)�	)��&/�P�0�0�2�� � �"�F�#�3�F�4	��0�0�2�� � �"�
�$�%�,�&�#�3�,�(�$�%�,�&�,��?�?�A��� � �"�
����)�)�,L�M�K�M�#��B�
K�$�?�?�A��� � �"�
����)�)�,L�M�2�M�#��B�
2�&�1��1� �?�?�A��� � �"�3�#��B�3�6*�<*�*?�?ror�c�.`�\sQsQsnQsQsQsUsP!)�ManagerTesti�c�t`�,nU1QkQ[O2o[OP2oUO[UO
[2UOU2UOQ2oUOQ2[OQ2UORQ,2P!)c�4:`�\sQsQsnQU1QkksQsUsP!)�6ManagerTest.test_manager_loggerclass.<locals>.MyLoggeri�c�,:�ROU2P!rr)rFr,r2rj�exc_info�extra�loggeds&&&&&&�rJ�_log�;ManagerTest.test_manager_loggerclass.<locals>.MyLogger._log�s����
�
�c�"ror�rv)rwrxryrzrnr{r|)r~rms@�rJ�MyLoggerri�s����
#�
#rorprzzshould appear in loggedzshould not appear in logged)
r rr8rv�	TypeError�setLoggerClassr0r!r�r^)rFrp�manr%rms&   @rJ�test_manager_loggerclass�$ManagerTest.test_manager_loggerclass�s������	#�w�~�~�	#��o�o�d�#�����)�S�%7�%7��=����8�$����v�&�����0�1����5�6�����";�!<�=roc��[OP2o[2oUOU2UO	UO
U2P!r)r r8r��setLogRecordFactoryr^�logRecordFactory)rFrsrjs&  rJ�test_set_log_record_factory�'ManagerTest.test_set_log_record_factory�s;���o�o�d�#���8������)�����-�-�x�8ror�)rwrxryrzrtryr{r|r}s@rJrfrf�s����>� 9�9rorfc�.`�\sQsQsnQsQsQsUsP!)�ChildLoggerTesti�c��[O2o[OQ2o[OQ2oUOQ2oUOQ2oUOU[OQ22UOU[OQ22UOQ2oUOQ2oUOQ2oUOU[OQ22UOU[OQ22UOVV2P!)�abczdef.ghi�xyzzuvw.xyz�def�ghi�abc.defzabc.def.ghi)r r!�getChildr2)rFr��l1�l2�c1�c2�c3s&      rJ�test_child_loggers�"ChildLoggerTest.test_child_loggers�s��������
�
�
�u�
%��
�
�
�y�
)��
�Z�Z��
��
�Z�Z�	�
"���
�
�b�'�+�+�E�2�3��
�
�b�'�+�+�I�6�7�
�[�[��
��
�[�[��
��
�[�[��
#���
�
�b�'�+�+�I�6�7��
�
�b�'�+�+�M�:�;��
�
�b�roc���[O2o[OQ2o[OQ2o[OQ2o[OQ2oUO2oV%.oUOVvU*2UO	V72UO2oUOU.U2UO2oUO[2U2P!)rA�foo.barzfoo.bar.baz.bozzrB)r r!�getChildrenr^�assertNotInrJ)rFr�r�r��l3�l4�kidsrjs&       rJ�test_get_children�!ChildLoggerTest.test_get_children�s��������
�
�
�u�
%��
�
�
�y�
)��
�
�
�1�
2��
�
�
�u�
%���}�}����8������(�?�3�����&��~�~������"��t�$��~�~���������%ror�)rwrxryrzr�r�r{r|r}s@rJr|r|�s����
�
&�
&ror|c��\sQsQsQsP!)�DerivedLogRecordi�r�r�r�rorJr�r��r�ror�c�4`�\sQsQsnQsQsQsQsUsP!)�LogRecordFactoryTesti�c��QQ[O2o[OU2U[2UmUOOUO
2[O2Um	P!)c�.`�\sQsQsnQsQsQsUsP!)�2LogRecordFactoryTest.setUp.<locals>.CheckingFilteri�c��VmP!r�r�)rFr�s&&rJr��;LogRecordFactoryTest.setUp.<locals>.CheckingFilter.__init__�s���roc�z�[U2oV OIc QU8QUO80o[U2gP	!)zUnexpected LogRecord type z, expected )r�r�rq)rFr�r^r2s&&  rJr��9LogRecordFactoryTest.setUp.<locals>.CheckingFilter.filter�s3����L���H�H�$�IJ� �H�H�&�C�#�C�.�(�ror�)rwrxryrzr�r�r{r|r}s@rJ�CheckingFilterr��s����
�
�
ror�)
r r�rrKr�r�r3r��getLogRecordFactory�orig_factory)rFr�s& rJrK�LogRecordFactoryTest.setUp�sV��
	�W�^�^�
	�	���t��$�%5�6������"�"�4�;�;�/�#�7�7�9��roc��UOOUO2[O	U2[
OUO2P!r)r3r�r�rrVr rwr�rss&rJrV�LogRecordFactoryTest.tearDown�s<�����%�%�d�k�k�2����$���#�#�D�$5�$5�6roc�$�UO[UOOUO	22[
O[2UOOUO	22UOQ,2P!)rv)rvr�r�)
rvrqr3r�rtr rwr�r�rmrss&rJ�test_logrecord_class�)LogRecordFactoryTest.test_logrecord_class�sn�����)�T�%5�%5�%=�%=��+�+�-�	/��#�#�$4�5������t�0�0�2�3����!�
�	ro)r�r�)	rwrxryrzrKrVr�r{r|r}s@rJr�r��s����:�$7�
�ror�c�\`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sQs
QsUsP!)
�QueueHandlerTestirc���[OU2[OP2Um[O
O
UO2UmQUm[OQ2Um
P
UOmUOO[O2UOOUO2P!)rq�que)rrKr�r�r rBr]�que_hdlrrHr!�
que_loggerr�r9r�rDrss&rJrK�QueueHandlerTest.setUps������t���[�[��_��
��(�(�5�5�d�j�j�A��
���	�!�+�+�E�2���$)����!���� � ����1����"�"�4�=�=�1roc�f�UOO2[OU2P!r)r�rNrrVrss&rJrV�QueueHandlerTest.tearDownr�roc��UOOUO22UO[O
UOO2UOOUO22UO[O
UOO2UO2oUOOU2UOO
2oUOU[O2UOUOUOO2UOUOUO1UP12P!r)r�r�rtrvr��Empty�
get_nowaitr�r�r�r r-r^rHr2rj)rFr2rs&  rJ�test_queue_handler�#QueueHandlerTest.test_queue_handlers��������d�/�/�1�2����%�+�+�t�z�z�'<�'<�=������T�.�.�0�1����%�+�+�t�z�z�'<�'<�=����!��������$��z�z�$�$�&�����d�G�$5�$5�6�������D�O�O�$8�$8�9����$�(�(�D�I�I�.��d��<roc��UO2o[O[O2oQoUO	UO
V!Q5o[OUO2oUOOU2UOOU2UOO2oUOVFO2UOVFO 2P!)z {name} -> {levelname}: {message})rH�	levelnamerw)rtr r�r�r.rHr=r>r�r@r�r�r�r�r^r2rw)rFr2r��log_format_str�
formatted_msgr~�
log_records&      rJ�test_formatting� QueueHandlerTest.test_formatting%s������!���(�(����9�	�;��&�-�-�4�9�9�8A�.�P�
��%�%�d�o�o�6�	��
�
�"�"�9�-�������$��Z�Z�*�*�,�
�������7�����(:�(:�;roc���[[O22o[OOUOU2oUO2UOOUO22UOOUO22UOOUO22UO2UO2UOUO[O QQ52UOUO[O"QQ52UOUO[O$QQ52UO'2[[O22oUO)[O$2[OOUOUP	Q5oUO2UOOUO22UOOUO22UOOUO22UO2UO+UO[O QQ52UO+UO[O"QQ52UOUO[O$QQ52UO'2P!SO2SO2h9hSO2h9h)r�)r
rwr�r�r�r�r�r�)rr�Matcherr rB�
QueueListenerr�r�r�r�rtr�rjrjrE�matchesr�r�r�rNr9r��rFr�rs&  rJ�test_queue_listener�$QueueHandlerTest.test_queue_listener2sB���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��
�
���/
�M�M�O��M�M�O��$
�M�M�O�s�A;L=�A;M"�="M�"M4c��[[O22o[OOUOU29^tt^2oUOU[OO
2UOUO2PPP2UOWO2UO2UOUO2P!)%fhKX9hr)rrr�r rBr�r�r�rrMr;rjr�s&  rJ�#test_queue_listener_context_manager�4QueueHandlerTest.test_queue_listener_context_managerTs����g�o�o�/�0��
�
�
�
+�
+�D�J�J��
@�
@�H��!�!�(�G�,<�,<�,J�,J�K�� � ��!1�!1�2�A�	
���(�*�*�+�	�
�
�����(�*�*�+�A�
@�s�AC(�(C8	�1C8	c���[[O22o[OOUOU29^tt^2oUO[UO2PPP2W9^tt^2UO[UO2PPP2UO2UO2P!)%fhKe9h)%fhKE9hr)rrr�r rBr�r�rvrr�rjr�s&  rJ�test_queue_listener_multi_start�0QueueHandlerTest.test_queue_listener_multi_start_s����g�o�o�/�0��
�
�
�
+�
+�D�J�J��
@�
@�H����l�H�N�N�;�A��X����l�H�N�N�;��	�����
�
��A�
@���X�s$�!C�!C#�C 	�C 	�#C3	�,C3	c���[OOUOUO2oUO2]]*UOOUO2P	Q5UO2UOUOO2O2O!Q2]2UOUOO2O2O!Q2]2P![c9oSoSOOSO2SQ5Po=CK	Po=hh9h)rq�rk��
stack_info�	Traceback�Stack)r rBr�r�r<r��ZeroDivisionErrorr�rTrtr�rjr^r8r\r�rb)rFrr��excs&   rJ�&test_queue_listener_with_StreamHandler�7QueueHandlerTest.test_queue_listener_with_StreamHandlerjs���#�#�1�1�$�*�*�d�n�n�M������	I�
��E�	
�����d�/�/�1�d��C��
�
��������-�-�/�5�5�7�=�=�k�J�A�N�������-�-�/�5�5�7�=�=�g�F��J��
!�	I��C��O�O�%�%�d�&7�&7�&9�C�%�H�H��	I�s�	D�	E�%E�&-E�Ec���UOOUO2UOO	UO
2[OOUOUO2oUO2UOOQ2UO2UOUOO2O!2Q2P!)r�zque -> ERROR: error)r�r@r?r�rDr<r rBr�r�r�r�rjr^r8r\r�)rFrs& rJ�*test_queue_listener_with_multiple_handlers�;QueueHandlerTest.test_queue_listener_with_multiple_handlersxs����
�
�"�"�4�#6�#6�7����"�"�4�>�>�2��#�#�1�1�$�*�*�d�m�m�L�����������g�&��
�
��������-�-�/�5�5�7�9N�Oro)rHr�r�r�)rwrxryrzr[rKrVr�r�r�r�r�r�r�r{r|r}s@rJr�r�sC����3��2� �
=�<� �D	,�	�K�	P�	Pror�r�)rc�`�\sQsQsn]s\Q2s\O\	OOQ2Q2s\O\	OOQ2Q2s
\Q2sQsQsQ	sUsP!)
�QueueListenerTesti�c�J�[OQU*2oUO[O2[OOU2oUO
U2[OOU2oUO2UOQ2UOQ2UOQ2UOQ2UOQ2UO2UOU2UO2P!)ztest_logger_with_id_%s�one�two�three�four�five)
r r!r9r:rBr]rDr�r�r�rjrOrN)�	log_queuerr%r�rs&&   rJ�
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�Oror�c��[UO2FD>o[O2oUO	V0O28QU802J@	UO
UO]UO*Q2P!�r�z&correct number of handled log messages)r��repeatr�r�r�rFr^�
call_count�rF�mock_handler�r�s&&  rJ�#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�
Groc�~�[O2[UO2FD^o[O
2oUO
V0O28QU802UO2UO2J`	UOUO]UO*Q2P!r�)r�*skip_if_broken_multiprocessing_synchronizer�r�r.r�r�rFrNrhr^r�r�s&&  rJ� test_handle_called_with_mp_queue�2QueueListenerTest.test_handle_called_with_mp_queue�s���
�>�>�@��4�;�;�'��+�1�1�3�	��"�"�9����A�.F�G����!��%�%�'�	(�

���[�3�3�Q����_�E�
Groc#�t �UO2w�J[Oc,t!h9h3hr�)r�r�r�)r�s&rJ�get_all_from_queue�$QueueListenerTest.get_all_from_queue�s3���
��#�.�.�0�0���;�;�
��	�
�s�8��5�5�8�5�8c�^�[O2[UO2FD�o[O
2oUO
V O28QU802[UOU22oUO2UO2,[OOO,,oSO!X4QSTt,tFD1o[#U[O$2%c
UO&LSMJ3	to*2J�	P!ttoh)r�z&Found unexpected messages in queue: %s)rr�r�r�r.r�r�rF�listr�rNrhr rBr��	_sentinelr4r�r-r2)rFr�r�rrjr�s&     rJ�$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�&D*�D*c�D�[O2o[OO	U2oUO2UO
2UO[29^tt^2UO2PPP2P!)%fhP!9hr)
r�r�r rBr�r�rjrvr��	task_done)rFr�rs&  rJ�test_calls_task_done_after_stop�1QueueListenerTest.test_calls_task_done_after_stop�sb�����
�I��'�'�5�5�i�@�H��N�N���M�M�O��"�"�:�.�.��#�#�%�/�.�.�.�s�3B�B	�B	r�)rwrxryrzr�rdr�rr�r rBr�r�r�r�r�r�r{r|r}s@rJr�r��s�������	�	�
�	�.
���g�&�&�4�4�h�	?�	G�
@�	G�
���g�&�&�4�4�h�	?�
	G�
@�
	G�
�	�
�	�	>�0	&�	&ror�c�2`�\sQsQsnQs\sQsQsUsP!)�UTCi�c��[!r)�ZERO�rF�dts&&rJ�	utcoffset�
UTC.utcoffset�s���roc��Q!)r�r�r�s&&rJ�tzname�
UTC.tzname�s��ror�)	rwrxryrzr�dstrr{r|r}s@rJr�r��s������C��ror�c�(`�\sQsQsnQsQsUsP!)�AssertErrorMessagei�c��UOQ,UN3-U@P!Sc'oSOS[S22Po=P!Po=hh9h)Nr�)rvr^r�)rFrTrwrjrkr�s&&&*, rJ�assert_error_message�'AssertErrorMessage.assert_error_message�sF��	.����b�2�4�2�6�2���	.����W�c�!�f�-�-��	.�s��A	�A	�A�A	r�)rwrxryrzr
r{r|r}s@rJrr�s����.�.rorc�`�\sQsQsnQsQQksQsQsQsQs	Qs
Q	sQ
sQs
QsQ
sQsQsQsQsQsUsP!)�
FormatterTesti�c��QQQ[OQ[OO	QQQ2Q]*QPQ	PQ
QQQ-UmQ
Q
Q--UmP!)rHzformatter.testr,�pathnamer��toz	dummy.ext�linenorkr�r2zMessage with %d %srjr�i�)r��placeholders)r r:rir�r��common�variantsrss&rJrK�FormatterTest.setUp�sc���$��W�]�]�������V�T�;�?��b����D��'��'�	
���
��$��
��
roc��[UO2oUd#UOUOU*2[O
U2!r)r�rrQrr r�)rFrHrs&& rJ�
get_record�FormatterTest.get_records<���d�k�k�"�����M�M�$�-�-��-�.��$�$�V�,�,roc��UO2o[OQ2oUOUO	U2Q2[OQ2oUO[UOU2UOUO22[OQ2oUOUO22[OQ2oUOUO22[OQ2oUOUO22P!)z${%(message)s}z${Message with 2 placeholders}z
%(random)s�%(asctime)sz%(asctime)-15sz%(asctime)#15s�
rr r=r^r.rvr�r��usesTimerE�rFr�r�s&  rJ�test_percent�FormatterTest.test_percents����O�O������.�/��������!��&F�G����l�+�����*�a�h�h��2��������&����m�,������
�
��%����.�/������
�
��%����.�/������
�
��%roc���UO2o[OQQQ5oUOUO	U2Q2[OQQQ5oUO[UOU2[OQQQ5oUOUO22[OQQQ5oUOUO22[OQQQ5oUOUO22[OQQQ5oUOUO22P!)	z
$%{message}%$r��r��$%Message with 2 placeholders%$z{random}r��	{asctime}z{asctime!s:15}z{asctime:15}rrs&  rJ�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������
�
��%roc���UO2o[OQQQ5oUOUO	U2Q2[OQQQ5oUOUO	U2Q2[OQQQ5oUOUO	U2Q2[OQQQ5oUO[UOU2UOUO22[OQQQ5oUOUO22[OQ	QQ5oUOUO22[OQQQ5oUOUO22[OQ
QQ5oUOUO22P!)�
${message}r�r!zMessage with 2 placeholdersz$messagez$$%${message}%$$r"z	${random}z
${asctime}z$asctimez${asctime}--rrs&  rJ�test_dollars�FormatterTest.test_dollars5s^���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������
�
��%roc��[OQ2oUOUOQ2[OQ2oUOUOQ2[OQ2oUOUOQ2[OQ2oUOUOQ2[OQQQ5oUOUOQ2[OQQQ5oUOUOQ2[OQQQ5oUOUOQ2[OQ	QQ5oUOUOQ	2[OQ
QQ5oUOUOQ
2[OQQQ5oUOUOQ2[OQQQ5oUOUOQ2[OQ
QQ5oUOUOQ
2[OQQQ5oUOUOQ2[OQQQ5oUOUOQ2[OQQQ5oUOUOQ2[OQQQ5oUOUOQ2[OQQQ5oUOUOQ2[OQQQ5oUOUOQ2[OQQQ5oUOUOQ2[OQQQ5oUOUOQ2[OQQQ5oUOUOQ2UO	[
[OQ2UO	[
[OQ2UO	[
[OQ2UO	[
[OQ2UO	[
[OQ2UO	[
[OQ2UO	[
[OQ2UO	[
[OQ2UO	[
[OQ 2UO
[
Q![OQ"QQ5UO
[
Q#[OQ$QQ5UO
[
Q%2UO	[
[OQ&QQ5UO
[
Q'[OQ(QQ5UO
[
Q)[OQ*QQ5UO	[
[OQ+QQ5UO	[
[OQ,QQ5UO	[
[OQ-QQ5UO	[
[OQ.QQ5UO
[
Q/[OQ0QQ5UO
[
Q1[OQ2QQ5UO	[
[OQ3QQ5UO	[
[OQ4QQ5UO	[
[OQ5QQ5UO	[
[OQ6QQ5UO	[
[OQ7QQ5UO	[
[OQ8QQ5UO	[
[OQ9QQ5UO	[
[OQ:QQ5UO	[
[OQ;QQ5UO
[
Q<[OQ=QQ5UO
[
Q<[OQ>QQ5UO
[
Q<[OQ?QQ5UO
[
Q#[OQQQ5UO	[
[OQ$QQ5UO
[
Q#[OQ@QQ5UO	[
[OQAQQ5P!)BzM%(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 fieldsrzinvalid 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 $.rAz	${asctime)r r=r^�_fmtrvr�r
r�s& rJ�test_format_validate�"FormatterTest.test_format_validateJs���
���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��Proc�h�,QNo,Q	No[V2FCDvq4[OV4QQ-Q5oUO2oUO	UOU2Q2UOQ2oUO	UOU2Q2[OV4Q5oUO2oUO
[UO
U2[OV4QQ-Q5oUOQ2oUO	UOU2Q2CJ	P!)
�%(custom)s %(message)sr��Default)r�r�z#Default Message with 2 placeholdersz 1234 Message with 2 placeholdersr!zNon-existing)r/z{custom} {message}z$custom $message)�%r�r�)r`r r=rr^r.rvr�)rF�fmts�stylesr�r�r�r�s&      rJ�test_defaults_parameter�%FormatterTest.test_defaults_parameter�s���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�,roc�V�UO[[OPPQ2P!)Nr�)rvr�r r=rss&rJ�test_invalid_style� FormatterTest.test_invalid_style�s�����*�g�&7�&7��t�S�Iroc
��UO2o[OQ]]]]]][2o[OUOP2O
22Um]{Um[OQ2o[OUmUOUOU2Q2UOUOUQ2Q2UOU2UOUO Q2P!)���%(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)rFr�rr�s&   rJ�	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�=�	�����������$=�>roc
��QQ[O2oUO2o[OQ]]]]]]{[2o[
OUOP2O22Um	U2o[
OUmUOUOU2Q2P!)c� �\sQsQsPsQsQsP!)�DFormatterTest.test_default_msec_format_none.<locals>.NoMsecFormatteriz%d/%m/%Y %H:%M:%Sr�)rwrxryrz�default_msec_format�default_time_formatr{r�rorJ�NoMsecFormatterrKs��"&��"5�rorNr:z21/04/1993 08:03:00)r r=rr<r=r�r>r?r@rArCrDr^rE)rFrNr�rr�s&    rJ�test_default_msec_format_none�+FormatterTest.test_default_msec_format_nones���	6�g�/�/�	6�
�O�O���
�
�
�t�Q��A�q�!�S�#�
>���K�K��
�
�d� 3� =� =� ?�@��	�����k�k���������a��*?�@roc��[OQQQQ5o[Q2FDbo[OQ2[O
QQU]**-2oUO
U2oUOQU2Jd	P!)	z!{asctime}.{msecs:03.0f} {message}r�r�)r�r�r�i�	g-C��6:?r2z
Message %dz.1000)r r=r�r�r�r�r.r�)rFr�r�r�rls&    rJ�test_issue_89047�FormatterTest.test_issue_89047sm�����"E�S�Zm�n���t��A��J�J�v���%�%�u�l�a�!�e�.D�&E�F�A������A����W�a�(�	roc
�<�QoSFD�vq#[Q29^tt^2oV$m[OQQ-2oPPP2UO	U29^tt^2UOWOU2UOUOUQ*2UOUO[UO2*
UOQ*QQ5PPP2J�	P!)%fhK�9h)%fhCJ9h)	��$�lH:ztime.time_nsr2rz�e��Ag@�@r�)�delta))rUgY@)l'$�T�rH:g8�@)�g�]�rH:�)l�)�T�rH:rY)
rrr r�r r^rBrA�assertAlmostEqualr0)rF�tests�ns�want�
patched_nsr�s&     rJ�/test_msecs_has_no_floating_point_precision_loss�=FormatterTest.test_msecs_has_no_floating_point_precision_losss���
���H�B��~�&�&�*�*,�'� �.�.��v��?��'����b�!�!�� � ����t�4�� � �����c��:��&�&�v�~�~��F�N�N�8K�'K�'-�|�|�c�'9�-1�'�3�"�!�	�&�&��"�!�!�s$�C6	�B	D		�6D
�?D
�	D
�D
c
��QoQ
o[OQU8QU8Q02o[QU2vqEoUO2o[	V%O2P	Q5FD�vqxUO
UQ59^tt^2[[UO22vq�UOV�U*Q*]Q5UOV�Q	*]Q5PPP2J�	P!)%fhJ�9h)rXz
            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
        �-c)rs)�	offset_nsrV)�places���.A)��r�iB0i��l*�C7qH:)r"r#rrOr`r]r rF�floatr�rZ)rF�start_ns�
offsets_ns�code�rc�out�errrc�linerA�relativeCreateds&          rJ�)test_relativeCreated_has_higher_precision�7FormatterTest.test_relativeCreated_has_higher_precision.s���-��J�
����$� �|�$�$��(	� �
��@(��d�3�����j�j�l��"�:�~�~�/?��M�M�O�I����	��2�2�+.�u�d�j�j�l�+C�(���&�&�w�I�1E��0L�UV�&�W��&�&��C��PQ�&�R�	3�2� N�2�2�2�s�?AC)	�)C:
�2C:
c�j�[OQ2oUO[U2Q2P!)�%(message)s�<Formatter (%(message)s)>�r r=r^r�r�s& rJ�test_formatter_repr�!FormatterTest.test_formatter_repr`s'�����m�,������a��"=�>roc�h�[O2oUO[U2Q2P!)rtrur�s& rJ�test_formatter_repr_default�)FormatterTest.test_formatter_repr_defaultds%�����������a��"=�>roc��QQ[O2oUQ2oUO[U2Q2P!)c��\sQsQsQsP!)�?FormatterTest.test_formatter_repr_subclass.<locals>.MyFormatteriir�r�r�rorJ�MyFormatterr}ir�ror~rsz<MyFormatter (%(message)s)>ru)rFr~r�s&  rJ�test_formatter_repr_subclass�*FormatterTest.test_formatter_repr_subclasshs3��	�'�+�+�	��
�&������a��"?�@ro)rrr)rwrxryrzrKrrr$r(r,r4r7rGrOrRr_rprvryrr{r|r}s@rJr
r
�sd����
�"-�
&�&� &�*TQ�lN�(J�?�
A�)�3�*0S�d?�?�A�Aror
c�.`�\sQsQsnQsQsQsUsP!)�TestBufferingFormatterioc�(�Q[U2*!)z[(%d)�r_�rFrGs&&rJ�formatHeader�#TestBufferingFormatter.formatHeaderp�����W��%�%roc�(�Q[U2*!)z(%d)]r�r�s&&rJ�formatFooter�#TestBufferingFormatter.formatFootersr�ror�)rwrxryrzr�r�r{r|r}s@rJr�r�os����&�&�&ror�c�4`�\sQsQsnQsQsQsQsUsP!)�BufferingFormatterTestivc�r�[OQQ-2[OQQ-2,UmP!)r2r�r�)r r�rGrss&rJrK�BufferingFormatterTest.setUpws/���!�!�5�%�.�1��!�!�5�%�.�1�
��roc���[O2oUOPUO,22UOQUOUO22P!)r��onetwo)r �BufferingFormatterr^r.rGr�s& rJ�test_default�#BufferingFormatterTest.test_default}sE���&�&�(������Q�X�X�b�\�*�����1�8�8�D�L�L�#9�:roc�
�[2oUOQUOUO22[O
Q2o[U2oUOQUOUO22P!)z[(2)onetwo(2)]z
<%(message)s>z[(2)<one><two>(2)])r�r^r.rGr r=)rFr��lfs&  rJ�test_custom�"BufferingFormatterTest.test_custom�s`��"�$�����)�1�8�8�D�L�L�+A�B�
�
�
��
/��"�2�&�����-�q�x�x����/E�Fro�rG)	rwrxryrzrKr�r�r{r|r}s@rJr�r�vs����
�;�
G�Gror�c�(`�\sQsQsnQsQsUsP!)�
ExceptionTesti�c��UOo[2oUOU2[Q2g[c[O
QP	Q5Lh9hSO
S2SO2SO]*oSOSOQ2SOSOQ2SOSOQ2SOSOQ2P!)r�failedr�z#Traceback (most recent call last):
z!
RuntimeError: deliberate mistake�Stack (most recent call last):
z,logging.exception('failed', stack_info=True))
r3�RecordingHandlerrDrr rTrOrNrG�assertStartsWith�exc_textr�r�)rFr�rUs&  rJr��ExceptionTest.test_formatting�s����������	���Q��	9��3�4�4���	9����h�4�8�	9��	�����	���	�
�I�I�a�L�����a�j�j�6�	8����A�J�J�4�	6����a�l�l�2�	4����A�L�L�>�	@s�5�	A�A�Ar�)rwrxryrzr�r{r|r}s@rJr�r��s����@�@ror�c�(`�\sQsQsnQsQsUsP!)�LastResortTesti�c�n�UOoUOUO2[Oo[O
o[O29^tt^2oUOQ2UOUO2P2UOQ2UOUO2Q2PPP2P[m[O29^tt^2oUOQ2QoUOUO2U2PPP2[O29^tt^2oUOQ2UOUO2P2PPP2P
UOm
P
[m[O29^tt^2oUOQ2UOUO2P2PPP2UOUO2U[mU[mP!)%fhCKr9h)%fhCK"9h)%fhK�9h)%fhK~9hSOSO2S[mS[mh9h)zThis should not appearz
Final chance!zFinal chance!
z-No handlers could be found for logger "root"
)r3rOr<r �
lastResortr1rr3r�r^r\r�r"�emittedNoHandlerWarningrD)rFrv�old_lastresort�old_raise_exceptionsr6r2s&     rJ�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�#�s��
J�'A#H3�
0J�:4I�.%J�2I�AJ�2I.�8J�3I	�<I	�>	J�I	�I	�	J�I+	�$I+	�&J�.I>	�7I>	�9J�3J4r�)rwrxryrzr�r{r|r}s@rJr�r��s����#;�#;ror�c�.`�\sQsQsnQsQsQsUsP!)�FakeHandleri�c�T�QFDo[VUOVU22J!	P!)r�)r�r6rNr�)�setattr�record_call)rF�
identifier�calledr�s&&& rJr��FakeHandler.__init__�s#��>�F��D�$�"2�"2�:�v�"N�O�?roc�```�UUU1QkoU!)c�L:�ROQORR22P!)z{} - {})rr.)r�r��method_names���rJ�inner�&FakeHandler.record_call.<locals>.inner�s����M�M�)�*�*�:�{�C�Dror�)rFr�r�r�r�s&fff rJr��FakeHandler.record_call�s���	E��ror�)rwrxryrzr�r�r{r|r}s@rJr�r��s����P��ror�c�:``�\sQsQsnU1QksQsQsUsU9s!)r�i�c�B:�[[U_
U-U@,UmP!r)r�r�r�rGrZs&*,�rJr��RecordingHandler.__init__�s���
���.��?��?���roc�>�UOOU2P!r)rGrrs&&rJr��RecordingHandler.handle�s�������F�#ror�)	rwrxryrzr�r�r{r|r�r�s@@rJr�r��s�����$�$ror�c�``�\sQsQsnU1QksQsQsQsQsQs	Qs
Q	sQ
sQs
QsQ
sQsQsQsQsQsUsU9s!)�ShutdownTesti�c�:�[[U_2,Um[O
oUO
[[QU2P!)r1)r�r�rKr�r r1r�r�)rF�raise_exceptionsr�s& �rJrK�ShutdownTest.setUp�s7���
�l�D�'�)����"�2�2�������*;�=M�Nroc�`�U1QkoU!)c�:�R2grr��r�s�rJr��'ShutdownTest.raise_error.<locals>.inner�s
����'�Mror�)rFr�r�s&f rJ�raise_error�ShutdownTest.raise_error�s
���	��roc�V�[]UO2o[]UO2o[]UO2o[[OO
VU,2o[O[U2Q5,QNoUOVPO2P!)rr�)z2 - acquirez	2 - flushz	2 - closez2 - releasez1 - acquirez	1 - flushz	1 - closez1 - releasez0 - acquirez	0 - flushz	0 - close�0 - release)	r�r�rFr r�r�rwr�r^)rF�handler0�handler1�handler2rBrjs&     rJ�test_no_failure�ShutdownTest.test_no_failure�s}���q�$�+�+�.���q�$�+�+�.���q�$�+�+�.���w���*�*�X��,J�K�����T�(�^�4�L��	
����;�;�/roc�0�[]UO2o[V1UOU22[O
O
U2,o[O[U2Q5UOQUOP*2P!)rr�r�)
r�r�r�r�r r�r�rwr�r^)rFr�r�r�rBs&&&  rJ�_test_with_failure_in_method�)ShutdownTest._test_with_failure_in_method�sh���a����-�����!1�!1�%�!8�9��O�O�'�'��0�1�����T�(�^�4��������B��8roc�4�UOQ[2P!�r��r�r�rss&rJ�test_with_ioerror_in_acquire�)ShutdownTest.test_with_ioerror_in_acquires���)�)�)�W�=roc�4�UOQ[2P!�r6r�rss&rJ�test_with_ioerror_in_flush�'ShutdownTest.test_with_ioerror_in_flush	����)�)�'�7�;roc�4�UOQ[2P!�rNr�rss&rJ�test_with_ioerror_in_close�'ShutdownTest.test_with_ioerror_in_closer�roc�4�UOQ[2P!r��r�r�rss&rJ�test_with_valueerror_in_acquire�,ShutdownTest.test_with_valueerror_in_acquires���)�)�)�Z�@roc�4�UOQ[2P!r�r�rss&rJ�test_with_valueerror_in_flush�*ShutdownTest.test_with_valueerror_in_flush����)�)�'�:�>roc�4�UOQ[2P!r�r�rss&rJ�test_with_valueerror_in_close�*ShutdownTest.test_with_valueerror_in_closer�roc�J�P
[mUOQ[2P!)Fr��r r1r��
IndexErrorrss&rJ�.test_with_other_error_in_acquire_without_raise�;ShutdownTest.test_with_other_error_in_acquire_without_raises��"'����)�)�)�Z�@roc�J�P
[mUOQ[2P!)Fr6r�rss&rJ�,test_with_other_error_in_flush_without_raise�9ShutdownTest.test_with_other_error_in_flush_without_raise���"'����)�)�'�:�>roc�J�P
[mUOQ[2P!)FrNr�rss&rJ�,test_with_other_error_in_close_without_raise�9ShutdownTest.test_with_other_error_in_close_without_raise r�roc�j�P	[mUO[UOQ[2P!)Tr��r r1rvr�r�rss&rJ�+test_with_other_error_in_acquire_with_raise�8ShutdownTest.test_with_other_error_in_acquire_with_raise$s'��"&������*�d�&G�&G�#�Z�	1roc�j�P	[mUO[UOQ[2P!)Tr6r�rss&rJ�)test_with_other_error_in_flush_with_raise�6ShutdownTest.test_with_other_error_in_flush_with_raise)�'��"&������*�d�&G�&G�!�:�	/roc�j�P	[mUO[UOQ[2P!)TrNr�rss&rJ�)test_with_other_error_in_close_with_raise�6ShutdownTest.test_with_other_error_in_close_with_raise.rro)r�)rwrxryrzrKr�r�r�r�r�r�r�r�r�r�r�r�r�r�rr{r|r�r�s@@rJr�r��s]����O��
0� 9�>�<�<�A�?�?�A�?�?�1�
/�
/�/ror�c�z`�\sQsQsnQsQQksQsQsQsQs	Qs
Q	sQ
sQs
QsQ
sQsQsQsUsP!)�ModuleLevelMiscTesti4c���[OOOoUO	U]2UO[OU2[O]S2UO	[OOO]S2UO
[[OQ2QQ2oUO
[[OU22[OQ2[O2UO	[OOO[O2P!)r�
doesnotexistsc��\sQsQsQsP!)�;ModuleLevelMiscTest.test_disable.<locals>._NotAnIntOrStringiCr�r�r�rorJ�_NotAnIntOrStringr	Cr�ror
�WARN)
r rvr"rRr^r�rvr�rqr�)rF�old_disabler
s&  rJ�test_disable� ModuleLevelMiscTest.test_disable8s����l�l�*�*�2�2������a�(��������5������������-�-�5�5�r�:����*�g�o�o��G�	�	�	
���)�W�_�_�6G�6I�J������	����������-�-�5�5�w�7G�7G�Hroc�T`�,n[OU[QU1Qk2[2o[OOU2[
[U2oUdUUQU2L	UQU2UO[UO2]2UO]*oUOUO2QU*2UdSL[
[UO22oUOUOU2UOR,2P!)�basicConfigc�*:�ROV12!rr)r��kwr�s*,�rJ�<lambda>�/ModuleLevelMiscTest._test_log.<locals>.<lambda>Rs���v�}�}�a�W�'=roztest me: %r)
rrr r�rvrDr0r^r_rG�
getMessage�upperr
)rFr�r,�	recording�
log_methodr��expected_levelr�s&&&    @rJ�	_test_log�ModuleLevelMiscTest._test_logOs�������
�
�d�G�]�=�	?�%�&�	������	�*��W�f�-�
����u�m�Y�7��}�i�0�����Y�.�.�/��3��"�"�1�%������*�*�,�m�i�.G�H�"'�"3����&�,�,�.�9Y���������8�	
�����$roc�H�UOQ[O2P!�r�)rr r�rss&rJ�test_log�ModuleLevelMiscTest.test_loggs�����u�g�m�m�,roc�*�UOQ2P!�r��rrss&rJ�
test_debug�ModuleLevelMiscTest.test_debugj������w�roc�*�UOQ2P!�r�r"rss&rJ�	test_info�ModuleLevelMiscTest.test_infom������v�roc�*�UOQ2P!�r�r"rss&rJ�test_warning� ModuleLevelMiscTest.test_warningp������y�!roc�*�UOQ2P!r�r"rss&rJ�
test_error�ModuleLevelMiscTest.test_errorsr%roc�*�UOQ2P!�rjr"rss&rJ�
test_critical�!ModuleLevelMiscTest.test_criticalv������z�"roc��UO[[O[2QQ[O
2o[OU2UO
[O2U2[O[O
2UO
[O2[O
2P!)c��\sQsQsQsP!)�;ModuleLevelMiscTest.test_set_logger_class.<locals>.MyLoggeri|r�r�r�rorJrpr:|r�rorp)rvrqr rrr�rr^�getLoggerClass)rFrps& rJ�test_set_logger_class�)ModuleLevelMiscTest.test_set_logger_classys������)�W�%;�%;�V�D�	�w�~�~�	�	���x�(�����/�/�1�8�<����w�~�~�.�����/�/�1�7�>�>�Broc�`�,nU1QkQ[O22o[OU2[OQ2oUO	RQ,2[
O2o[OU2oUOU2UO[O2UOQ2UO	UO2O2Q2UO]2UO]2UO[O 2UOQ2UO	UO2P2UO#U2UO%2[O[O&2P!SO#S2SO%2[O[O&2h9h)c�T:``�\sQsQsnQ\O
1UU1QkksQsUsU9s	!)�@ModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLoggeri�rpc�J:�[RU_V2ROQ2P!)�initialized)r�r�r)rFrHr,r�rws&&&��rJr��IModuleLevelMiscTest.test_subclass_logger_cache.<locals>.MyLogger.__init__�s����� ��-����}�-ror�)
rwrxryrzr r�r�r{r|r�)r�r~rws@@�rJrpr@�s����$.�g�n�n�
.�
.�
.rorp�just_some_loggerrB�hello)r r;rrr!r^r6r7r;rDr9r:r�r\r��truncaterVr�rOrNr)rFrpr%r8rUrws&    @rJ�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�"CF9�9AHc��[OQ2o[QU2vq#oUO2oUO	QU2UO	QU2P!)a*
            import logging

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

            a = A()
        rbzexception in __del__zValueError: some error)r"r#rrOr4�rFrjrkrlrms&    rJ�test_logging_at_shutdown�,ModuleLevelMiscTest.test_logging_at_shutdown�sP����� �
��(��d�3�����j�j�l���
�
�,�c�2��
�
�.��4roc�v�[OoUO[OU2[O
QU8Q02o[
QU2[UQQ59^tt^2oUOUO2O2Q2PPP2P!)%fhP!9h)a�
            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
        rbrr�zERROR:root:log in __del__)r�TESTFNr�r�r"r#rr�r^rerm)rFr]rj�fps&   rJ�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'�'B8	�0B8	c��[OQ2o[QU2vq#oUO2oUO	QU2UOU]2P!)z�
            import logging

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

            rec()
        rbz#Cannot recover from stack overflow.)r"r#rrOr�r^rJs&    rJ�test_recursion_error�(ModuleLevelMiscTest.test_recursion_error�sS����� �
��-�T�4�8�����j�j�l�����>��D�����Q�roc� �[O2oUO[OU2UO	[OU2[O2oUO	V2UOV2P!r)r �getLevelNamesMappingr^r+�assertIsNot)rF�mapping�new_mappings&  rJ�test_get_level_names_mapping�0ModuleLevelMiscTest.test_get_level_names_mapping�sf���.�.�0������-�-�w�7�����-�-�w�7��2�2�4������.�����.ror�r)rwrxryrzr
rrr#r(r-r1r5r<rGrKrPrSrZr{r|r}s@rJrr4sS����I�.%�0-� ��"� �#�
C�3�>5�&N�> � /�/rorc��`�\sQsQsnQsQs\QQk2s\O2\
Q22sQsQs
\O2Q2s\O2Q	2sQ
sUsP!)�
LogRecordTesti�c��[O-2o[U2oUOUQ2UO	UQ2P!)z<LogRecord: �>)r r�r�r�r�)rFr�rls&  rJ�test_str_rep�LogRecordTest.test_str_rep�s;���!�!�"�%����F�����a��0����A�s�#roc��[2o[O2oUOU2QQ-o[OQU2UOUO]*OU2UOUO]*OQ2UOU2UO2P!)�less�morezless is %(less)szless is more)r�r r!rDr�r2rGrjr^rwrOrN)rFrUr�rTs&   rJ�
test_dict_arg�LogRecordTest.test_dict_arg�s�����������	���Q��
�f������*�A�.��
�
�a�i�i��l�'�'��+�������1��-�-�~�>�	�����	���	roc� �[OoU[m]PH
oUO2Oo[O
QQU0-2o[O[OQP29^tt^2[O
QQU0-2oPPP2QUQUOQWO-oU[mU%cUOU2P!U!)%fhKT9hS[mh9h)rr2�msg1_r.�msg2_�processName�r1.processName�r2.processName)r �logMultiprocessingr.�current_processrHr�r�	swap_itemr��modulesrjrr)	r\rmr��prev_logMultiprocessingrRrH�r1�r2�resultss	&&&      rJ�_extract_logrecord_process_name�-LogRecordTest._extract_logrecord_process_names���")�"<�"<��%7��"�	A�(��%�%�'�,�,�D��&�&���s�e�}�'=�>�B��"�"�3�;�;�0A�4�H�H��*�*�E�U�3�%�=�+A�B��I�%��'����'�����G�
*A�G�&���I�I�g���N�I�H��*A�G�&�s*�A'D�C-�!$D�-C=	�6C=	�8D�
D
c�n�[O2Q[O7oUO	[
OP	2P	o[
O-2oUO	UOQ2UO]U2oUO	QUQ*2UO	QUQ*2UO	QUQ*2]PH*oUO2vqgUOUO]V'1Q5oUO2UO2oUOQUQ*2UO	UQ*UQ*2UO	QUQ*2UO!2U%c]PH*oP!P!S%c]PH*ohh9h)r.�MainProcessrjrkrlr�)rr�r�rpr^r rmr�rjrur.�Pipe�Processr�r��assertNotEqualr�)	rF�multiprocessing_imported�LOG_MULTI_PROCESSINGr�rtr.�parent_conn�
child_connr�s	&        rJ�test_multiprocessing�"LogRecordTest.test_multiprocessingst��	�:�:�<�#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�E*F%�%F4�.F4c��UOoUOo[O-2oUUO2UUO
2UUO2UUO2UUO2[Oo[Oo[Oo[OoP
[m	P
[m
P
[mP
[m[O-2oUUO2UUO
2UUO2UUO2UUO2U[m	U[m
U[mU[mP!S[m	S[m
S[mS[mh9h�F)
r;rr r�r�
threadName�processrj�taskName�
logThreads�logProcessesrm�logAsyncioTasks)rF�NONE�NOT_NONEr��log_threads�
log_processes�log_multiprocessing�log_asyncio_taskss&       rJ�
test_optional�LogRecordTest.test_optionalAsE��� � ���'�'���!�!�"�%�����������������������Q�Z�Z���(�(���,�,�
�%�8�8��#�3�3��	8�!&�G��#(�G� �).�G�&�&+�G�#��%�%�b�)�A�����N����������O�����������!,�G��#0�G� �)<�G�&�&7�G�#��"-�G��#0�G� �)<�G�&�&7�G�#�s
�BF�.Gc��` �[O-2oUUO2P!3hr)r r�r�)rF�	assertionr�s&& rJ�_make_record_async� LogRecordTest._make_record_asyncas!����!�!�"�%���!�*�*��s�,.c���UOo[O29^tt^2oP	[mUOUUO22P
[mUOUUO22PPP2[OOP2P!)%fhK19h[OOP2h9hr�)
r��asyncio�Runnerr r��runrr;�events�_set_event_loop_policy�rF�make_record�runners&  rJ�#test_taskName_with_asyncio_imported�1LogRecordTest.test_taskName_with_asyncio_importedes���	8��1�1�K����!�!�V�*.��'��
�
�;�t�';�';�<�=�*/��'��
�
�;�t�'8�'8�9�:�	"�
�N�N�1�1�$�7�
"�!��
�N�N�1�1�$�7�s)�)C�AB.�C�.B>	�7B>	�9C�!C"c	�^�UOo[O29^tt^2o[O[
OQP29^tt^2P	[mUOUUO22P
[mUOUUO22PPP2PPP2[OOP2P!)%fhK99h)%fhKD9h[OOP2h9h)r�)
r�r�r�rror�rpr r�r�r;r�r�r�s&  rJ�&test_taskName_without_asyncio_imported�4LogRecordTest.test_taskName_without_asyncio_importedqs���	8��1�1�K����!�!�V�W�->�->�s�{�{�I�W[�-\�-\�*.��'��
�
�;�t�'8�'8�9�:�*/��'��
�
�;�t�'8�'8�9�:�	.]�!�
�N�N�1�1�$�7�
.]�-\��!�!��
�N�N�1�1�$�7�sG�)D�/C8�AC%	�4C8�<D�%C5
�.C5
�0C8�8D	�D	�D�!D,r�r)rwrxryrzr`rerdrur	rrr�r�r�rr`r�r�r{r|r}s@rJr]r]�s�����$�	�����0�?�?�A��#'��B�#'�J8�@�
�$�$�&�	8�'�	8�
�$�$�&�	8�'�	8ror]c�``�\sQsQsnU1QksU1QksQsQsQsQs	Qs
Q	sQ
sQs
QsQ
sQsQsQsQsQsQsQsQsQsQs\O62Q2sQ!QksQsQsQs Qs!Qs"Qs#Q s$Us%U9s&!)"�BasicConfigTesti~c�:�[[U_2[OO
Um[OO2Um[OQ*Um
[OOUmUOUO2,[OmP!�r)r�r�rKr rvrBr%r&r'r(r)r,r5r��cleanupr�s&�rJrK�BasicConfigTest.setUp�sy���
�o�t�*�,����-�-��
�%�/�/�4�4�6���")�"6�"6�q�"9���&-�l�l�&8�&8��#�������%� "����roc��:�[OOQ*FD2o[OOU2UO	2J4	[
[U_2P!r�)r rvrBrOrNr�r�rV)rFrUr�s& �rJrV�BasicConfigTest.tearDown�sI������&�&�q�)�)�A��L�L�&�&�q�)�
�G�G�I�*�	�o�t�-�/roc�l�[[OQUO2[OO2[OO
UO2UO[OQ$[OOUO2P!)rBr)r�r rvrBr%rPrQr'r)r(r9r5rss&rJr��BasicConfigTest.cleanup�sp������j�$�-�-�8������!���� � ��!4�!4�5�"&�"9�"9����Q�������d�9�9�:roc���[O2UO[[OO
2]2[OO
]*oUO
U[O2UOUO[O2UOoUOUOO[O2UOUO 2UO
UO[O"2UO[OO$UO&2P!r�)r rr^r_rvrBr�r;r8r�r6r~r�r+�BASIC_FORMATr;r��PercentStyler,r5)rFr�r~s&  rJ�test_no_kwargs�BasicConfigTest.test_no_kwargs�s�������	
����W�\�\�2�2�3�Q�7��,�,�'�'��*�����g�w�'<�'<�=����������4��%�%�	�����)�)�.�.��0D�0D�E����)�+�+�,����i�.�.��0D�0D�E�	
������+�+�T�-H�-H�Iroc��[O29^tt^2o[O[O
QQ5[OQ2[O
O]2UOUO2O2Q2PPP2P!)%fhP!9h)r��r8r��Log an error�ERROR:root:Log an error�rr-r rr�rUr�rVr^r\r�r"s& rJ�test_strformatstyle�#BasicConfigTest.test_strformatstyle��u��
�
$�
$�
&�
&�&����s�z�z��=��M�M�.�)��J�J�O�O�A�����V�_�_�.�4�4�6�)�
+�	'�
&�
&�
&���B
B3�3C	�<C	c��[O29^tt^2o[O[O
QQ5[OQ2[O
O]2UOUO2O2Q2PPP2P!)%fhP!9h)r�r�r�r�r�r"s& rJ�test_stringtemplatestyle�(BasicConfigTest.test_stringtemplatestyle�r�r�c�f�Qo[OQQQ5UO[[OO
2]2[OO
]*oUO
U[O2[OQQQQ5oUOUOOUOO2UOUOOUOO2UOVUQ2P!)c�t�UO2UO2[OU2P!rr�r��h2rms&&&rJr��.BasicConfigTest.test_filename.<locals>.cleanup�����H�H�J��H�H�J��I�I�b�Mro�test.logr)r]r�r�r�)r rr^r_rvrBr�r�r8�moderHr��rFr�r�rjs&   rJ�
test_filename�BasicConfigTest.test_filename�s���	�
	���Z�'�B�����W�\�\�2�2�3�Q�7��,�,�'�'��*�����g�w�':�':�;��&�&�z�3��I��������,�,�h�o�o�.B�.B�C�������,�,�h�o�o�.B�.B�C�����(�J�?roc�H�Qo[OQQQ5[OO]*o[OQQ2oUOUOOUOO2UOVUQ2P!)c�t�UO2UO2[OU2P!rrr�s&&&rJr��.BasicConfigTest.test_filemode.<locals>.cleanup�r�ror��wb�r]�filemode)	r rrvrBr�r^r8r�r�r�s&   rJ�
test_filemode�BasicConfigTest.test_filemode�ss��	�
	���Z�$�?��,�,�'�'��*���&�&�z�4�8��������,�,�h�o�o�.B�.B�C�����(�J�?roc��[O2oUOUO2[O
UQ5UO
[[OO2]2[OO]*oUOU[O2UO
UOU2P!r)
r6r7r�rNr rr^r_rvrBr�r;r8)rFr8r�s&  rJ�test_stream�BasicConfigTest.test_stream�s��������������%����6�*�����W�\�\�2�2�3�Q�7��,�,�'�'��*�����g�w�'<�'<�=��������0roc���[OQQ5[OO]*OoUOUOOQ2P!)z%(asctime)s - %(message)s)r.)r rrvrBr~r^r�r+�rFr~s& rJ�test_format�BasicConfigTest.test_format�sH�����#>�?��L�L�)�)�!�,�6�6�	�����)�)�.�.�0K�Lroc���[OQQ5[OO]*OoUOUOQ2P!)rB)r�)r rrvrBr~r^r�r�s& rJ�test_datefmt�BasicConfigTest.test_datefmt�s@�����E�*��L�L�)�)�!�,�6�6�	�����*�*�E�2roc���[OQQ5[OO]*OoUOUO[O2P!)r�r!)r rrvrBr~r�r�r�r�s& rJ�
test_style�BasicConfigTest.test_style�sF�����#�&��L�L�)�)�!�,�6�6�	����i�.�.��0K�0K�Lroc��[OOoUO[OOU2[O
]9Q5UO
[OO]92[O
]:Q5UO
[OO]92P!)�9)r,)r rvr,r�r9rr^)rF�	old_levels& rJ�
test_level�BasicConfigTest.test_level�sy���L�L�&�&�	�������-�-�y�9����"�%�������+�+�R�0����"�%�������+�+�R�0roc��UOo[O2,o[Oo[O
2oU[[OQUQ5U[[OQUQ5U[[OUUQ5U[[OUQQ5U[[OUQQ5U[[OUQQ	5U[[O[OQ
5[OPQQ5P!)
r�)r]r8)r]rB)r8rBrs)r~r.z%H:%M:%S)r~r�r1)r~r�)�loglevelr�r�)	rvr r;r�r6r=r�rr�)rFrvrBr8r~s&    rJ�test_incompatible�!BasicConfigTest.test_incompatibles����(�(���)�)�+�,�������%�%�'�	��Z��!4�!4�z�=C�	E��Z��!4�!4�z�?G�	I��Z��!4�!4�V�?G�	I��Z��!4�!4�	�=J�	L��Z��!4�!4�	�>H�	J��Z��!4�!4�	�<?�	A�	�Z��!4�!4�w�|�|�L����T�C�8roc��[O2[O[O2[O2,o[O2oU]*OU2[OUQ5UOU]*[OO]*2UOU]*[OO]*2UOU]*[OO]*2UOU]*O2UOU]*O2UOU]*OU2UOU]*OU]*O2P!)r��rB)r r;r�rUr=r@rr2rvrBrr~)rFrBr�s&  rJ�
test_handlers�BasicConfigTest.test_handlerss0���!�!�#��!�!�#�*�*�-��!�!�#�
��

�������� � ��#����X�.��
�
�h�q�k�7�<�<�#8�#8��#;�<��
�
�h�q�k�7�<�<�#8�#8��#;�<��
�
�h�q�k�7�<�<�#8�#8��#;�<����X�a�[�2�2�3����X�a�[�2�2�3��
�
�h�q�k�+�+�Q�/��
�
�h�q�k�+�+�X�a�[�-B�-B�Croc���[O2o[O2o[OU2,o[OU2,o[O[O
UQ5[OQ2[OQ2[OQ2UO[[OO2]2[O[OUP	Q5[OQ2[OQ2[OQ2UO[[OO2]2UOUO2O2Q2UOUO2O2Q2P!))r,rBr�r�r�)r,rB�forcezWARNING:root:warnz WARNING:root:warn
INFO:root:info)r6r7r r;rr�r�r�r�r^r_rvrBr�r\r�)rF�
old_string_io�
new_string_io�old_handlers�new_handlerss&    rJ�
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�<�	>roc	���Qo[OQUQQ[OQ5UO[	[O
O2]2[O
O]*oUOU[O2UOUOU2[OQ2UO2[QQQ59^tt^2oUO2O2oPPP2[O Q2UOWQ2P!)%fhK:9hWO2[QQQ59^tt^2oSO2O2oPPP2L)%fhL9h[O Q2SOWQ2h9h)rr�rsrs�r]r��errorsr.r,�.The Øresund Bridge joins Copenhagen to Malmör��r rr:r^r_rvrBr�r�r�r�rNr�rer�rir�rFr�r�r�rs&    rJ�
test_encoding�BasicConfigTest.test_encoding>sN��	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�3�q��v�v�x�~�~�'��4��I�I�j�!����T�M�
O�4�3��
�M�M�O��j�7�3�3�q��v�v�x�~�~�'��4�3�3�3���I�I�j�!����T�M�
O��<�CE�9E
�
E	�E	�&G'�F+	�"	G'�+F;
�4F;
�61G'c	���Qo[OQUQQ[OQ5UO[	[O
O2]2[O
O]*oUOU[O2UOUOU2[OQ2UO2[QQQ59^tt^2oUO2O2oPPP2[O Q2UOWQ2P!)%fhK:9hWO2[QQQ59^tt^2oSO2O2oPPP2L)%fhL9h[O Q2SOWQ2h9h)	r�r��ignorersr�r�rr�z*The resund Bridge joins Copenhagen to Malmr�r�s&    rJ�test_encoding_errors�$BasicConfigTest.test_encoding_errorsRsH��	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�3�q��v�v�x�~�~�'��4��I�I�j�!����T�#O�P�4�3��
�M�M�O��j�7�3�3�q��v�v�x�~�~�'��4�3�3�3���I�I�j�!����T�#O�P�r�c	�
�Qo[OQUQ[OQ5UO[	[O
O2]2[O
O]*oUOU[O2UOUOU2UOUOQ2[OQ2UO2[QQQ59^tt^2oUO2O2oPPP2[ O"Q2UOWQ2P!)%fhK:9hWO2[QQQ59^tt^2oSO2O2oPPP2L)%fhL9h[ O"Q2SOWQ2h9h)	r�r�rs)r]r�r.r,�backslashreplaceu<😂: ☃️: The Øresund Bridge joins Copenhagen to Malmörr�zL\U0001f602: \u2603\ufe0f: The \xd8resund Bridge joins Copenhagen to Malm\xf6)r rr:r^r_rvrBr�r�r�r�r�rNr�rer�rirr�s&    rJ�test_encoding_errors_default�,BasicConfigTest.test_encoding_errors_defaultesf��	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�3�q��v�v�x�~�~�'��4��I�I�j�!����T�$J�
K�4�3��
�M�M�O��j�7�3�3�q��v�v�x�~�~�'��4�3�3�3���I�I�j�!����T�$J�
K�s<�C,E8�E%�%E5	�.E5	�8&H�G	�=	H�G
�G
�1Hc	�|`�Qo[OQUPQ[OQ5UO[	[O
O2]2[O
O]*oUOU[O2UOUOU2UOUO2,nU1QkoV2m[OQ2UOR2UOQR]*2UO!2[#QQQ59^tt^2oUO%2O'2oPPP2[(O*Q2UOWP2P!)%fhK:9hWO!2[#QQQ59^tt^2oSO%2O'2oPPP2L)%fhL9h[(O*Q2SOWP2h9h)	r�r�rsr�c�d:�RO[[O222P!r)rr�r�rT)r�rws&�rJ�dummy_handle_error�EBasicConfigTest.test_encoding_errors_none.<locals>.dummy_handle_error�s������s�3�=�=�?�3�4ror�z:'ascii' codec can't encode character '\xd8' in position 4:rr�)r rr:r^r_rvrBr�r�r�r;r�r'r�rEr4rNr�rer�rir)rFr�r�r	r�rrws&     @rJ�test_encoding_errors_none�)BasicConfigTest.test_encoding_errors_noneys����	(��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�3�q��v�v�x�~�~�'��4��I�I�j�!����T�3�'�	4�3��
�M�M�O��j�7�3�3�q��v�v�x�~�~�'��4�3�3�3���I�I�j�!����T�3�'�s<�D$F1�
F�F.	�'F.	�1&H;�G?	�6	H;�?H
�H
�
1H;c�Z�[2o[PQ5o[Q29^tt^2o[OV,Q5PPP2UO	UO
O[U2,2UO	WO]2P!)%fhK^9h)N�r~r�)r~rB)	rrr rr^r@�call_args_listrr�)rF�mock_formatter�mock_handler�mock_formatter_inits&   rJ�test_formatter_given�$BasicConfigTest.test_formatter_given�s{������d�+��
�&�
'�
'�+>����.�>�R�(�����2�2�A�A�D��DX�CY�Z����,�7�7��;�(�
'�s�B�B*	�#B*	c���[PQ5o[Q29^tt^2o[OU,Q5PPP2UO	WO
]2P!)%fhK.9h)Nr	r�r�)rrr rr^r�)rFr	r	s&  rJ�test_formatter_not_given�(BasicConfigTest.test_formatter_not_given�sP���d�+��
�&�
'�
'�+>����,��8�(����,�7�7��;�(�
'�s�A � A0	�)A0	c��QoPo[QQ2oUO[OU2Qo[O
UQU[OQQ5UO[[OO2]2[OO]*oUOU[O2[OP	Q59^tt^2oP	[mUO!U22PPP2[#UQQ59^tt^2oUO%2O'2oPPP2UO)WQ	2[O*O-P2U%cUO/2P!P!)%fhK�9h)%fhKp9h[O*O-P2S%cSO/2hh9h)
c��< �[OQ2P!3h)zhello world)r r�r�rorJr��5BasicConfigTest.test_log_taskName.<locals>.log_record�s����O�O�M�*�s�r�ztest-logging-taskname-rrsz%(taskName)s - %(message)s)r]r�r�r,r.r!r�zTask-\d+ - hello world)rnr�rirr rr�r^r_rvrBr�r�r�r�r�r�r�rer��assertRegexr�r�rN)rFr�r��log_filenamer�r�r�rs&       rJ�test_log_taskName�!BasicConfigTest.test_log_taskName�sa��	+���%�f�.F�G������	�	�<�0�	 ��H�����h�)1����'C�
E�
���S����!6�!6�7��;��l�l�+�+�A�.�G��!�!�'�7�+>�+>�?����d�+�+�v�*.��'��
�
�:�<�(�,��l�W�5�5���v�v�x�~�~�'��6����T�#<�=��N�N�1�1�$�7���
�
���,�+��6�5��
�N�N�1�1�$�7���
�
���sN�B>G�2"F%�G�1F8�G�%F5	�.F5	�0G�8G	�G	�G�'H�3Hc��```�,n[OnUUU1Qko[OR[QU2[	[U2oUdUUQ2LUQ2RORQ-1,2P!)c�:�R2[OOo[OO]d2RO	[OOU2ROV12P!)�d)r rvr,r9r�r)r�rr�r��old_basic_configrFs*, ���rJ�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�'�"rorztest mer�)r rrrr0r^)rFr�r,r!	rr�r 	sf&&  @@rJr�BasicConfigTest._test_log�si�����"�.�.��	#�	�
�
�d�G�]�O�D��W�f�-�
����u�i�(��y�!�	
����2�r�(��,roc�H�UOQ[O2P!r)rr r�rss&rJr�BasicConfigTest.test_log�s�����u�g�o�o�.roc�*�UOQ2P!r!r"rss&rJr#�BasicConfigTest.test_debug�r%roc�*�UOQ2P!r'r"rss&rJr(�BasicConfigTest.test_info�r*roc�*�UOQ2P!r,r"rss&rJr-�BasicConfigTest.test_warning�r/roc�*�UOQ2P!r�r"rss&rJr1�BasicConfigTest.test_error�r%roc�*�UOQ2P!r4r"rss&rJr5�BasicConfigTest.test_critical�r7ro)rBr5r)r'r)'rwrxryrzrKrVr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r	r		r	r	rr`r	rrr#r(r-r1r5r{r|r�r�s@@rJr�r�~s�����#�0�;�J�(+�+�@�$@�1�M�3�M�1�9�,D�">�*O�(Q�&K�((�@<�<�
�$�$�&� �'� �:-�./� ��"� �#�#ror�c�``�\sQsQsnU1QksQsQsQsQsQs	Qs
Q	sQ
sQs
QsQ
sQsQsQsQsUsU9s!)�LoggerAdapterTesti�c�R:`�[[U_2[OQ*n[2Um[OUmUOOUO2UOUOOUO2UOUOO2U1QkoUOU2UO[O2[OUOQ5UmP!)rc�0:�R[OQ$P!r�)r r()�old_handler_lists�rJr��(LoggerAdapterTest.setUp.<locals>.cleanup�s���&6�G� � ��#ro)r%)r�r1	rKr r(r�rrvr%rDr�rOrNrwr��adapter)rFr�r4	r�s& @�rJrK�LoggerAdapterTest.setUp�s����
���,�.�"�/�/��2��)�+����l�l��������t�~�~�.�������1�1�4�>�>�B�������,�,�-�	7�	
���� �����(�(�)��,�,�D�K�K�@��roc�z�QoPo]]*UO	[UOO2]2UOO]*oUO	UO[O2UO	UOU2UO	UOUO12UO	UOUOV"O12P![c3oSoSOOXO2Po=CK%Po=hh9h�ztesting exception: %r)r�r6	rTrr^r_rGr
r r�r2rjrkr��
__traceback__�rFr2r�r�r�s&    rJ�test_exception� LoggerAdapterTest.test_exceptions���%����	8�
��E�
	
����T�^�^�3�3�4�a�8����'�'��*�����������7�������S�)�������t�~�~�&7�8��������-�-��.?�.?�@�	B��!�	8��C��L�L�"�"�3���7�7��	8���	C=�=	D:�D:�'D5�5D:c��]]*UOOQWQ5UO[	UO
O2]2UO
O]*oUOUOUOV"O12P![c
oSoPo=K�Po=hh9h)rqz
exc_info testr�)
r�r6	rTr^r_rrGrkr�r:	)rFr�r�r�s&   rJ�test_exception_excinfo�(LoggerAdapterTest.test_exception_excinfos���	�
��E�	
��������=�����T�^�^�3�3�4�a�8����'�'��*���������-�-��.?�.?�@�	B��!�	��C��	�s�	B)�)	C�3C�4B;�;Cc��QoUOOVO2UO[	UOO
2]2UOO
]*oUOUO[O2UOUOU2UOUOUO12UOUOQ2P!)zcritical test! %rr5)r6	rjrr^r_rGr
r r�r2rjr@)rFr2r�s&  rJr5�LoggerAdapterTest.test_criticals���!�������c�>�>�2�����T�^�^�3�3�4�a�8����'�'��*���������)9�)9�:�������S�)�������t�~�~�&7�8�������/�:roc�f�UOOOOo]!UOOOmUO	[
UOOOQU2UO
UOO] 22P!)�!rR)r6	r%r"rRr�r�r��isEnabledFor�rFrs& rJ�test_is_enabled_for�%LoggerAdapterTest.test_is_enabled_for*sw���l�l�)�)�1�1�9�9��.0������#�#�+��������!4�!4�!<�!<�i�#�	%�������2�2�2�6�7roc�p�UOUOO22UOOFDoUOOU2J 	UO
UOO22UO
UOO22P!r)rEr6	rAr%rBrOr�rks& rJ�test_has_handlers�#LoggerAdapterTest.test_has_handlers1sy��������0�0�2�3��{�{�+�+�G��K�K�%�%�g�.�,�	
������0�0�2�3�������1�1�3�4roc��Qo[UOPQ5o[UPQ5oQUmUO[	U2[	U22UO[OVO2UO[UOO2]2UOO]*oUOUO[O2UOUOQU02UOUOUO12UOUOQ2UOoUO!UOU2UO!UOOU2[#2oVcmUO!UOU2UO!UOU2UO!UOOU2VSmUO!UOU2UO!UOU2UO!UOOU2P!XSmh9h)zAdapters can be nested, yo.�r%rl�AdapterAdapterzAdapter AdapterAdapter �test_nested)�
PrefixAdapterr%r�r^r�r�r r�rr_rGr
r2rjr@r"r2r�)rFr2r6	�adapter_adapterr��orig_manager�temp_managers&      rJrP	�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$I8�8Jc��UOOo[UO2oUO	QQ2UO[
UP*O2Q2UOUP*OQ2UO[OQQ2UO[
UP*O2Q2UOUP*OQ2P!)�
Hello, {}!�worldz
Hello, world!�test_styled_adapter�Goodbye {}.zGoodbye world.)rrG�StyleAdapterr%r�r^r�r2r@r�r r�)rFrGr6	s&  rJrY	�%LoggerAdapterTest.test_styled_adapterVs����.�.�(�(���t�{�{�+������g�.�����W�R�[�_�_�-��?�������-�-�/D�E����G�O�O�]�G�<�����W�R�[�_�_�-�/?�@�������-�-�/D�Eroc�$�UOOo[UO2oQUm[U2oUO
QQ2UO[UP*O2Q2UOUP*OQ2UO[OQQ2UO[UP*O2Q2UOUP*OQ2P!)z{}rW	rX	z{} Hello, world!�test_nested_styled_adapterrZ	z{} Goodbye world.)rrGrQ	r%r�r[	r�r^r�r2r@r�r r�)rFrGr6	�adapter2s&   rJr^	�,LoggerAdapterTest.test_nested_styled_adapteras����.�.�(�(������,�������(������w�/�����W�R�[�_�_�-�/A�B�������-�-�/K�L����W�_�_�m�W�=�����W�R�[�_�_�-�/B�C�������-�-�/K�Lroc�\````�]nUOOnUU1QknU1QknU1QkoUOOoU2UO	UP*O
Q2UP*OoR]*
nU2UO	UP*O
Q2UOUP*OU2UP*OoR]*
nU2UO	UP*O
Q2UOUP*OU2UP*OoR]*
nU2UO	UP*O
Q2UOUP*OU2P!)rqc�:�RQRQ5P!�rz��
stacklevelr���	the_level�triggers��rJ�	innermost�ELoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.innermostq�
����F�y�1roc�:�R2P!rr��ri	s�rJr��ALoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.innert�����Kroc�:�R2P!rr��r�s�rJ�outer�ALoggerAdapterTest.test_find_caller_with_stacklevel.<locals>.outerw�����Grori	r�rr	� test_find_caller_with_stacklevel)r6	r�rrGr^r@rr�)rFrr	rGrr�ri	rg	rh	s&   @@@@rJru	�2LoggerAdapterTest.test_find_caller_with_stacklevelmsJ����	��,�,�&�&��	2�	�	��.�.�(�(��
��������-�-�{�;����#�#���Q��	�
��������-�-�w�7����7�2�;�-�-�v�6����#�#���Q��	�
��������-�-�w�7����7�2�;�-�-�v�6����#�#���Q��	�
��������-�-�/Q�R����7�2�;�-�-�v�6roc��[OUOQQ-Q5UmUOO	Q2UO[
UOO2]2UOO]*oUOUQ2UOUOQ2P!)rAr�rN	�foo should be here�r r�r%r6	rjr^r_rrG�
assertHasAttrrArs& rJ�test_extra_in_records�'LoggerAdapterTest.test_extra_in_records�s����,�,�D�K�K�49�3�<�A���	
�����2�3�����T�^�^�3�3�4�a�8����'�'��*�����6�5�)�������S�)roc��UOOQQQ-Q5UO[UOO
2]2UOO
]*oUO
UQ2P!)zfoo should NOT be hererA�nope�rl)r6	rjr^r_rrG�assertNotHasAttrrs& rJ� test_extra_not_merged_by_default�2LoggerAdapterTest.test_extra_not_merged_by_default�sa�������6�u�f�o��N�����T�^�^�3�3�4�a�8����'�'��*�����f�e�,roc�B�[OUOQQ-P	Q5UmUOO	QQQ-Q5UO[
UOO2]2UOO]*oUOUQ2UOUQ2UOUOQ2UOUOQ2UOO	Q2UO[
UOO2]2UOOP*oUOUOQ2UOUQ2UOO	QPQ5UO[
UOO2]2UOOP*oUOUOQ2UOUQ2P!)	rAr��r%rl�merge_extrazfoo and bar should be hererBr�r	�no extra�
none extra)
r r�r%r6	rjr^r_rrGrz	rArBr�	rs& rJ�test_extra_merged�#LoggerAdapterTest.test_extra_merged�s����,�,�D�K�K�49�3�<�9=�?���	
�����:�5�#�,��O�����T�^�^�3�3�4�a�8����'�'��*�����6�5�)����6�5�)�������S�)�������S�)������j�)�����T�^�^�3�3�4�a�8����'�'��+��������S�)����f�e�,������l�$��7�����T�^�^�3�3�4�a�8����'�'��+��������S�)����f�e�,roc��[OUOQQ-P	Q5UmUOO	QQQ-Q5UO[
UOO2]2UOO]*oUOUQ2UOUOQ2P!)rAr�r�	zfoo shall be minr�r	ry	rs& rJ�)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����'�'��*�����6�5�)�������S�)roc�L�[OUOP	Q5UmUOO	QQQ-Q5UO[
UOO2]2UOOP*oUOUOQ2UOO	Q2UO[
UOO2]2UOOP*oUOUQ2UOO	QPQ5UO[
UOO2]2UOOP*oUOUQ2P!)T)r%r�	rx	rAr�r	r�	r�	)r r�r%r6	rjr^r_rrGrAr�	rs& rJ�test_extra_merged_without_extra�1LoggerAdapterTest.test_extra_merged_without_extra�s1���,�,�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�,ro)r6	r%r)rwrxryrzrKr<	r@	r5rH	rK	rP	rY	r^	ru	r{	r�	r�	r�	r�	r{r|r�r�s@@rJr1	r1	�s[����A�"B�"B�	;�8�5�9�8	F�
M�7�@*�-�-�2	*�-�-ror1	c�,`�\sQsQsnQsQsQsUsP!)rQ	i��Adapterc�*�UOQU0U1!r��r�)rFr2rks&&&rJr��PrefixAdapter.process�s���+�+��a��u�%�v�-�-ror�)rwrxryrzr�r�r{r|r}s@rJrQ	rQ	�s����
�F�.�.rorQ	c�.`�\sQsQsnQsQsQsUsP!)�Messagei�c� �VmV mP!r)r�rj)rFr�rjs&&&rJr��Message.__init__�s�����	roc�N�UOOUO!r)r�r.rjrss&rJ�__str__�Message.__str__�s���x�x����	�	�*�*ro)rjr�)rwrxryrzr�r�	r{r|r}s@rJr�	r�	�s�����+�+ror�	c�0`�\sQsQsnQ]-QksQsUsP!)r[	i�re	c���UOU2%cIUOV%2vq%UOOU[	V$21-U@QU]*-@P!P!rd	)rF	r�r%r�r�	)rFr,r2re	rjrks"""$*,rJr��StyleAdapter.log�sT�����U�#�#��,�,�s�3�K�C��K�K�O�O�E�7�3�#5�
5��
5�'1�!�|�
5�$ror�)rwrxryrzr�r{r|r}s@rJr[	r[	�s����5�1�5�5ror[	c�``�\sQsQsnU1QksQsQsQsQsQs	Qs
Q	sQ
sQs
QsQ
sQsQsQsQsQsQsUsU9s!)�
LoggerTesti�c�:�[[U_2[2Um[
OQQ5UmUOOUO2UOUOOUO2UOUOO2UO[
O2P!)�blah�rH)
r�r�	rKr�rr rr%rDr�rOrNrwr�s&�rJrK�LoggerTest.setUp�s����
�j�$�%�'�)�+����n�n�&�1��������t�~�~�.�������1�1�4�>�>�B�������,�,�-�����(�(�)roc��UO[QUOOP2UO[QUOOQ2P!)z,Level not an integer or a valid string: Nonez.Level not an integer or a valid string: (0, 0))rr)r
rqr%r9rss&rJ�test_set_invalid_level�!LoggerTest.test_set_invalid_level�sJ���!�!��E��K�K� � �$�	(�	
�!�!��G��K�K� � �&�	*roc�z�QoPo]]*UO	[UOO2]2UOO]*oUO	UO[O2UO	UOU2UO	UOUO12UO	UOUOV"O12P![c3oSoSOOXO2Po=CK%Po=hh9hr9	)r�r%rTrr^r_rGr
r r�r2rjrkr�r:	r;	s&    rJr<	�LoggerTest.test_exceptions���%����	7�
��E�
	
����T�^�^�3�3�4�a�8����'�'��*�����������7�������S�)�������t�~�~�&7�8��������-�-��.?�.?�@�	B��!�	7��C��K�K�!�!�#�~�~�6�6��	7�r>	c���[O[QP	29^tt^2UO[UO
OQQ2PPP2P!)%fhP!9h�r1r�ztest message)r�	swap_attrr rvrqr%r�rss&rJ�!test_log_invalid_level_with_raise�,LoggerTest.test_log_invalid_level_with_raisesD��
�
�
�w�(9�4�
@�
@����i������$��O�A�
@�
@�
@�s�-A�A.	�&A.	c���[O[QP
29^tt^2UOO	QQ2PPP2P!)%fhP!9hr�	)rr�	r r%r�rss&rJ�test_log_invalid_level_no_raise�*LoggerTest.test_log_invalid_level_no_raises:��
�
�
�w�(9�5�
A�
A��K�K�O�O�D�.�1�B�
A�
A�
A�s�A
�
A	�A	c�`�,n[OU[OQU1Qk2UOOP	Q5UO
[R2]2UO
QR]*2P!)�print_stackc�D:�ROUO22!r)rr\)r�r'r�s&&�rJr�=LoggerTest.test_find_caller_with_stack_info.<locals>.<lambda>s���f�m�m�D�M�M�O�&Dror�r�)rrr �	tracebackr%�
findCallerr^r_)rFr�s&@rJ� test_find_caller_with_stack_info�+LoggerTest.test_find_caller_with_stack_infosd������
�
�d�G�-�-�}�D�	F�	
�����$��/�����V��a�(����;�V�A�Y�Groc�````�]nUOOnUU1QknU1QknU1QkoUOOoU2UO	UP*O
Q2UP*OoR]*
nU2UO	UP*O
Q2UOUP*OU2UP*OoR]*
nU2UO	UP*O
Q2UOUP*OU2UP*Oo[O2oUOUO2[OnU2UO	UP*O
Q2UOUO2UOOnR]*
nU2UO	UP*O
Q2UOUP*OU2P!)rqc�:�RQRQ5P!rc	r�rf	s��rJri	�>LoggerTest.test_find_caller_with_stacklevel.<locals>.innermost'rk	roc�:�R2P!rr�rm	s�rJr��:LoggerTest.test_find_caller_with_stacklevel.<locals>.inner*ro	roc�:�R2P!rr�rq	s�rJrr	�:LoggerTest.test_find_caller_with_stacklevel.<locals>.outer-rt	rori	r�rr	ru	)r%r�rrGr^r@rr�r r!rDrO)	rFrr	rGrr3r�ri	rg	rh	s	&    @@@@rJru	�+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�6roc�*�Qo]
oP9o9o9o9o9o9q�[OVV4VVVxU	2	o
Q[U
OO	22*FD7oUQ-oUO[UOOVV4VVUV�Q5J9	P!)�	my record�
some value�rl�sinfo)rwrF)	r �_logRecordFactoryrc�__dict__�keysrvr�r%�
makeRecord)
rFrHr,rm�lnor2rjrkr�r�	�rvr\rls
&            rJ�%test_make_record_with_extra_overwrite�0LoggerTest.test_make_record_with_extra_overwriteJs�������:>�>��>�S�>�3�>��>��>�4�
�
&�
&�t�B�S�'/�u�>��*�E�"�+�+�2B�2B�2D�,E�E�E�C��,�'�E����h����(>�(>�� �s�(�$)�
�
8�Froc��Qo]
oP9o9o9o9o9o9q�QQ-o
UOOVV4VVVzU	Q5	oUOQUO2P!)r�	�	valid_keyr�	r�	)r%r�	r4r�	)rFrHr,rmr�	r2rjrkr�r�	rlrs&           rJ�(test_make_record_with_extra_no_overwrite�3LoggerTest.test_make_record_with_extra_no_overwriteWsn������:>�>��>�S�>�3�>��>��>�4��l�+�����'�'��R�c�(0�U�(�L���
�
�k�6�?�?�3roc��UOUOO22UOOFDoUOO	U2J 	UOUOO22P!r)rEr%rArBrOr�rks& rJrK	�LoggerTest.test_has_handlers`s\��������/�/�1�2��{�{�+�+�G��K�K�%�%�g�.�,�������0�0�2�3roc��[OQ2oP
UmUOUO	22P!)z
blah.child)r r!r�r�rA)rF�child_loggers& rJ�test_has_handlers_no_propagate�)LoggerTest.test_has_handlers_no_propagategs1���(�(��6��!&�������1�1�3�4roc�*�UOOOo]UOOmUO[UOOQU2UOUOO
]22P!)�rR)r%r"rRr�r�r�rF	rG	s& rJrH	�LoggerTest.test_is_enabled_forlsb���k�k�)�)�1�1��&(������#��������!4�!4�i��M�������1�1�"�5�6roc��UOOoUOOOoP	UOm]UOOmUO	[
UOQU2UO	[
UOOQU2UO
UOO]22P!)TrrR)r%rr"rRr�r�r�rF	)rF�old_disabledrs&  rJ�#test_is_enabled_for_disabled_logger�.LoggerTest.test_is_enabled_for_disabled_loggerrs����{�{�+�+���k�k�)�)�1�1��#�����&(������#��������j�,�G��������!4�!4�i��M�������1�1�"�5�6roc�"�[O2oUOU[O2UOU[OP22UOU[OP22UOU[OQ22UOU[OQ2O2UOU[OQ2O2UOU[OQ2O2UOU[OQ22UOU[OQ2O2P!)NrvrAr��)r r!r2rvr5rW)rFrvs& rJ�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�Croc��UO[[O[2UO[[OQ2P!)sfoo)rvrqr r!�anyrss&rJ�test_invalid_names�LoggerTest.test_invalid_names�s2�����)�W�%6�%6��<����)�W�%6�%6��?roc��[[O]*2FD`oQFDVo[OU2o[O
V12o[OU2oUOVS2JX	Jb	P!)rq)r�rvrAr�zbaz.bar)r�r��HIGHEST_PROTOCOLr r!r}r�r2)rF�protorHr%rl�	unpickleds&     rJ�
test_pickling�LoggerTest.test_pickling�s^���6�2�2�Q�6�7�E�A�� �*�*�4�0���L�L��/��"�L�L��O�	��
�
�i�0�	B�8roc�x
�UOo[OQ2o[OQ2oUO[O2UOUO
2[O2UOUO-2UOUO[O22UOUO[O22UOUO[OP	[OP
-2UOUO-2UOUO[O22UOUO-2UOUO[O22UOUO[OP	-2UO[O2UOUO
2[O2UOUO-2UOUO[O22UO[O2UOUO
2[O2UOUO-2UOUO-2UOUO-2UOUO[O22UOUO[O22UOUO[O22UOUO[O22UOUO[O22[O2UOUO
2[O2UOUO-2UOUO-2UOUO-2UOUO[O22UOUO[O22UOUO[O22P!)r~r�)r3r r!r9r�r^r4�_cacherErF	r�r:r�r�rR)rFrvr1r2s&   rJ�test_caching�LoggerTest.test_caching�sz�������#�#�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�+;�+;�<�=ro)r%r)rwrxryrzrKr�	r<	r�	r�	r�	ru	r�	r�	rK	r�	rH	r�	r�	r�	r�	r�	r{r|r�r�s@@rJr�	r�	�se����*�*�B�"P�2�H�%7�N8�4�4�5�
7�
7�D�@�1�6>�6>ror�	c�:`�\sQsQsnQsQsQsQsQsUs	P!)�BaseFileTesti�c�b�[OU2[QQ2Um,UmP!)r�ztest_logging-2-)rrKrnrm�rmfilesrss&rJrK�BaseFileTest.setUp�s$�����t�� ��):�;�����roc�$�UOFDo[OU2J	[OO	UO
2%c![OUO
2[OU2P!r)r�	rir�r�r�rmrrV)rFrms& rJrV�BaseFileTest.tearDown�sP���,�,�B��I�I�b�M��
�7�7�>�>�$�'�'�"�"��I�I�d�g�g�����$�roc��UO[OOU2QU*Q5UOOU2P!)zLog file %r does not existro)rErir�r�r�	r)rFr]s&&rJ�
assertLogFile�BaseFileTest.assertLogFile�s=����������x�0�8�8�C�	�	E������H�%roc
�v�[OQ[OQ]UO2PPP2!)r�r�)r r-r:rtrss&rJ�next_rec�BaseFileTest.next_rec�s5��� � ��g�m�m�S�!�!%�!2�!2�!4�d�D�$�H�	Hro)rmr�	)
rwrxryrzrKrVr�	r�	r{r|r}s@rJr�	r�	�s �����
 �&�H�Hror�	c�.`�\sQsQsnQsQsQsUsP!)�FileHandlerTesti�c�D�[OUO2[OUOQP	Q5oUOUO2UO[OOUO22UO[O-22UOUO2UOOUO22UO2P!)rr�)rir�rmr r�r;r8r�r�r�r�r�rrErN)rF�fhs& rJ�
test_delay�FileHandlerTest.test_delay�s���
�	�	�$�'�'��
�
 �
 ����7�$�
G�����"�)�)�$������������0�1�
�	�	�'�'�'��+�,����R�Y�Y�'���������t�w�w�/�0�
���
roc�D�[OUO2[OUOQQQ5oUO[OQ22UOUO22UO2UOUO22[UO29^tt^2oUOUO2O2Q2PPP2P!)%fhP!9h)rr�)r�r�rsr�)rir�rmr r�r@r=rxr�	rNr�r^rer�)rFr
rOs&  rJ�%test_emit_after_closing_in_write_mode�5FileHandlerTest.test_emit_after_closing_in_write_mode�s���
�	�	�$�'�'��
�
 �
 ����7��
E��
����)�)�-�8�9�
����
�
�� �
���
�
����
�
�� �
�$�'�'�]�]�b����R�W�W�Y�_�_�.��4��]�]�]�s�/D�D	�D	r�)rwrxryrzr
r
r{r|r}s@rJr
r
�s�����	5�	5ror
c�`�\sQsQsnQs\O\OQ2Q2s	\O\\Q2Q2Q2s
QsQ	sQQ
ksQsQsQ
s\O(2Q2sQsUsP!)�RotatingFileHandlerTesti�c���[OOUOQ]Q5oUO	UOP22UO
2[OOUOQ]Q5oUO	UOP22UO
2[UOQ29^tt^2oUOQ2PPP2[OOUOQ]Q5oUO	UOP22UO
2P!)%fhKn9h)r�r��maxBytesr��
)	r rBr�rmr��shouldRolloverrNr�r)rF�rhr�s&  rJ�test_should_not_rollover�0RotatingFileHandlerTest.test_should_not_rollovers��
�
�
�
1�
1��G�G�g��2�3������*�*�4�0�1�
���
��
�
�
1�
1����'�A�2�7������*�*�4�0�1�
���
�
�$�'�'�4�
 �
 �A�
�G�G�E�N�!�
�
�
�
1�
1����'�A�2�7������*�*�4�0�1�
���
�!�
 �s�E�E 	�E 	�WASI does not have /dev/null.c���[OO[OQ]Q5oUOUO
UO222UO2P!)rr
)	r rBr�ri�devnullr�r
r�	rN�rFr
s& rJ�!test_should_not_rollover_non_file�9RotatingFileHandlerTest.test_should_not_rollover_non_filesR��
�
�
�
1�
1��
�
�W�q�2�:������*�*�4�=�=�?�;�<�
���
ro�mkfifozrequires os.mkfifo()c	�j``�[OnUO[OR2[O
R2QnUU1Qko[OUQ5o[OU,29^tt^2[OORQ]Q5o[O U29^tt^2UO#2oUO%UO'U22UO)U2PPP2PPP2UO+RO-2WO.[O0*2P![c$oSOQS*2Po=CK<Po=hh9h)%fhK�9h)%fhK�9h)zos.mkfifo(): %sznot readc�:�[RQ29^tt^2oUO2nPPP2P!)%fhP!9h)�rb)r�re)r�rr]s ��rJ�
other_side�ORotatingFileHandlerTest.test_should_not_rollover_named_pipe.<locals>.other_side)s,����h��%�%���v�v�x��&�%�%�%�s�2�A	�A	rrr
)rrNr�r�rir
�PermissionErrorr�r�r�r�
start_threadsr rBr��
contextlib�closingr�	r�r
rxr^rOr2�linesep)rFr�r
rr
r�rr]s&     @@rJ�#test_should_not_rollover_named_pipe�;RotatingFileHandlerTest.test_should_not_rollover_named_pipes0����#�#�����	�(�(�(�3�	1��I�I�h����	 �
�!�!��4��
�
+�
+�V�H�
5�
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�sO�E�
AF"�AF	�
F"�	F�(F�)F�F�F
�F
�F"�"F2	�+F2	c�r�[UOQ29^tt^2oUOQ2PPP2[OOUOQ]Q5oUO
UOUO222UO2P!)%fhK|9h)r�r
rr
)
r�rmrr rBr�rEr
r�	rN)rFr�r
s&  rJ�test_should_rollover�,RotatingFileHandlerTest.test_should_rollover8sv��
�$�'�'�4�
 �
 �A�
�G�G�E�N�!�
�
�
�
1�
1�$�'�'�G�VW�
1�
X������)�)�$�-�-�/�:�;�
���
�	!�
 �s�B&�&B6	�/B6	c�2�[OUO2[OOUOQQ5oUO
UO22UOUO2UO2P!)rr�)
rir�rmr rBr�rxr�	r�	rNr
s& rJ�test_file_created�)RotatingFileHandlerTest.test_file_created?s`��	�	�	�$�'�'��
�
�
�
1�
1�$�'�'�G�
1�
L��
����
�
�� ����4�7�7�#�
���
roc	�n�U%cQU-L-o[OUO2[OO
UO1QQQ]Q]d-U@oUO
[OOUO2U%(2[OQQ-2o[OQQ	-2oUOUOU22UOUOU22UOU2UOUO2UO[OOUOQ*22UOUOU22UOUOU22UOU2UO[OOUO22UOUOQ*2UO[OOUOQ*22UOUOU22UOUOU22UO2P!)
r�r�r�backupCountr
r2r��.1�.2�dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)rir�rmr rBr�r2r�r�r�r�r
rxr�	rErN)rFr�rkr
�small�larges&&    rJ�test_max_bytes�&RotatingFileHandlerTest.test_max_bytesHs���%*�'�5�!���
�	�	�$�'�'��
�
�
�
1�
1��G�G�N�%�N�34�N�?B�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�
���
roc�,�UOP	Q5P!)T)r�)r2
rss&rJ�test_max_bytes_delay�,RotatingFileHandlerTest.test_max_bytes_delay_s�����$��'roc��Qo[OOUOQ]]Q5oVmUOUO
22UOUO2UO[OOUUOQ*222UOUO
22UOUUOQ*22UO[OOUUOQ*222UOUO
22UOUUOQ*22UO[OOUUOQ*222UOUO
22UO[OOUUOQ*222UO2P!)c��UQ*!��.testr�r�	s&rJ�namer�>RotatingFileHandlerTest.test_rollover_filenames.<locals>.namercs���'�>�!ror�r�r,
r
r-
r.
�.3)
r rBr�rmr;
rxr�	r�	r�rir�r�rN)rFr;
r
s&  rJ�test_rollover_filenames�/RotatingFileHandlerTest.test_rollover_filenamesbsn��	"�
�
�
�
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�(=�>�?�
���
roc���QQ[OO2oUUOQ]]Q5oUO	UOUO2UOQ*2UO
UO22UOUO2UO
UO22UOUOUOQ*2Q*2UO[OOUOUOQ*222UO2P!)c�.`�\sQsQsnQsQsQsUsP!)�ZRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotatorivc��UQ*!r9
r�)rFrHs&&rJr;
�`RotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.namerws���g�~�%roc��[OOU2%c [OVQ*2P!P!)�.rotated)rir�r�rt)rF�source�dests&&&rJ�rotator�bRotatingFileHandlerTest.test_namer_rotator_inheritance.<locals>.HandlerWithNamerAndRotator.rotatorzs+���7�7�>�>�&�)�)��J�J�v�j�'8�9�*ror�)rwrxryrzr;
rJ
r{r|r}s@rJ�HandlerWithNamerAndRotatorrC
vs����
&�
:�
:rorL
rr=
r:
r-
rG
)r rBr�rmr^r;
rxr�	r�	r�rir�r�rN)rFrL
r
s&  rJ�test_namer_rotator_inheritance�6RotatingFileHandlerTest.test_namer_rotator_inheritanceus���	:��)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�
���
roc��QoQo[OOUOQ]]Q5oV#mVmUO
2oUOU2UOUO2UO
2oUOU2UUOQ*2oUOU2[Oo[UQ29^tt^2oUO2o	[OU	2o
UOU
O!Q2UO"U*2PPP2UOUO
22UUOQ*2oUOU2[UQ29^tt^2oUO2o	[OU	2o
UOU
O!Q2UO"U*2PPP2UOUO
22UUOQ*2o[UQ29^tt^2oUO2o	[OU	2o
UOU
O!Q2UO"U*2PPP2UO%[O&O)UUOQ*222UO+2P!)%fhCK�9h)%fhCK)9h)%fhK�9h)	c��UQ*!)z.gzr�r�	s&rJr;
�3RotatingFileHandlerTest.test_rotator.<locals>.namer�s���%�<�roc	�d�[UQ29^tt^2oUO2o[OU]	2o[UQ29^tt^2oUO	U2PPP2PPP2[
OU2P!)%fhK09h)%fhK;9h)r
r�)r�re�zlib�compressrrir)rH
rI
�sfr�
compressed�dfs&&    rJrJ
�5RotatingFileHandlerTest.test_rotator.<locals>.rotator�sq���f�d�#�#�r��w�w�y��!�]�]�4��3�
��$��%�%���H�H�Z�(�&�$�

�I�I�f��&�%��$�#�s/�<B�B	�$B�B
�B
�B�B/	�(B/	rr=
r-
r
r�r.
r>
)r rBr�rmrJ
r;
r�	rxr�	rir"
r�rerS
�
decompressr^rOr2r�r�r�rN)rFr;
rJ
r
�m1�m2rm�newliner�rV
rs&          rJ�test_rotator�$RotatingFileHandlerTest.test_rotator�s8��	 �	��
�
�
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�(=�>�?�
���
�%�^�^���^�^���^�s9�,AL�*AL#�AL7�L 	�L 	�#L4	�,L4	�7M	�M	r�r�)rwrxryrzr
rrr�is_wasir
rbr�rir#
r&
r)
r2
r5
r?
rM
�
requires_zlibr]
r{r|r}s@rJr	
r	
�s������(�_�_�W�_�_�&E�F��G�������X�.�0F�G�<�H�<�2���.(��&�&
����*��*ror	
c�\`�\sQsQsn\O
\OQ2Q2sQs	QQks
QsQsQs
Q	sQ
sQs\O"Q2Q
2s\O"Q2Q2s\O"Q2Q2s\O"Q2Q2sQsUsP!)�TimedRotatingFileHandlerTesti�r
c�&�[OO[OQQ]Q5o[
OQ2[OQQ-2oUOUOU22UO2P!)�Sr�r�r,
皙�����?r2ztesting - device file)r rBr�rir
r�r�r�r�r
rN)rFr
r�s&  rJr
�5TimedRotatingFileHandlerTest.test_should_not_rollover�sp���
�
�
6�
6��
�
�C�'�q�7�B���
�
�3���!�!�5�*A�"B�C������*�*�1�-�.�
���
roc	��[OOUOQQ]Q5o[OQ2oUOU2[OQQ-2oUOU2UOUO2[OQ2[OQQ-2oUOU2UO2P
o[OO2oQo[U2FD�oU[OUQ5*
o	UOU	O!Q	2*o
["O$O'U
2oU%fJlUO(O+U
2L	Q
U*oU%Cf.["O$O-UO2vq�["O.U2T
t,tFDp�O1U
2%fJU
MJ	oo
[3QUO!Q2*[4O6Q
5[3QU*[4O6Q
5SFDjo
[3QU
*2["O$O9V�2o[;UQ29^tt^2o[3UO=22PPP2Jl	UO?V[Q5P!tto
h)%fhJ�9h)rd
rre
r;r2ztesting - initialrf
ztesting - after delay��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�ro�,) r rBr�rmr=r@r�rxr�	r�r�rNr<r�r��	timedelta�strftimerir�r�r�	rr��listdirr�r�r�r6r�r�rerE)rFr
r�rrrs�foundr��GO_BACK�secs�prevrmr2�dnr��filesr��tfs&                rJ�
test_rollover�*TimedRotatingFileHandlerTest.test_rollover�s#��
�
�
�
6�
6�����w�A�7�?����� 9�:��
�����
�
"�
"�E�+>�#?�
@��
��������4�7�7�#��
�
�3��
�
"�
"�E�+B�#C�
D��
�����
���
������#�#�%�����'�N�D���+�+�D�9�9�D����4�=�=�)=�>�>�B��G�G�N�N�2�&�E��u����#�#�B�'��
#�=�w�F���u��W�W�]�]�4�7�7�+�F�B� "�
�
�2��C��1�,�,�r�2B�Q�Q��E�C��/�C�L�L�1D�$E�E�C�J�J�W��3�e�;�#�*�*�M����'�!�+�,��w�w�|�|�B�*���$��_�_���"�'�'�)�$�%�_��
	
�����'��D�%�_�_�s�7K6�K6�<K;	�;L
�L
c	��[OUO2[OO	2oUO2oQUOQ*t96cQ6ffL[
OQUOQ**
Q*2[OO	2oUO2oUO]Q5o[OQ2oU%cQUO20LQo[]2FD|o[OOUOQVSQ	5oUOU2[O Q
QU0-2oUO#U2UO%2J~	UO'UO2[)UOQQ59^tt^2o	[+U	2FDvqjUO-QU0U
2J	PPP2[.O0UOUO32]*
1]*2[]2FD|o[OOUOQVSQ	5oUOU2[O Q
Q
U0-2oUO#U2UO%2J~	S[O4U%c]L]Q5*
oUOQUQ
0oUO'U2[)UOQQ59^tt^2o	[+U	2FDvqjUO-Q
U0U
2J	PPP2[)UQQ59^tt^2o	[+U	2FDvqjUO-QU0U
2J	PPP2P!)%fhCK�9h)%fhKn9h)%fhP!9h)g�������?reg�������?g�?)�microsecondr;�W�MIDNIGHTr)r��when�atTimer2z	testing1 r�z	testing2 ��daysr�z%Y-%m-%d)rr�rmr<r�r�rz
r�rtr r=�weekdayr�rBr�r@r�rxrNr�	r��	enumerater4ri�utime�	timestamprm
)
rF�weeklyr�r~
r�r}
r�r
rsr�rn�rolloverDate�otherfns
&&           rJ�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�(�-�
,�%-�
,�
,��-�
,��-�
,�
,�s6� +O�+O�+O+�O	�
O	�O(	�!O(	�+O<	�4O<	c�,�UOP	Q5P!)T)r�
)r�
rss&rJ�test_rollover_at_weekday�5TimedRotatingFileHandlerTest.test_rollover_at_weekdays���&�&�d�&�3roc	�X�UOoU[[OOUO
QQP	Q5U[[OOUO
QQP	Q5U[[OOUO
QQP	Q5P!)�Xrr�r{
�W7)rvr�r rBr�rm)rFrvs& rJ�test_invalid�)TimedRotatingFileHandlerTest.test_invalids���(�(���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�	Broc��]o[OOUOQQP	PQ5oUO	U2oUOV1Q*2UO	UQ*]*
2oUOV1Q*2UO	UQ*2oUOV1Q*2UO	UQ*2oUOV1Q*2UO
2[O]]]2o[OOUOQQP	UQ5oUO	U2oUOV1Q*2UO	UQ*]*
2oUOV1Q*2UO	UQ*2oUOV1Q*2UO	UQ	*2oUOV1Q*2UO
2P!SO
2h9hSO
2h9h)
rrr|
�r�r}
r=r~
�Qi�i�_�i@��ж)	r rBr�rm�computeRolloverr^rNr<r�)rF�currentTimer
rir~
s&    rJ�"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�CH�
CH1�H.�1Ic��[[O22oVQ**
o[O]]]2o[OU2Oo[]2FCD8o[OOUOQQU*]]P	UQ5oVE6�c]U*
U*oLVT*
oUQ*oUQ*
oVr*
oUOU2oV�6wc;[Q[O*2[Q[2*2UOV�2UOUQ*]*
2oV�6wc;[Q[O*2[Q[2*2UOV�2VT6Xc
UQ*
oUOUQ*2oV�6wc;[Q[O*2[Q[2*2UOV�2UOUQ*2oV�6wc;[Q[O*2[Q[2*2UOV�2UO2CJ;	P!SO2h9h)	r�
rzW%d)r�r}
�intervalr,
r=r~
zfailed in timezone: %dzlocal vars: %sr�
i�:	r�
)r0r�r<rC�tm_wdayr�r rBr�rmr�
r��timezone�localsr^rN)	rFr�
�todayr~
�wday�dayr
rjris	&        rJ�#test_compute_rollover_weekly_attime�@TimedRotatingFileHandlerTest.test_compute_rollover_weekly_attimeKs���$�)�)�+�&���E�1�1�����r�1�a�(���{�{�5�!�)�)����8�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���
�s5�/J2�5A	J2�?A/J2�/AJ2�&J2�'A(J2�AJ2�2Kc
���[OQQ5oUO[OU2,o[
O
O
2o[]
2FDAoUOUOQ22U[
O]Q5*
oJC	Qo,o,oSFCDo[OOUQU*2o	[OO!U	Q]]P	Q	5o
UOU
2UO#Q2%c%SFDoUOU8Q
U802J	J�UO#Q2%c/QoV�mSFDoUOU8QU8Q
02J	J�UQ6XfJ�QoV�mSFDoUOQU*2J	CJ	SFD@o
[OOV2o	['U	Q29^tt^2oPPP2JB	[)U2FCD�vqHVt*o
U
O+2oUO-[/U2]U2UO#Q2%cIQU*o	SFD6o[OO1U2voo
UO3V�2J8	J�UO#Q2%c�SFD�o[OO1U2voo
UO5U
Q
2UO3V�Q*2UO7U
[/U2]**O922J�	CJ?UQ6XfCJISFDoo[OO1U2voo
UO5U
Q2UO3U
Q2UO7U
]*O922Jq	CJ�	P!)%fhCJ(9h)r�r�	�%Y-%m-%d_%H-%M-%Sri
�a.b�d.er�z%s.logrl�r}
r�
r,
r�z.log.c��[OOU2vqUOQP2Q*o[OO	V2!)r�)rir�r�rtr��r]rD�basenames&  rJr;
�HTimedRotatingFileHandlerTest.test_compute_files_to_delete.<locals>.namer�sA��(*���
�
�h�(?�%�G�'�/�/���;�f�D�H��7�7�<�<��:�:ror�r�c��[OOU2vqQUQ**Q*o[OOV2!)r�:�NN�.oldlog)rir�r�r�r�
s&  rJr;
r�
�s=��(*���
�
�h�(?�%�G�"�X�b�\�1�I�=�H��7�7�<�<��:�:roz
g%s.oldlogr�z%s.log.r�
)r�
za.b.cr�
zd.e.fr�)rg�mkdtempr��shutil�rmtreer<r�r�rrn
rm
rir�r�r rBr�r�r;
r�r�
�getFilesToDeleter^r_r�r�r�rE�isdigit)rF�wd�timesrr��prefixesru
�rotatorsr�r�rJ
r^r;
rmr��
candidatesr�rTs&                 rJ�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��)�)�"�0�$��"�"�5�)�)�#�A��G�G�M�M�!�,�E�A�r��'�'��F�3��)�)�"�s�l�;��O�O�B�s�6�{�Q��$7�$?�$?�$A�B�	$�
�3��#�A��G�G�M�M�!�,�E�A�r��'�'��I�6��)�)�"�c�2��O�O�B�q�E�M�M�O�4�	$�!-����s�O%	�%O7
�.O7
c
��[O[OQQ52oUO	[
OU2,o[OO2o]
o[U2FDAoUOUOQ22U[O]Q5*
oJC	Q	o,o,o[U2FDkvq�U	]*o[OO!V*Q]UP	Q5oUOU2SFDo
UOU
8QU
802J	Jm	SFDo
UOQU
*2J	SFDoV*O#2J	[U2FD�vq�U	]*oV�*oUO%2oUO'[)U2VK*
U2[*O,Q2oSFDeo[.O0O3U2vooUO5UU
Q*2U[)U
2]*PoUO7UU2Jg	J�	P!)
r�r�	r�
ri
rlr�
r�z
a.log.%s.cz&^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}\z)za.logza.log.b)�pathlib�Pathrgr�
r�r�
r�
r<r�r�rrn
rm
r�
r rBr��touchr�
r^r_rYrZrir�r�r�r	)rFr�
r�
r�n_filesr�r�
ru
r�
r�r�r,
rJ
r^r�r�
�matcherr�rTrmr�s&                    rJ�?test_compute_files_to_delete_same_filename_different_extensions�\TimedRotatingFileHandlerTest.test_compute_files_to_delete_same_filename_different_extensions�s���
�\�\�(�*�*�/�B�
C������
�
�r�*���
�
�
�
"�
"�
$�����w��A��L�L����%8�9�:��(�$�$�Q�/�/�B� �(������"�8�,�I�A��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��%�%�b�&��*�5��S��[��]�,�-��� � ���1�	 �
-rozEST+05EDT,M3.2.0,M11.1.0c�``�[OoUU1Qko[OOROQQP
Q5nUUQ]]
]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22RO2[OOROQQP
[O]]]2Q5nUUQ]]
]];];2UQ]]
]]22UUQ]]
]]2UQ]]]]22UUQ]]
]
]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]
]2UQ]]]]22RO2[OOROQQP
[O]]]2Q5nUUQ]]
]];];2UQ]]
]]22UUQ]]
]]2UQ]]]]22UUQ]]
]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]];];]Q5UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22RO2[OOROQQP
[O]]]2Q5nUUQ]]
]]];2UQ]]
]]22UUQ]]
]]2UQ]]]]22UUQ]]
]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22RO2[OOROQQP
[O]]]2Q5nUUQ]]]]];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]]Q5UQ]]]]]Q52UUQ]]]]];]Q5UQ]]]]]Q52UUQ]]]]]Q5UQ]]]]22UUQ]]]];];]Q5UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22RO2P!)c��:�ROUO22oV!O2*
oU%c+ROU][OUQ52P!P!�rri
�r�
r�
r^r<rm
��currentrjri�diffr
rFs&&  ��rJrz�OTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local.<locals>.test��R����'�'��(9�(9�(;�<�F��.�.�0�0�D��� � ��q�(�*<�*<�T�*J�K�rorr|
�r�r}
r=��r�
��fold�r<r rBr�rmrNr��rF�DTrzr
sf  @rJ�$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��%;�<�
���
roc�``�[OoUU1Qko[OOROQQP
Q5nUUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]
]]];];2UQ]
]]]22UUQ]
]]]2UQ]]]]22UUQ]
]]]2UQ]]]]22RO2[OOROQQP
[O]]]2Q5nUUQ]]
]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22RO2[OOROQQP
[O]]]2Q5nUUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]
]2UQ]]]]22UUQ]
]]];];2UQ]
]]]22UUQ]
]]]2UQ]]]]22UUQ]
]]
]2UQ]]]]22RO2[OOROQQP
[O]]]2Q5nUUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]
]]];];2UQ]
]]]22UUQ]
]]]2UQ]]]]22UUQ]
]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]];];]Q5UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22RO2[OOROQQP
[O]]]2Q5nUUQ]]]]];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]
]]]];2UQ]
]]]22UUQ]
]]]2UQ]]]]22UUQ]
]]]2UQ]]]]22RO2[OOROQQP
[O]]]2Q5nUUQ]]]]];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]]Q5UQ]]]]]Q52UUQ]]]]];]Q5UQ]]]]]Q52UUQ]]]]]Q5UQ]]]]22UUQ]]]];];]Q5UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22RO2P!)c��:�ROUO22oV!O2*
oU%c+ROU][OUQ52P!P!r�
r�
r�
s&&  ��rJrz�ITimedRotatingFileHandlerTest.test_compute_rollover_W6_local.<locals>.testar�
ror�W6r�
r�
r�
r�
r�
r�
sf  @rJ�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��%<�=�
���
roc��``�[OoUU1Qko[OOROQQP
]Q5nUUQ]]]];];2UQ]]]]22UUQ]]	]]2UQ]]]]22UUQ]]	]]2UQ]]]]22UUQ]]
]];];2UQ]]
]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22RO2[OOROQQP
][O]]]2Q5nUUQ]]]];];2UQ]]
]]22UUQ]]]]2UQ]]]]22UUQ]]]
]2UQ]]]]22UUQ]]
]];];2UQ]]]]22UUQ]]
]]2UQ]]
]]22UUQ]]
]
]2UQ]]
]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]
]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]
]2UQ]]]]22RO2P!)c��:�ROUO22oV!O2*
oU%c+ROU][OUQ52P!P!r�
r�
r�
s&&  ��rJrz�XTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_interval.<locals>.test�r�
rorr|
�r�r}
r=r�
r�
�r�r}
r=r�
r~
r�
r�
sf  @rJ�-test_compute_rollover_MIDNIGHT_local_interval�JTimedRotatingFileHandlerTest.test_compute_rollover_MIDNIGHT_local_interval�s����
�
��	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��%;�<�
���
roc�J
``�[OoUU1Qko[OOROQQP
]Q5nUUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]
]]];];2UQ]
]]]22UUQ]
]]]2UQ]]]]22UUQ]
]]]2UQ]]]]22UUQ]
]]];];2UQ]]]]22UUQ]
]]]2UQ]]]]22UUQ]
]]]2UQ]]]]22RO2[OOROQQP
][O]]]2Q5nUUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]
]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]
]]];];2UQ]]]]22UUQ]
]]]2UQ]]]]22UUQ]
]]]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]]2UQ]]]]22RO2[OOROQQP
][O]]]2Q5nUUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]
]2UQ]]]]22UUQ]]]];];2UQ]]]]22UUQ]]]]2UQ]]]]22UUQ]]]
]2UQ]]]]22UUQ]
]]];];2UQ]
]]]22UUQ]
]]]2UQ]]]]22UUQ]
]]
]2UQ]]]]22UUQ]
]]];];2UQ]]]]22UUQ]
]]]2UQ]]]]22UUQ]
]]
]2UQ]]]]22RO2P!)c��:�ROUO22oV!O2*
oU%c+ROU][OUQ52P!P!r�
r�
r�
s&&  ��rJrz�RTimedRotatingFileHandlerTest.test_compute_rollover_W6_local_interval.<locals>.testr�
rorr�
r�
r�
r�
r�
r�
sf  @rJ�'test_compute_rollover_W6_local_interval�DTimedRotatingFileHandlerTest.test_compute_rollover_W6_local_intervals����
�
��	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�&=�>�
���
ror�r�)rwrxryrzrrrr_
r
rw
r�
r�
r�
r�
r�
r�
r�
�run_with_tzr�
r�
r�
r�
r{r|r}s@rJrb
rb
�s�����
�_�_�W�_�_�&E�F��G��((�T)5�V4�B�%�P4�l@5�D&2�T
���3�4�k�5�k�^
���3�4�y�5�y�z
���3�4�.�5�.�d
���3�4�B�5�Brorb
c�j�[OQ-U@[O]Q5*!)rqri
r�)r<rm
)rs,rJrr
rr
Ts&�����#��#�x�'9�'9�!�'D�D�Dro�W0)r�
�hoursc	���[OOUOQV]P	Q5oQoUO	U2oUOQ2%c#U[
]U]*
*Q5*
oLV2*oV66wCc�UQ6XCcyUO%c[OU2oL[OU2oU]*oU]*o	U]*o
[OOU]<*U	*]<*U
**
oV[*o[QU8QUO8Q0[OQ	5[Q
U*[OQ	5[QU	*[OQ	5[QU
*[OQ	5[Q
U*[OQ	5[QU*[OQ	5UO!V62UO#2P![c-o
[QS
*[OQ	5Po
=
KUPo
=
hh9h)r)r�r}
r�
r,
r=rYr{
r
r|
zt: z (�)rk
zcurrentHour: %szcurrentMinute: %szcurrentSecond: %szr: %sz
result: %sz exception in diagnostic code: %s)r rBr�rmr�
r�rr
r=r�rC�	localtime�	_MIDNIGHTr�r�r6r�r^rN)rFr}
r�
�expr
r�
rir^�currentHour�
currentMinute�
currentSecondr�rr�s&&&&          rJ�test_compute_rolloverr�
`s����!�!�:�:����'��UV�\`�;�b�B��K��'�'��4�F����s�#�#��t��H�Q�J��0�0������}��:�%�W��6�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�V��W�s%�H.�&E%H.�.	I%�8I%�9"I � I%ztest_compute_rollover_%s�	_intervalc�`�\sQsQsn\O
\Q2Q2s\O
\OQ6HQ2Q2s
QsUsP!)�NTEventLogHandlerTesti�z>win32evtlog/win32evtlogutil/pywintypes required for this test.c�"�Qo[OPU2o[OU2o[OOQ2o[OQQ-2oUOU2UO2UOU[OU22[O[O *oP
o]do	[O"V'U	2o
S
FD8oUO$Q6wcJ[&O(VQ2oUQ6wcJ5P	oL	QU	*oUO+V�Q5P![Oc.oSO]6Xc[OQ2ggPo=hh9h)�Application�test_loggingz#Insufficient privileges to run testr2zTest Log MessagezTest Log Message
z3Record not found in event log, went back %d recordsro)�win32evtlog�OpenEventLog�GetNumberOfEventLogRecordsr rB�NTEventLogHandler�
pywintypesr��winerrorr�SkipTestr�r�rN�
assertLess�EVENTLOG_BACKWARDS_READ�EVENTLOG_SEQUENTIAL_READ�ReadEventLog�
SourceName�win32evtlogutil�SafeFormatMessagerE)rF�logtype�elh�num_recsrUr�r��flagsrp
rq
r�r2s&           rJr�� 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#�E�F� F�!F	�2F	�	F�win32zWindows required for this testc��[OOQ2oUOUO2UOUOQ2[OQQ-2oUOU2P!)�python_testz"_winapi module should be availabler2zHello!)	r rBr�
r�rNr�_winapir�rx)rFrUr�s&  rJ�test_without_pywin32�*NTEventLogHandlerTest.test_without_pywin32�s_�����.�.�}�=�������� �	
���Q�Y�Y�(L�M��!�!�5�(�"3�4��	���q�	ror�)
rwrxryrzrrbr�
r�r�r�rr{r|r}s@rJr�
r�
�sS����
����&f�g�(�h�(�B�������0�2R�S��T�ror�
c�(`�\sQsQsnQsQsUsP!)�MiscTestCasei�c�J�.Qlo[OU[UQ5P!)r�)�not_exported>rvr8�Filtererr��
RootLoggerr��PlaceHolderr��currentframer��StrFormatStyler�rmr�)r�check__all__r )rFrs& rJ�test__all__�MiscTestCase.test__all__�s��,��
	���T�7��Fror�)rwrxryrzrr{r|r}s@rJrr�s����G�Grorc�(`�\sQsQsnQsQsUsP!)�
TestModulei�c�b�QoQFD}oUOUQ59^tt^2UO[U29^tt^2o[[U2PPP2UOWO[2PPP2J	P!)%fhK>9h)%fhJ�9h)z3is deprecated and slated for removal in Python 3.20)�attr)�__version__�__date__)r r+r,r0r r^r]rE)rFr2r$r�s&   rJ�%test_deprecated__version__and__date__�0TestModule.test_deprecated__version__and__date__�sw��C��/�D����4��(�(��*�*�+=�s�C�C�r��G�T�*�D�� � ����h�7�)�(�0�C�C��)�(�(�s/�B	�B

�(B	�
B�B�B	�B.
�&B.
r�)rwrxryrzr'r{r|r}s@rJr"r"�s����8�8ror"c�^�[O[OQP22P!)�LC_ALL)r�enterModuleContextr�run_with_localer�rorJ�setUpModuler-�s������ 7� 7��"� E�Fro�__main__rr�)rd
rq)�M�<)�Hi)�Dr�
)r|
r�
)rqr�)�r �logging.handlers�logging.configrtr4r 
r&r<r�
r�r6rr`r|rir�r�rYr�
rIr�r�rg�test.support.script_helperrrrzr�test.supportrrrrr	r
r�test.support.logging_helperrr"r�r�r�rr�r��http.serverr
r�
unittest.mockrrr�urllib.parserr�socketserverrrrrr�
rrrJrS
r�HAVE_ASAN_FORK_BUGr�check_sanitizerr�TestCaserr�r��SILENTr�TERSE�EFFUSIVErrT�	TALKATIVEr�
CHATTERBOX�BORINGr�r$rr�r	rrrnrpr�rr;r"r*r.rHrCrmr{r�r�r�r�r�r`rr�r�r=rrrr�rbr�r�r�r�r�IPV6_ENABLEDr"r*rWrkr}r�r�r�r�rBr�r�r�r�r�r�r�r�r�r�r�rfr|r-r�r�r�r.r�rm
r��tzinfor�r=rr
r�r�r�r�r�r�r�r�r�rr]r�r1	r�rQ	r�	r[	r�	r�	r
r	
rb
rr
r}
r�
r�
r�
rHrwr�r�
rr"r-�mainr�rorJ�<module>rHs���*���������
�	��	��	��
�	�
�
�
�
��N��&�"�&�)�(�!��3��������:�+�+�+�D�D�6�3�3�	���O�O����E�G���O�O����4�(�-�/��
d'�x� � �d'�NUI��UI�nJ8�h�J8�h�������������	��	��
����F�F�Q�J�'���(��*�	�'��*��*��)�
�+�
�+��,�
�(���+�g�n�n�+�:����:�C'��C'�L�Z:�(�Z:�z1��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�(�	� � �"��,�,�.�U1��U1�/�#�U1�n
���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������V?�X�V?�r89�(�9�.&�h�&�>	�w�(�(�	� �8� �F�,�,�.�zP�x�zP�/�zP�x�7���_�-�-��#���0�0�2�]&�H�]&�3��]&�@���!����(�/�/��
�e��.�.�nA�H�%�%�'9�nA�b&�W�7�7�&�G�X�.�.�G�&@�H�@�,$;�X�$;�N	�	�$�w�*�*�$�T/�8�T/�nx/�(�x/�vL8�H�L8�^n#�h�'�'�n#�bc-��)�)�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,�H�,�^G�8�$�$�G�8��"�"�8�G��z���M�M�O���]d�6�15�5�K�5�/�J�6��
�	��	�s0�^?�,_�?_�_�_�_�_�_

Youez - 2016 - github.com/yon3zu
LinuXploit