� !A?h�"���ddlZddlZddlZddlmZddlmZddlmZGd�dej��Z Gd�d ej ��Z Gd �d e ej ��Z dS) �N�)� protocols)� transports)�loggerc���eZdZ d�fd� Zd�Zd�Zd�Zd�Zd�Zd�Z e j fd �Z d �Z d �Zd �Zd �Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z�xZS)�BaseSubprocessTransportNc �D��t���| ��d|_||_||_d|_d|_d|_g|_tj ��|_ i|_ d|_ |tjkr d|j d<|tjkr d|j d<|tjkr d|j d< |jd||||||d�| ��n#|����xYw|jj|_|j|jd<|j���rBt+|t,t.f��r|} n|d} t1jd| |j��|j�|�| ����dS) NFrr�)�args�shell�stdin�stdout�stderr�bufsize� subprocesszprocess %r created: pid %s�)�super�__init__�_closed� _protocol�_loop�_proc�_pid� _returncode� _exit_waiters� collections�deque�_pending_calls�_pipes� _finishedr�PIPE�_start�close�pid�_extra� get_debug� isinstance�bytes�strr�debug� create_task�_connect_pipes)�self�loop�protocolr r r rrr�waiter�extra�kwargs�program� __class__s ��D/opt/alt/python-internal/lib64/python3.11/asyncio/base_subprocess.pyrz BaseSubprocessTransport.__init__ s���� ����������� �!����� ��� ��� �������)�/�1�1����� ���� �J�O� #� #�!�D�K��N� �Z�_� $� $�!�D�K��N� �Z�_� $� $�!�D�K��N� � �D�K� B�T��e�F�%�w� B� B�:@� B� B� B� B�� � �J�J�L�L�L� �����J�N�� �$(�J�� �L�!� �:� � � !� !� -��$��� �-�-� "�����q�'�� �L�5� �$�)� -� -� -� � ���t�2�2�6�:�:�;�;�;�;�;s � C�C5c�8�|jjg}|jr|�d��|j�|�d|j����|j�|�d|j����n2|j�|�d��n|�d��|j�d��}|�|�d|j����|j�d��}|j�d ��}|�"||ur|�d |j����n>|�|�d |j����|�|�d |j����d � d� |����S)N�closedzpid=z returncode=�runningz not startedrzstdin=rr zstdout=stderr=zstdout=zstderr=z<{}>� ) r4�__name__r�appendrrr�get�pipe�format�join)r-�infor rrs r5�__repr__z BaseSubprocessTransport.__repr__7s�����'�(�� �<� "� �K�K�� !� !� !� �9� � �K�K�*�t�y�*�*� +� +� +� � � '� �K�K�8�d�&6�8�8� 9� 9� 9� 9� �Y� "� �K�K� � "� "� "� "� �K�K� � &� &� &�� ����"�"�� � � �K�K�-���-�-� .� .� .������#�#�������#�#�� � �&�F�"2�"2� �K�K�6���6�6� 7� 7� 7� 7��!�� � �3�f�k�3�3�4�4�4��!�� � �3�f�k�3�3�4�4�4��}�}�S�X�X�d�^�^�,�,�,�c ��t��N)�NotImplementedError)r-r r r rrrr2s r5r"zBaseSubprocessTransport._startTs��!�!rBc��||_dSrD�r)r-r/s r5� set_protocolz$BaseSubprocessTransport.set_protocolWs ��!����rBc��|jSrDrG�r-s r5� get_protocolz$BaseSubprocessTransport.get_protocolZs ���~�rBc��|jSrD)rrJs r5� is_closingz"BaseSubprocessTransport.is_closing]s ���|�rBc��|jrdSd|_|j���D]}|��|j����|j�{|j�v|j����_|j� ��rtj d|�� |j� ��dS#t$rYdSwxYwdSdSdS)NTz$Close running child process: kill %r)rr�valuesr=r#rr�pollrr&r�warning�kill�ProcessLookupError)r-�protos r5r#zBaseSubprocessTransport.close`s��� �<� � �F��� ��[�'�'�)�)� � �E��}�� �J� � � � � � � �J� "�� �(�� ���!�!�)��z�#�#�%�%� M���E�t�L�L�L� �� ���!�!�!�!�!��%� � � ���� ���� #� "�(�(�*�)s�B:�: C�Cc�l�|js,|d|��t|���|���dSdS)Nzunclosed transport )�source)r�ResourceWarningr#)r-�_warns r5�__del__zBaseSubprocessTransport.__del__{sG���|� � �E�0��0�0�/�$� O� O� O� O� �J�J�L�L�L�L�L� � rBc��|jSrD)rrJs r5�get_pidzBaseSubprocessTransport.get_pid�s ���y�rBc��|jSrD)rrJs r5�get_returncodez&BaseSubprocessTransport.get_returncode�s ����rBc�<�||jvr|j|jSdSrD)rr=)r-�fds r5�get_pipe_transportz*BaseSubprocessTransport.get_pipe_transport�s#�� ��� � ��;�r�?�'� '��4rBc�0�|j�t���dSrD)rrSrJs r5� _check_procz#BaseSubprocessTransport._check_proc�s�� �:� �$�&�&� &� � rBc�b�|���|j�|��dSrD)rbr� send_signal)r-�signals r5rdz#BaseSubprocessTransport.send_signal�s0�� ������ � ���v�&�&�&�&�&rBc�`�|���|j���dSrD)rbr� terminaterJs r5rgz!BaseSubprocessTransport.terminate�s.�� ������ � �������rBc�`�|���|j���dSrD)rbrrRrJs r5rRzBaseSubprocessTransport.kill�s,�� ������ � �������rBc���K� �j}�j}|j�1|��fd�|j���d{V��\}}|�jd<|j�1|��fd�|j���d{V��\}}|�jd<|j�1|��fd�|j���d{V��\}}|�jd<|��j j ����j D]\}}|j|g|�R��d�_ |�+|� ��s|� d��dSdSdS#ttf$r�t $rB}|�/|� ��s!|�|��Yd}~dSYd}~dSYd}~dSd}~wwxYw)Nc�$��t�d��S)Nr)�WriteSubprocessPipeProtorJs�r5�z8BaseSubprocessTransport._connect_pipes..�s���4�T�1�=�=�rBrc�$��t�d��S)Nr��ReadSubprocessPipeProtorJs�r5rlz8BaseSubprocessTransport._connect_pipes..�����3�D�!�<�<�rBrc�$��t�d��S)Nr rnrJs�r5rlz8BaseSubprocessTransport._connect_pipes..�rprBr )rrr �connect_write_piperr�connect_read_piper� call_soonr�connection_mader� cancelled� set_result� SystemExit�KeyboardInterrupt� BaseException� set_exception) r-r0�procr.�_r=�callback�data�excs ` r5r,z&BaseSubprocessTransport._connect_pipes�sg�����# (��:�D��:�D��z�%� $� 7� 7�=�=�=�=��J�! �! � � � � � � ���4�"&�� �A���{�&� $� 6� 6�<�<�<�<��K�!!�!!�!�!�!�!�!�!���4�"&�� �A���{�&� $� 6� 6�<�<�<�<��K�!!�!!�!�!�!�!�!�!���4�"&�� �A�� �N�N�4�>�9�4� @� @� @�"&�"5� 0� 0���$����x�/�$�/�/�/�/�/�"&�D� ��!�&�*:�*:�*<�*<�!��!�!�$�'�'�'�'�'�"�!�!�!�� �-�.� � � � �� *� *� *��!�&�*:�*:�*<�*<�!��$�$�S�)�)�)�)�)�)�)�)�)�"�!�!�!�!�!�!�!�!�!�!�!����� *���s�C8D.�.F � +F�F c�v�|j�|j�||f��dS|jj|g|�R�dSrD)rr;rrt)r-�cbrs r5�_callzBaseSubprocessTransport._call�sO�� � � *� � � &� &��D�z� 2� 2� 2� 2� 2� �D�J� �� +�d� +� +� +� +� +� +rBc�p�|�|jj||��|���dSrD)r�r�pipe_connection_lost� _try_finish)r-r_r�s r5�_pipe_connection_lostz-BaseSubprocessTransport._pipe_connection_lost�s5�� � � �4�>�6��C�@�@�@� �������rBc�H�|�|jj||��dSrD)r�r�pipe_data_received)r-r_rs r5�_pipe_data_receivedz+BaseSubprocessTransport._pipe_data_received�s#�� � � �4�>�4�b�$�?�?�?�?�?rBc��|j���rtjd||��||_|jj� ||j_|�|jj ��|� ��dS)Nz%r exited with return code %r) rr&rr@rr� returncoder�r�process_exitedr�)r-r�s r5�_process_exitedz'BaseSubprocessTransport._process_exited�s~�� �:� � � !� !� K� �K�7��z� J� J� J�%��� �:� � (�%/�D�J� !� � � �4�>�0�1�1�1� �������rBc��K�|j�|jS|j���}|j�|��|�d{V��S)zdWait until the process exit and return the process return code. This method is a coroutine.N)rr� create_futurerr;)r-r0s r5�_waitzBaseSubprocessTransport._wait�sV���� � � '��#� #���)�)�+�+�� ��!�!�&�)�)�)��|�|�|�|�|�|�rBc���|j�dStd�|j���D����r$d|_|�|jd��dSdS)Nc3�,K�|]}|duo|jV��dSrD)� disconnected)�.0�ps r5� z6BaseSubprocessTransport._try_finish..�sA����.�.����}�/���.�.�.�.�.�.rBT)r�allrrOr r��_call_connection_lostrJs r5r�z#BaseSubprocessTransport._try_finish�sz�� � � #� �F� �.�.�� �*�*�,�,�.�.�.� .� .� 9�!�D�N� �J�J�t�1�4� 8� 8� 8� 8� 8� 9� 9rBc�� |j�|��|jD]0}|���s|�|j���1d|_d|_d|_d|_dS#|jD]0}|���s|�|j���1d|_d|_d|_d|_wxYwrD)r�connection_lostrrvrwrrr)r-r�r0s r5r�z-BaseSubprocessTransport._call_connection_lost�s��� "� �N� *� *�3� /� /� /��,� 8� 8���'�'�)�)�8��%�%�d�&6�7�7�7��!%�D� ��D�J��D�J�!�D�N�N�N�� �,� 8� 8���'�'�)�)�8��%�%�d�&6�7�7�7��!%�D� ��D�J��D�J�!�D�N� !� !� !� !s �A2�2AC)NN)r:� __module__� __qualname__rrAr"rHrKrMr#�warnings�warnrYr[r]r`rbrdrgrRr,r�r�r�r�r�r�r�� __classcell__)r4s@r5rr s��������%)�)<�)<�)<�)<�)<�)<�V-�-�-�:"�"�"�"�"�"����������6%�M����� ��� � � ���� '�'�'�'�'�'�������$(�$(�$(�L,�,�,� ���@�@�@� � � � � � �9�9�9� "� "� "� "� "� "� "rBrc�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)rkc�>�||_||_d|_d|_dS)NF)r|r_r=r�)r-r|r_s r5rz!WriteSubprocessPipeProto.__init__s%���� ������ �!����rBc��||_dSrD)r=)r-� transports r5ruz(WriteSubprocessPipeProto.connection_mades ���� � � rBc�B�d|jj�d|j�d|j�d�S)N�)r4r:r_r=rJs r5rAz!WriteSubprocessPipeProto.__repr__ s,��M�4�>�*�M�M���M�M�t�y�M�M�M�MrBc�b�d|_|j�|j|��d|_dS)NT)r�r|r�r_)r-r�s r5r�z(WriteSubprocessPipeProto.connection_lost s/�� ��� � �'�'����5�5�5��� � � rBc�B�|jj���dSrD)r|r� pause_writingrJs r5r�z&WriteSubprocessPipeProto.pause_writings�� � ��)�)�+�+�+�+�+rBc�B�|jj���dSrD)r|r�resume_writingrJs r5r�z'WriteSubprocessPipeProto.resume_writings�� � ��*�*�,�,�,�,�,rBN) r:r�r�rrurAr�r�r�rrBr5rkrk�sq������"�"�"� ���N�N�N���� ,�,�,�-�-�-�-�-rBrkc��eZdZd�ZdS)roc�F�|j�|j|��dSrD)r|r�r_)r-rs r5� data_receivedz%ReadSubprocessPipeProto.data_receiveds"�� � �%�%�d�g�t�4�4�4�4�4rBN)r:r�r�r�rrBr5roros#������5�5�5�5�5rBro)rrr��rr�logr�SubprocessTransportr� BaseProtocolrk�ProtocolrorrBr5�r�s���������������������������������r"�r"�r"�r"�r"�j�<�r"�r"�r"�j-�-�-�-�-�y�5�-�-�-�45�5�5�5�5�6�'�0�5�5�5�5�5rB