Python traceback.extract_stack() Examples
The following are 30
code examples of traceback.extract_stack().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
traceback
, or try the search function
.

Example #1
Source File: thutil.py From Depth-Map-Prediction with GNU General Public License v3.0 | 6 votes |
def breakpoint(output, vars=None, cond=lambda v: True, grad=True): tb = tuple(traceback.extract_stack()[:-1]) py_vars = {} if type(vars) not in (tuple, list, dict, types.NoneType): raise ValueError('vars keyword arg must be None, dict, list or tuple') if not isinstance(vars, dict): frame_locals = inspect.stack()[1][0].f_locals if vars is not None: frame_locals = dict((name, val) for (name, val) in frame_locals.iteritems() if name in vars or val in vars) vars = frame_locals assert isinstance(vars, dict) th_vars = dict((name, val) for (name, val) in vars.iteritems() if isinstance(val, _theano_types)) py_vars = dict((name, val) for (name, val) in vars.iteritems() if name not in th_vars) (th_var_names, th_var_vals) = zip(*th_vars.iteritems()) return Breakpoint(th_var_names, cond, tb, py_vars, grad) \ (output, *th_var_vals)
Example #2
Source File: mail_logging.py From pagure with GNU General Public License v2.0 | 6 votes |
def format_callstack(): """ Format the callstack to find out the stack trace. """ ind = 0 for ind, frame in enumerate(f[0] for f in inspect.stack()): if "__name__" not in frame.f_globals: continue modname = frame.f_globals["__name__"].split(".")[0] if modname != "logging": break def _format_frame(frame): """ Format the frame. """ return ' File "%s", line %i in %s\n %s' % (frame) stack = traceback.extract_stack() stack = stack[:-ind] return "\n".join([_format_frame(frame) for frame in stack])
Example #3
Source File: py_utils.py From lingvo with Apache License 2.0 | 6 votes |
def HasShape(tensor, expected_shape, ndims=None): """Syntactic sugar for asserting that tensor has the expected shape. Args: tensor: A Tensor. expected_shape: A Python list or a 1D tensor. ndims: If not None, check only the first `ndims` dimensions of `tensor`. Must be equal to the length of `expected_shape` if not None. Returns: The input `tensor` Raises: A runtime error if the assertion fails. """ if _FromGlobal('enable_asserts'): filepath, line, func, _ = traceback.extract_stack(limit=3)[-2] msg = 'LINGVO ASSERT %s:%s(%s)' % (re.sub(r'.*/', '', filepath), line, func) return with_dependencies([ ops.assert_shape_match( tf.shape(tensor)[:ndims], expected_shape, msg=msg) ], tensor) else: return tensor
Example #4
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_top_bottom(): def a(): b() def b(): c() def c(): set_trace() return check( a, """ [NUM] > .*c() -> return 5 frames hidden .* # top [ 0] > .*() -> .* # bottom [{stack_len}] > .*c() -> return # c """.format(stack_len=len(traceback.extract_stack())))
Example #5
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_do_bt(): def fn(): set_trace() expected_bt = [] for i, entry in enumerate(traceback.extract_stack()[:-3]): expected_bt.append(" [%2d] .*" % i) expected_bt.append(" .*") check(fn, r""" --Return-- [NUM] > .*fn()->None -> set_trace() 5 frames hidden .* # bt {expected} [NUM] .*(NUM)runpdb() func() > [NUM] .*(NUM)fn()->None set_trace() # c """.format(expected="\n".join(expected_bt)))
Example #6
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_do_bt_highlight(): def fn(): set_trace(Config=ConfigWithHighlight) expected_bt = [] for i, entry in enumerate(traceback.extract_stack()[:-3]): expected_bt.append(" [%2d] .*" % i) expected_bt.append(" .*") check(fn, r""" --Return-- [NUM] > .*fn()->None -> set_trace(Config=ConfigWithHighlight) 5 frames hidden .* # bt {expected} [NUM] ^[[33;01m.*\.py^[[00m(^[[36;01mNUM^[[00m)runpdb() func() > [NUM] ^[[33;01m.*\.py^[[00m(^[[36;01mNUM^[[00m)fn()->None set_trace(Config=ConfigWithHighlight) # c """.format(expected="\n".join(expected_bt)))
Example #7
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_do_bt_pygments(): def fn(): set_trace(Config=ConfigWithPygments) expected_bt = [] for i, entry in enumerate(traceback.extract_stack()[:-3]): expected_bt.append(" [%2d] .*" % i) expected_bt.append(" .*") check(fn, r""" --Return-- [NUM] > .*fn()->None -> set_trace(Config^[[38;5;241m=^[[39mConfigWithPygments) 5 frames hidden .* # bt {expected} [NUM] .*(NUM)runpdb() func() > [NUM] .*\.py(NUM)fn()->None set_trace(Config^[[38;5;241m=^[[39mConfigWithPygments) # c """.format(expected="\n".join(expected_bt)))
Example #8
Source File: Main.py From arnold-usd with Apache License 2.0 | 6 votes |
def find_deepest_user_frame(tb): """ Find the deepest stack frame that is not part of SCons. Input is a "pre-processed" stack trace in the form returned by traceback.extract_tb() or traceback.extract_stack() """ tb.reverse() # find the deepest traceback frame that is not part # of SCons: for frame in tb: filename = frame[0] if filename.find(os.sep+'SCons'+os.sep) == -1: return frame return tb[0]
Example #9
Source File: Debug.py From arnold-usd with Apache License 2.0 | 6 votes |
def caller_trace(back=0): """ Trace caller stack and save info into global dicts, which are printed automatically at the end of SCons execution. """ global caller_bases, caller_dicts import traceback tb = traceback.extract_stack(limit=3+back) tb.reverse() callee = tb[1][:3] caller_bases[callee] = caller_bases.get(callee, 0) + 1 for caller in tb[2:]: caller = callee + caller[:3] try: entry = caller_dicts[callee] except KeyError: caller_dicts[callee] = entry = {} entry[caller] = entry.get(caller, 0) + 1 callee = caller # print a single caller and its callers, if any
Example #10
Source File: registry.py From lambda-packs with MIT License | 6 votes |
def register(self, candidate, name=None): """Registers a Python object "candidate" for the given "name". Args: candidate: The candidate object to add to the registry. name: An optional string specifying the registry key for the candidate. If None, candidate.__name__ will be used. Raises: KeyError: If same name is used twice. """ if not name: name = candidate.__name__ if name in self._registry: (filename, line_number, function_name, _) = ( self._registry[name][_LOCATION_TAG]) raise KeyError("Registering two %s with name '%s' !" "(Previous registration was in %s %s:%d)" % (self._name, name, function_name, filename, line_number)) logging.vlog(1, "Registering %s (%s) in %s.", name, candidate, self._name) # stack trace is [this_function, Register(), user_function,...] # so the user function is #2. stack = traceback.extract_stack() self._registry[name] = {_TYPE_TAG: candidate, _LOCATION_TAG: stack[2]}
Example #11
Source File: test_zipimport.py From ironpython2 with Apache License 2.0 | 6 votes |
def doTraceback(self, module): try: module.do_raise() except: tb = sys.exc_info()[2].tb_next f,lno,n,line = extract_tb(tb, 1)[0] self.assertEqual(line, raise_src.strip()) f,lno,n,line = extract_stack(tb.tb_frame, 1)[0] self.assertEqual(line, raise_src.strip()) s = StringIO.StringIO() print_tb(tb, 1, s) self.assertTrue(s.getvalue().endswith(raise_src)) else: raise AssertionError("This ought to be impossible")
Example #12
Source File: registry.py From auto-alt-text-lambda-api with MIT License | 6 votes |
def register(self, candidate, name=None): """Registers a Python object "candidate" for the given "name". Args: candidate: The candidate object to add to the registry. name: An optional string specifying the registry key for the candidate. If None, candidate.__name__ will be used. Raises: KeyError: If same name is used twice. """ if not name: name = candidate.__name__ if name in self._registry: (filename, line_number, function_name, _) = ( self._registry[name][_LOCATION_TAG]) raise KeyError("Registering two %s with name '%s' !" "(Previous registration was in %s %s:%d)" % (self._name, name, function_name, filename, line_number)) logging.vlog(1, "Registering %s (%s) in %s.", name, candidate, self._name) # stack trace is [this_function, Register(), user_function,...] # so the user function is #2. stack = traceback.extract_stack() self._registry[name] = {_TYPE_TAG: candidate, _LOCATION_TAG: stack[2]}
Example #13
Source File: link.py From D-VAE with MIT License | 6 votes |
def thunk_hook(type, value, trace): """ WRITEME This function is meant to replace excepthook and do some special work if the exception value has a __thunk_trace__ field. In that case, it retrieves the field, which should contain a trace as returned by L{traceback.extract_stack}, and prints it out on L{stderr}. The normal excepthook is then called. Notes ----- This hook replaced by nosetests, so it does not run in nose tests. """ log_thunk_trace(value) __excepthook(type, value, trace)
Example #14
Source File: Main.py From web2board with GNU Lesser General Public License v3.0 | 6 votes |
def find_deepest_user_frame(tb): """ Find the deepest stack frame that is not part of SCons. Input is a "pre-processed" stack trace in the form returned by traceback.extract_tb() or traceback.extract_stack() """ tb.reverse() # find the deepest traceback frame that is not part # of SCons: for frame in tb: filename = frame[0] if filename.find(os.sep+'SCons'+os.sep) == -1: return frame return tb[0]
Example #15
Source File: Debug.py From web2board with GNU Lesser General Public License v3.0 | 6 votes |
def caller_trace(back=0): import traceback tb = traceback.extract_stack(limit=3+back) tb.reverse() callee = tb[1][:3] caller_bases[callee] = caller_bases.get(callee, 0) + 1 for caller in tb[2:]: caller = callee + caller[:3] try: entry = caller_dicts[callee] except KeyError: caller_dicts[callee] = entry = {} entry[caller] = entry.get(caller, 0) + 1 callee = caller # print a single caller and its callers, if any
Example #16
Source File: gunicorn.conf.py From torngas with BSD 3-Clause "New" or "Revised" License | 6 votes |
def worker_int(worker): worker.log.info("worker received INT or QUIT signal") ## get traceback info import threading, sys, traceback id2name = dict([(th.ident, th.name) for th in threading.enumerate()]) code = [] for threadId, stack in sys._current_frames().items(): code.append("\n# Thread: %s(%d)" % (id2name.get(threadId, ""), threadId)) for filename, lineno, name, line in traceback.extract_stack(stack): code.append('File: "%s", line %d, in %s' % (filename, lineno, name)) if line: code.append(" %s" % (line.strip())) worker.log.debug("\n".join(code))
Example #17
Source File: error.py From CyberScan with GNU General Public License v3.0 | 6 votes |
def filter(self, record): from config import conf wt = conf.warning_threshold if wt > 0: stk = traceback.extract_stack() caller=None for f,l,n,c in stk: if n == 'warning': break caller = l tm,nb = self.warning_table.get(caller, (0,0)) ltm = time.time() if ltm-tm > wt: tm = ltm nb = 0 else: if nb < 2: nb += 1 if nb == 2: record.msg = "more "+record.msg else: return 0 self.warning_table[caller] = (tm,nb) return 1
Example #18
Source File: deprecations.py From botogram with MIT License | 6 votes |
def warn(stack_pos, before_message, after_message=None): """Issue a warning caused by user code""" # This is a workaround for http://bugs.python.org/issue25108 # In Python 3.5.0, traceback.extract_stack returns an additional internal # stack frame, which causes a lot of trouble around there. if sys.version_info[:3] == (3, 5, 0): stack_pos -= 1 frame = traceback.extract_stack()[stack_pos - 1] at_message = "At: %s (line %s)" % (frame[0], frame[1]) warn_logger.warn(before_message) if after_message is not None: warn_logger.warn(at_message) warn_logger.warn(after_message + "\n") else: warn_logger.warn(at_message + "\n")
Example #19
Source File: test_zipimport.py From BinderFilter with MIT License | 6 votes |
def doTraceback(self, module): try: module.do_raise() except: tb = sys.exc_info()[2].tb_next f,lno,n,line = extract_tb(tb, 1)[0] self.assertEqual(line, raise_src.strip()) f,lno,n,line = extract_stack(tb.tb_frame, 1)[0] self.assertEqual(line, raise_src.strip()) s = StringIO.StringIO() print_tb(tb, 1, s) self.assertTrue(s.getvalue().endswith(raise_src)) else: raise AssertionError("This ought to be impossible")
Example #20
Source File: test_zipimport.py From oss-ftp with MIT License | 6 votes |
def doTraceback(self, module): try: module.do_raise() except: tb = sys.exc_info()[2].tb_next f,lno,n,line = extract_tb(tb, 1)[0] self.assertEqual(line, raise_src.strip()) f,lno,n,line = extract_stack(tb.tb_frame, 1)[0] self.assertEqual(line, raise_src.strip()) s = StringIO.StringIO() print_tb(tb, 1, s) self.assertTrue(s.getvalue().endswith(raise_src)) else: raise AssertionError("This ought to be impossible")
Example #21
Source File: Main.py From pivy with ISC License | 6 votes |
def find_deepest_user_frame(tb): """ Find the deepest stack frame that is not part of SCons. Input is a "pre-processed" stack trace in the form returned by traceback.extract_tb() or traceback.extract_stack() """ tb.reverse() # find the deepest traceback frame that is not part # of SCons: for frame in tb: filename = frame[0] if string.find(filename, os.sep+'SCons'+os.sep) == -1: return frame return tb[0]
Example #22
Source File: Debug.py From pivy with ISC License | 6 votes |
def caller_trace(back=0): import traceback tb = traceback.extract_stack(limit=3+back) tb.reverse() callee = tb[1][:3] caller_bases[callee] = caller_bases.get(callee, 0) + 1 for caller in tb[2:]: caller = callee + caller[:3] try: entry = caller_dicts[callee] except KeyError: caller_dicts[callee] = entry = {} entry[caller] = entry.get(caller, 0) + 1 callee = caller # print a single caller and its callers, if any
Example #23
Source File: pydevd_console.py From PyDev.Debugger with Eclipse Public License 1.0 | 6 votes |
def get_interactive_console(thread_id, frame_id, frame, console_message): """returns the global interactive console. interactive console should have been initialized by this time :rtype: DebugConsole """ if InteractiveConsoleCache.thread_id == thread_id and InteractiveConsoleCache.frame_id == frame_id: return InteractiveConsoleCache.interactive_console_instance InteractiveConsoleCache.interactive_console_instance = DebugConsole() InteractiveConsoleCache.thread_id = thread_id InteractiveConsoleCache.frame_id = frame_id console_stacktrace = traceback.extract_stack(frame, limit=1) if console_stacktrace: current_context = console_stacktrace[0] # top entry from stacktrace context_message = 'File "%s", line %s, in %s' % (current_context[0], current_context[1], current_context[2]) console_message.add_console_message(CONSOLE_OUTPUT, "[Current context]: %s" % (context_message,)) return InteractiveConsoleCache.interactive_console_instance
Example #24
Source File: thread_utils.py From dash-masternode-tool with MIT License | 6 votes |
def acquire(self): stack = traceback.extract_stack() if len(stack) >= 2 + self.stackinfo_skip_lines: calling_filename, calling_line_number, _, _ = stack[-2 - self.stackinfo_skip_lines] else: calling_filename, calling_line_number = '', '' thread = threading.currentThread() if SAVE_CALL_STACK: # used in diagnostics call_stack = clean_call_stack(stack) else: call_stack = [] waiter = LockCaller(thread, calling_filename, calling_line_number, call_stack) self.waiters.append(waiter) self.__lock.acquire() self.depth += 1 self.waiters.remove(waiter) del waiter self.blocker = LockCaller(thread, calling_filename, calling_line_number, call_stack)
Example #25
Source File: contractor.py From g3ar with BSD 2-Clause "Simplified" License | 6 votes |
def _worker(self, dictobj): """""" func = dictobj['func'] args = dictobj['args'] argv = dictobj['argv'] try: result = func(*args, **argv) except Exception as e: #print 'ecp occured' result = tuple([e, traceback.extract_stack()]) self.lock.acquire() self._executed_task_count = self._executed_task_count + 1 self._add_result_to_queue(result=result) self.lock.release()
Example #26
Source File: contractor.py From g3ar with BSD 2-Clause "Simplified" License | 6 votes |
def _worker(self, dictobj): """""" func = dictobj['func'] args = dictobj['args'] argv = dictobj['argv'] try: result = func(*args, **argv) except Exception as e: #print 'ecp occured' result = tuple([e, traceback.extract_stack()]) self.lock.acquire() self._executed_task_count = self._executed_task_count + 1 self._add_result_to_queue(result=result) self.lock.release()
Example #27
Source File: __init__.py From aws-ops-automator with Apache License 2.0 | 5 votes |
def full_stack(): exc = sys.exc_info()[0] stack = traceback.extract_stack()[:-1] if exc is not None: # i.e. if an exception is present del stack[-1] trace = "Traceback (most recent call last):\n" stack_str = trace + ''.join(traceback.format_list(stack)) if exc is not None: stack_str += ' ' + traceback.format_exc().lstrip(trace) return stack_str
Example #28
Source File: Exceptions.py From rtp_cluster with BSD 2-Clause "Simplified" License | 5 votes |
def pin_exception(exc_value, undepth = 1): if not hasattr(exc_value, 'traceback'): exc_value.traceback = sys.exc_info()[2] elif exc_value.traceback == None: exc_value.traceback = extract_stack()[:-undepth]
Example #29
Source File: configuration.py From modelforge with Apache License 2.0 | 5 votes |
def refresh(): """Scan over all the involved directories and load configs from them.""" override_files = [] for stack in traceback.extract_stack(): f = os.path.join(os.path.dirname(stack[0]), OVERRIDE_FILE) if f not in override_files: override_files.insert(0, f) if OVERRIDE_FILE in override_files: del override_files[override_files.index(OVERRIDE_FILE)] override_files.append(OVERRIDE_FILE) def import_path(path): if sys.version_info < (3, 5, 0): from importlib.machinery import SourceFileLoader return SourceFileLoader(__name__, path).load_module() import importlib.util spec = importlib.util.spec_from_file_location(__name__, path) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) return module for override_file in override_files: if not os.path.isfile(override_file): continue mod = import_path(override_file) globals().update({n: getattr(mod, n) for n in dir(mod) if not n.startswith("__")})
Example #30
Source File: gunicorn_config.py From arches with GNU Affero General Public License v3.0 | 5 votes |
def worker_int(worker): worker.log.info("worker received INT or QUIT signal") # get traceback info import threading import sys import traceback id2name = {th.ident: th.name for th in threading.enumerate()} code = [] for threadId, stack in list(sys._current_frames().items()): code.append("\n# Thread: %s(%d)" % (id2name.get(threadId, ""), threadId)) for filename, lineno, name, line in traceback.extract_stack(stack): code.append('File: "%s", line %d, in %s' % (filename, lineno, name)) if line: code.append(" %s" % (line.strip())) worker.log.debug("\n".join(code))