
    $iB                        S r SSKr\R                  S:w  a  \" S5      eSSKrSSKrSSKrSSKrSSKrSSK	r	Sr
Sr\R                  r\R                  r\R                  " 5       rSrSS	\S
.S jr " S S5      r " S S\R&                  5      rg)z)Various Windows specific bits and pieces.    Nwin32z
win32 only)pipePopenPIPE
PipeHandlei       F)TT)duplex
overlappedbufsizec                    U (       a4  [         R                  n[         R                  [         R                  -  nX"peO#[         R                  n[         R                  nSUpeU[         R
                  -  nUS   (       a  U[         R                  -  nUS   (       a  [         R                  nOSnS=p [        R                  " 5        H  n
SR                  [        R                  " 5       [        [        5      [        R                  " S5      R                  5       5      n [         R                   " X[         R"                  SXV[         R$                  [         R&                  5      n  O   [         R2                  " WUS[         R&                  [         R4                  U[         R&                  5      n	[         R6                  " USS9nUR9                  S5        X4$ ! [(         aF  nU
[*        :  a  e UR,                  [         R.                  [         R0                  4;  a  e  SnAGM\  SnAff = f!   Ub  [         R:                  " U5        U	b  [         R:                  " U	5        e = f)zELike os.pipe() but with overlapped support and using handles not fds.r      Nz!\\.\pipe\python-pipe-{:d}-{:d}-{}   Tr
   )_winapiPIPE_ACCESS_DUPLEXGENERIC_READGENERIC_WRITEPIPE_ACCESS_INBOUNDFILE_FLAG_FIRST_PIPE_INSTANCEFILE_FLAG_OVERLAPPED	itertoolscountformatosgetpidnext_mmap_counterurandomhexCreateNamedPipe	PIPE_WAITNMPWAIT_WAIT_FOREVERNULLOSError_MAX_PIPE_ATTEMPTSwinerrorERROR_PIPE_BUSYERROR_ACCESS_DENIED
CreateFileOPEN_EXISTINGConnectNamedPipeGetOverlappedResultCloseHandle)r	   r
   r   openmodeaccessobsizeibsizeflags_and_attribsh1h2attemptsaddresseovs                 'lib/python3.13/asyncio/windows_utils.pyr   r       s   --%%(=(== ..&&G555H!}G000!}#88NB!)H:AA		T-0"**Q-2C2C2EGG
,,w'8'8vw'C'CW\\S  * VQg.C.Cw||- %%bT:
t$v  11::g&=&=&-&A&A&C CC>#>#s9   0A-H) AG#A2H) 
H& :H!H) !H&&H) )5Ic                       \ rS rSrSrS rS r\S 5       rS r	\
R                  S.S jr\R                  4S	 jrS
 rS rSrg)r   X   zWrapper for an overlapped pipe handle which is vaguely file-object like.

The IOCP event loop can use these instead of socket objects.
c                     Xl         g N_handleselfhandles     r9   __init__PipeHandle.__init__]   s        c                 |    U R                   b  SU R                   < 3nOSnSU R                  R                   SU S3$ )Nzhandle=closed< >)r?   	__class____name__r@   s     r9   __repr__PipeHandle.__repr__`   sB    <<#t||./FF4>>**+1VHA66rE   c                     U R                   $ r=   r>   rA   s    r9   rB   PipeHandle.handleg   s    ||rE   c                 J    U R                   c  [        S5      eU R                   $ )NzI/O operation on closed pipe)r?   
ValueErrorrP   s    r9   filenoPipeHandle.filenok   s"    <<;<<||rE   )r-   c                R    U R                   b  U" U R                   5        S U l         g g r=   r>   )rA   r-   s     r9   closePipeHandle.closep   s$    <<#%DL $rE   c                 `    U R                   b!  U" SU < 3[        U S9  U R                  5         g g )Nz	unclosed )source)r?   ResourceWarningrW   )rA   _warns     r9   __del__PipeHandle.__del__u   s-    <<#IdX&EJJL $rE   c                     U $ r=    rP   s    r9   	__enter__PipeHandle.__enter__z   s    rE   c                 $    U R                  5         g r=   )rW   )rA   tvtbs       r9   __exit__PipeHandle.__exit__}   s    

rE   r>   N)rL   
__module____qualname____firstlineno____doc__rC   rM   propertyrB   rT   r   r-   rW   warningswarnr]   ra   rg   __static_attributes__r`   rE   r9   r   r   X   sR    7  
 $+#6#6  
 %MM 
rE   r   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )r      zReplacement for subprocess.Popen using overlapped pipe handles.

The stdin, stdout, stderr are None or instances of PipeHandle.
c                 N  > UR                  S5      (       a   eUR                  SS5      S:X  d   eS =n=pxS =n	=pU[        :X  a2  [        SSS9u  p[        R                  " U[
        R                  5      nOUnU[        :X  a#  [        SS9u  p[        R                  " US5      nOUnU[        :X  a#  [        SS9u  p[        R                  " US5      nOU[        :X  a  UnOUn [        TU ]$  " U4XgUS	.UD6  U	b  [        U	5      U l        U
b  [        U
5      U l        Ub  [        U5      U l        U[        :X  a  [
        R                   " U5        U[        :X  a  [
        R                   " U5        U[        :X  a  [
        R                   " U5        g g !   XU4 H  nUc  M  [        R                  " U5        M      e = f! U[        :X  a  [
        R                   " U5        U[        :X  a  [
        R                   " U5        U[        :X  a  [
        R                   " U5        f f = f)
Nuniversal_newlinesr   r   )FTT)r
   r	   )TFr   )stdinstdoutstderr)getr   r   msvcrtopen_osfhandler   O_RDONLYSTDOUTsuperrC   r   ru   rv   rw   r   r-   rW   )rA   argsru   rv   rw   kwds	stdin_rfd
stdout_wfd
stderr_wfdstdin_wh	stdout_rh	stderr_rhstdin_rh	stdout_wh	stderr_whhrK   s                   r9   rC   Popen.__init__   s   8801111xx	1%***.22	2J+///9D=!%t!LH--hDIIT>#'=#A I..y!<JJT>#'=#A I..y!<Jv#JJ	%GT 8$.8268 #'1
$(3$(3}#~$~$ #	95=''* 6  }#~$~$ s%   &F :9G 
F>#F>>G A#H$)rw   ru   rv   )NNN)rL   ri   rj   rk   rl   rC   rp   __classcell__)rK   s   @r9   r   r      s    +% +%rE   r   )rl   sysplatformImportErrorr   r   ry   r   
subprocessrn   __all__BUFSIZEr   r|   r   r   r%   r   r   r   r`   rE   r9   <module>r      s    / 
<<7
l
##    	   0 			!  \7 2p& &X0%J 0%rE   