line 1 line 5 line 7 line 11 line 20 a longer indented docstring line 27 def abuseself a b c self arguea b c line 40 def argueself a b c try spama b c except baseexception as e self ex e self tr inspect trace property def contradictionself the automatic gainsaying pass line 53 class malodorouspervertstupidgit def abuseself a b c pass property def contradictionself pass tit malodorouspervert class parrotdroppings pass class festeringgobmalodorouspervert parrotdroppings def abuseself a b c pass property def contradictionself pass async def lobbestgrenade pass currentframe inspect currentframe try raise exception except baseexception as e tb e traceback class callable def callself args return args def asmethodofself obj from types import methodtype return methodtypeself obj custommethod callable asmethodof42 del callable line 95 class whichcomments line 97 before f def fself line 100 start f return 1 line 103 end f line 105 after f before asyncf line 108 async def asyncfself 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 afterclosing lambda 1 line 1 line 5 line 7 line 11 line 20 a longer indented docstring line 27 another tdocstring containing ttabs t line 40 line 53 line 95 line 97 before f line 100 start f line 103 end f line 105 after f before asyncf line 108 start asyncf 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
'A module docstring.'

import inspect



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


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


class StupidGit:
    


    def abuse(self, a, b, c):
        
        self.argue(a, b, c)

    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


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

    @property
    def contradiction(self):
        pass

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


class WhichComments:
  
    
    def f(self):
      
        
        return 1
        
        
       
    

    
    async def asyncf(self):
        
        return 2
        
       
    
  



(
); after_closing = lambda: 1