コード例 #1
0
    def test_get_docsring(self):
        class A(object):
            def foo(self):
                """docstring"""

            def bar(self):
                pass

        class B(A):
            def foo(self):
                pass

            def bar(self):
                pass

        self.assertEqual(parser.get_method_docstring(B, 'foo'), 'docstring')
        self.assertEqual(parser.get_method_docstring(B, 'bar'), None)
コード例 #2
0
    def test_get_docsring(self):
        class A(object):
            def foo(self):
                """docstring"""

            def bar(self):
                pass

        class B(A):
            def foo(self):
                pass

            def bar(self):
                pass

        self.assertEqual(parser.get_method_docstring(B, 'foo'), 'docstring')
        self.assertEqual(parser.get_method_docstring(B, 'bar'), None)
コード例 #3
0
 def test_foo_create_node(self):
     docstring = parser.get_method_docstring(self.Foo, 'create_node')
     result = parser.parse_docstring(docstring, self.Foo)
     description = result['description']
     args = result['arguments']
     return_type = result['return']['type_name']
     return_description = result['return']['description']
     self.assertTrue(description.startswith('Create a new node '))
     self.assertEqual(len(args), 2)
     self.assertEqual('C{str}', args['name']['type_name'])
     self.assertEqual('C{dict}', args['size']['type_name'])
     self.assertEqual(return_type, 'L{Node}')
     self.assertEqual(return_description, 'The newly created node.')
コード例 #4
0
 def test_foo_create_node(self):
     docstring = parser.get_method_docstring(self.Foo, 'create_node')
     result = parser.parse_docstring(docstring, self.Foo)
     description = result['description']
     args = result['arguments']
     return_type = result['return']['type_name']
     return_description = result['return']['description']
     self.assertTrue(description.startswith('Create a new node '))
     self.assertEqual(len(args), 2)
     self.assertEqual('C{str}', args['name']['type_name'])
     self.assertEqual('C{dict}', args['size']['type_name'])
     self.assertEqual(return_type, 'L{Node}')
     self.assertEqual(return_description, 'The newly created node.')
コード例 #5
0
 def test_bar_deploy_node(self):
     docstring = parser.get_method_docstring(self.Bar, 'deploy_node')
     result = parser.parse_docstring(docstring, self.Bar)
     description = result['description']
     args = result['arguments']
     return_type = result['return']['type_name']
     return_description = result['return']['description']
     self.assertTrue(description.startswith('Deploy bar node'))
     self.assertEqual(len(args), 3)
     self.assertEqual('L{NodeAuthSSHKey}', args['deploy']['type_name'])
     self.assertEqual('C{str}', args['name']['type_name'])
     self.assertEqual('C{dict}', args['size']['type_name'])
     self.assertEqual(return_type, 'L{Node}')
     self.assertEqual(return_description, 'The newly created node.')
コード例 #6
0
 def test_bar_create_node(self):
     docstring = parser.get_method_docstring(self.Bar, 'create_node')
     result = parser.parse_docstring(docstring, self.Bar)
     description = result['description']
     args = result['arguments']
     return_type = result['return']['type_name']
     return_description = result['return']['description']
     self.assertTrue(description.startswith('Create a new bar node'))
     self.assertEqual(len(args), 3)
     self.assertEqual('C{str}', args['name']['type_name'])
     self.assertEqual('C{dict}', args['size']['type_name'])
     self.assertEqual('C{str}', args['ex_fqdn']['type_name'])
     self.assertEqual(return_type, 'L{Node}')
     self.assertEqual(return_description, 'New bar node')
コード例 #7
0
 def test_bar_deploy_node(self):
     docstring = parser.get_method_docstring(self.Bar, 'deploy_node')
     result = parser.parse_docstring(docstring, self.Bar)
     description = result['description']
     args = result['arguments']
     return_type = result['return']['type_name']
     return_description = result['return']['description']
     self.assertTrue(description.startswith('Deploy bar node'))
     self.assertEqual(len(args), 3)
     self.assertEqual('L{NodeAuthSSHKey}', args['deploy']['type_name'])
     self.assertEqual('C{str}', args['name']['type_name'])
     self.assertEqual('C{dict}', args['size']['type_name'])
     self.assertEqual(return_type, 'L{Node}')
     self.assertEqual(return_description, 'The newly created node.')
コード例 #8
0
 def test_bar_create_node(self):
     docstring = parser.get_method_docstring(self.Bar, 'create_node')
     result = parser.parse_docstring(docstring, self.Bar)
     description = result['description']
     args = result['arguments']
     return_type = result['return']['type_name']
     return_description = result['return']['description']
     self.assertTrue(description.startswith('Create a new bar node'))
     self.assertEqual(len(args), 3)
     self.assertEqual('C{str}', args['name']['type_name'])
     self.assertEqual('C{dict}', args['size']['type_name'])
     self.assertEqual('C{str}', args['ex_fqdn']['type_name'])
     self.assertEqual(return_type, 'L{Node}')
     self.assertEqual(return_description, 'New bar node')
コード例 #9
0
 def __init__(self, driver_obj, method_name):
     if inspect.isclass(driver_obj):
         self.driver_cls = driver_obj
     else:
         self.driver_cls = driver_obj.__class__
     self.driver_obj = driver_obj
     self.method_name = method_name
     self.method = getattr(self.driver_obj, method_name, None)
     if not inspect.ismethod(self.method):
         raise NoSuchOperationError()
     method_doc = get_method_docstring(self.driver_cls, method_name)
     if not method_doc:
         raise MethodParsingException('Empty docstring')
     argspec_arg = parse_args(self.method)
     docstring_parse_result = parse_docstring(method_doc, self.driver_cls)
     self.description = docstring_parse_result['description']
     docstring_args = docstring_parse_result['arguments']
     #check vargs
     self.vargs_entries = []
     for name, arg_info in argspec_arg.iteritems():
         if name in docstring_args:
             docstring_arg = docstring_args[name]
             entry_kwargs = {
                 'name':
                 name,
                 'description':
                 docstring_arg['description'],
                 'type_name':
                 docstring_arg['type_name'],
                 'required': (docstring_arg['required']
                              or arg_info['required']),
             }
             if not entry_kwargs['required'] and 'default' in arg_info:
                 entry_kwargs['default'] = arg_info['default']
             self.vargs_entries.append(Entry(**entry_kwargs))
         else:
             raise MethodParsingException(
                 '%s %s not described in docstring' % (method_name, name))
         #update kwargs
     kwargs = set(docstring_args).difference(argspec_arg)
     self.kwargs_entries = [
         Entry(arg_name, **docstring_args[arg_name]) for arg_name in kwargs
     ]
     method_return = docstring_parse_result['return']
     self.result_entry = Entry('', method_return['type_name'],
                               method_return['description'], True)
コード例 #10
0
ファイル: providers.py プロジェクト: islamgulov/libcloud.rest
 def __init__(self, driver_obj, method_name):
     if inspect.isclass(driver_obj):
         self.driver_cls = driver_obj
     else:
         self.driver_cls = driver_obj.__class__
     self.driver_obj = driver_obj
     self.method_name = method_name
     self.method = getattr(self.driver_obj, method_name, None)
     if not inspect.ismethod(self.method):
         raise NoSuchOperationError()
     method_doc = get_method_docstring(self.driver_cls, method_name)
     if not method_doc:
         raise MethodParsingException('Empty docstring')
     argspec_arg = parse_args(self.method)
     docstring_parse_result = parse_docstring(method_doc, self.driver_cls)
     self.description = docstring_parse_result['description']
     docstring_args = docstring_parse_result['arguments']
     #check vargs
     self.vargs_entries = []
     for name, arg_info in argspec_arg.iteritems():
         if name in docstring_args:
             docstring_arg = docstring_args[name]
             entry_kwargs = {
                 'name': name,
                 'description': docstring_arg['description'],
                 'type_name': docstring_arg['type_name'],
                 'required': (docstring_arg['required'] or
                              arg_info['required']),
             }
             if not entry_kwargs['required'] and 'default' in arg_info:
                 entry_kwargs['default'] = arg_info['default']
             self.vargs_entries.append(Entry(**entry_kwargs))
         else:
             raise MethodParsingException(
                 '%s %s not described in docstring' % (method_name, name))
         #update kwargs
     kwargs = set(docstring_args).difference(argspec_arg)
     self.kwargs_entries = [Entry(arg_name, **docstring_args[arg_name])
                            for arg_name in kwargs]
     method_return = docstring_parse_result['return']
     self.result_entry = Entry('', method_return['type_name'],
                               method_return['description'], True)