<ݻdZddlZddlZddlZddlZddlmZddlmZddl m Z ddlm Z ddlm Z ddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddl m!Z!ej"rddl#m$Z$dgZ%GddZ&Gddee Z'dS)z#ProcessDispatcher class declarationN)deque)deepcopy)partial)Any)AnyStr) Awaitable)Callable)Deque)Dict)Generic)List)Optional)Tuple)Type)Union)asyncio_subprocess) exceptions)AsyncFakePopen) FakePopen)COMMAND)Command) FakeProcessProcessDispatcherc VeZdZUdZgZeded<dZee ed<dZ ee ed<dZ e ed<eZedede ffed <dZe ed <d Zeed <eddZeddZededeedeeejffdZedeeefdedeee jj!ffdZ"edeeefdeeefdedeee jj!ffdZ#edede dedeee jj!ffdZ$edee%ee%efdeded edeeeff dZ&ededeefdZ'edede(ee)ee*eee fedffdZ+dS) rz"Main class for handling processes.r process_listNbuilt_in_popenbuilt_in_async_subprocessF_allow_unregistered_cache_keep_last_processr_pidprocessreturncF|jsftj|_tt_t j|_|jt _|j t _ tt _d|jD|j |<|j |dS)Nc8i|]}|t|jS)r definitions).0procs v/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/pytest_subprocess/process_dispatcher.py z.ProcessDispatcher.register..;s2   15D(4+,,   )r subprocessPopenrFakePopenWrapperasyncior async_shellcreate_subprocess_shell async_execcreate_subprocess_execrr append)clsr#s r+registerzProcessDispatcher.register0s 4!+!1C /J ,3,>C ).1oG +-0^G *!3G   9<9I    7 (((((r-c|j||j|}|D] \}}||_ |jsq|jt_d|_|j tj |j t_|j j t_ |j jt_d|_ dSdSN)rremover popitemsr(rr.r/rrPluginInternalErrorr1r3r5)r7r#cacher* processess r+ deregisterzProcessDispatcher.deregister@s ((( w''${{}} ) )OD)(D   1"1J !%C ,4 44!$!>G -E  +-D  *-1C ) ) ) 1 1r-commandkwargsc ||}|#|j tj|j|fi|}|S|t |||}t |t s tj||S)z:This method will be used instead of the subprocess.Popen())_ProcessDispatcher__dispatchrrr>_prepare_instancer isinstance run_thread)r7rBrCr#popenresults r+dispatchzProcessDispatcher.dispatchVs ..)) ?!) 44&8c&8&K&KF&K&KEL&&y'67KK&),, 10 0 r-cmdcKt|ttfstdt |jj|fi|}t|tr|}||||d{VS)z1Replacement of asyncio.create_subprocess_shell()zcmd must be a stringN) rGstrbytes ValueErrorrrr3decode _call_async)r7rLrCmethods r+r2zProcessDispatcher.async_shelljs #U|,, 5344 4  ) A      c5 ! ! **,,C__S&&999999999r-programargsc<Kt|ttfstdt |jj|g|Ri|}t|tr|}|gd|D}||||d{VS)z/Replacement of asyncio.create_subprocess_exec()zprogram must be a stringcdg|]-}t|tr|n|.Sr')rGrOrQ)r)args r+ z0ProcessDispatcher.async_exec..s3 N N N#je44=cjjlll# N N Nr-N) rGrNrOrPrrr5rQrR)r7rTrUrCrSrBs r+r4zProcessDispatcher.async_execzs 'C<00 9788 8  ) @         gu % % 'nn&&G  N N N N N __Wff=========r- async_methodcK||}|%|j tj|}|d{VStjdkrLt tj tj rtd| t|||}t |ts tj||S)Nwin32z0The SelectorEventLoop doesn't support subprocess)rErrr>sysplatformrGr1get_event_loop_policyget_event_loopSelectorEventLoopNotImplementedErrorrFrevaluate)r7rBrZrCr#r2rJs r+rRzProcessDispatcher._call_asyncs..)) ?,4 44AMK$$$$$$$ $ <7 " "z  ) + + : : < W( ( "&B &&~wPP&.11 10 0 r-klassc|}||d<|d}|di|}|j||j|_|jdi||S)NrBrecorderr')copyr<callsr6r"pid configure)r7rdrBrCr#fake_popen_kwargsrfrJs r+rFz#ProcessDispatcher._prepare_instances$LLNN'.)$$((44++*++f%%%X ""6""" r-c||\}}}|r|j||s`|jdjsLt jdt|tr|nd d|DddS| }|s4|2|jdj r||n |r|j |=|xj dz c_ t|trdS|S)Nz The process ' c34K|]}t|VdSr:)rN)r)items r+ z/ProcessDispatcher.__dispatch..s()H)H#d)))H)H)H)H)H)Hr-z' was not registered.r) _get_processrhr6rrrProcessNotRegisteredErrorrGrNjoinpopleftr!r(r"bool)r7rBcommand_instancer@process_instancer#s r+ __dispatchzProcessDispatcher.__dispatchsJ8;8H8H8Q8Q5)%5  3  " ) )' 2 2 2 #B';  :: *'377IGG!$)H)H)H)H)H!H!HII   t##%% C-9#6 C  ))))! C$01AB A  gt $ $ 4r-ct|jD]X}tfd|jDd\}}|}|rt |t r|||fcSYdS)Nc32K|]\}}|k ||fVdSr:r')r)keyvaluerBs r+rqz1ProcessDispatcher._get_process..s="Ug~~%L%~~~r-)NN)NNN)reversedrnextr(r=rGr)r7rBr*rwr@rxs ` r+rrzProcessDispatcher._get_processs S-.. E ED*.&*&6&<&<&>&>  ++ ' i $  EZ 599 E'4DDDDDr-)r#rr$N),__name__ __module__ __qualname____doc__rr __annotations__rrr rAnyTyperrvdictr r r!r"int classmethodr8rArrrr.r/rKrNrOrr1Processr2r4rRrrFrErrr rrr'r-r+rr%s@,,(*L$}%***)-NHX&---37x0777 %%%%@DFD]G%; << =FFF$$$$D#MMM ) ) )[ )111[1*)1$ y*** +[& :U # :/3 : ~w199 : : : :[ :>CJ'>05c5j0A>MQ> ~w199 :>>>[>*  ~w199 : [8T)_d>&::;    y.( ) [,Xd^[<  8E%d *;$<=x ?VV    [   r-c.eZdZdedeedefdZdS)r0rBrCr$c &tj|fi|Sr:)rrK)r7rBrCs r+__new__zFakePopenWrapper.__new__s!)'<rs<)) !!!!!! &&&&&&!!!!!! *))))))  P P P P P P P P f=====wv=====r-