def format_docstring(class_type, query_path): res = [''] methods = { 'GET': '()', 'POST': '.post()', 'PUT': '.put()', 'DELETE': '.delete()' } rpc_doc = rpc_docs.get(query_path, {}) for method, func in methods.items(): if method in rpc_doc: docstring = get_attr_docstring(class_type, method.lower()) if not docstring: docstring = f'\n{rpc_doc[method]["descr"]}\n' for arg in rpc_doc[method]['args']: docstring += f':param {arg["name"]}: {arg["descr"]}\n' docstring += f':return: {rpc_doc[method]["ret"]}\n' res.append(f'{func}{docstring}') if 'item' in rpc_doc: docstring = get_attr_docstring(class_type, '__getitem__') if not docstring: item = rpc_doc["item"] docstring = f'\n:param {item["name"]}: {item["descr"]}\n:return: Child element\n' res.append(f'[]{docstring}') if 'props' in rpc_doc: properties = rpc_doc['props'] docstring = '\n'.join(map(lambda x: f'.{x}', properties)) res.append(f'RPC endpoints\n{docstring}\n') else: properties = list() helpers = get_class_docstring( class_type=class_type, attr_filter=lambda x: not x.startswith('_') and x not in properties and x.upper() not in methods and x != 'path') if helpers: res.append(f'Helpers\n{helpers}') return '\n'.join(res)
def __repr__(self): res = [ super(PendingOperationsQuery, self).__repr__(), '[]' + get_attr_docstring(self.__class__, '__getitem__') ] return '\n'.join(res)