
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aÄ  ã                   @   s¨   d Z ddlZejdkredƒ‚ddlZddlZddlZddlZddlZddl	Z	ddl
Z
dZdZejZejZe ¡ Zdded	œd
d„ZG dd„ dƒZG dd„ dejƒZdS )z)Various Windows specific bits and pieces.é    NZwin32z
win32 only)ÚpipeÚPopenÚPIPEÚ
PipeHandlei    F)TT)ÚduplexÚ
overlappedÚbufsizec              
   C   s$  t jd t ¡ ttƒ¡d�}| r>tj}tj	tj
B }|| }}ntj}tj
}d| }}|tjO }|d rp|tjO }|d r€tj}nd}d }	}
z\t ||tjd||tjtj¡}	t ||dtjtj|tj¡}
tj|	dd�}| d¡ |	|
fW S    |	dk	�rt |	¡ |
dk	�rt |
¡ ‚ Y nX dS )zELike os.pipe() but with overlapped support and using handles not fds.z\\.\pipe\python-pipe-{:d}-{:d}-)Úprefixr   é   NT©r   )ÚtempfileZmktempÚformatÚosÚgetpidÚnextÚ_mmap_counterÚ_winapiZPIPE_ACCESS_DUPLEXZGENERIC_READZGENERIC_WRITEZPIPE_ACCESS_INBOUNDZFILE_FLAG_FIRST_PIPE_INSTANCEZFILE_FLAG_OVERLAPPEDZCreateNamedPipeZ	PIPE_WAITZNMPWAIT_WAIT_FOREVERZNULLZ
CreateFileZOPEN_EXISTINGZConnectNamedPipeZGetOverlappedResultÚCloseHandle)r   r   r   ZaddressZopenmodeÚaccessZobsizeZibsizeZflags_and_attribsZh1Zh2Zov© r   ú:/opt/alt/python38/lib64/python3.8/asyncio/windows_utils.pyr       sb     ÿÿ


      þ     þ





r   c                   @   sb   e Zd ZdZdd„ Zdd„ Zedd„ ƒZdd	„ Ze	j
d
œdd„Zejfdd„Zdd„ Zdd„ ZdS )r   z�Wrapper for an overlapped pipe handle which is vaguely file-object like.

    The IOCP event loop can use these instead of socket objects.
    c                 C   s
   || _ d S ©N©Ú_handle©ÚselfÚhandler   r   r   Ú__init__V   s    zPipeHandle.__init__c                 C   s2   | j d k	rd| j ›�}nd}d| jj› d|› d�S )Nzhandle=Úclosedú<ú ú>)r   Ú	__class__Ú__name__r   r   r   r   Ú__repr__Y   s    
zPipeHandle.__repr__c                 C   s   | j S r   r   ©r   r   r   r   r   `   s    zPipeHandle.handlec                 C   s   | j d krtdƒ‚| j S )NzI/O operation on closed pipe)r   Ú
ValueErrorr%   r   r   r   Úfilenod   s    
zPipeHandle.fileno)r   c                C   s   | j d k	r|| j ƒ d | _ d S r   r   )r   r   r   r   r   Úclosei   s    

zPipeHandle.closec                 C   s*   | j d k	r&|d| ›�t| d� |  ¡  d S )Nz	unclosed )Úsource)r   ÚResourceWarningr(   )r   Z_warnr   r   r   Ú__del__n   s    
zPipeHandle.__del__c                 C   s   | S r   r   r%   r   r   r   Ú	__enter__s   s    zPipeHandle.__enter__c                 C   s   |   ¡  d S r   )r(   )r   ÚtÚvÚtbr   r   r   Ú__exit__v   s    zPipeHandle.__exit__N)r#   Ú
__module__Ú__qualname__Ú__doc__r   r$   Úpropertyr   r'   r   r   r(   ÚwarningsÚwarnr+   r,   r0   r   r   r   r   r   Q   s   
r   c                       s"   e Zd ZdZd‡ fdd„	Z‡  ZS )r   zˆReplacement for subprocess.Popen using overlapped pipe handles.

    The stdin, stdout, stderr are None or instances of PipeHandle.
    Nc              	      sš  |  d¡rt‚|  dd¡dks"t‚d  } }}d  }	 }
}|tkrbtddd�\}}	t |tj¡}n|}|tkrŠtdd�\}
}t |d¡}n|}|tkr²tdd�\}}t |d¡}n|tkrÀ|}n|}z’z t
ƒ j|f|||d	œ|—Ž W n0   |	|
|fD ]}|d k	røt |¡ qø‚ Y n>X |	d k	�r,t|	ƒ| _|
d k	�r@t|
ƒ| _|d k	�rTt|ƒ| _W 5 |tk�rlt 	|¡ |tk�r€t 	|¡ |tk�r”t 	|¡ X d S )
NZuniversal_newlinesr   r   )FTT)r   r   )TFr   )ÚstdinÚstdoutÚstderr)ÚgetÚAssertionErrorr   r   ÚmsvcrtZopen_osfhandler   ÚO_RDONLYÚSTDOUTr(   Úsuperr   r   r   r   r7   r8   r9   )r   Úargsr7   r8   r9   ÚkwdsZ	stdin_rfdZ
stdout_wfdZ
stderr_wfdZstdin_whZ	stdout_rhZ	stderr_rhZstdin_rhZ	stdout_whZ	stderr_whÚh©r"   r   r   r   ‚   sR    ÿÿ










zPopen.__init__)NNN)r#   r1   r2   r3   r   Ú__classcell__r   r   rC   r   r   }   s   r   )r3   ÚsysÚplatformÚImportErrorr   Ú	itertoolsr<   r   Ú
subprocessr   r5   Ú__all__ZBUFSIZEr   r>   Úcountr   r   r   r   r   r   r   r   Ú<module>   s$   
1,