� !A?h����dZddlZddlmZddlmZddlmZddlmZddlmZej Z ej Z ej Z Gd �d ej ej ��ZGd �d ��Zdddejfd �Zdddejd�d�ZdS))�create_subprocess_exec�create_subprocess_shell�N�)�events)� protocols)�streams)�tasks)�loggerc�L��eZdZdZ�fd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �Z �xZ S) �SubprocessStreamProtocolz0Like StreamReaderProtocol, but for a subprocess.c����t���|���||_dx|_x|_|_d|_d|_g|_|j � ��|_ dS)N)�loopF) �super�__init__�_limit�stdin�stdout�stderr� _transport�_process_exited� _pipe_fds�_loop� create_future� _stdin_closed)�self�limitr� __class__s ��?/opt/alt/python-internal/lib64/python3.11/asyncio/subprocess.pyrz!SubprocessStreamProtocol.__init__sl��� �����d��#�#�#��� �15�5�� �5�T�[�4�;����$������!�Z�5�5�7�7�����c�D�|jjg}|j�|�d|j����|j�|�d|j����|j�|�d|j����d�d�|����S)Nzstdin=zstdout=zstderr=z<{}>� )r�__name__r�appendrr�format�join)r�infos r�__repr__z!SubprocessStreamProtocol.__repr__s�����'�(�� �:� !� �K�K�/���/�/� 0� 0� 0� �;� "� �K�K�1�$�+�1�1� 2� 2� 2� �;� "� �K�K�1�$�+�1�1� 2� 2� 2��}�}�S�X�X�d�^�^�,�,�,rc�J�||_|�d��}|�Ytj|j|j���|_|j�|��|j� d��|�d��}|�Ytj|j|j���|_ |j �|��|j� d��|�d��}|�$tj ||d|j���|_ dSdS)Nr�rr�r)�protocol�readerr) r�get_pipe_transportr� StreamReaderrrr� set_transportrr#r� StreamWriterr)r� transport�stdout_transport�stderr_transport�stdin_transports r�connection_madez(SubprocessStreamProtocol.connection_made(s,��#���$�7�7��:�:�� � '�!�.�T�[�48�J�@�@�@�D�K� �K� %� %�&6� 7� 7� 7� �N� !� !�!� $� $� $�$�7�7��:�:�� � '�!�.�T�[�48�J�@�@�@�D�K� �K� %� %�&6� 7� 7� 7� �N� !� !�!� $� $� $�#�6�6�q�9�9�� � &� �-�o�7;�59�37�:�?�?�?�D�J�J�J� '� &rc�t�|dkr|j}n|dkr|j}nd}|�|�|��dSdS�Nrr*)rr� feed_data)r�fd�datar,s r�pipe_data_receivedz+SubprocessStreamProtocol.pipe_data_received@sS�� ��7�7��[�F�F� �1�W�W��[�F�F��F� � � � � �T� "� "� "� "� "� � rc��|dkrw|j}|�|���|�|��|�|j�d��n&|j�|��d|j_dS|dkr|j}n|dkr|j}nd}|�,|�|� ��n|�|��||j vr|j � |��|� ��dS)NrFrr*) r�close�connection_lostr� set_result� set_exception�_log_tracebackrr�feed_eofr�remove�_maybe_close_transport)rr9�exc�piper,s r�pipe_connection_lostz-SubprocessStreamProtocol.pipe_connection_lostJs�� ��7�7��:�D���� � � � � � � � �� %� %� %��{��"�-�-�d�3�3�3�3��"�0�0��5�5�5�5:��"�1� �F� ��7�7��[�F�F� �1�W�W��[�F�F��F� � ��{����!�!�!�!��$�$�S�)�)�)� ��� � � �N� !� !�"� %� %� %� �#�#�%�%�%�%�%rc�<�d|_|���dS)NT)rrD�rs r�process_exitedz'SubprocessStreamProtocol.process_exitedhs"��#��� �#�#�%�%�%�%�%rc��t|j��dkr)|jr$|j���d|_dSdSdS)Nr)�lenrrrr=rIs rrDz/SubprocessStreamProtocol._maybe_close_transportlsL�� �t�~� � �!� #� #��(<� #� �O� !� !� #� #� #�"�D�O�O�O� $� #� #� #rc�&�||jur|jSdS�N)rr)r�streams r�_get_close_waiterz*SubprocessStreamProtocol._get_close_waiterqs �� �T�Z� � ��%� %� � r) r"� __module__� __qualname__�__doc__rr'r5r;rGrJrDrP� __classcell__)rs@rr r s��������:�:�8�8�8�8�8�-�-�-�?�?�?�0#�#�#�&�&�&�<&�&�&�#�#�#� &�&�&�&�&�&�&rr c�b�eZdZd�Zd�Zed���Zd�Zd�Zd�Z d�Z d�Z d �Z d �Z d d �Zd S)�Processc��||_||_||_|j|_|j|_|j|_|���|_dSrN)r� _protocolrrrr�get_pid�pid)rr1r+rs rrzProcess.__init__wsI��#���!����� ��^�� ��o�� ��o�� ��$�$�&�&����rc�2�d|jj�d|j�d�S)N�)rr"rZrIs rr'zProcess.__repr__�s"��8�4�>�*�8�8�T�X�8�8�8�8rc�4�|j���SrN)r�get_returncoderIs r� returncodezProcess.returncode�s����-�-�/�/�/rc��DK�|j����d{V��S)z?Wait until the process exit and return the process return code.N)r�_waitrIs r�waitz Process.wait�s,�����_�*�*�,�,�,�,�,�,�,�,�,rc�:�|j�|��dSrN)r� send_signal)r�signals rrezProcess.send_signal�s�� ��#�#�F�+�+�+�+�+rc�8�|j���dSrN)r� terminaterIs rrhzProcess.terminate�s�� ��!�!�#�#�#�#�#rc�8�|j���dSrN)r�killrIs rrjz Process.kill�s�� ��������rc���K�|j���} |j�|��|r#t jd|t |����|j����d{V��n6#ttf$r"}|rt jd||��Yd}~nd}~wwxYw|rt jd|��|j� ��dS)Nz%%r communicate: feed stdin (%s bytes)z%r communicate: stdin got %rz%r communicate: close stdin) r� get_debugr�writer �debugrL�drain�BrokenPipeError�ConnectionResetErrorr=)r�inputrnrEs r� _feed_stdinzProcess._feed_stdin�s����� �$�$�&�&�� H� �J� � �U� #� #� #�� O�� �;�T�3�u�:�:�O�O�O��*�"�"�$�$� $� $� $� $� $� $� $� $���!5�6� H� H� H�� H�� �;�T�3�G�G�G����������  H���� � >� �L�6�� =� =� =� � �������s�AA<�<B/� B*�*B/c�� K�dSrN�rIs r�_noopz Process._noop�s �����trc��K�|j�|��}|dkr|j}n|dksJ�|j}|j���r |dkrdnd}t jd||��|����d{V��}|j���r |dkrdnd}t jd||��|� ��|S)Nr*rrrz%r communicate: read %sz%r communicate: close %s) rr-rrrrlr rn�readr=)rr9r1rO�name�outputs r� _read_streamzProcess._read_stream�s������O�6�6�r�:�:� � ��7�7��[�F�F���7�7�7�7��[�F� �:� � � !� !� @�!�Q�w�w�8�8�H�D� �L�2�D�$� ?� ?� ?��{�{�}�}�$�$�$�$�$�$�� �:� � � !� !� A�!�Q�w�w�8�8�H�D� �L�3�T�4� @� @� @�������� rNc��K�|�|�|��}n|���}|j�|�d��}n|���}|j�|�d��}n|���}t j|||���d{V��\}}}|����d{V��||fSr7)rsrvrr{rr �gatherrc)rrrrrrs r� communicatezProcess.communicate�s����� � ��$�$�U�+�+�E�E��J�J�L�L�E� �;� "��&�&�q�)�)�F�F��Z�Z�\�\�F� �;� "��&�&�q�)�)�F�F��Z�Z�\�\�F�&+�l�5�&�&�&I�&I� I� I� I� I� I� I���v�v��i�i�k�k�����������rrN)r"rQrRrr'�propertyr`rcrerhrjrsrvr{r~rurrrVrVvs�������'�'�'�9�9�9��0�0��X�0�-�-�-�,�,�,�$�$�$�������&������" � � � � � rrVc���� K�tj��� �� fd�}� j||f|||d�|���d{V��\}}t||� ��S)Nc�&��t�����S�Nr)�r r)s��r�z)create_subprocess_shell..�����7�e�=A� C� C� C�r�rrr)r�get_running_loop�subprocess_shellrV) �cmdrrrr�kwds�protocol_factoryr1r+rs ` @rrr�s������� � "� $� $�D�C�C�C�C�C�� 5�� 5�� �!����!�!��!�!��������I�x� �9�h�� -� -�-r)rrrrc���� K�tj��� �� fd�}� j||g|�R|||d�|���d{V��\}} t|| � ��S)Nc�&��t�����Sr�r�r)s��rr�z(create_subprocess_exec..�r�rr�)rr��subprocess_execrV) �programrrrr�argsr�r�r1r+rs ` @rrr�s������� � "� $� $�D�C�C�C�C�C�� 4�� 4���!��!�!��F�� !�!�� !�!��������I�x� �9�h�� -� -�-r)�__all__� subprocess�rrrr �logr �PIPE�STDOUT�DEVNULL�FlowControlMixin�SubprocessProtocolr rV�_DEFAULT_LIMITrrrurr�r�sK�� =��������������������������������������� � �� � ��b&�b&�b&�b&�b&�w�7�(�;�b&�b&�b&�JT �T �T �T �T �T �T �T �n.2�$�t�(/�(>� .� .� .� .�8<�D�(,�G�4J� .� .� .� .� .� .� .r