code: def build_listing(self):
          def func_entry(name, func):
              args, varargs, defaults = self._get_arg_spec(func)
              params = [{'name': str(a), 'optional': a in defaults, 'vararg': False} for a in args if a != 'ctx']
              if varargs:
                  params += [{'name': str(varargs), 'optional': False, 'vararg': True}]
              return {'name': str(name.upper()),
                      'description': str(func.__doc__).strip(),
                      'params': params}
          listing = [func_entry(f_name, f) for f_name, f in self._functions.items()]
          return sorted(listing, key=lambda l: l['name'])