+
    i  c                   s*   R t ^ RIt]P                  R8w  d	   ]! R4      h^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
RtRt]P                  t]P                  t]P                  ! 4       tRRR	RR
]/R lt ! R R4      t ! R R]P&                  4      tR# )z)Various Windows specific bits and pieces.NZwin32z
win32 onlyPopen
PipeHandlei    duplexF
overlappedbufsizec           
     s   \         P                  ! RP                  \        P                  ! 4       \        \        4      4      R7      pV '       d9   \        P                  p\        P                  \        P                  ,          pY"rvM#\        P                  p\        P                  p^ TrvV\        P                  ,          pV^ ,          '       d   V\        P                  ,          pV^,          '       d   \        P                  pM^ pR;r \        P                  ! W4\        P                  ^Wg\        P                   \        P"                  4      p	\        P$                  ! W5^ \        P"                  \        P&                  V\        P"                  4      p
\        P(                  ! V	RR7      pVP+                  R4       W3#    T	e   \        P,                  ! T	4       T
e   \        P,                  ! T
4       h ; i)zELike os.pipe() but with overlapped support and using handles not fds.z\\.\pipe\python-pipe-{:d}-{:d}-)ZprefixNTr   )tempfileZmktempZformatosZgetpidZ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openmodeZaccessZobsizeZibsizeZflags_and_attribsZh1Zh2Zovs   $$$         ./usr/lib64/python3.14/asyncio/windows_utils.pypiper       s|   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   B5G 7G;c                   s   a  ] tR t^Qt o RtR tR t]R 4       tR t	R]
P                  /R lt]P                  3R ltR	 tR
 tRtV tR# )r   zWrapper for an overlapped pipe handle which is vaguely file-object like.

The IOCP event loop can use these instead of socket objects.
c                s    Wn         R # N_handleselfhandle   &&r   __init__ZPipeHandle.__init__V   s        c                s~    V P                   e   RV P                   : 2pMRpRV P                  P                   RV R2# )Nzhandle=ZclosedZ<Z Z>)r   	__class____name__r   s   & r   __repr__ZPipeHandle.__repr__Y   sB    <<#t||./FF4>>**+1VHA66r   c                s    V P                   # r   r   r      &r   r   ZPipeHandle.handle`   s    ||r   c                sL    V P                   f   \        R4      hV P                   # )NzI/O operation on closed pipe)r   Z
ValueErrorr   r   r   filenoZPipeHandle.filenod   s"    <<;<<||r   r
   c               sX    V P                   e   V! V P                   4       R V n         R # R # r   r   )r   r
   s   &$r   closeZPipeHandle.closei   s$    <<#%DL $r   c                sl    V P                   e&   V! RV : 2\        V R7       V P                  4        R # R # )Nz	unclosed )Zsource)r   ZResourceWarningr   )r   Z_warnr   r   __del__ZPipeHandle.__del__n   s-    <<#IdX&EJJL $r   c                s    V # r    r   r   r   	__enter__ZPipeHandle.__enter__s   s    r   c                s&    V P                  4        R # r   )r   )r   ZtZvZtbs   &&&&r   __exit__ZPipeHandle.__exit__v   s    

r   r   N)r   
__module____qualname____firstlineno____doc__r   r   Zpropertyr   r   r	   r
   r   warningsZwarnr   r   r    __static_attributes____classdictcell__)__classdict__s   @r   r   r   Q   s\     7  
 7#6#6  
 %MM 
 r   c                   s:   a a ] tR t^}t oRtRV 3R lltRtVtV ;t# )r    zReplacement for subprocess.Popen using overlapped pipe handles.

The stdin, stdout, stderr are None or instances of PipeHandle.
c           	     s&  < R ;p;rxR ;p	;rV\         8X  d6   \        RRR7      w  r\        P                  ! V\        P
                  4      pMTpV\         8X  d'   \        RR7      w  r\        P                  ! V^ 4      pMTpV\         8X  d'   \        RR7      w  r\        P                  ! V^ 4      pMV\        8X  d   TpMTp \        SV `   ! V3RVRVRV/VB  V	e   \        V	4      V n
        V
e   \        V
4      V n        Ve   \        V4      V n        T\         8X  d   \        P                  ! T4       T\         8X  d   \        P                  ! T4       T\         8X  d   \        P                  ! T4       R # R #    YT3 F  pTf   K	  \        P                  ! T4       K!  	  h ; i  T\         8X  d   \        P                  ! T4       T\         8X  d   \        P                  ! T4       T\         8X  d   \        P                  ! T4       i i ; i)	NT)r   r   r   stdinstdoutstderr)FT)TF)PIPEr   msvcrtZopen_osfhandler   ZO_RDONLYSTDOUTZsuperr   r   r)   r*   r+   r	   r
   r   )r   Zargsr)   r*   r+   ZkwdsZ	stdin_rfdZ
stdout_wfdZ
stderr_wfdZstdin_whZ	stdout_rhZ	stderr_rhZstdin_rhZ	stdout_whZ	stderr_whZhr   s   &&&&&,          r   r   ZPopen.__init__   s    /3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 8: 8$.8268 #'1
$(3$(3}#~$~$ #	95=''* 6  }#~$~$ s%   E= <F* =
F'F''F* *A&H)r+   r)   r*   )NNN)	r   r!   r"   r#   r$   r   r&   r'   Z__classcell__)r   r(   s   @@r   r    r    }   s     +% +%r   )r   r    r,   r   )TT)r$   ZsysZplatformZImportErrorr	   Z	itertoolsr-   r   Z
subprocessr   r%   Z__all__ZBUFSIZEr,   r.   Zcountr   r   r   r    r   r   r   <module>r/      s    / 
<<7
l
##    	    0 			!+5 +\ +7 +b& &X0%J 0%r   