fdZddlZejdk7redddlZddlZddlZddlZddlZddl Z ddl Z dZ dZ ejZ ejZejZdde d d ZGd d ZGd dej&Zy)z)Various Windows specific bits and pieces.Nwin32z win32 only)pipePopenPIPE PipeHandlei F)TT)duplex overlappedbufsizec tjdjtjt t }|r6tj}tjtjz}||}}n$tj}tj}d|}}|tjz}|dr|tjz}|drtj}nd}dx} } tj||tjd||tj tj"} tj$||dtj"tj&|tj"} tj(| d} | j+d| | fS#| tj,| | tj,| xYw)zELike os.pipe() but with overlapped support and using handles not fds.z\\.\pipe\python-pipe-{:d}-{:d}-)prefixrNTr )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 ,/usr/lib/python3.12/asyncio/windows_utils.pyrr soo188 IIKm,./G--%%(=(== '..&&G 555H!}G000!}#88NB  $ $ Xw00 vvw;;W\\K   VQ g.C.C w||- % %bT : t$2v  >    # >    # s *B6F!!1Gc|eZdZdZdZdZedZdZe jddZ e jfdZd Zd Zy ) rzWrapper for an overlapped pipe handle which is vaguely file-object like. The IOCP event loop can use these instead of socket objects. c||_yN_handleselfhandles r/__init__zPipeHandle.__init__Vs  cx|jd|j}nd}d|jjd|dS)Nzhandle=closed< >)r4 __class____name__r5s r/__repr__zPipeHandle.__repr__YsB << #t||./FF4>>**+1VHA66r9c|jSr2r3r6s r/r7zPipeHandle.handle`s ||r9cH|j td|jS)NzI/O operation on closed pipe)r4 ValueErrorrCs r/filenozPipeHandle.filenods" << ;< <||r9)r%cP|j||jd|_yyr2r3)r6r%s r/closezPipeHandle.closeis$ << #  %DL $r9cb|j#|d|t||jyy)Nz unclosed )source)r4ResourceWarningrH)r6_warns r/__del__zPipeHandle.__del__ns- << # IdX& E JJL $r9c|Sr2rCs r/ __enter__zPipeHandle.__enter__ss r9c$|jyr2)rH)r6tvtbs r/__exit__zPipeHandle.__exit__vs  r9N)r@ __module__ __qualname____doc__r8rApropertyr7rFrr%rHwarningswarnrMrPrUrOr9r/rrQsR7 $+#6#6 %MM r9rc$eZdZdZdfd ZxZS)rzReplacement for subprocess.Popen using overlapped pipe handles. The stdin, stdout, stderr are None or instances of PipeHandle. c ,|jdrJ|jdddk(sJdx}x}}dx} x} } |tk(r5tdd\} } tj| t j }n|}|tk(r&td\} } tj| d}n|}|tk(r&td\} }tj|d}n|tk(r|}n|} t|$|f|||d || t| |_ | t| |_ | t| |_ |tk(rt j ||tk(rt j ||tk(rt j |yy#| | | fD]}|tj|xYw#|tk(rt j ||tk(rt j ||tk(rt j |wwxYw) Nuniversal_newlinesr r)FTT)r r)TFr)stdinstdoutstderr)getrrmsvcrtopen_osfhandlerO_RDONLYSTDOUTsuperr8rr_r`rarr%rH)r6argsr_r`rakwds stdin_rfd stdout_wfd stderr_wfdstdin_wh stdout_rh stderr_rhstdin_rh stdout_wh stderr_whhr?s r/r8zPopen.__init__s880111xx 1%***.22 2J+///9y D=!%t!L Hh--h DII T>#'=#A Iy..y!#'=#A Iy..y!r}s/ <<7 l ##  0     ! \7+b&&X0%J  0%r9