+
    oFj1	                     D    R t ^ RIt^ RIt ! R R]P                  4      tR# )zIEnhanced Thread with support for return values and exception propagation.Nc                   F   a  ] tR t^t o RtR	R ltR tR tR tR t	Rt
V tR# )
REThreadzThread with return values and exception propagation.

The thread is marked as daemon thread. The entire Python program exits
when no alive non-daemon threads are left.
Nc           
         Vf   / p\         P                  P                  WW#WERR7       W n        W@n        WPn        RV n        RV n        R# )z<Initialize Thread, identical to threading.Thread.__init__().NT)daemon)	threadingThread__init___REThread__target_REThread__args_REThread__kwargs_retval
_exception)selfgrouptargetnameargskwargss   &&&&&&1/usr/lib/python3/dist-packages/apport/REThread.pyr   REThread.__init__   sG    >F!!$vTRV!W    c                    V P                   '       d/    V P                   ! V P                  / V P                  B V n        R# R#   \         d.    \
        '       d   \
        P                  ! 4       T n         R#  R# i ; i)z9Run target function, identical to threading.Thread.run().N)r	   r
   r   r   BaseExceptionsysexc_infor   r   s   &r   runREThread.run&   sZ    ===5#}}dkkKT]]K  ! 53&)llnDO 5s   +A A;A;:A;c                r    V P                  4       '       d   Q hV P                  '       d   Q hV P                  # )zReturn value from target function.

This can only be called after the thread has finished, i. e. when
is_alive() is False and did not terminate with an exception.
)is_aliver   r   r   s   &r   return_valueREThread.return_value/   s.     ==??""???""||r   c                    V P                   # )zAReturn (type, value, traceback) of the exception caught in run().)r   r   s   &r   r   REThread.exc_info9   s    r   c                    V P                   '       d4   V P                   ^,          P                  V P                   ^,          4      hR# )zRRaise the exception caught in the thread.

Do nothing if no exception was caught.
N)r   with_tracebackr   s   &r   	exc_raiseREThread.exc_raise=   s5    
 ???//!$33DOOA4FGG r   )__args__kwargs__targetr   r   )NNN N)__name__
__module____qualname____firstlineno____doc__r   r   r    r   r&   __static_attributes____classdictcell__)__classdict__s   @r   r   r      s*     
5H Hr   r   )r0   r   r   r   r   r+   r   r   <module>r4      s$    O  0Hy 0Hr   