Ϫf\dZddlmZddlmZddlmZddlmZddl m Z dZ Gdd Z y ) zd Cross-platform process-related functionality used by different L{IReactorProcess} implementations. )Optional)getWarningMethod)Failure)err)qualzUSince Twisted 8.2, IProcessProtocol.processExited is required. %s must implement it.cVeZdZUdZeeed<dZeeed<dZdZ dZ dZ dZ dZ y) BaseProcessNpidstatusrc||_y)N)proto)selfprotocols ?/usr/lib/python3/dist-packages/twisted/internet/_baseprocess.py__init__zBaseProcess.__init__s  c"t}t|jd|}||ur=ttt |jj fztdy |t|y#t$rtddYywxYw)N processExitedr) stacklevelz!unexpected error in processExited) objectgetattrr r_missingProcessExitedr __class__DeprecationWarningr BaseExceptionr)rreasondefaultrs r_callProcessExitedzBaseProcess._callProcessExited s|( OWE G #   %djj.B.B)C(EE"   ?gfo.  ?D=> ?s$A66B Bc||_|xjdz c_d|_|j|j ||j y)z; This is called when the child terminates. N)r lostProcessr r _getReasonmaybeCallProcessEnded)rr s r processEndedzBaseProcess.processEnded/sF  A  78 ""$rc|jJ|j|j}|j}d|_ |jt |yy#t $rt ddYywxYw)zD Call processEnded on protocol after final cleanup. Nz unexpected error in processEnded)r r"r r$rrr)rrr s rr#z!BaseProcess.maybeCallProcessEnded9sh :: !__T[[1FJJEDJ >""76?3 " ! >D<= >sAA0/A0)__name__ __module__ __qualname__r rint__annotations__r r!r rrr$r#rrr r s<C# FHSM K E ?% >rr N) __doc__typingrtwisted.python.deprecatertwisted.python.failurertwisted.python.logrtwisted.python.reflectrrr r+rrr2s/  5*"'* ->->r