+
    i-  c                   s    ^ RI t ^ RIt^ RIt^ RIt^ RIHt ^RIHtHt ^RI	H
t
HtHtHtHtHtHtHt ^RIHtHtHt ]P,                  ! ]4      t ! R R]4      t ! R R	]]4      tR# )
i    N)Dict)ChannelErrorProtocolChannel)JsonDict
JsonObjectget_boolget_enumget_int
get_objectget_strget_strv)SubprocessProtocolSubprocessTransport
WindowSizec                   s6   a  ] tR t^t o RtV 3R lR ltRtV tR# )SocketStreamChannelstreamc                sT   < V ^8  d   QhRS[ P                  RS[RS[ P                  /#    loopoptionsreturn)asyncioAbstractEventLoopr   Z	TransportZformat__classdict__   "</usr/lib/python3.14/site-packages/cockpit/channels/stream.py__annotate__Z SocketStreamChannel.__annotate__   s/        7+D+D  z  ^e^o^o      c                sr  a "   R V9   d   RV9   d   \        RRR7      h R V9   d3   \        VR 4      pRV 2pVP                  V 3R lV4      G Rj  xL
 w  rVMVRV9   dC   \        VR4      p\        VRR	4      pR
V RV 2pVP	                  V 3R lW4      G Rj  xL
 w  rVM\        RRR7      h\
        P                  RV4       S P                  4        T#  L L>  \         dO   p	\
        P                  RXT	4       \        T	\        4      '       d   Rp
MRp
\        T
\        T	4      R7      T	hRp	?	ii ; i5i)Zunixportprotocol-errorz-cannot specify both "port" and "unix" optionsmessagezUnix socket c                     < S # N self   r   <lambda>6SocketStreamChannel.create_transport.<locals>.<lambda>   s    r   NZaddressZ	localhostzTCP socket Z:c                  r!   r"   r#   r$   r&   r   r'   r(   '   s    Dr   z7no "port" or "unix" or other address option for channelz$SocketStreamChannel: connected to %sz0SocketStreamChannel: connecting to %s failed: %s	not-foundZ
terminated)r   r	   Zcreate_unix_connectionr   Zcreate_connectionloggerdebugOSErrorinfoZ
isinstanceZConnectionRefusedErrorZstrclose_on_eof)r%   r   r   ZpathZlabel	transportZ_r   ZhosterrorZproblems   f&&        r   create_transportZ$SocketStreamChannel.create_transport   sH    W7!2/9hii	G w/&tf-%)%@%@t%TT	1 7"w/w	;?%dV1TF3%)%;%;L$%UU	1"#3+df f LL?G 	/  U  V  	GKKJESXY%!788%&wE
;F	GsN   D71C CAC C*C D7C C D4&A	D//D44D7r#   N)__name__
__module____qualname____firstlineno__payloadr1   __static_attributes____classdictcell__r      @r   r   r      s     G   r   r   c                   sp   a  ] tR t^9t o RtRtV 3R lR ltV 3R lR ltV 3R lR ltV 3R	 lR
 lt	Rt
V tR# )SubprocessStreamChannelr   Nc                s   < V ^8  d   QhRR/# )r   r   Nr#   r   r   r   r   $SubprocessStreamChannel.__annotate__=   s       r   c                s&    V P                  4        R # r"   )r.   r$   s   &r   process_exitedZ&SubprocessStreamChannel.process_exited=   s    r   c                s    < V ^8  d   QhRS[ /# )r   r   r   r   r   r   r   r<   @   s       r   c                s    R V P                   P                  4       /pV P                   P                  4       pVe   W!R&   V# )zexit-statusr    )
_transportZget_returncodeZ
get_stderr)r%   argsstderrs   &  r   _get_close_argsZ'SubprocessStreamChannel._get_close_args@   s=    ')G)G)IJ++-$Or   c                s$   < V ^8  d   QhRS[ RR/# )r   r   r   Nr>   r   r   r   r   r<   H   s     4 4* 4 4r   c                sl    \        VR \        R4      pVe   V P                  P                  V4       R# R# )windowN)r   r   r?   Zset_window_size)r%   r   rC   s   && r   
do_optionsZ"SubprocessStreamChannel.do_optionsH   s/    GXz4@OO++F3 r   c                s@   < V ^8  d   QhRS[ P                  RS[RS[/# r   )r   r   r   r   r   r   r   r   r<   N   s)     !< !<7+D+D !<z !<^q !<r   c                s:  "   \        VR 4      p\        VR. ROR4      p\        VRR4      p\        VRRR	7      p\	        VR
\
        R4      p\        VR. 4      pVR8X  d   \        P                  p	M(VR8X  d   \        P                  p	M\        P                  p	\        \        P                  4      p
 V
P                  \        R V 4       4      4        \!        YY6YzYYR7      pTP#                  4       pRT/T n        \&        P)                  RY<4       T#   \         d    \        RRR7      Rhi ; i  \*         d   p\        R4      ThRp?i\,         d   p\        R4      ThRp?i\.         d(   p\&        P1                  RY=4       \        R4      ThRp?ii ; i5i)spawnerroutignorer    Z	directoryZ.ptyF)ZdefaultrC   Nenvironc              3   sD   "   T F  qP                  R ^4      x  K  	  R# 5i)Z=N)Zsplit)Z.0Zes   & r   Z	<genexpr>Z;SubprocessStreamChannel.create_transport.<locals>.<genexpr>_   s     =WGGCOOWs    r   z+invalid "environ" option for stream channelr   )rI   rC   envcwdrA   pidzSpawned process args=%s pid=%ir)   zaccess-deniedzFailed to spawn %s: %szinternal-error)rG   rH   r    )r
   r   r	   r   r   r   
subprocessZSTDOUTZDEVNULLZPIPEZdictosrJ   ZupdateZ
ValueErrorr   r   Zget_pid_ready_infor*   r+   ZFileNotFoundErrorZPermissionErrorr,   r-   )r%   r   r   r@   rF   rL   rI   rC   rJ   rA   rK   r/   rM   r0   s   &&&           r   r1   Z(SubprocessStreamChannel.create_transportN   sw    )w'CYOg{C0wu5GXz4@7Ir2%<&&FH_''F__F"2::.	rJJt=W==>	<+DfcfvI##%C %s|DLL94E  	r/9fgmqq	r ! 	7{+6 	;/U: 	<KK0$>/0e;	<s`   B0F3!D ?D2 FD//F2F=E		FFE##F0F1"FFF)rP   ))rE   N)r2   r3   r4   r5   r6   Zrestrictionsr=   rB   rD   r1   r7   r8   r9   r:   r   r;   r;   9   s7     G%L  4 4!< !<r   r;   )r   ZloggingrO   rN   Ztypingr    Zchannelr   r   Zjsonutilr   r   r   r   r   r   r	   r
   Z
transportsr   r   r   Z	getLoggerr2   r*   r   r;   r#   r   r   <module>rQ      sT      	   3 g g g L L			8	$#/ #L6<o/A 6<r   