Python inspect.getsourcelines() Examples
The following are 30
code examples of inspect.getsourcelines().
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
inspect
, or try the search function
.
Example #1
Source File: debug.py From quart with MIT License | 7 votes |
def traceback_response() -> Response: type_, value, tb = sys.exc_info() frames = [] while tb: frame = tb.tb_frame try: code = inspect.getsourcelines(frame) except OSError: code = None frames.append( { "file": inspect.getfile(frame), "line": frame.f_lineno, "locals": frame.f_locals, "code": code, } ) tb = tb.tb_next name = type_.__name__ template = Template(TEMPLATE) html = template.render(frames=reversed(frames), name=name, value=value) return Response(html, 500)
Example #2
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_paste(): def g(): print('hello world') def fn(): set_trace() if 4 != 5: g() return 42 _, lineno = inspect.getsourcelines(fn) start_lineno = lineno + 1 check(fn, r""" [NUM] > .*fn() -> if 4 != 5: 5 frames hidden .* # g() hello world # paste g() hello world RUN epaste \+%d 'hello world\\n' # c hello world """ % start_lineno)
Example #3
Source File: _utils.py From tmppy with Apache License 2.0 | 6 votes |
def _get_function_body(f): # The body of some tests is a multiline string because they would otherwise cause the pytest test file to fail # parsing. if f.__doc__: return textwrap.dedent(f.__doc__) source_code, _ = inspect.getsourcelines(f) # Skip the annotation and the line where the function is defined. expected_line = 'def %s(tmppy: TmppyFixture):\n' % f.__name__ expected_line2 = 'def %s():\n' % f.__name__ while source_code[0] not in (expected_line, expected_line2): source_code = source_code[1:] source_code = source_code[1:] return textwrap.dedent(''.join(source_code))
Example #4
Source File: config_scope.py From sacred with MIT License | 6 votes |
def get_function_body(func): func_code_lines, start_idx = inspect.getsourcelines(func) func_code = "".join(func_code_lines) arg = "(?:[a-zA-Z_][a-zA-Z0-9_]*)" arguments = r"{0}(?:\s*,\s*{0})*".format(arg) func_def = re.compile( r"^[ \t]*def[ \t]*{}[ \t]*\(\s*({})?\s*\)[ \t]*:[ \t]*(?:#[^\n]*)?\n".format( func.__name__, arguments ), flags=re.MULTILINE, ) defs = list(re.finditer(func_def, func_code)) assert defs line_offset = start_idx + func_code[: defs[0].end()].count("\n") - 1 func_body = func_code[defs[0].end() :] return func_body, line_offset
Example #5
Source File: functions.py From chainer-compiler with MIT License | 6 votes |
def __init__(self, func): super().__init__() self.inst = func self.name = func.__name__ self.filename = inspect.getfile(func) sourcelines = inspect.getsourcelines(func) self.lineno = sourcelines[1] self.args.analyze_args(func) if (func.__name__ == (lambda: None).__name__): original_code = utils.lambda_source(func) code = 'return ' + original_code[re.search('lambda.*?:', original_code).end():] self.ast = gast.ast_to_gast(ast.parse(code)) else: original_code = inspect.getsource(func) code = utils.clip_head(original_code) ast_ = gast.ast_to_gast(ast.parse(code)).body[0] self.ast = canonicalizer.Canonicalizer().visit(ast_)
Example #6
Source File: yacc.py From pyhcl with Mozilla Public License 2.0 | 6 votes |
def validate_modules(self): # Match def p_funcname( fre = re.compile(r'\s*def\s+(p_[a-zA-Z_0-9]*)\(') for module in self.modules: try: lines, linen = inspect.getsourcelines(module) except IOError: continue counthash = {} for linen, line in enumerate(lines): linen += 1 m = fre.match(line) if m: name = m.group(1) prev = counthash.get(name) if not prev: counthash[name] = linen else: filename = inspect.getsourcefile(module) self.log.warning('%s:%d: Function %s redefined. Previously defined on line %d', filename, linen, name, prev) # Get the start symbol
Example #7
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_completion_removes_tab_from_fancycompleter(monkeypatch_readline): def fn(): def check_completions(): # Patch readline to return expected results for "b ". monkeypatch_readline("b ", 2, 2) comps = get_completions("") assert "\t" not in comps assert "inspect" in comps return True set_trace() _, lineno = inspect.getsourcelines(fn) check(fn, """ --Return-- [NUM] > .*fn() .* 5 frames hidden .* # check_completions() True # c """)
Example #8
Source File: yacc.py From misp42splunk with GNU Lesser General Public License v3.0 | 6 votes |
def validate_modules(self): # Match def p_funcname( fre = re.compile(r'\s*def\s+(p_[a-zA-Z_0-9]*)\(') for module in self.modules: try: lines, linen = inspect.getsourcelines(module) except IOError: continue counthash = {} for linen, line in enumerate(lines): linen += 1 m = fre.match(line) if m: name = m.group(1) prev = counthash.get(name) if not prev: counthash[name] = linen else: filename = inspect.getsourcefile(module) self.log.warning('%s:%d: Function %s redefined. Previously defined on line %d', filename, linen, name, prev) # Get the start symbol
Example #9
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_completion_uses_tab_from_fancycompleter(monkeypatch_readline): """Test that pdb's original completion is used.""" def fn(): def check_completions(): # Patch readline to return expected results for "C.f()". monkeypatch_readline("C.f()", 5, 5) assert get_completions("") == ["\t"] return True set_trace() _, lineno = inspect.getsourcelines(fn) check(fn, """ --Return-- [NUM] > .*fn()->None .* 5 frames hidden .* # check_completions() True # c """)
Example #10
Source File: yacc.py From misp42splunk with GNU Lesser General Public License v3.0 | 6 votes |
def validate_modules(self): # Match def p_funcname( fre = re.compile(r'\s*def\s+(p_[a-zA-Z_0-9]*)\(') for module in self.modules: try: lines, linen = inspect.getsourcelines(module) except IOError: continue counthash = {} for linen, line in enumerate(lines): linen += 1 m = fre.match(line) if m: name = m.group(1) prev = counthash.get(name) if not prev: counthash[name] = linen else: filename = inspect.getsourcefile(module) self.log.warning('%s:%d: Function %s redefined. Previously defined on line %d', filename, linen, name, prev) # Get the start symbol
Example #11
Source File: conf.py From mplhep with MIT License | 6 votes |
def linkcode_resolve(domain, info): if domain != "py": return None if not info["module"]: return None mod = importlib.import_module(info["module"]) modpath = [p for p in sys.path if mod.__file__.startswith(p)] if len(modpath) < 1: raise RuntimeException("Cannot deduce module path") modpath = modpath[0] obj = reduce(getattr, [mod] + info["fullname"].split(".")) try: path = inspect.getsourcefile(obj) relpath = path[len(modpath) + 1 :] _, lineno = inspect.getsourcelines(obj) except TypeError: # skip property or other type that inspect doesn't like return None return "http://github.com/scikit-hep/mplhep/blob/{}/{}#L{}".format( githash, relpath, lineno )
Example #12
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_break_after_set_trace(): def fn(): set_trace() print(1) print(2) _, lineno = inspect.getsourcelines(fn) check(fn, """ [NUM] > .*fn() -> print(1) 5 frames hidden .* # break {lineno} Breakpoint . at .*:{lineno} # c 1 [NUM] > .*fn() -> print(2) 5 frames hidden .* # import pdb; pdbpp.local.GLOBAL_PDB.clear_all_breaks() # c 2 """.format(lineno=lineno + 3))
Example #13
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_put_side_effects_free(): def fn(): x = 10 # noqa: F841 set_trace() return 42 _, lineno = inspect.getsourcelines(fn) start_lineno = lineno + 2 check(fn, r""" [NUM] > .*fn() -> return 42 5 frames hidden .* # x 10 # x.__add__ .* # y = 12 # put RUN epaste \+%d ' y = 12\\n' # c """ % start_lineno)
Example #14
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_sticky_range(): def fn(): set_trace() a = 1 b = 2 # noqa: F841 c = 3 # noqa: F841 return a _, lineno = inspect.getsourcelines(fn) start = lineno + 1 end = lineno + 3 check(fn, """ [NUM] > .*fn() -> a = 1 5 frames hidden .* # sticky %d %d <CLEARSCREEN> [NUM] > .*fn(), 5 frames hidden %d \\s+ set_trace() NUM -> a = 1 NUM b = 2 # c """ % (start, end, start))
Example #15
Source File: yacc.py From zxbasic with GNU General Public License v3.0 | 6 votes |
def validate_modules(self): # Match def p_funcname( fre = re.compile(r'\s*def\s+(p_[a-zA-Z_0-9]*)\(') for module in self.modules: try: lines, linen = inspect.getsourcelines(module) except IOError: continue counthash = {} for linen, line in enumerate(lines): linen += 1 m = fre.match(line) if m: name = m.group(1) prev = counthash.get(name) if not prev: counthash[name] = linen else: filename = inspect.getsourcefile(module) self.log.warning('%s:%d: Function %s redefined. Previously defined on line %d', filename, linen, name, prev) # Get the start symbol
Example #16
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_put_if(): def fn(): x = 0 if x < 10: set_trace() return x _, lineno = inspect.getsourcelines(fn) start_lineno = lineno + 3 check(fn, r""" [NUM] > .*fn() -> return x 5 frames hidden .* # x = 10 # y = 12 # put RUN epaste \+%d .*x = 10\\n y = 12\\n. # c """ % start_lineno)
Example #17
Source File: _util.py From myhdl with GNU Lesser General Public License v2.1 | 6 votes |
def _makeAST(f): # Need to look at the flags used to compile the original function f and # pass these same flags to the compile() function. This ensures that # syntax-changing __future__ imports like print_function work correctly. orig_f_co_flags = f.__code__.co_flags # co_flags can contain various internal flags that we can't pass to # compile(), so strip them out here valid_flags = 0 for future_feature in __future__.all_feature_names: feature = getattr(__future__, future_feature) valid_flags |= feature.compiler_flag s = inspect.getsource(f) s = _dedent(s) # use compile instead of ast.parse so that additional flags can be passed flags = ast.PyCF_ONLY_AST | (orig_f_co_flags & valid_flags) tree = compile(s, filename='<unknown>', mode='exec', flags=flags, dont_inherit=True) # tree = ast.parse(s) tree.sourcefile = inspect.getsourcefile(f) tree.lineoffset = inspect.getsourcelines(f)[1] - 1 return tree
Example #18
Source File: oinspect.py From Computable with MIT License | 6 votes |
def get_encoding(obj): """Get encoding for python source file defining obj Returns None if obj is not defined in a sourcefile. """ ofile = find_file(obj) # run contents of file through pager starting at line where the object # is defined, as long as the file isn't binary and is actually on the # filesystem. if ofile is None: return None elif ofile.endswith(('.so', '.dll', '.pyd')): return None elif not os.path.isfile(ofile): return None else: # Print only text files, not extension binaries. Note that # getsourcelines returns lineno with 1-offset and page() uses # 0-offset, so we must adjust. buffer = stdlib_io.open(ofile, 'rb') # Tweaked to use io.open for Python 2 encoding, lines = openpy.detect_encoding(buffer.readline) return encoding
Example #19
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_edit_py_code_source(): src = py.code.Source(""" def bar(): set_trace() return 42 """) _, base_lineno = inspect.getsourcelines(test_edit_py_code_source) dic = {'set_trace': set_trace} exec(src.compile(), dic) # 8th line from the beginning of the function bar = dic['bar'] src_compile_lineno = base_lineno + 8 check(bar, r""" [NUM] > .*bar() -> return 42 5 frames hidden .* # edit bar RUN emacs \+%d %s # c """ % (src_compile_lineno, RE_THIS_FILE_CANONICAL_QUOTED))
Example #20
Source File: oinspect.py From Computable with MIT License | 6 votes |
def pfile(self, obj, oname=''): """Show the whole file where an object was defined.""" lineno = find_source_lines(obj) if lineno is None: self.noinfo('file', oname) return ofile = find_file(obj) # run contents of file through pager starting at line where the object # is defined, as long as the file isn't binary and is actually on the # filesystem. if ofile.endswith(('.so', '.dll', '.pyd')): print('File %r is binary, not printing.' % ofile) elif not os.path.isfile(ofile): print('File %r does not exist, not printing.' % ofile) else: # Print only text files, not extension binaries. Note that # getsourcelines returns lineno with 1-offset and page() uses # 0-offset, so we must adjust. page.page(self.format(openpy.read_py_file(ofile, skip_encoding_cookie=False)), lineno - 1)
Example #21
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_put(): def fn(): set_trace() return 42 _, lineno = inspect.getsourcelines(fn) start_lineno = lineno + 1 check(fn, r""" [NUM] > .*fn() -> return 42 5 frames hidden .* # x = 10 # y = 12 # put RUN epaste \+%d ' x = 10\\n y = 12\\n' # c """ % start_lineno)
Example #22
Source File: runner.py From TestSlide with MIT License | 5 votes |
def _dsl_print(self, example, description, code): if not self.dsl_debug: return name = code.__name__ try: file = inspect.getsourcefile(code) except TypeError: try: file = inspect.getfile(code) except TypeError: file = "?" if file.startswith(os.path.dirname(__file__)): return if self.trim_path_prefix: split = file.split(self.trim_path_prefix) if len(split) == 2 and not split[0]: file = split[1] try: _lines, lineno = inspect.getsourcelines(code) except OSError: lineno = "?" self.print_cyan( "{indent}{description}: {name} @ {file_lineno}".format( indent=self.get_dsl_debug_indent(example), description=description, name=name, file_lineno=f"{file}:{lineno}", ) )
Example #23
Source File: lex.py From zxbasic with GNU General Public License v3.0 | 5 votes |
def validate_module(self, module): try: lines, linen = inspect.getsourcelines(module) except IOError: return fre = re.compile(r'\s*def\s+(t_[a-zA-Z_0-9]*)\(') sre = re.compile(r'\s*(t_[a-zA-Z_0-9]*)\s*=') counthash = {} linen += 1 for line in lines: m = fre.match(line) if not m: m = sre.match(line) if m: name = m.group(1) prev = counthash.get(name) if not prev: counthash[name] = linen else: filename = inspect.getsourcefile(module) self.log.error('%s:%d: Rule %s redefined. Previously defined on line %d', filename, linen, name, prev) self.error = True linen += 1 # ----------------------------------------------------------------------------- # lex(module) # # Build all of the regular expression rules from definitions in the supplied module # -----------------------------------------------------------------------------
Example #24
Source File: conf.py From TensorVision with MIT License | 5 votes |
def linkcode_resolve(domain, info): def find_source(): # try to find the file and line number, based on code from numpy: # https://github.com/numpy/numpy/blob/master/doc/source/conf.py#L286 obj = sys.modules[info['module']] for part in info['fullname'].split('.'): obj = getattr(obj, part) import inspect import os fn = inspect.getsourcefile(obj) fn = os.path.relpath(fn, start=os.path.dirname(tensorvision.__file__)) source, lineno = inspect.getsourcelines(obj) return fn, lineno, lineno + len(source) - 1 if domain != 'py' or not info['module']: return None try: filename = 'tensorvision/%s#L%d-L%d' % find_source() except Exception: filename = info['module'].replace('.', '/') + '.py' tag = 'master' if 'dev' in release else ('v' + release) return "https://github.com/TensorVision/TensorVision/blob/%s/%s" % (tag, filename) # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes.
Example #25
Source File: cli.py From nfcpy with European Union Public License 1.1 | 5 votes |
def get_test_methods(obj): test_methods = list() for name, func in inspect.getmembers(obj, inspect.ismethod): if name.startswith("test_"): line = inspect.getsourcelines(func)[1] text = inspect.getdoc(func) test_methods.append((line, name.lstrip("test_"), text)) return test_methods
Example #26
Source File: sphinxext.py From bioconda-utils with MIT License | 5 votes |
def run(self): if not hasattr(self.env, 'bioconda_lint_checks'): self.env.bioconda_lint_checks = {str(check): check for check in get_checks()} # gather data check_name = self.arguments[0] if check_name not in self.env.bioconda_lint_checks: self.error("Duplicate lint description") check = self.env.bioconda_lint_checks.pop(check_name) _, lineno = inspect.getsourcelines(check) lineno += 1 fname = inspect.getfile(check) doclines = inspect.getdoc(check).splitlines() docline_src = [(fname, i) for i in range(lineno, lineno+len(doclines))] lines = StringList(doclines, items=docline_src) # create a new section with title section = nodes.section(ids=[nodes.make_id(check_name)]) title_text = f'":py:class:`{check_name}`"' title_nodes, messages = self.state.inline_text(title_text, self.lineno) title = nodes.title(check_name, '', *title_nodes) section += title admonition = nodes.admonition() title_text = doclines[0].rstrip('.') title_nodes, messages = self.state.inline_text(title_text, lineno) title = nodes.title(title_text, '', *title_nodes) admonition += title admonition += messages self.state.nested_parse(lines[1:], 0, admonition) section += admonition # add remaining content of directive par = nodes.paragraph() self.state.nested_parse(self.content, self.content_offset, par) section += par return [section]
Example #27
Source File: interpreter.py From funsor with Apache License 2.0 | 5 votes |
def __init__(self, fn): self.fn = fn while isinstance(fn, functools.partial): fn = fn.func path = inspect.getabsfile(fn) lineno = inspect.getsourcelines(fn)[1] self._message = "{} file://{} {}".format(fn.__name__, path, lineno)
Example #28
Source File: md_autogen.py From markdown-apidocs with MIT License | 5 votes |
def get_line_no(self, obj): """Gets the source line number of this object. None if `obj` code cannot be found. """ try: lineno = getsourcelines(obj)[1] except: # no code found lineno = None return lineno
Example #29
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_break_with_inner_set_trace(): def fn(): def inner(): set_trace(cleanup=False) set_trace() inner() print(1) _, lineno = inspect.getsourcelines(fn) check(fn, """ [NUM] > .*fn() -> inner() 5 frames hidden .* # break {lineno} Breakpoint . at .*:{lineno} # c --Return-- [NUM] > .*inner()->None -> set_trace(cleanup=False) 5 frames hidden .* # import pdb; pdbpp.local.GLOBAL_PDB.clear_all_breaks() # c 1 """.format(lineno=lineno + 8))
Example #30
Source File: test_pdb.py From pdbpp with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_continue_arg_with_error(): def fn(): set_trace() x = 1 y = 2 z = 3 return x+y+z _, lineno = inspect.getsourcelines(fn) line_z = lineno + 4 check(fn, r""" [NUM] > .*fn() -> x = 1 5 frames hidden .* # c.foo \*\*\* The specified object '.foo' is not a function or was not found along sys.path. # c {break_lnum} Breakpoint NUM at {filename}:{break_lnum} Deleted breakpoint NUM [NUM] > .*fn() -> z = 3 5 frames hidden .* # c """.format( break_lnum=line_z, filename=RE_THIS_FILE_CANONICAL, ))