Your IP : 3.141.45.90


Current Path : /opt/alt/python310/lib64/python3.10/asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/asyncio/__pycache__/windows_utils.cpython-310.opt-1.pyc

o

6��f��@s�dZddlZejdkred��ddlZddlZddlZddlZddlZddl	Z	ddl
Z
dZdZej
Z
ejZe��Zdded	�d
d�ZGdd
�d
�ZGdd�dej�ZdS)z)Various Windows specific bits and pieces.�NZwin32z
win32 only)�pipe�Popen�PIPE�
PipeHandlei F)TT)�duplex�
overlapped�bufsizec
Cstjd�t��tt��d�}|rtj}tj	tj
B}||}}ntj}tj
}d|}}|tjO}|dr8|tj
O}|dr@tj
}nd}d}	}
z.t�||tjd||tjtj�}	t�||dtjtj|tj�}
tj|	dd�}|�d�|	|
fWS|	dur�t�|	�|
dur�t�|
��)zELike os.pipe() but with overlapped support and using handles not fds.z\\.\pipe\python-pipe-{:d}-{:d}-)�prefixr�NT�r)�tempfileZmktemp�format�os�getpid�next�
_mmap_counter�_winapiZPIPE_ACCESS_DUPLEXZGENERIC_READZ
GENERIC_WRITEZPIPE_ACCESS_INBOUNDZFILE_FLAG_FIRST_PIPE_INSTANCEZFILE_FLAG_OVERLAPPEDZCreateNamedPipeZ	PIPE_WAITZNMPWAIT_WAIT_FOREVERZNULLZ
CreateFileZ
OPEN_EXISTINGZConnectNamedPipeZGetOverlappedResult�CloseHandle)rrrZaddressZopenmode�accessZobsizeZibsizeZflags_and_attribsZh1Zh2Zov�r�</opt/alt/python310/lib64/python3.10/asyncio/windows_utils.pyr sJ��


��



rc@sbeZdZdZdd�Zdd�Zedd��Zdd	�Ze	j
d
�dd�Zej
fd
d�Zdd�Zdd�ZdS)rz�Wrapper for an overlapped pipe handle which is vaguely file-object like.

    The IOCP event loop can use these instead of socket objects.
    cCs
||_dS�N��_handle��self�handlerrr�__init__Vs
zPipeHandle.__init__cCs2|jdurd|j��}nd}d|jj�d|�d�S)Nzhandle=�closed�<� �>)r�	__class__�__name__rrrr�__repr__Ys
zPipeHandle.__repr__cCs|jSrr�rrrrr`szPipeHandle.handlecCs|jdur	td��|jS)NzI/O operation on closed pipe)r�
ValueErrorr%rrr�filenods
zPipeHandle.fileno)rcCs"|jdur||j�d|_dSdSrr)rrrrr�closeis


�zPipeHandle.closecCs.|jdur|d|��t|d�|��dSdS)Nz	unclosed )�source)r�ResourceWarningr()rZ_warnrrr�__del__ns
�zPipeHandle.__del__cCs|Srrr%rrr�	__enter__sszPipeHandle.__enter__cCs|��dSr)r()r�t�v�tbrrr�__exit__vszPipeHandle.__exit__N)r#�
__module__�__qualname__�__doc__rr$�propertyrr'rrr(�warnings�warnr+r,r0rrrrrQs
rcs"eZdZdZd�fdd�	Z�ZS)rz�Replacement for subprocess.Popen using overlapped pipe handles.

    The stdin, stdout, stderr are None or instances of PipeHandle.
    Nc	s�d}}}d}	}
}|tkr tddd�\}}	t�|tj�}n|}|tkr4tdd�\}
}
t�|
d�}n|}|tkrHtdd�\}}t�|d�}n	|tkrO|}n|}zazt�j|f|||d�|��Wn|	|
|fD]}|durvt	�
|�qk�|	dur�t|	�|_|
dur�t|
�|_
|dur�t|�|_W|tkr�t�|�|tkr�t�|�|tkr�t�|�dSdS|tkr�t�|�|tkr�t�|�|tkr�t�|�ww)N)FTT)rr)TFrr)�stdin�stdout�stderr)rr�msvcrtZopen_osfhandler�O_RDONLY�STDOUT�superrrrrr7r8r9r()r�argsr7r8r9�kwdsZ	stdin_rfdZ
stdout_wfdZ
stderr_wfdZstdin_whZ	stdout_rhZ	stderr_rhZstdin_rhZ	stdout_whZ	stderr_wh�h�r"rrr�sb�
�
�


�

��

�zPopen.__init__)NNN)r#r1r2r3r�
__classcell__rrrArr}sr)r3�sys�platform�ImportErrorr�	itertoolsr:r�
subprocessrr5�__all__ZBUFSIZErr<�countrrrrrrrr�<module>s&
1,

?>