)L iV ddlmZddlZejdk7sJddlZddlmZddlmZm Z m Z m Z ddl m Z dd lmZdd lmZd gZGd d ZGdd eeZy)) annotationsNwin32)contextmanager)ContextManagerIteratorTextIOcast DummyContext) PipeInput) Vt100InputPosixPipeInputc0eZdZdZddZddZddZddZy)_PipezCWrapper around os.pipe, that ensures we don't double close any end.cbtj\|_|_d|_d|_y)NF)ospiperead_fdwrite_fd _read_closed _write_closedselfs e/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/prompt_toolkit/input/posix_pipe.py__init__z_Pipe.__init__s&&(ggi# dm!"cj|jrytj|jd|_y)z!Close read-end if not yet closed.NT)rrcloserrs r close_readz_Pipe.close_reads&      rcj|jrytj|jd|_y)z"Close write-end if not yet closed.NT)rrr rrs r close_writez_Pipe.close_write$s&     !rcD|j|jy)zClose both read and write ends.N)r!r#rs rr z _Pipe.close,s  rNreturnNone)__name__ __module__ __qualname____doc__rr!r#r rrrrsI# !"rrcxeZdZdZdZd d fd Zeed d dZddZ ddZ ddZ ddZ dd Z dd ZxZS)ra  Input that is send through a pipe. This is useful if we want to send the input programmatically into the application. Mostly useful for unit testing. Usage:: with PosixPipeInput.create() as input: input.send_text('inputdata') rc|_Gfdd}t tt|j |j xjdz c_j j_y)Nc&eZdZdZddZdfd Zy)&PosixPipeInput.__init__..Stdinutf-8cy)NTr,)stdins risattyz-PosixPipeInput.__init__..Stdin.isattyGsrc0jjSN)rr)r3rs rfilenoz-PosixPipeInput.__init__..Stdin.filenoJsyy(((rN)r&bool)r&int)r(r)r*encodingr4r7rsrStdinr0DsH  )rr;r )rsuperrr r send_text __class___id)r_pipe_textr;r>s` rrzPosixPipeInput.__init__@s`  ) ) feg./ u a>>%%rc#Kt} t|||jy#|jwxYww)N)r@rA)rrr )clstextrs rcreatezPosixPipeInput.createTs3w  t48 8 JJLDJJLs A.AAAcXtj|jj|yr6)rwriterrrdatas r send_byteszPosixPipeInput.send_bytes]s ##T*rcvtj|jj|j dy)zSend text to the input.r1N)rrGrrencoderHs rr=zPosixPipeInput.send_text`s# ##T[[%9:rctSr6r rs rraw_modezPosixPipeInput.raw_moded ~rctSr6r rs r cooked_modezPosixPipeInput.cooked_modegrOrc8|jjy)zClose pipe fds.N)rr#rs rr zPosixPipeInput.closejs rc d|jS)z@ This needs to be unique for every `PipeInput`. z pipe-input-)r?rs rtypeahead_hashzPosixPipeInput.typeahead_hashrsTXXJ''r))r@rrAstrr&r')rDrVr&zIterator[PosixPipeInput])rIbytesr&r')rIrVr&r')r&zContextManager[None]r%)r&rV)r(r)r*r+r?r classmethodrrErJr=rNrQr rT __classcell__)r>s@rrr2sN  C&(+; (r) __future__rsysplatformr contextlibrtypingrrrr utilsr baservt100r__all__rrr,rrrcsX"  ||w %99