def describe(self, **kwargs):
response = self._new_response()<EOL>description = {<EOL>'<STR_LIT>': __version__,<EOL>'<STR_LIT>': self.table_name,<EOL>'<STR_LIT>': copy.copy(self.supported_ops),<EOL>'<STR_LIT>': copy.deepcopy(self.prototype),<EOL>'<STR_LIT>': {}<EOL>}<EOL>for name, method in inspect.getmembers(self, inspect.ismethod):<EOL><INDENT>if not name.startswith('<STR_LIT:_>'):<EOL><INDENT>argspec = inspect.getargspec(method)<EOL>if argspec.defaults is None:<EOL><INDENT>defaults = None<EOL><DEDENT>else:<EOL><INDENT>defaults = list(argspec.defaults)<EOL><DEDENT>method_info = {<EOL>'<STR_LIT>': inspect.getdoc(method),<EOL>'<STR_LIT>': {<EOL>'<STR_LIT:args>': argspec.args,<EOL>'<STR_LIT>': argspec.varargs,<EOL>'<STR_LIT>': argspec.keywords,<EOL>'<STR_LIT>': defaults<EOL>}<EOL>}<EOL>description['<STR_LIT>'][name] = method_info<EOL><DEDENT><DEDENT>response.data = description<EOL>return response<EOL>
Returns descriptive information about this cruddy handler and the
methods supported by it.