K2LL33D SHELL

 Apache/2.4.7 (Ubuntu)
 Linux sman1baleendah 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64
 uid=33(www-data) gid=33(www-data) groups=33(www-data)
 safemode : OFF
 MySQL: ON | Perl: ON | cURL: OFF | WGet: ON
  >  / usr / lib / python3 / dist-packages / apport /
server ip : 172.67.156.115

your ip : 108.162.241.19

H O M E


Filename/usr/lib/python3/dist-packages/apport/REThread.py
Size2.24 kb
Permissionrw-r--r--
Ownerroot : root
Create time27-Apr-2025 09:55
Last modified04-Apr-2014 22:30
Last accessed06-Jul-2025 10:35
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
'''Enhanced Thread with support for return values and exception propagation.'''

# Copyright (C) 2007 Canonical Ltd.
# Author: Martin Pitt <[email protected]>
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. See http://www.gnu.org/copyleft/gpl.html for
# the full text of the license.

import threading, sys


class REThread(threading.Thread):
'''Thread with return values and exception propagation.'''

def __init__(self, group=None, target=None, name=None, args=(), kwargs={}):
'''Initialize Thread, identical to threading.Thread.__init__().'''

threading.Thread.__init__(self, group, target, name, args, kwargs)
self.__target = target
self.__args = args
self.__kwargs = kwargs
self._retval = None
self._exception = None

def run(self):
'''Run target function, identical to threading.Thread.run().'''

if self.__target:
try:
self._retval = self.__target(*self.__args, **self.__kwargs)
except:
if sys:
self._exception = sys.exc_info()

def return_value(self):
'''Return value from target function.

This can only be called after the thread has finished, i. e. when
isAlive() is False and did not terminate with an exception.
'''
assert not self.isAlive()
assert not self._exception
return self._retval

def exc_info(self):
'''Return (type, value, traceback) of the exception caught in run().'''

return self._exception

def exc_raise(self):
'''Raise the exception caught in the thread.

Do nothing if no exception was caught.
'''
if self._exception:
# there is no syntax which both Python 2 and 3 parse, so we need a
# hack using exec() here
# Python 3:
if sys.version > '3':
raise self._exception[1].with_traceback(self._exception[2])
else:
exec('raise self._exception[0], self._exception[1], self._exception[2]')