Ë
    J0mh1	  ã                   óB   — d Z ddlZddlZ G d„ dej                  «      Zy)zIEnhanced Thread with support for return values and exception propagation.é    Nc                   ó0   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zy)	ÚREThreadz´Thread 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           	      óž   — |€i }t         j                  j                  | |||||d¬«       || _        || _        || _        d| _        d| _        y)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	   zREThread.__init__   sS   € àˆ>ØˆFä×Ñ×!Ñ! $¨¨v°t¸TÀ6ÐRVÐ!ÔWØˆŒØˆŒØˆŒØˆŒØˆ�ó    c                 óÖ   — | j                   r-	  | j                   | j                  i | j                  ¤Ž| _        yy# t        $ r$ t
        rt        j                  «       | _        Y yY yw xY w)z9Run target function, identical to threading.Thread.run().N)r
   r   r   r   ÚBaseExceptionÚsysÚexc_infor   ©r   s    r   ÚrunzREThread.run&   sX   € à�=Š=ð5Ø,˜tŸ}™}¨d¯k©kÐK¸T¿]¹]ÑK�•ð øô !ò 5ÝÜ&)§l¡l£n�D–Oñ ð5ús   Ž+; »(A(Á'A(c                 óZ   — | j                  «       rJ ‚| j                  rJ ‚| j                  S )z»Return 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_valuezREThread.return_value/   s*   € ð —=‘=”?Ð"Ð"Ø—?’?Ð"Ð"Ø�|‰|Ðr   c                 ó   — | j                   S )zAReturn (type, value, traceback) of the exception caught in run().)r   r   s    r   r   zREThread.exc_info9   s   € à�‰Ðr   c                 ór   — | j                   r+| j                   d   j                  | j                   d   «      ‚y)zbRaise the exception caught in the thread.

        Do nothing if no exception was caught.
        é   é   N)r   Úwith_tracebackr   s    r   Ú	exc_raisezREThread.exc_raise=   s3   € ð
 �?Š?Ø—/‘/ !Ñ$×3Ñ3°D·O±OÀAÑ4FÓGÐGð r   )NNN© N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r   r   r   r%   r&   r   r   r   r      s!   „ ñó
ò5òòóHr   r   )r*   r   r   r   r   r&   r   r   ú<module>r+      s$   ðÙ Oó Û ô0Hˆy×Ñõ 0Hr   