
    F\h                     "   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SK
r
SrSr\R                  r\R                  r\R                  " 5       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           
         [         R                  " SR                  [        R                  " 5       [        [        5      5      S9nU (       a4  [        R                  n[        R                  [        R                  -  nX"pvO#[        R                  n[        R                  nSUpvU[        R                  -  nUS   (       a  U[        R                  -  nUS   (       a  [        R                  nOSnS=p [        R                  " X4[        R                  SXg[        R                   [        R"                  5      n	[        R$                  " X5S[        R"                  [        R&                  U[        R"                  5      n
[        R(                  " U	SS9nUR+                  S5        X4$ !   U	b  [        R,                  " U	5        U
b  [        R,                  " U
5        e = f)zELike os.pipe() but with overlapped support and using handles not fds.z\\.\pipe\python-pipe-{:d}-{:d}-)prefixr      NTr	   )tempfilemktempformatosgetpidnext_mmap_counter_winapiPIPE_ACCESS_DUPLEXGENERIC_READGENERIC_WRITEPIPE_ACCESS_INBOUNDFILE_FLAG_FIRST_PIPE_INSTANCEFILE_FLAG_OVERLAPPEDCreateNamedPipe	PIPE_WAITNMPWAIT_WAIT_FOREVERNULL
CreateFileOPEN_EXISTINGConnectNamedPipeGetOverlappedResultCloseHandle)r   r	   r
   addressopenmodeaccessobsizeibsizeflags_and_attribsh1h2ovs               ,/usr/lib/python3.13/asyncio/windows_utils.pyr   r       sx   oo188IIKm,./G --%%(=(== ..&&G555H!}G000!}#88NB$$w00vw;;W\\K Qg.C.Cw||- %%bT:
t$v>#>#s   4B2F' '5G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   Q   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     r/   __init__PipeHandle.__init__V   s        c                 |    U R                   b  SU R                   < 3nOSnSU R                  R                   SU S3$ )Nzhandle=closed< >)r5   	__class____name__r6   s     r/   __repr__PipeHandle.__repr__Y   sB    <<#t||./FF4>>**+1VHA66r;   c                     U R                   $ r3   r4   r7   s    r/   r8   PipeHandle.handle`   s    ||r;   c                 J    U R                   c  [        S5      eU R                   $ )NzI/O operation on closed pipe)r5   
ValueErrorrF   s    r/   filenoPipeHandle.filenod   s"    <<;<<||r;   )r%   c                R    U R                   b  U" U R                   5        S U l         g g r3   r4   )r7   r%   s     r/   closePipeHandle.closei   s$    <<#%DL $r;   c                 `    U R                   b!  U" SU < 3[        U S9  U R                  5         g g )Nz	unclosed )source)r5   ResourceWarningrM   )r7   _warns     r/   __del__PipeHandle.__del__n   s-    <<#IdX&EJJL $r;   c                     U $ r3    rF   s    r/   	__enter__PipeHandle.__enter__s   s    r;   c                 $    U R                  5         g r3   )rM   )r7   tvtbs       r/   __exit__PipeHandle.__exit__v   s    

r;   r4   N)rB   
__module____qualname____firstlineno____doc__r9   rC   propertyr8   rJ   r   r%   rM   warningswarnrS   rW   r]   __static_attributes__rV   r;   r/   r   r   Q   sR    7  
 $+#6#6  
 %MM 
r;   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superr9   r   rk   rl   rm   r   r%   rM   )r7   argsrk   rl   rm   kwds	stdin_rfd
stdout_wfd
stderr_wfdstdin_wh	stdout_rh	stderr_rhstdin_rh	stdout_wh	stderr_whhrA   s                   r/   r9   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$)rm   rk   rl   )NNN)rB   r_   r`   ra   rb   r9   rf   __classcell__)rA   s   @r/   r   r   }   s    +% +%r;   r   )rb   sysplatformImportErrorr   	itertoolsro   r   
subprocessr   rd   __all__BUFSIZEr   rr   countr   r   r   r   rV   r;   r/   <module>r      s    / 
<<7
l
##    	    0 			! \7 +b& &X0%J 0%r;   