Your IP : 216.73.216.245
a
?�g��@s�dZddlZejdkred��ddlZddlZddlZddlZddlZddl Z ddl
Z
dZdZej
Z
ejZe��Zdded �d
d�ZGdd
�d
�ZGdd�dej�ZdS)z)Various Windows specific bits and pieces.�NZwin32z
win32 only)�pipe�Popen�PIPE�
PipeHandlei F)TT)�duplex�
overlapped�bufsizec
Cs$tjd�t��tt��d�}|r>tj}tj tj
B}||}}ntj}tj
}d|}}|tjO}|drp|tj
O}|dr�tj
}nd}d} }
z\t�||tjd||tjtj�} t�||dtjtj|tj�}
tj| dd�}|�d�| |
fWS| du�rt�| �|
du�rt�|
��Yn0dS)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_DUPLEXZGENERIC_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/python39/lib64/python3.9/asyncio/windows_utils.pyr sJ��
��
rc@sbeZdZdZdd�Zdd�Zedd��Zdd �Ze j
d
�dd�Zej
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__VszPipeHandle.__init__cCs2|jdurd|j��}nd}d|jj�d|�d�S)Nzhandle=�closed�<� �>)r� __class__�__name__rrrr�__repr__Ys
zPipeHandle.__repr__cCs|jSrr�rrrrr`szPipeHandle.handlecCs|jdurtd��|jS)NzI/O operation on closed pipe)r�
ValueErrorr%rrr�filenods
zPipeHandle.fileno)rcCs|jdur||j�d|_dSrr)rrrrr�closeis
zPipeHandle.closecCs*|jdur&|d|��t|d�|��dS)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__vszPipeHandle.__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�rJ�|�dd�dks"J�d}}}d} }
}|tkrbtddd�\}} t�|tj�}n|}|tkr�tdd�\}
}
t�|
d�}n|}|tkr�tdd�\}}t�|d�}n|tkr�|}n|}z�z t�j |f|||d �|��Wn0| |
|fD]}|dur�t
�|�q��Yn>0| du�r,t| �|_
|
du�r@t|
�|_|du�rTt|�|_W|tk�rjt�|�|tk�r~t�|�|tk�r�t�|�n>|tk�r�t�|�|tk�r�t�|�|tk�r�t�|�0dS)
NZuniversal_newlinesrr)FTT)rr)TFr)�stdin�stdout�stderr)�getrr�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�s^��
�
zPopen.__init__)NNN)r#r1r2r3r�
__classcell__rrrBrr}sr)r3�sys�platform�ImportErrorr� itertoolsr;r�
subprocessrr5�__all__ZBUFSIZErr=�countrrrrrrrr�<module>s$
1,
?>