pass
return lines[:blockfinder.last]
-def _line_number_helper(code_obj, lines, lnum):
- """Return a list of source lines and starting line number for a code object.
-
- The arguments must be a code object with lines and lnum from findsource.
- """
- _, end_line = list(dis.findlinestarts(code_obj))[-1]
- return lines[lnum:end_line], lnum + 1
-
def getsourcelines(object):
"""Return a list of source lines and starting line number for an object.
object = unwrap(object)
lines, lnum = findsource(object)
- if ismodule(object):
- return lines, 0
- elif iscode(object):
- return _line_number_helper(object, lines, lnum)
- elif isfunction(object):
- return _line_number_helper(object.__code__, lines, lnum)
- elif ismethod(object):
- return _line_number_helper(object.__func__.__code__, lines, lnum)
- else:
- return getblock(lines[lnum:]), lnum + 1
+ if ismodule(object): return lines, 0
+ else: return getblock(lines[lnum:]), lnum + 1
def getsource(object):
"""Return the text of the source code for an object.
def test_getsource_unwrap(self):
self.assertSourceEqual(mod2.real, 130, 132)
+ @unittest.expectedFailure
def test_decorator_with_lambda(self):
self.assertSourceEqual(mod2.func114, 113, 115)
def test_getsource_on_method(self):
self.assertSourceEqual(mod2.ClassWithMethod.method, 118, 119)
+ def test_nested_func(self):
+ self.assertSourceEqual(mod2.cls135.func136, 136, 139)
+
+
class TestNoEOL(GetSourceBase):
def setUp(self):
self.tempdir = TESTFN + '_dir'
- Issue #23342: Add a subprocess.run() function than returns a CalledProcess
instance for a more consistent API than the existing call* functions.
-- Issue #21217: inspect.getsourcelines() now tries to compute the start and end
- lines from the code object, fixing an issue when a lambda function is used as
- decorator argument. Patch by Thomas Ballinger and Allison Kaptur.
-
- Issue #24521: Fix possible integer overflows in the pickle module.
- Issue #22931: Allow '[' and ']' in cookie values.