f ddlZejdkr edddlZddlZddlZddlZddlZddlZddl Z dZ dZ ej Z ej Z ejZdde dd ZGd d ZGd d ejZdS)Nwin32z win32 only)pipePopenPIPE PipeHandlei F)TT)duplex overlappedbufsizec T tjdtjt t }|r*tj}tj tj z}||}}ntj }tj }d|}}|tj z}|dr|tj z}|dr tj }nd}dx} } tj||tjd||tjtj} tj||dtjtj|tj} tj| d} | d| | fS#| tj| | tj| xYw)Nz\\.\pipe\python-pipe-{:d}-{:d}-)prefixrTr )tempfilemktempformatosgetpidnext _mmap_counter_winapiPIPE_ACCESS_DUPLEX GENERIC_READ GENERIC_WRITEPIPE_ACCESS_INBOUNDFILE_FLAG_FIRST_PIPE_INSTANCEFILE_FLAG_OVERLAPPEDCreateNamedPipe PIPE_WAITNMPWAIT_WAIT_FOREVERNULL CreateFile OPEN_EXISTINGConnectNamedPipeGetOverlappedResult CloseHandle) rr r addressopenmodeaccessobsizeibsizeflags_and_attribsh1h2ovs   # # # >   # # # s BE88/F'cneZdZ dZdZedZdZej ddZ e j fdZ dZd Zd S) rc||_dSN_handleselfhandles r/__init__zPipeHandle.__init__Vs  cP|j d|j}nd}d|jjd|dS)Nzhandle=closed< >)r4 __class____name__r5s r/__repr__zPipeHandle.__repr__Ys> < #/t|//FFF64>*66V6666r9c|jSr2r3r6s r/r7zPipeHandle.handle`s |r9c<|jtd|jS)NzI/O operation on closed pipe)r4 ValueErrorrCs r/filenozPipeHandle.filenods! < ;<< <|r9)r%cF|j||jd|_dSdSr2r3)r6r%s r/closezPipeHandle.closeis/ < # K % % %DLLL $ #r9cl|j,|d|t||dSdS)Nz unclosed )source)r4ResourceWarningrH)r6_warns r/__del__zPipeHandle.__del__nsC < # E&d&& E E E E JJLLLLL $ #r9c|Sr2rCs r/ __enter__zPipeHandle.__enter__ss r9c.|dSr2)rH)r6tvtbs r/__exit__zPipeHandle.__exit__vs r9N)r@ __module__ __qualname__r8rApropertyr7rFrr%rHwarningswarnrMrPrUrOr9r/rrQs777X $+#6     %M r9rc"eZdZ dfd ZxZS)rNc &dx}x}}dx} x} } |tkr4tdd\} } tj| tj}n|}|tkr)td\} } tj| d}n|}|tkr)td\} }tj|d}n|t kr|}n|} tj|f|||d|| t| |_ | t| |_ | t| |_ n$#| | | fD]}|tj|xYw|tkrt j||tkrt j||tkrt j|dSdS#|tkrt j||tkrt j||tkrt j|wwxYw)N)FTT)r r)TFrr)stdinstdoutstderr)rrmsvcrtopen_osfhandlerO_RDONLYSTDOUTsuperr8rr]r^r_rr%rH)r6argsr]r^r_kwds stdin_rfd stdout_wfd stderr_wfdstdin_wh stdout_rh stderr_rhstdin_rh stdout_wh stderr_whhr?s r/r8zPopen.__init__sG/32 2J+///9y D==!%t!L!L!L Hh-h DDIII T>>#'=#A#A#A Iy.y!<>#'=#A#A#A Iy.y!<rzs"/ <7 +l # ##  0    !! \7+++++b&&&&&&&&X0%0%0%0%0%J 0%0%0%0%0%r9