docs: def inspect_func(self, namesrc):
          """Take a function's (name, sourcecode) and return a triple of (name, sourcecode, signature)"""
          (name, src) = namesrc
          glbls = {}
          lcls = {}
          exec(src, glbls, lcls)
          assert name in lcls
          func = lcls[name]
          return name, src, signature(func)