Python linecache.checkcache() Examples
The following are 30
code examples of linecache.checkcache().
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
linecache
, or try the search function
.
Example #1
Source File: debug.py From asynq with Apache License 2.0 | 7 votes |
def extract_tb(tb, limit=None): """This implementation is stolen from traceback module but respects __traceback_hide__.""" if limit is None: if hasattr(sys, "tracebacklimit"): limit = sys.tracebacklimit tb_list = [] n = 0 while tb is not None and (limit is None or n < limit): f = tb.tb_frame if not _should_skip_frame(f): lineno = tb.tb_lineno co = f.f_code filename = co.co_filename name = co.co_name linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) if line: line = line.strip() else: line = None tb_list.append((filename, lineno, name, line)) tb = tb.tb_next n = n + 1 return tb_list
Example #2
Source File: pdbpp.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def _install_linecache_wrapper(self): """Disable linecache.checkcache to not invalidate caches. This gets installed permanently to also bypass e.g. pytest using `inspect.getsource`, which would invalidate it outside of the interaction them. """ if not hasattr(self, "_orig_linecache_checkcache"): import linecache # Save it, although not used really (can be useful for debugging). self._orig_linecache_checkcache = linecache.checkcache def _linecache_checkcache(*args, **kwargs): return linecache.checkcache = _linecache_checkcache
Example #3
Source File: utils.py From MobileSF with GNU General Public License v3.0 | 6 votes |
def PrintException(msg,web=False): try: LOGPATH=settings.LOG_DIR except: LOGPATH = os.path.join(settings.BASE_DIR,"logs/") if not os.path.exists(LOGPATH): os.makedirs(LOGPATH) exc_type, exc_obj, tb = sys.exc_info() f = tb.tb_frame lineno = tb.tb_lineno filename = f.f_code.co_filename linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) ts = time.time() st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S') dat= '\n['+st+']\n'+msg+' ({0}, LINE {1} "{2}"): {3}'.format(filename, lineno, line.strip(), exc_obj) if platform.system()=="Windows": print dat else: if web: print Color.BOLD + Color.ORANGE + dat + Color.END else: print Color.BOLD + Color.RED + dat + Color.END with open(LOGPATH + 'MobSF.log','a') as f: f.write(dat)
Example #4
Source File: asyncio_tools.py From rssant with BSD 3-Clause "New" or "Revised" License | 6 votes |
def _format_stack(task, coro, complete=False): ''' Formats a traceback from a stack of coroutines/generators ''' dirname = os.path.dirname(__file__) extracted_list = [] checked = set() for f in _get_stack(coro): lineno = f.f_lineno co = f.f_code filename = co.co_filename name = co.co_name if not complete and os.path.dirname(filename) == dirname: continue if filename not in checked: checked.add(filename) linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) extracted_list.append((filename, lineno, name, line)) if not extracted_list: resp = 'No stack for %r' % task else: resp = 'Stack for %r (most recent call last):\n' % task resp += ''.join(traceback.format_list(extracted_list)) return resp
Example #5
Source File: traceback.py From ironpython3 with Apache License 2.0 | 6 votes |
def _extract_tb_or_stack_iter(curr, limit, extractor): if limit is None: limit = getattr(sys, 'tracebacklimit', None) n = 0 while curr is not None and (limit is None or n < limit): f, lineno, next_item = extractor(curr) co = f.f_code filename = co.co_filename name = co.co_name linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) if line: line = line.strip() else: line = None yield (filename, lineno, name, line) curr = next_item n += 1
Example #6
Source File: PyShell.py From BinderFilter with MIT License | 6 votes |
def extended_linecache_checkcache(filename=None, orig_checkcache=linecache.checkcache): """Extend linecache.checkcache to preserve the <pyshell#...> entries Rather than repeating the linecache code, patch it to save the <pyshell#...> entries, call the original linecache.checkcache() (skipping them), and then restore the saved entries. orig_checkcache is bound at definition time to the original method, allowing it to be patched. """ cache = linecache.cache save = {} for key in list(cache): if key[:1] + key[-1:] == '<>': save[key] = cache.pop(key) orig_checkcache(filename) cache.update(save) # Patch linecache.checkcache():
Example #7
Source File: compilerop.py From Computable with MIT License | 6 votes |
def __init__(self): codeop.Compile.__init__(self) # This is ugly, but it must be done this way to allow multiple # simultaneous ipython instances to coexist. Since Python itself # directly accesses the data structures in the linecache module, and # the cache therein is global, we must work with that data structure. # We must hold a reference to the original checkcache routine and call # that in our own check_cache() below, but the special IPython cache # must also be shared by all IPython instances. If we were to hold # separate caches (one in each CachingCompiler instance), any call made # by Python itself to linecache.checkcache() would obliterate the # cached data from the other IPython instances. if not hasattr(linecache, '_ipython_cache'): linecache._ipython_cache = {} if not hasattr(linecache, '_checkcache_ori'): linecache._checkcache_ori = linecache.checkcache # Now, we must monkeypatch the linecache directly so that parts of the # stdlib that call it outside our control go through our codepath # (otherwise we'd lose our tracebacks). linecache.checkcache = check_linecache_ipython
Example #8
Source File: ultratb.py From Computable with MIT License | 6 votes |
def __init__(self,color_scheme = 'Linux', call_pdb=False, ostream=None, tb_offset=0, long_header=False, include_vars=True, check_cache=None): """Specify traceback offset, headers and color scheme. Define how many frames to drop from the tracebacks. Calling it with tb_offset=1 allows use of this handler in interpreters which will have their own code at the top of the traceback (VerboseTB will first remove that frame before printing the traceback info).""" TBTools.__init__(self, color_scheme=color_scheme, call_pdb=call_pdb, ostream=ostream) self.tb_offset = tb_offset self.long_header = long_header self.include_vars = include_vars # By default we use linecache.checkcache, but the user can provide a # different check_cache implementation. This is used by the IPython # kernel to provide tracebacks for interactive code that is cached, # by a compiler instance that flushes the linecache but preserves its # own code cache. if check_cache is None: check_cache = linecache.checkcache self.check_cache = check_cache
Example #9
Source File: utils.py From aiomonitor with Apache License 2.0 | 6 votes |
def _format_stack(task: 'asyncio.Task[Any]') -> str: extracted_list = [] checked = set() # type: Set[str] for f in _get_stack(task): lineno = f.f_lineno co = f.f_code filename = co.co_filename name = co.co_name if filename not in checked: checked.add(filename) linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) extracted_list.append((filename, lineno, name, line)) if not extracted_list: resp = 'No stack for %r' % task else: resp = 'Stack for %r (most recent call last):\n' % task resp += ''.join(traceback.format_list(extracted_list)) # type: ignore return resp
Example #10
Source File: executing.py From executing with MIT License | 6 votes |
def for_filename(cls, filename, module_globals=None, use_cache=True): source_cache = cls._class_local('__source_cache', {}) if use_cache: try: return source_cache[filename] except KeyError: pass if isinstance(filename, Path): filename = str(filename) if not use_cache: linecache.checkcache(filename) lines = tuple(linecache.getlines(filename, module_globals)) result = source_cache[filename] = cls._for_filename_and_lines(filename, lines) return result
Example #11
Source File: PyShell.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def extended_linecache_checkcache(filename=None, orig_checkcache=linecache.checkcache): """Extend linecache.checkcache to preserve the <pyshell#...> entries Rather than repeating the linecache code, patch it to save the <pyshell#...> entries, call the original linecache.checkcache() (skipping them), and then restore the saved entries. orig_checkcache is bound at definition time to the original method, allowing it to be patched. """ cache = linecache.cache save = {} for key in list(cache): if key[:1] + key[-1:] == '<>': save[key] = cache.pop(key) orig_checkcache(filename) cache.update(save) # Patch linecache.checkcache():
Example #12
Source File: ops.py From auto-alt-text-lambda-api with MIT License | 6 votes |
def _convert_stack(stack): """Converts a stack extracted using _extract_stack() to a traceback stack. Args: stack: A list of n 4-tuples, (filename, lineno, name, frame_globals). Returns: A list of n 4-tuples (filename, lineno, name, code), where the code tuple element is calculated from the corresponding elements of the input tuple. """ ret = [] for filename, lineno, name, frame_globals in stack: linecache.checkcache(filename) line = linecache.getline(filename, lineno, frame_globals) if line: line = line.strip() else: line = None ret.append((filename, lineno, name, line)) return ret # pylint: disable=line-too-long
Example #13
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def setup_myfile(self, testdir): testdir.makepyfile( myfile=""" from pdbpp import set_trace def rewrite_file(): with open(__file__, "w") as f: f.write("something completely different") def after_settrace(): import linecache linecache.checkcache() def fn(): set_trace() after_settrace() set_trace() a = 3 """) testdir.monkeypatch.setenv("PDBPP_COLORS", "0") testdir.syspathinsert()
Example #14
Source File: ops.py From deep_image_model with Apache License 2.0 | 6 votes |
def _convert_stack(stack): """Converts a stack extracted using _extract_stack() to a traceback stack. Args: stack: A list of n 4-tuples, (filename, lineno, name, frame_globals). Returns: A list of n 4-tuples (filename, lineno, name, code), where the code tuple element is calculated from the corresponding elements of the input tuple. """ ret = [] for filename, lineno, name, frame_globals in stack: linecache.checkcache(filename) line = linecache.getline(filename, lineno, frame_globals) if line: line = line.strip() else: line = None ret.append((filename, lineno, name, line)) return ret # pylint: disable=line-too-long
Example #15
Source File: PyShell.py From oss-ftp with MIT License | 6 votes |
def extended_linecache_checkcache(filename=None, orig_checkcache=linecache.checkcache): """Extend linecache.checkcache to preserve the <pyshell#...> entries Rather than repeating the linecache code, patch it to save the <pyshell#...> entries, call the original linecache.checkcache() (skipping them), and then restore the saved entries. orig_checkcache is bound at definition time to the original method, allowing it to be patched. """ cache = linecache.cache save = {} for key in list(cache): if key[:1] + key[-1:] == '<>': save[key] = cache.pop(key) orig_checkcache(filename) cache.update(save) # Patch linecache.checkcache():
Example #16
Source File: run.py From Splunking-Crime with GNU Affero General Public License v3.0 | 6 votes |
def print_exception(): import linecache linecache.checkcache() flush_stdout() efile = sys.stderr typ, val, tb = excinfo = sys.exc_info() sys.last_type, sys.last_value, sys.last_traceback = excinfo tbe = traceback.extract_tb(tb) print>>efile, '\nTraceback (most recent call last):' exclude = ("run.py", "rpc.py", "threading.py", "Queue.py", "RemoteDebugger.py", "bdb.py") cleanup_traceback(tbe, exclude) traceback.print_list(tbe, file=efile) lines = traceback.format_exception_only(typ, val) for line in lines: print>>efile, line,
Example #17
Source File: editor.py From ironpython2 with Apache License 2.0 | 6 votes |
def SaveFile(self, fileName): if isRichText: view = self.GetFirstView() view.SaveTextFile(fileName) else: # Old style edit view window. self.GetFirstView().SaveFile(fileName) try: # Make sure line cache has updated info about me! import linecache linecache.checkcache() except: pass # # Color state stuff #
Example #18
Source File: bdb.py From Imogen with MIT License | 5 votes |
def reset(self): """Set values of attributes as ready to start debugging.""" import linecache linecache.checkcache() self.botframe = None self._set_stopinfo(None, None)
Example #19
Source File: traceback.py From Splunking-Crime with GNU Affero General Public License v3.0 | 5 votes |
def print_tb(tb, limit=None, file=None): """Print up to 'limit' stack trace entries from the traceback 'tb'. If 'limit' is omitted or None, all entries are printed. If 'file' is omitted or None, the output goes to sys.stderr; otherwise 'file' should be an open file or file-like object with a write() method. """ if file is None: file = sys.stderr if limit is None: if hasattr(sys, 'tracebacklimit'): limit = sys.tracebacklimit n = 0 while tb is not None and (limit is None or n < limit): f = tb.tb_frame lineno = tb.tb_lineno co = f.f_code filename = co.co_filename name = co.co_name _print(file, ' File "%s", line %d, in %s' % (filename, lineno, name)) linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) if line: _print(file, ' ' + line.strip()) tb = tb.tb_next n = n+1
Example #20
Source File: tasks.py From annotated-py-projects with MIT License | 5 votes |
def print_stack(self, *, limit=None, file=None): """Print the stack or traceback for this task's coroutine. This produces output similar to that of the traceback module, for the frames retrieved by get_stack(). The limit argument is passed to get_stack(). The file argument is an I/O stream to which the output is written; by default output is written to sys.stderr. """ extracted_list = [] checked = set() for f in self.get_stack(limit=limit): lineno = f.f_lineno co = f.f_code filename = co.co_filename name = co.co_name if filename not in checked: checked.add(filename) linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) extracted_list.append((filename, lineno, name, line)) exc = self._exception if not extracted_list: print('No stack for %r' % self, file=file) elif exc is not None: print('Traceback for %r (most recent call last):' % self, file=file) else: print('Stack for %r (most recent call last):' % self, file=file) traceback.print_list(extracted_list, file=file) if exc is not None: for line in traceback.format_exception_only(exc.__class__, exc): print(line, file=file, end='')
Example #21
Source File: traceback.py From datafari with Apache License 2.0 | 5 votes |
def extract_stack(f=None, limit = None): """Extract the raw traceback from the current stack frame. The return value has the same format as for extract_tb(). The optional 'f' and 'limit' arguments have the same meaning as for print_stack(). Each item in the list is a quadruple (filename, line number, function name, text), and the entries are in order from oldest to newest stack frame. """ if f is None: try: raise ZeroDivisionError except ZeroDivisionError: f = sys.exc_info()[2].tb_frame.f_back if limit is None: if hasattr(sys, 'tracebacklimit'): limit = sys.tracebacklimit list = [] n = 0 while f is not None and (limit is None or n < limit): lineno = f.f_lineno co = f.f_code filename = co.co_filename name = co.co_name linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) if line: line = line.strip() else: line = None list.append((filename, lineno, name, line)) f = f.f_back n = n+1 list.reverse() return list
Example #22
Source File: traceback.py From pmatic with GNU General Public License v2.0 | 5 votes |
def extract_stack(f=None, limit = None): """Extract the raw traceback from the current stack frame. The return value has the same format as for extract_tb(). The optional 'f' and 'limit' arguments have the same meaning as for print_stack(). Each item in the list is a quadruple (filename, line number, function name, text), and the entries are in order from oldest to newest stack frame. """ if f is None: try: raise ZeroDivisionError except ZeroDivisionError: f = sys.exc_info()[2].tb_frame.f_back if limit is None: if hasattr(sys, 'tracebacklimit'): limit = sys.tracebacklimit list = [] n = 0 while f is not None and (limit is None or n < limit): lineno = f.f_lineno co = f.f_code filename = co.co_filename name = co.co_name linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) if line: line = line.strip() else: line = None list.append((filename, lineno, name, line)) f = f.f_back n = n+1 list.reverse() return list
Example #23
Source File: Fun.py From NotSoBot with MIT License | 5 votes |
def watermark(self, ctx, url:str, mark:str=None): try: check = await self.isimage(url) if check == False: await self.bot.say("Invalid or Non-Image!") return b = await self.bytes_download(url) if mark == 'brazzers' or mark is None: wmm = self.files_path('brazzers.png') else: check = await self.isimage(mark) if check == False: await self.bot.say("Invalid or Non-Image for Watermark!") return wmm = await self.bytes_download(mark) final = BytesIO() with wand.image.Image(file=b) as img: if mark: with wand.image.Image(file=wmm) as wm: img.watermark(image=wm, left=int(img.width/15), top=int(img.height/10)) else: with wand.image.Image(filename=wmm) as wm: img.watermark(image=wm, left=int(img.width/15), top=int(img.height/10)) img.save(file=final) final.seek(0) await self.bot.upload(final, filename='watermark.png') except Exception as e: exc_type, exc_obj, tb = sys.exc_info() f = tb.tb_frame lineno = tb.tb_lineno filename = f.f_code.co_filename linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) await self.bot.say(code.format('EXCEPTION IN ({}, LINE {} "{}"): {}'.format(filename, lineno, line.strip(), exc_obj)))
Example #24
Source File: bdb.py From pycopia with Apache License 2.0 | 5 votes |
def reset(self): import linecache linecache.checkcache() self.botframe = None self._set_stopinfo(None, None)
Example #25
Source File: logs.py From Shellab with MIT License | 5 votes |
def print_exception(): exc_type, exc_obj, tb = sys.exc_info() f = tb.tb_frame lineno = tb.tb_lineno filename = f.f_code.co_filename linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) print '\n[{}][{}][{}] => {}): {}'.format(red('EXCEPTION'), filename.split('/')[-1], lineno, line.strip(), exc_obj)
Example #26
Source File: base_tasks.py From Imogen with MIT License | 5 votes |
def _task_print_stack(task, limit, file): extracted_list = [] checked = set() for f in task.get_stack(limit=limit): lineno = f.f_lineno co = f.f_code filename = co.co_filename name = co.co_name if filename not in checked: checked.add(filename) linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) extracted_list.append((filename, lineno, name, line)) exc = task._exception if not extracted_list: print(f'No stack for {task!r}', file=file) elif exc is not None: print(f'Traceback for {task!r} (most recent call last):', file=file) else: print(f'Stack for {task!r} (most recent call last):', file=file) traceback.print_list(extracted_list, file=file) if exc is not None: for line in traceback.format_exception_only(exc.__class__, exc): print(line, file=file, end='')
Example #27
Source File: tasks.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def print_stack(self, *, limit=None, file=None): """Print the stack or traceback for this task's coroutine. This produces output similar to that of the traceback module, for the frames retrieved by get_stack(). The limit argument is passed to get_stack(). The file argument is an I/O stream to which the output is written; by default output is written to sys.stderr. """ extracted_list = [] checked = set() for f in self.get_stack(limit=limit): lineno = f.f_lineno co = f.f_code filename = co.co_filename name = co.co_name if filename not in checked: checked.add(filename) linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) extracted_list.append((filename, lineno, name, line)) exc = self._exception if not extracted_list: print('No stack for %r' % self, file=file) elif exc is not None: print('Traceback for %r (most recent call last):' % self, file=file) else: print('Stack for %r (most recent call last):' % self, file=file) traceback.print_list(extracted_list, file=file) if exc is not None: for line in traceback.format_exception_only(exc.__class__, exc): print(line, file=file, end='')
Example #28
Source File: test_linecache.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def test_checkcache(self): getline = linecache.getline # Create a source file and cache its contents source_name = support.TESTFN + '.py' self.addCleanup(support.unlink, source_name) with open(source_name, 'w') as source: source.write(SOURCE_1) getline(source_name, 1) # Keep a copy of the old contents source_list = [] with open(source_name) as source: for index, line in enumerate(source): self.assertEqual(line, getline(source_name, index + 1)) source_list.append(line) with open(source_name, 'w') as source: source.write(SOURCE_2) # Try to update a bogus cache entry linecache.checkcache('dummy') # Check that the cache matches the old contents for index, line in enumerate(source_list): self.assertEqual(line, getline(source_name, index + 1)) # Update the cache and check whether it matches the new source file linecache.checkcache(source_name) with open(source_name) as source: for index, line in enumerate(source): self.assertEqual(line, getline(source_name, index + 1)) source_list.append(line)
Example #29
Source File: bdb.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def reset(self): import linecache linecache.checkcache() self.botframe = None self._set_stopinfo(None, None)
Example #30
Source File: test_linecache.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def test_lazycache_check(self): linecache.clearcache() linecache.lazycache(NONEXISTENT_FILENAME, globals()) linecache.checkcache()