code: def methods_to_table(obj):
      r
      parent = obj.__class__.__mro__[1]
      temp = inspect.getmembers(parent, predicate=inspect.isroutine)
      parent_funcs = [i[0] for i in temp if not i[0].startswith('_')]
  
      temp = inspect.getmembers(obj.__class__, predicate=inspect.isroutine)
      obj_funcs = [i[0] for i in temp if not i[0].startswith('_')]
      funcs = set(obj_funcs).difference(set(parent_funcs))
  
      row = '+' + '-'*22 + '+' + '-'*49 + '+'
      fmt = '{0:1s} {1:20s} {2:1s} {3:47s} {4:1s}'
      lines = []
      lines.append(row)
      lines.append(fmt.format('|', 'Method', '|', 'Description', '|'))
      lines.append(row.replace('-', '='))
      for i, item in enumerate(funcs):
          try:
              s = getattr(obj, item).__doc__.strip()
              end = s.find('\n')
              if end > 47:
                  s = s[:44] + '...'
              lines.append(fmt.format('|', item, '|', s[:end], '|'))
              lines.append(row)
          except AttributeError:
              pass
      return '\n'.join(lines)
docs: r"""