ó
    ý¸e  ã                   ó¸   • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKr SSKJ	r	J
r
  SSKJrJr  SSKJr  SSKJr   " S S	\5      rg! \ a    SSK	J	r	J
r
   N0f = f)
zJProvides an interface like pexpect.spawn interface using subprocess.Popen
é    N)ÚQueueÚEmptyé   )Ú	SpawnBaseÚPY3)ÚEOF)Ústring_typesc                   óp   ^ • \ rS rSr   SU 4S jjrSrS rS rS rS r	S r
SS	 jrS
 rS rS rSrU =r$ )Ú
PopenSpawné   c           
      óø  >• [         [        U ]  X#XEX‰S9  Uc%  [        R                  R                  S5      U l        O$U R                  [        R                  5      U l        [        S[        R                  [        R                  [        R                  XjUS9n[        R                  S:X  aO  [        R                  " 5       nU=R                  [        R                   -  sl        XËS'   [        R"                  US'   [%        U[&        5      (       a:  [        R                  S:w  a&  [(        R*                  " U[        R,                  S:H  S	9n[        R.                  " U40 UD6U l        U R0                  R2                  U l        S
U l        U R                  5       U l        [9        5       U l        [<        R>                  " U R@                  S9U l!        SU RB                  l"        U RB                  RG                  5         g )N)ÚtimeoutÚmaxreadÚsearchwindowsizeÚlogfileÚencodingÚcodec_errorsÚasciir   )ÚbufsizeÚstdinÚstderrÚstdoutÚcwdÚ
preexec_fnÚenvÚwin32ÚstartupinfoÚcreationflagsÚposix)r   F)ÚtargetT)$Úsuperr   Ú__init__ÚosÚlinesepÚencodeÚcrlfÚstring_typeÚdictÚ
subprocessÚPIPEÚSTDOUTÚsysÚplatformÚSTARTUPINFOÚdwFlagsÚSTARTF_USESHOWWINDOWÚCREATE_NEW_PROCESS_GROUPÚ
isinstancer	   ÚshlexÚsplitÚnameÚPopenÚprocÚpidÚclosedÚ_bufr   Ú_read_queueÚ	threadingÚThreadÚ_read_incomingÚ_read_threadÚdaemonÚstart)ÚselfÚcmdr   r   r   r   r   r   r   r   r   Úkwargsr   Ú	__class__s                €Ú5/usr/lib/python3/dist-packages/pexpect/popen_spawn.pyr"   ÚPopenSpawn.__init__   sw  ø€ ô 	Œj˜$Ñ(°Ø!1Ø!ð 	)ñ 	>ð ÑÜŸ
™
×)Ñ)¨7Ó3ˆD�Ià×(Ñ(¬"¯*©*Ó5ˆDŒIä˜a¤z§¡Ü'×.Ñ.´z·±Ø¸#ñ?ˆô �<‰<˜7Ó"Ü$×0Ò0Ó2ˆKØ×Ò¤:×#BÑ#BÑBÕØ$/�=Ñ!Ü&0×&IÑ&IˆF�?Ñ#ä�cœ<×(Ñ(¬S¯\©\¸WÓ-DÜ—+’+˜c¬¯©°GÑ);Ñ<ˆCä×$Ò$ SÑ3¨FÑ3ˆŒ	Ø—9‘9—=‘=ˆŒØˆŒØ×$Ñ$Ó&ˆŒ	ä ›7ˆÔÜ%×,Ò,°D×4GÑ4GÑHˆÔØ#'ˆ×ÑÔ Ø×Ñ×ÑÕ!ó    Fc                 óš  • U R                   nU R                  (       a'  U(       a  X1S  U l         US U $ SU l        [        S5      eUS:X  a  U R                  nOUc  Sn[
        R
                  " 5       n[
        R
                  " 5       U-
  U:  aŒ  U(       a…  [        U5      U:  av   U R                  R                  5       nUc  SU l        OPX0R                  R                  USS9-  n[
        R
                  " 5       U-
  U:  a  U(       a  [        U5      U:  a  Mv  US U X1S  so`l         U R                  US5        U$ ! [         a     M/  f = f)NTzEnd Of File (EOF).éÿÿÿÿg    €„.AF©ÚfinalÚread)r:   Ú_read_reached_eofÚflag_eofr   r   ÚtimeÚlenr;   Ú
get_nowaitÚ_decoderÚdecoder   Ú_log)rB   Úsizer   ÚbufÚt0ÚincomingÚrs          rF   Úread_nonblockingÚPopenSpawn.read_nonblockingA   s/  € Ø�i‰iˆØ×!×!ö Ø ˜J�”	Ø˜5˜D�zÐ!à $�”ÜÐ.Ó/Ð/à�b‹=Ø—l‘l‰GØ‰_ØˆGä�YŠY‹[ˆÜ�yŠy‹{˜RÑ 7Ó*®t¼¸C»À4»ð	CØ×+Ñ+×6Ñ6Ó8�ð Ñ#Ø-1�DÔ*Øà—}‘}×+Ñ+¨H¸EÐ+ÐBÑB�ô �yŠy‹{˜RÑ 7Ó*®t¼¸C»À4½ð ˜5˜D�z 3 u :ˆˆŒ9à�	‰	�!�VÔØˆøô ó Úðús   Â%D< Ä<
E
Å	E
c                 óR  • U R                   R                  R                  5       n Sn [        R                  " US5      nU(       d  U R                  R                  S5        gU R                  R                  U5        MZ  ! [
         a  nU R                  US5         SnANaSnAff = f)z6Run in a thread to move output from a pipe to a queue.rH   i   rM   N)	r7   r   Úfilenor#   rM   ÚOSErrorrU   r;   Úput)rB   r^   rW   Úes       rF   r>   ÚPopenSpawn._read_incomingd   s�   € à—‘×!Ñ!×(Ñ(Ó*ˆØØˆCð%Ü—g’g˜f dÓ+�ö à× Ñ ×$Ñ$ TÔ*Øà×Ñ× Ñ  Ô%ñ øô ó %Ø—	‘	˜!˜V×$Ñ$ûð%ús   ©B  Â 
B&Â
B!Â!B&c                 ó&   • U R                  U5        g)zHThis is similar to send() except that there is no return value.
        N©Úsend)rB   Úss     rF   ÚwriteÚPopenSpawn.writeu   s   € ð 	�	‰	�!�rH   c                 ó8   • U H  nU R                  U5        M     g)zËThis calls write() for each element in the sequence.

The sequence can be any iterable object producing strings, typically a
list of strings. This does not add line separators. There is no return
value.
Nrd   )rB   Úsequencerf   s      rF   Ú
writelinesÚPopenSpawn.writelinesz   s   € ó ˆAØ�I‰I�aŽLò rH   c                 ó<  • U R                  U5      nU R                  US5        U R                  R                  USS9n[        (       a%  U R
                  R                  R                  U5      $ U R
                  R                  R                  U5        [        U5      $ )zJSend data to the subprocess' stdin.

Returns the number of bytes written.
re   FrK   )	Ú_coerce_send_stringrU   Ú_encoderr%   r   r7   r   rg   rQ   )rB   rf   Úbs      rF   re   ÚPopenSpawn.send„   sz   € ð
 ×$Ñ$ QÓ'ˆØ�	‰	�!�VÔà�M‰M× Ñ  ¨%Ð Ð0ˆßŠ3Ø—9‘9—?‘?×(Ñ(¨Ó+Ð+ð �I‰I�O‰O×!Ñ! !Ô$Ü�q“6ˆMrH   c                 ó^   • U R                  U5      nX R                  U R                  5      -   $ )z~Wraps send(), sending string ``s`` to child process, with os.linesep
automatically appended. Returns number of bytes written. )re   r$   )rB   rf   Úns      rF   ÚsendlineÚPopenSpawn.sendline•   s'   € ð �I‰I�a‹LˆØ—9‘9˜TŸ\™\Ó*Ñ*Ð*rH   c                 óŽ   • U R                   R                  5       nUS:¼  a  Xl        SU l        OSU l        U* U l        SU l        U$ )z;Wait for the subprocess to finish.

Returns the exit code.
r   NT)r7   ÚwaitÚ
exitstatusÚsignalstatusÚ
terminated)rB   Ústatuss     rF   rw   ÚPopenSpawn.waitœ   sE   € ð
 —‘—‘Ó!ˆØ�Q‹;Ø$ŒOØ $ˆDÕà"ˆDŒOØ!' ˆDÔØˆŒØˆrH   c                 óv  • [         R                  S:X  az  U[        R                  [        R                  4;   a  [        R                  nOEU[        R
                  [        R                  4;   a  [        R                  nO[        R                  n[        R                  " U R                  R                  U5        g)zmSends a Unix signal to the subprocess.

Use constants from the :mod:`signal` module to specify which signal.
r   N)r,   r-   ÚsignalÚSIGINTÚCTRL_C_EVENTÚSIGBREAKÚCTRL_BREAK_EVENTÚSIGTERMr#   Úkillr7   r8   )rB   Úsigs     rF   r„   ÚPopenSpawn.kill«   ss   € ô
 �<‰<˜7Ó"Ø”v—}‘}¤f×&9Ñ&9Ð:Ó:Ü×)Ñ)‘ØœŸ™¬&×*AÑ*AÐBÓBÜ×-Ñ-‘ä—n‘n�ä
�Š�—	‘	—‘˜sÕ#rH   c                 óL   • U R                   R                  R                  5         g)z+Closes the stdin pipe from the writing end.N)r7   r   Úclose)rB   s    rF   ÚsendeofÚPopenSpawn.sendeofº   s   € à�	‰	�‰×ÑÕrH   )r:   r;   rN   r?   r9   r&   rx   rO   r8   r7   ry   rz   )	é   iÐ  NNNNNÚstrictN)Ú )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r"   rN   r[   r>   rg   rk   re   rt   rw   r„   r‰   Ú__static_attributes__Ú__classcell__)rE   s   @rF   r   r      sM   ø† ØGKØ<@Ø37÷("ðT Ðò!òF&ò"ò
òô"+òò$÷ ð  rH   r   )Ú__doc__r#   r<   r)   r,   rP   r~   r3   Úqueuer   r   ÚImportErrorÚ	spawnbaser   r   Ú
exceptionsr   Úutilsr	   r   © rH   rF   Ú<module>r›      sW   ðñã 	Û Û Û 
Û Û Û ð#ß"÷ &Ý Ý ôh �õ h øð ó #ß"Ñ"ð#ús    A ÁAÁA