*j^SrSSKr\RS:wa\"S5eSSKrSSKrSSKrSSKrSSKrSSK r Sr Sr \Rr \Rr \R"5rSrSS \ S .S jr"S S 5r"SS\R&5rg)z)Various Windows specific bits and pieces.Nwin32z win32 only)pipePopenPIPE PipeHandlei F)TT)duplex overlappedbufsizec U(a4[Rn[R[R-nX"peO#[Rn[RnSUpeU[R -nUS(aU[R -nUS(a[R nOSnS=p[R"5Hn SR[R"5[[5[R"S5R55n [R "X[R"SXV[R$[R&5n O [R2"W US[R&[R4U[R&5n [R6"USS9n U R9S5 X4$![(aFn U [*:aeU R,[R.[R04;aeSn A GM\Sn A ff=f! Ub[R:"U5 U b[R:"U 5 e=f)zELike os.pipe() but with overlapped support and using handles not fds.rNz!\\.\pipe\python-pipe-{:d}-{:d}-{}Tr )_winapiPIPE_ACCESS_DUPLEX GENERIC_READ GENERIC_WRITEPIPE_ACCESS_INBOUNDFILE_FLAG_FIRST_PIPE_INSTANCEFILE_FLAG_OVERLAPPED itertoolscountformatosgetpidnext _mmap_counterurandomhexCreateNamedPipe PIPE_WAITNMPWAIT_WAIT_FOREVERNULLOSError_MAX_PIPE_ATTEMPTSwinerrorERROR_PIPE_BUSYERROR_ACCESS_DENIED CreateFile OPEN_EXISTINGConnectNamedPipeGetOverlappedResult CloseHandle)r r r openmodeaccessobsizeibsizeflags_and_attribsh1h2attemptsaddresseovs    # >    # s90A-H)AG#A2H) H& :H!H)!H&&H))5Ic\rSrSrSrSrSr\S5rSr \ RS.Sjr \ R4S jrS rS rS rg )rXzWrapper for an overlapped pipe handle which is vaguely file-object like. The IOCP event loop can use these instead of socket objects. cXlgN_handleselfhandles r9__init__PipeHandle.__init__]s c|URbSUR<3nOSnSURRSUS3$)Nzhandle=closed< >)r? __class____name__r@s r9__repr__PipeHandle.__repr__`sB << #t||./FF4>>**+1VHA66rEcUR$r=r>rAs r9rBPipeHandle.handlegs ||rEcJURc [S5eUR$)NzI/O operation on closed pipe)r? ValueErrorrPs r9filenoPipeHandle.filenoks" << ;< <||rE)r-cVURbURnSUlU"U5 ggr=r>)rAr-rBs r9closePipeHandle.closeps) << #\\FDL   $rEc`URb!U"SU<3[US9 UR5 gg)Nz unclosed )source)r?ResourceWarningrW)rA_warns r9__del__PipeHandle.__del__vs- << # IdX& E JJL $rEcU$r=rPs r9 __enter__PipeHandle.__enter__{s rEc$UR5 gr=)rW)rAtvtbs r9__exit__PipeHandle.__exit__~s  rEr>N)rL __module__ __qualname____firstlineno____doc__rCrMpropertyrBrTrr-rWwarningswarnr]rarg__static_attributes__r`rEr9rrXsR7 $+#6#6 %MM rErc0^\rSrSrSrSU4SjjrSrU=r$)rzReplacement for subprocess.Popen using overlapped pipe handles. The stdin, stdout, stderr are None or instances of PipeHandle. c N>URS5(aeURSS5S:XdeS=n=pxS=n =pU[:Xa2[SSS9up[R"U [ R 5nOUnU[:Xa#[SS9up[R"U S5nOUnU[:Xa#[SS9up[R"US5nOU[:XaUnOUn[TU]$"U4XgUS .UD6 U b[U 5Ul U b[U 5Ul U b[U 5Ul U[:Xa[ R "U5 U[:Xa[ R "U5 U[:Xa[ R "U5 gg! XU 4HnUcM[R"U5 M e=f!U[:Xa[ R "U5 U[:Xa[ R "U5 U[:Xa[ R "U5 ff=f) Nuniversal_newlinesr r)FTT)r r )TFr)stdinstdoutstderr)getrrmsvcrtopen_osfhandlerO_RDONLYSTDOUTsuperrCrrurvrwrr-rW)rAargsrurvrwkwds stdin_rfd stdout_wfd stderr_wfdstdin_wh stdout_rh stderr_rhstdin_rh stdout_wh stderr_whhrKs r9rCPopen.__init__s8801111xx 1%***.22 2J+///9 D=!%t!L H--h DII T>#'=#A I..y!#'=#A I..y!#F>>GA#H$)rwrurv)NNN)rLrirjrkrlrCrp __classcell__)rKs@r9rrs+%+%rEr)rlsysplatform ImportErrorrrryr subprocessrn__all__BUFSIZErr|rrr%rrrr`rEr9rs/ <<7 l ##  0    !  \72p''Z0%J  0%rE