§
|<ˆjc ã óx — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm Z d dlm
Z
d dlZ G d„ d ¦ « Zd
ed fd„Z
ej d
d
¬¦ « d
ed fd„¦ « Z ej d
d
¬¦ « d
ed fd„¦ « Z ej d
d
¬¦ « d
ed fd„¦ « ZdS )é N)Ú
TracebackType)ÚAny)ÚCallable)Ú Generator)ÚOptional)ÚTypec ór — e Zd ZdZd
d„Zdd„Zdd„Zd eee d
ee dee
ddfd„ZdS )Úcatch_threading_exceptionaÝ Context manager catching threading.Thread exception using
threading.excepthook.
Storing exc_value using a custom hook can create a reference cycle. The
reference cycle is broken explicitly when the context manager exits.
Storing thread using a custom hook can resurrect it if it is set to an
object which is being finalized. Exiting the context manager clears the
stored object.
Usage:
with threading_helper.catch_threading_exception() as cm:
# code spawning a thread which raises an exception
...
# check the thread exception: use cm.args
...
# cm.args attribute no longer exists at this point
# (to break a reference cycle)
ÚreturnNc ó" — d | _ d | _ d S ©N)ÚargsÚ _old_hook©Úselfs úi/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/_pytest/threadexception.pyÚ__init__z"catch_threading_exception.__init__$ s € Ø:>ˆŒ ØPTˆŒˆˆó r úthreading.ExceptHookArgsc ó — || _ d S r
)r )r r s r Ú_hookzcatch_threading_exception._hook( s
€ ؈Œ ˆ ˆ r c óJ — t j | _ | j t _ | S r
)Ú threadingÚ
excepthookr r r s r Ú __enter__z#catch_threading_exception.__enter__+ s € Ý"Ô-ˆŒØ#œz� ÔØˆr Úexc_typeÚexc_valÚexc_tbc óL — | j €J ‚| j t _ d | _ | `d S r
)r r r r )r r r r s r Ú__exit__z"catch_threading_exception.__exit__0 s, € ð Œ~Ð)Ð)Ð)Ø#œ~� ÔØˆŒØˆIˆIˆIr )r N)r r r N)r r
)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r r r r r Ú
BaseExceptionr r © r r r
r
s¬ € € € € € ðð ð(Uð Uð Uð Uðð ð ð ðð ð ð ð
à˜4
Ô.Ô/ð ð ˜-Ô(ð ð ˜Ô'ð ð
ð ð ð ð ð ð r r
r )NNNc # ó˜ K — t ¦ « 5 } d V — | j r•| j j €dn| j j j }d|› d�}|d t j | j j | j j | j j ¦ « ¦ « z
}t j t j
|¦ « ¦ « d d d ¦ « d S # 1 swxY w Y d S )Nz