HEX
Server: nginx/1.24.0
System: Linux prod-btpayments-io 6.14.0-1018-aws #18~24.04.1-Ubuntu SMP Mon Nov 24 19:46:27 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 8.3.19
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/supervisor/__pycache__/dispatchers.cpython-312.pyc
�

A�c]K���ddlZddlmZddlmZddlmZddlmZddlm	Z	ddlm
Z
ddlmZdd	lm
Z
dd
lmZddlmZGd�d
�ZGd�de�ZGd�de�ZGd�de�ZdZdZd�ZGd�de�Zd�Zy)�N)�find_prefix_at_end)�compact_traceback)�	as_string)�notify)�EventRejectedEvent)�ProcessLogStderrEvent)�ProcessLogStdoutEvent)�EventListenerStates)� getEventListenerStateDescription)�loggersc�J�eZdZdZdZd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
y)
�PDispatcherz{ Asyncore dispatcher for mainloop, representing a process channel
    (stdin, stdout, or stderr).  This class is abstract. Fc�<�||_||_||_d|_y�NF)�process�channel�fd�closed��selfrrrs    �8/usr/lib/python3/dist-packages/supervisor/dispatchers.py�__init__zPDispatcher.__init__s��������������c	��d|jj�dt|��d|j�d|j�d�	S)N�<z at z for � (z)>)�	__class__�__name__�idrr�rs r�__repr__zPDispatcher.__repr__s.��+/�>�>�+B�+B�+-�d�8�+/�<�<�+/�<�<�9�	9rc��t��N��NotImplementedErrorr s r�readablezPDispatcher.readable ���!�!rc��t�r#r$r s r�writablezPDispatcher.writable#r'rc��t�r#r$r s r�handle_read_eventzPDispatcher.handle_read_event&r'rc��t�r#r$r s r�handle_write_eventzPDispatcher.handle_write_event)r'rc���t�\}}}}|jjjjjdt
|��d|�d|�d|�d�	�|j�y)Nz-uncaptured python exception, closing channel r�:� �))rr�config�options�logger�critical�repr�close)r�nil�t�v�tbinfos     r�handle_errorzPDispatcher.handle_error,sW��-�/���Q��6������#�#�*�*�3�3��T�
����	
�	�	
�
�
�rc��|jsQ|jjjjjd|j�d|���d|_yy)Nzfd z closed, stopped monitoring T)rrr2r3r4�debugrr s rr7zPDispatcher.close9sF���{�{��L�L���'�'�.�.�4�4�9=���$�G�
I��D�K�rc��yr#�r s r�flushzPDispatcher.flush?s��rN)r�
__module__�__qualname__�__doc__rrr!r&r)r+r-r<r7rAr@rrrrs;��=��F��9�"�"�"�"���
rrc�f�eZdZdZdZdZdZdZdZd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zy)�POutputDispatcherae
    Dispatcher for one channel (stdout or stderr) of one process.
    Serves several purposes:

    - capture output sent within <!--XSUPERVISOR:BEGIN--> and
      <!--XSUPERVISOR:END--> tags and signal a ProcessCommunicationEvent
      by calling notify(event).
    - route the output to the appropriate log handlers as specified in the
      config.
    NFrc�d�||_||_||_|jj|_|j	�|j�|j|_|jj}|jj}|t|�f|_|t|�f|_tjj|_|jj"}|j$j&|j k|_|j*|_|j,|_y)z�
        Initialize the dispatcher.

        `event_type` should be one of ProcessLogStdoutEvent or
        ProcessLogStderrEvent
        N)r�
event_typerr�_init_normallog�_init_capturelog�	normallog�childlog�BEGIN_TOKEN�	END_TOKEN�len�begintoken_data�
endtoken_datar�LevelsByName�DEBG�
mainlog_levelr2r3�loglevel�log_to_mainlog�stdout_events_enabled�stderr_events_enabled)rrrHr�
begintoken�endtokenr2s       rrzPOutputDispatcher.__init__Ts������$���������.�.���������������
��_�_�0�0�
��?�?�,�,�� *�C�
�O�<���&��H�
�6���$�1�1�6�6������$�$��$�n�n�5�5��9K�9K�K���%+�%A�%A��"�%+�%A�%A��"rc��|jj}|j}t|d|z�}t|d|z�}t|d|z�}t|d|z�}|s|r|jj�|_|r'tj|j|d|||��|r/tj|j|jdz��y	y	)
z�
        Configure the "normal" (non-capture) log for this channel of this
        process.  Sets self.normallog if logging is enabled.
        �
%s_logfile�%s_logfile_maxbytes�%s_logfile_backupsz	%s_syslog�%(message)s)�filename�fmt�rotating�maxbytes�backupsz %(message)s)raN)rr2r�getattrr3�	getLoggerrKr�handle_file�
handle_syslog�name)rr2r�logfilercrd�	to_syslogs       rrIz!POutputDispatcher._init_normallogps���
���$�$���,�,���&�,��"8�9���6�#8�7�#B�C���&�"6��"@�A���F�K�'�$9�:�	��i�#�^�^�5�5�7�D�N�������� �!�!)�\�)�!��

���!�!�����K�K�.�0�
�rc��t|jjd|jz�}|rV|jjjj�|_tj|jd|��yy)z�
        Configure the capture log for this process.  This log is used to
        temporarily capture output when special output is detected.
        Sets self.capturelog if capturing is enabled.
        z%s_capture_maxbytesr_)rarcN)	rerr2rr3rf�
capturelogr�handle_boundIO)r�capture_maxbytess  rrJz"POutputDispatcher._init_capturelog�sk��#�4�<�<�#6�#6�#8�4�<�<�#G�I���"�l�l�1�1�9�9�C�C�E�D�O��"�"����!�)�
�rc��|j|jfD]6}|��|jD]"}|j�|j	��$�8yr#)rKrm�handlers�remove�reopen�r�log�handlers   r�
removelogszPOutputDispatcher.removelogs�sJ���N�N�D�O�O�4�	%�C���"�|�|�%�G��N�N�$��N�N�$�%�	%rc��|j|jfD]&}|��|jD]}|j���(yr#)rKrmrqrsrts   r�
reopenlogszPOutputDispatcher.reopenlogs�s@���N�N�D�O�O�4�	%�C���"�|�|�%�G��N�N�$�%�	%rc�
�|�rl|jj}|jjrt	|�}|j
r|j
j
|�|jrot|t�s|}n	|jd�}d}|jjj|j||j|j |��|j dk(rB|j"r5t%t'|j|jj(|��yy|j*r5t%t-|j|jj(|��yyy#t$rd|z}Y��wxYw)Nzutf-8�Undecodable: %rz%%(name)r %(channel)s output:
%(data)s)rir�data�stdout)rr2r3�
strip_ansi�stripEscapesrL�inforV�
isinstance�bytes�decode�UnicodeDecodeErrorr4rurTrirrWrr	�pidrXr)rr|r2�text�msgs     r�_logzPOutputDispatcher._log�sC����\�\�(�(�F��~�~�(�(�#�D�)���}�}��
�
�"�"�4�(��"�"�!�$��.��D�8�#�{�{�7�3��?�����%�%�)�)��&�&��&�+�+� �L�L�t�*�5��|�|�x�'��-�-��-�d�l�l� �L�L�,�,�d�4��.��-�-��-�d�l�l� �L�L�,�,�d�4��.�3��.�8�0�4�7��8�s�E1�1F�Fc�R�|j�%|j}d|_|j|�y|jr|j\}}n|j
\}}t
|j�|kry|j}d|_	|j|d�\}}|j|�|j�||_|r|j�yy#t$rBd}t||�}|r|j||dz|_|d|}|j|�Y�^wxYw)Nr�)rm�
output_bufferr��capturemoderQrPrO�split�toggle_capturemode�
ValueErrorr�
record_output)rr|�token�tokenlen�before�after�indexs       rr�zPOutputDispatcher.record_output�s$���?�?�"��%�%�D�!$�D���I�I�d�O�����"�0�0�O�E�8�"�2�2�O�E�8��t�!�!�"�h�.���!�!�� ���	'� �J�J�u�a�0�M�F�E�
�I�I�f���#�#�%�!&�D������ ����	��E�&�t�U�3�E��%)�%7�%7�$��v�w�-�%G��"��G�e�V�}���I�I�d�O�
	�s�
C�AD&�%D&c���|j|_|j��V|jr|j|_y|jjD]}|j	��|jj�}|j}|jjj}|j|j|jj|�}t|�d}|jjjjj|||��|jjD]"}|j!�|j#��$|j$|_yy)Nz-%(procname)r %(channel)s emitted a comm event)�procnamer)r�rmrLrqrA�getvaluerrr2rirHr�rr3r4r>rrrsrK)rrvr|rr��eventr�s       rr�z$POutputDispatcher.toggle_capturemode�s"��#�/�/�/����?�?�&���� $����
�#���7�7�$�G��M�M�O�$����/�/�1���,�,���<�<�.�.�3�3��������d�l�l�6F�6F��M���u�
�E�����#�#�+�+�2�2�8�8��BJ�AH�9�J� $���7�7�%�G��N�N�$��N�N�$�%�!%����
�''rc��yrr@r s rr)zPOutputDispatcher.writable	���rc��|jryy�NFT�rr s rr&zPOutputDispatcher.readable����;�;��rc���|jjjj|j�}|xj
|z
c_|j
�|s|j�yyr#)rr2r3�readfdrr�r�r7)rr|s  rr+z#POutputDispatcher.handle_read_eventsV���|�|�"�"�*�*�1�1�$�'�'�:�����d�"�������
�J�J�L�	r)rrBrCrDrLrKrmr�r�rrIrJrwryr�r�r�r)r&r+r@rrrFrFBs]��	��H��I��J��K��M�B�8�@� %�%��@"!�H/�0��
rrFc�v�eZdZdZdZdZdZdZee�Z	ee�Z
d�Zd�Zd�Z
d	�Zd
�Zd�Zd�Zd
�Zd�Zy)�PEventListenerDispatcherzN An output dispatcher that monitors and changes a process'
    listener_state NrsREADY
sRESULT c���tj||||�tj|j_d|j_d|_d|_t|jd|z�}|r�t|jd|z�}t|jd|z�}|jjj�|_
tj|j|d|||��yy)Nrr\r]r^r_)rbrcrd)rrr
�ACKNOWLEDGEDr�listener_stater��result�	resultlenrer2r3rfrLrrg)rrrrrjrcrds       rrz!PEventListenerDispatcher.__init__&s������T�7�G�R�8�':�&F�&F����#�!������������'�.�.�,��*@�A����w�~�~�/D�w�/N�O�H��g�n�n�.B�W�.L�M�G�#�N�N�2�2�<�<�>�D�M�����
�
���!)�\�)�!��

�	rc��|j�<|jjD]"}|j�|j��$yyr#)rLrqrrrs�rrvs  rrwz#PEventListenerDispatcher.removelogs>s>���=�=�$��=�=�1�1�
!����� ���� �
!�%rc�t�|j�,|jjD]}|j��yyr#)rLrqrsr�s  rryz#PEventListenerDispatcher.reopenlogsDs4���=�=�$��=�=�1�1�
!����� �
!�%rc��yrr@r s rr)z!PEventListenerDispatcher.writableJr�rc��|jryyr�r�r s rr&z!PEventListenerDispatcher.readableMr�rc�x�|jjjj|j�}|r�|xj
|z
c_|jjj}|�d|j�d|��}|jjjjj|�|jra|jjjjrt|�}|jj|�n|j�|j�y)Nr0z	 output:
)rr2r3r�r�state_bufferrirr4r>rLr~rr�r7�handle_listener_state_change)rr|r�r�s    rr+z*PEventListenerDispatcher.handle_read_eventRs����|�|�"�"�*�*�1�1�$�'�'�:�������%���|�|�*�*�/�/�H�)1�4�<�<��F�C��L�L���'�'�.�.�4�4�S�9��}�}��<�<�&�&�.�.�9�9�'��-�D��
�
�"�"�4�(�

�J�J�L��)�)�+rc���|j}|sy|j}|jj}|j}|t
jk(rd|_y|t
jk(r�t|�|jkry|j|j�rG|jt
j�|j}|j|d|_d|_n-|jt
j�d|_d|_|jr|j�yy|t
jk(r.|jt
j�d|_d|_y|t
j k(�r@|j"�^|j%d�}|dk(ry|jd|}|j|dzd|_||j&d}	t)|�|_n�|j"t|j:�z
}	|	rX|xj:|jd|	z
c_|j|	d|_|j"t|j:�z
}	|	s:|j=|j:�d|j_d|_d|_|jr|j�yyy#t*$r�	t-|�}n#t.$rd|z}YnwxYw|jj0j2j5|�d|�d��|jt
j�d|_t7t9||j��d|_YywxYw)Nr�
���r�r{z: bad result line: '�')r�rr2rir�r
�UNKNOWNr�rO�READY_FOR_EVENTS_LEN�
startswith�READY_FOR_EVENTS_TOKEN�_change_listener_state�READYr�r��BUSYr��find�RESULT_TOKEN_START_LEN�intr�rr�r3r4�warnrrr��
handle_result)
rr|rr��stater��pos�result_liner��neededs
          rr�z5PEventListenerDispatcher.handle_listener_state_changefs��� � �����,�,���>�>�&�&���&�&���'�/�/�/� #�D����'�4�4�4��4�y�4�4�4�4������!<�!<�=��+�+�,?�,E�,E�F��4�4��$(�$5�$5�h�i�$@��!� $��
��+�+�,?�,G�,G�H�$'��!� $��
�� � ��1�1�3��
�)�/�/�
/��'�'�(;�(C�(C�D� #�D�� �G�M��
�)�.�.�
.��~�~�%��i�i��&���"�9��"�/�/���5��$(�$5�$5�c�!�e�f�$=��!�'��(C�(C�(D�E�	��%(��^�D�N� ���#�d�k�k�*:�:����K�K�4�#4�#4�W�f�#=�=�K�(,�(9�(9�&�'�(B�D�%�!�^�^�c�$�+�+�.>�>�F���&�&�t�{�{�3�)-�D�L�L�&�"%�D�K�%)�D�N�� � ��1�1�3�!�U/��"��F�&/��&<���-�F�&7�+�&E��F���N�N�*�*�1�1�6�6�9A�;�O���/�/�0C�0K�0K�L�(+�D�%��-�g�w�}�}�E�F�$(�G�M���s7� K�	M6�K�M6�K/�,M6�.K/�/BM6�5M6c���|j}|jj}|jjj}	|jj
jj
|j|�|jd|z�|jtj�y#t$rU|jd|z�|jtj�tt||j��Yy|jd|z�|jtj �tt||j��YyxYw)Nz%s: event was processedz%s: event was rejectedz%s: event caused an error)rr2rir3r4�group�result_handlerr�r>r�r
r��RejectEventr�rrr�)rr�rr�r4s     rr�z&PEventListenerDispatcher.handle_result�s���,�,���>�>�&�&�����'�'�.�.��	?��L�L���%�%�4�4�W�]�]�F�K��L�L�2�X�=�>��'�'�(;�(H�(H�I���	?��K�K�0�8�;�<��'�'�(;�(H�(H�I��%�g�w�}�}�=�>�	?��K�K�3�h�>�?��'�'�(;�(C�(C�D��%�g�w�}�}�=�>�s�A-B2�2AE$�AE$c��|j}|jj}|j}|�dt	|��dt	|���}|jj
jj|�||_|tjk(r5d|z}|jj
jj|�yy)Nz: z -> z�%s: has entered the UNKNOWN state and will no longer receive events, this usually indicates the process violated the eventlistener protocol)rr2rir�rr3r4r>r
r�r�)r�	new_staterr��	old_stater�s      rr�z/PEventListenerDispatcher._change_listener_state�s����,�,���>�>�&�&���*�*�	�
�,�Y�7�,�Y�7���
	�����%�%�+�+�C�0�!*����+�3�3�3�9�;C�D�C�
�N�N�"�"�)�)�.�.�s�3�	4r)rrBrCrDrLr�r��RESULT_TOKEN_STARTrOr�r�rrwryr)r&r+r�r�r�r@rrr�r�sd����H��L�'��#���5�6�� �!3�4���0!�!���
,�(U4�n?�$4rr�c�.�eZdZdZd�Zd�Zd�Zd�Zd�Zy)�PInputDispatcherz Input (stdin) dispatcher c�B�tj||||�d|_y)Nr)rr�input_bufferrs    rrzPInputDispatcher.__init__�s�����T�7�G�R�8���rc�6�|jr
|jsyy)NTF)r�rr s rr)zPInputDispatcher.writable�s�����T�[�[��rc��yrr@r s rr&zPInputDispatcher.readable�r�rc��|jjjj|j|j
�}|j
|d|_yr#)rr2r3�writerr�)r�sents  rrAzPInputDispatcher.flush�sG���|�|�"�"�*�*�0�0����15�1B�1B�D�� �-�-�d�e�4��rc���|jr	|j�yy#t$rC}|jdtj
k(rd|_|j
�n�Yd}~yd}~wwxYw)Nrr)r�rA�OSError�args�errno�EPIPEr7)r�whys  rr-z#PInputDispatcher.handle_write_event�s]�����
��
�
�����
��8�8�A�;�%�+�+�-�(+�D�%��J�J�L��!��
�s� �	A,�9A'�'A,N)	rrBrCrDrr)r&rAr-r@rrr�r��s��$� ��
�5�	rr�s[)�H�f�A�B�C�D�R�s�u�J�K�h�l�p�mc���d}d}d}t|�}||krR|dk(r|||dztvrd}n1|r/|jt|�}|dk(r|||dzS||||z}|}d}|dz
}||kr�R|S)z>
    Remove all ANSI color escapes from the given string.
    rr�rr�N)rO�ANSI_TERMINATORSr��ANSI_ESCAPE_BEGIN)�sr��show�i�L�ns      rrrs����F��D�	�A��A��A�
�a�%��1�9��1�Q��U��'7�7��D�
����(�!�,�A��B�w���!�"��~�%��!�A�a�&�������	�Q����a�%��Mrc��eZdZdZy)r�zY The exception type expected by a dispatcher when a handler wants
    to reject an event N)rrBrCrDr@rrr�r�s��rr�c�$�|dk7rt|��y)NsOK)r�)r��responses  r�default_handlerr� s���5���(�#�#�r)r��supervisor.medusa.asynchat_25r�supervisor.medusa.asyncore_25r�supervisor.compatr�supervisor.eventsrrrr	�supervisor.statesr
r�
supervisorrrrFr�r�r�r�r�	Exceptionr�r�r@rr�<module>r�s����<�;�'�$�0�3�3�1�>��2
�2
�hW��W�rE4�{�E4�N�{��@��2���,�)��$r