ó
    HWh  ã                   ó˜  • 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	r	\R                  r
\R                  r\	R                  R                  r\R                  R                   r\R"                  r\R                  R$                  r\R                  R&                  r\R                  R(                  r\R*                  rS r  SS jrg)z
Helper for testing.
é    Nc                  óL   ^• [         R                  mSU4S jjn U [         l        g)z%Redirect all warnings to stdout.
    Nc                 ór   >• T" X[         R                  R                  U5      U[        R                  5        g )N)ÚosÚpathÚbasenameÚsysÚstdout)ÚmsgÚcatÚfnameÚlnoÚfileÚlineÚshowwarning_origs         €Ú0/usr/lib/python3/dist-packages/joblib/testing.pyÚshowwarningÚ'warnings_to_stdout.<locals>.showwarning    s$   ø€ Ù˜¤2§7¡7×#3Ñ#3°EÓ#:¸DÄ#Ç*Á*ÕMó    )Nr   )Úwarningsr   )r   r   s    @r   Úwarnings_to_stdoutr      s!   ø€ ô  ×+Ñ+Ð÷Nð '„HÕr   c                 óz  ^ ^• [         R                  " T [         R                  [         R                  S9mU U4S jnU U4S jn UbP  [        R                  " X5      nUR                  5         [        R                  " SU-  U5      nUR                  5         TR                  5       u  p‰UR                  5       U	R                  5       p˜TR                  S:w  a'  SR                  TR                  X‰5      n
[        U
5      eUb5  [        R                  " X(5      (       d  [        SR                  X(5      5      eUb5  [        R                  " X95      (       d  [        S	R                  X95      5      eUb!  WR                  5         WR                  5         gg! Ub!  WR                  5         WR                  5         f f = f)
a  Runs a command in a subprocess with timeout in seconds.

A SIGTERM is sent after `timeout` and if it does not terminate, a
SIGKILL is sent after `2 * timeout`.

Also checks returncode is zero, stdout if stdout_regex is set, and
stderr if stderr_regex is set.
)r	   Ústderrc                  óX   >• [         R                  " ST  35        TR                  5         g)z«
Attempt to terminate a leftover process spawned during test execution:
ideally this should not be needed but can help avoid clogging the CI
workers in case of deadlocks.
úTimeout running N)r   ÚwarnÚ	terminate©ÚcmdÚprocs   €€r   Úterminate_processÚ0check_subprocess_call.<locals>.terminate_process4   s#   ø€ ô 	�ŠÐ(¨¨Ð.Ô/Ø�‰Õr   c                  óX   >• [         R                  " ST  35        TR                  5         g)z›
Kill a leftover process spawned during test execution: ideally this
should not be needed but can help avoid clogging the CI workers in
case of deadlocks.
r   N)r   r   Úkillr   s   €€r   Úkill_processÚ+check_subprocess_call.<locals>.kill_process=   s"   ø€ ô 	�ŠÐ(¨¨Ð.Ô/Ø�	‰	�r   Né   r   z/Non-zero return code: {}.
Stdout:
{}
Stderr:
{}z,Unexpected stdout: {!r} does not match:
{!r}z,Unexpected stderr: {!r} does not match:
{!r})Ú
subprocessÚPopenÚPIPEÚ	threadingÚTimerÚstartÚcommunicateÚdecodeÚ
returncodeÚformatÚ
ValueErrorÚreÚsearchÚcancel)r   ÚtimeoutÚstdout_regexÚstderr_regexr    r$   Úterminate_timerÚ
kill_timerr	   r   Úmessager   s   `          @r   Úcheck_subprocess_callr;   '   s}  ù€ ô ×Ò˜C¬
¯©Ü#-§?¡?ñ4€Dööð ØÑÜ'Ÿošo¨gÓIˆOØ×!Ñ!Ô#Ü"Ÿš¨¨W©°lÓCˆJØ×ÑÔØ×)Ñ)Ó+‰ˆØŸ™›¨&¯-©-«/�Ø�?‰?˜aÓðß%™vØ—O‘O Vó 5ð ô ˜WÓ%Ð%àÑ$Ü—I’I˜l×3Ñ3ÜØ?×FÑFØ ó*ó+ð +ð Ñ$Ü—I’I˜l×3Ñ3ÜØ?×FÑFØ ó*ó+ð +ð
 ÑØ×"Ñ"Ô$Ø×ÑÕð øˆ7ÑØ×"Ñ"Ô$Ø×ÑÕð ús   ÁD+F Æ&F:)é   NN)Ú__doc__r   r   Úos.pathr   r2   r'   r*   ÚpytestÚ_pytestÚraisesÚwarnsÚrunnerÚSkippedÚSkipTestÚmarkÚskipifÚfixtureÚparametrizer5   ÚxfailÚparamr   r;   © r   r   Ú<module>rM      s§   ðñó Û Û Û 	Û Û ã Û ð 
�‰€Ø�‰€Ø�>‰>×!Ñ!€Ø	�‰×	Ñ	€Ø
�.‰.€Ø�k‰k×%Ñ%€Ø
�+‰+×
Ñ
€Ø�‰×Ñ€Ø�‰€ò'ð 8<Ø'+õ< r   