cpython/Lib/test/test_inspect/inspect_fodder.py

# line 1
'A module docstring.'

import inspect
# line 5

# line 7
def spam(a, /, b, c, d=3, e=4, f=5, *g, **h):
    eggs(b + d, c + f)

# line 11
def eggs(x, y):
    "A docstring."
    global fr, st
    fr = inspect.currentframe()
    st = inspect.stack()
    p = x
    q = y / 0

# line 20
class StupidGit:
    """A longer,

    indented

    docstring."""
# line 27

    def abuse(self, a, b, c):
        """Another

\tdocstring

        containing

\ttabs
\t
        """
        self.argue(a, b, c)
# line 40
    def argue(self, a, b, c):
        try:
            spam(a, b, c)
        except BaseException as e:
            self.ex = e
            self.tr = inspect.trace()

    @property
    def contradiction(self):
        'The automatic gainsaying.'
        pass

# line 53
class MalodorousPervert(StupidGit):
    def abuse(self, a, b, c):
        pass

    @property
    def contradiction(self):
        pass

Tit = MalodorousPervert

class ParrotDroppings:
    pass

class FesteringGob(MalodorousPervert, ParrotDroppings):
    def abuse(self, a, b, c):
        pass

    def _getter(self):
        pass
    contradiction = property(_getter)

async def lobbest(grenade):
    pass

currentframe = inspect.currentframe()
try:
    raise Exception()
except BaseException as e:
    tb = e.__traceback__

class Callable:
    def __call__(self, *args):
        return args

    def as_method_of(self, obj):
        from types import MethodType
        return MethodType(self, obj)

custom_method = Callable().as_method_of(42)
del Callable

# line 95
class WhichComments:
  # line 97
    # before f
    def f(self):
      # line 100
        # start f
        return 1
        # line 103
        # end f
       # line 105
    # after f

    # before asyncf - line 108
    async def asyncf(self):
        # start asyncf
        return 2
        # end asyncf
       # after asyncf - line 113
    # end of WhichComments - line 114
  # after WhichComments - line 115

# Test that getsource works on a line that includes
# a closing parenthesis with the opening paren being in another line
(
); after_closing = lambda: 1