Python linecache.getline() Examples
The following are 30
code examples of linecache.getline().
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: geoloc.py From incubator-spot with Apache License 2.0 | 7 votes |
def get_ip_geo_localization(self, ip): self._logger.debug("Getting {0} geo localization ".format(ip)) if ip.strip() != "" and ip is not None: result = linecache.getline(self._ip_localization_file, bisect.bisect(self._ip_localization_ranges, Util.ip_to_int(ip))) result.strip('\n') reader = csv.reader([result]) row = reader.next() geo_loc = ";".join(row[4:6]) + " " + ";".join(row[8:9]) domain = row[9:10][0] result = {"geo_loc": geo_loc, "domain": domain} return result
Example #2
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 #3
Source File: simple_flatfile_parser_sara.py From gmpe-smtk with GNU Affero General Public License v3.0 | 6 votes |
def _header_check(self, headerslist): """ Checks to see if any of the headers are missing, raises error if so. Also informs the user of redundent headers in the input file. """ # Check which of the pre-defined headers are missing headers = Set((getline(self.filename, 1).rstrip("\n")).split(",")) missing_headers = headerslist.difference(headers) if len(missing_headers) > 0: output_string = ", ".join([value for value in missing_headers]) raise IOError("The following headers are missing from the input " "file: %s" % output_string) additional_headers = headers.difference(headerslist) if len(additional_headers) > 0: for header in additional_headers: print("Header %s not recognised - ignoring this data!" % header) return
Example #4
Source File: problem.py From EulerPy with MIT License | 6 votes |
def solution(self): """Returns the answer to a given problem""" num = self.num solution_file = os.path.join(EULER_DATA, 'solutions.txt') solution_line = linecache.getline(solution_file, num) try: answer = solution_line.split('. ')[1].strip() except IndexError: answer = None if answer: return answer else: msg = 'Answer for problem %i not found in solutions.txt.' % num click.secho(msg, fg='red') click.echo('If you have an answer, consider submitting a pull ' 'request to EulerPy on GitHub.') sys.exit(1)
Example #5
Source File: docstyle.py From linter-pylama with MIT License | 6 votes |
def _check_docstring(self, node_type, node): docstring = node.doc if docstring and docstring[0] == '\n': self.add_message('docstring-first-line-empty', node=node, args=(node_type,), confidence=HIGH) # Use "linecache", instead of node.as_string(), because the latter # looses the original form of the docstrings. if docstring: lineno = node.fromlineno + 1 line = linecache.getline(node.root().file, lineno).lstrip() if line and line.find('"""') == 0: return if line and '\'\'\'' in line: quotes = '\'\'\'' elif line and line[0] == '"': quotes = '"' elif line and line[0] == '\'': quotes = '\'' else: quotes = False if quotes: self.add_message('bad-docstring-quotes', node=node, args=(node_type, quotes), confidence=HIGH)
Example #6
Source File: debugger.py From ironpython2 with Apache License 2.0 | 6 votes |
def ShowLineNo( self, filename, lineno ): wasOpen = editor.editorTemplate.FindOpenDocument(filename) is not None if os.path.isfile(filename) and scriptutils.JumpToDocument(filename, lineno): if not wasOpen: doc = editor.editorTemplate.FindOpenDocument(filename) if doc is not None: self.UpdateDocumentLineStates(doc) return 1 return 0 return 1 else: # Can't find the source file - linecache may have it? import linecache line = linecache.getline(filename, lineno) print "%s(%d): %s" % (os.path.basename(filename), lineno, line[:-1].expandtabs(4)) return 0
Example #7
Source File: pdb.py From ironpython2 with Apache License 2.0 | 6 votes |
def checkline(self, filename, lineno): """Check whether specified line seems to be executable. Return `lineno` if it is, 0 if not (e.g. a docstring, comment, blank line or EOF). Warning: testing is not comprehensive. """ # this method should be callable before starting debugging, so default # to "no globals" if there is no current frame globs = self.curframe.f_globals if hasattr(self, 'curframe') else None line = linecache.getline(filename, lineno, globs) if not line: print >>self.stdout, 'End of file' return 0 line = line.strip() # Don't allow setting breakpoint at a blank line if (not line or (line[0] == '#') or (line[:3] == '"""') or line[:3] == "'''"): print >>self.stdout, '*** Blank or comment' return 0 return lineno
Example #8
Source File: test_warnings.py From ironpython2 with Apache License 2.0 | 6 votes |
def test_show_warning_output(self): # With showarning() missing, make sure that output is okay. text = 'test show_warning' with original_warnings.catch_warnings(module=self.module): self.module.filterwarnings("always", category=UserWarning) del self.module.showwarning with test_support.captured_output('stderr') as stream: warning_tests.inner(text) result = stream.getvalue() self.assertEqual(result.count('\n'), 2, "Too many newlines in %r" % result) first_line, second_line = result.split('\n', 1) expected_file = os.path.splitext(warning_tests.__file__)[0] + '.py' first_line_parts = first_line.rsplit(':', 3) path, line, warning_class, message = first_line_parts line = int(line) self.assertEqual(expected_file, path) self.assertEqual(warning_class, ' ' + UserWarning.__name__) self.assertEqual(message, ' ' + text) expected_line = ' ' + linecache.getline(path, line).strip() + '\n' assert expected_line self.assertEqual(second_line, expected_line)
Example #9
Source File: test_warnings.py From ironpython2 with Apache License 2.0 | 6 votes |
def test_formatwarning_unicode_msg(self): message = u"msg" category = Warning file_name = os.path.splitext(warning_tests.__file__)[0] + '.py' line_num = 3 file_line = linecache.getline(file_name, line_num).strip() format = "%s:%s: %s: %s\n %s\n" expect = format % (file_name, line_num, category.__name__, message, file_line) self.assertEqual(expect, self.module.formatwarning(message, category, file_name, line_num)) # Test the 'line' argument. file_line += " for the win!" expect = format % (file_name, line_num, category.__name__, message, file_line) self.assertEqual(expect, self.module.formatwarning(message, category, file_name, line_num, file_line))
Example #10
Source File: simple_flatfile_parser.py From gmpe-smtk with GNU Affero General Public License v3.0 | 6 votes |
def _header_check(self): """ Checks to see if any of the headers are missing, raises error if so. Also informs the user of redundent headers in the input file. """ # Check which of the pre-defined headers are missing headers = Set((getline(self.filename, 1).rstrip("\n")).split(",")) missing_headers = HEADER_LIST.difference(headers) if len(missing_headers) > 0: output_string = ", ".join([value for value in missing_headers]) raise IOError("The following headers are missing from the input " "file: %s" % output_string) additional_headers = headers.difference(HEADER_LIST) if len(additional_headers) > 0: for header in additional_headers: print("Header %s not recognised - ignoring this data!" % header) return
Example #11
Source File: pdbpp.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def lru_cache(maxsize): """Simple cache (with no maxsize basically) for py27 compatibility. Given that pdb there uses linecache.getline for each line with do_list a cache makes a big differene.""" def dec(fn, *args): cache = {} @wraps(fn) def wrapper(*args): key = args try: ret = cache[key] except KeyError: ret = cache[key] = fn(*args) return ret return wrapper return dec # If it contains only _, digits, letters, [] or dots, it's probably side # effects free.
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_warnings.py From ironpython2 with Apache License 2.0 | 6 votes |
def test_showwarning(self): file_name = os.path.splitext(warning_tests.__file__)[0] + '.py' line_num = 3 expected_file_line = linecache.getline(file_name, line_num).strip() message = 'msg' category = Warning file_object = StringIO.StringIO() expect = self.module.formatwarning(message, category, file_name, line_num) self.module.showwarning(message, category, file_name, line_num, file_object) self.assertEqual(file_object.getvalue(), expect) # Test 'line' argument. expected_file_line += "for the win!" expect = self.module.formatwarning(message, category, file_name, line_num, expected_file_line) file_object = StringIO.StringIO() self.module.showwarning(message, category, file_name, line_num, file_object, expected_file_line) self.assertEqual(expect, file_object.getvalue())
Example #14
Source File: traceback.py From meddle with MIT License | 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 #15
Source File: bdb.py From ironpython2 with Apache License 2.0 | 5 votes |
def user_line(self, frame): import linecache name = frame.f_code.co_name if not name: name = '???' fn = self.canonic(frame.f_code.co_filename) line = linecache.getline(fn, frame.f_lineno, frame.f_globals) print '+++', fn, frame.f_lineno, name, ':', line.strip()
Example #16
Source File: test_linecache.py From ironpython2 with Apache License 2.0 | 5 votes |
def test_clearcache(self): cached = [] for entry in TESTS: filename = os.path.join(TEST_PATH, entry) + '.py' cached.append(filename) linecache.getline(filename, 1) # Are all files cached? cached_empty = [fn for fn in cached if fn not in linecache.cache] self.assertEqual(cached_empty, []) # Can we clear the cache? linecache.clearcache() cached_empty = [fn for fn in cached if fn in linecache.cache] self.assertEqual(cached_empty, [])
Example #17
Source File: test_linecache.py From ironpython2 with Apache License 2.0 | 5 votes |
def test_getline(self): getline = linecache.getline # Bad values for line number should return an empty string self.assertEqual(getline(FILENAME, 2**15), EMPTY) self.assertEqual(getline(FILENAME, -1), EMPTY) # Float values currently raise TypeError, should it? self.assertRaises(TypeError, getline, FILENAME, 1.1) # Bad filenames should return an empty string self.assertEqual(getline(EMPTY, 1), EMPTY) self.assertEqual(getline(INVALID_NAME, 1), EMPTY) # Check whether lines correspond to those from file iteration for entry in TESTS: filename = os.path.join(TEST_PATH, entry) + '.py' for index, line in enumerate(open(filename)): self.assertEqual(line, getline(filename, index + 1)) # Check module loading for entry in MODULES: filename = os.path.join(MODULE_PATH, entry) + '.py' for index, line in enumerate(open(filename)): self.assertEqual(line, getline(filename, index + 1)) # Check that bogus data isn't returned (issue #1309567) empty = linecache.getlines('a/b/c/__init__.py') self.assertEqual(empty, [])
Example #18
Source File: warnings.py From ironpython2 with Apache License 2.0 | 5 votes |
def formatwarning(message, category, filename, lineno, line=None): """Function to format a warning the standard way.""" try: unicodetype = unicode except NameError: unicodetype = () try: message = str(message) except UnicodeEncodeError: pass s = "%s: %s: %s\n" % (lineno, category.__name__, message) line = linecache.getline(filename, lineno) if line is None else line if line: line = line.strip() if isinstance(s, unicodetype) and isinstance(line, str): line = unicode(line, 'latin1') s += " %s\n" % line if isinstance(s, unicodetype) and isinstance(filename, str): enc = sys.getfilesystemencoding() if enc: try: filename = unicode(filename, enc) except UnicodeDecodeError: pass s = "%s:%s" % (filename, s) return s
Example #19
Source File: trace.py From ironpython2 with Apache License 2.0 | 5 votes |
def localtrace_trace(self, frame, why, arg): if why == "line": # record the file name and line number of every trace filename = frame.f_code.co_filename lineno = frame.f_lineno if self.start_time: print '%.2f' % (time.time() - self.start_time), bname = os.path.basename(filename) print "%s(%d): %s" % (bname, lineno, linecache.getline(filename, lineno)), return self.localtrace
Example #20
Source File: test_linecache.py From ironpython2 with Apache License 2.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 #21
Source File: trace.py From meddle with MIT License | 5 votes |
def localtrace_trace(self, frame, why, arg): if why == "line": # record the file name and line number of every trace filename = frame.f_code.co_filename lineno = frame.f_lineno if self.start_time: print '%.2f' % (time.time() - self.start_time), bname = os.path.basename(filename) print "%s(%d): %s" % (bname, lineno, linecache.getline(filename, lineno)), return self.localtrace
Example #22
Source File: trace.py From meddle with MIT License | 5 votes |
def localtrace_trace_and_count(self, frame, why, arg): if why == "line": # record the file name and line number of every trace filename = frame.f_code.co_filename lineno = frame.f_lineno key = filename, lineno self.counts[key] = self.counts.get(key, 0) + 1 if self.start_time: print '%.2f' % (time.time() - self.start_time), bname = os.path.basename(filename) print "%s(%d): %s" % (bname, lineno, linecache.getline(filename, lineno)), return self.localtrace
Example #23
Source File: traceback.py From meddle with MIT License | 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 #24
Source File: traceback.py From meddle with MIT License | 5 votes |
def extract_tb(tb, limit = None): """Return list of up to limit pre-processed entries from traceback. This is useful for alternate formatting of stack traces. If 'limit' is omitted or None, all entries are extracted. A pre-processed stack trace entry is a quadruple (filename, line number, function name, text) representing the information that is usually printed for a stack trace. The text is a string with leading and trailing whitespace stripped; if the source is not available it is None. """ if limit is None: if hasattr(sys, 'tracebacklimit'): limit = sys.tracebacklimit list = [] 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 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)) tb = tb.tb_next n = n+1 return list
Example #25
Source File: warnings.py From kobo-predict with BSD 2-Clause "Simplified" License | 5 votes |
def formatwarning(message, category, filename, lineno, line=None): """Function to format a warning the standard way.""" s = "%s:%s: %s: %s\n" % (filename, lineno, category.__name__, message) if line is None: try: import linecache line = linecache.getline(filename, lineno) except Exception: # When a warning is logged during Python shutdown, linecache # and the import machinery don't work anymore line = None if line: line = line.strip() s += " %s\n" % line return s
Example #26
Source File: docstyle.py From python-netsurv with MIT License | 5 votes |
def _check_docstring(self, node_type, node): docstring = node.doc if docstring and docstring[0] == "\n": self.add_message( "docstring-first-line-empty", node=node, args=(node_type,), confidence=HIGH, ) # Use "linecache", instead of node.as_string(), because the latter # looses the original form of the docstrings. if docstring: lineno = node.fromlineno + 1 line = linecache.getline(node.root().file, lineno).lstrip() if line and line.find('"""') == 0: return if line and "'''" in line: quotes = "'''" elif line and line[0] == '"': quotes = '"' elif line and line[0] == "'": quotes = "'" else: quotes = False if quotes: self.add_message( "bad-docstring-quotes", node=node, args=(node_type, quotes), confidence=HIGH, )
Example #27
Source File: collector.py From mishkal with GNU General Public License v3.0 | 5 votes |
def get_source_line(self, context=0): """ Return the source of the current line of this frame. You probably want to .strip() it as well, as it is likely to have leading whitespace. If context is given, then that many lines on either side will also be returned. E.g., context=1 will give 3 lines. """ if not self.filename or not self.lineno: return None lines = [] for lineno in range(self.lineno-context, self.lineno+context+1): lines.append(linecache.getline(self.filename, lineno)) return ''.join(lines)
Example #28
Source File: debug.py From tamil-lm2 with GNU General Public License v2.0 | 5 votes |
def display_tracemalloc_top(snapshot, key_type='lineno', limit=3): """ from https://stackoverflow.com/a/45679009/1685729 """ snapshot = snapshot.filter_traces(( tracemalloc.Filter(False, "<frozen importlib._bootstrap>"), tracemalloc.Filter(False, "<unknown>"), )) top_stats = snapshot.statistics(key_type) print("Top %s lines" % limit) for index, stat in enumerate(top_stats[:limit], 1): frame = stat.traceback[0] # replace "/path/to/module/file.py" with "module/file.py" filename = os.sep.join(frame.filename.split(os.sep)[-2:]) print("#%s: %s:%s: %.1f KiB" % (index, filename, frame.lineno, stat.size / 1024)) line = linecache.getline(frame.filename, frame.lineno).strip() if line: print(' %s' % line) other = top_stats[limit:] if other: size = sum(stat.size for stat in other) print("%s other: %.1f KiB" % (len(other), size / 1024)) total = sum(stat.size for stat in top_stats) print("Total allocated size: %.1f KiB" % (total / 1024))
Example #29
Source File: docstyle.py From python-netsurv with MIT License | 5 votes |
def _check_docstring(self, node_type, node): docstring = node.doc if docstring and docstring[0] == "\n": self.add_message( "docstring-first-line-empty", node=node, args=(node_type,), confidence=HIGH, ) # Use "linecache", instead of node.as_string(), because the latter # looses the original form of the docstrings. if docstring: lineno = node.fromlineno + 1 line = linecache.getline(node.root().file, lineno).lstrip() if line and line.find('"""') == 0: return if line and "'''" in line: quotes = "'''" elif line and line[0] == '"': quotes = '"' elif line and line[0] == "'": quotes = "'" else: quotes = False if quotes: self.add_message( "bad-docstring-quotes", node=node, args=(node_type, quotes), confidence=HIGH, )
Example #30
Source File: pdbpp.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 5 votes |
def _get_history_text(self): import linecache line = linecache.getline(self.start_filename, self.start_lineno) nspaces = len(line) - len(line.lstrip()) indent = ' ' * nspaces history = [indent + s for s in self._get_history()] return '\n'.join(history) + '\n'