def visit_FunctionDef(node):
        '''visitor to function definitions, needed to extract decorator'''
        for e in node.decorator_list:
            assert isinstance(e, (ast.Call, ast.Name))

            decorator_name = None

            if isinstance(e, ast.Call):  # @task(args, ...)
                decorator_name = e.func.id

                for k in e.keywords:
                    if k.arg in ('accepts', 'returns'):
                        types = to.convert_to_types(to.parse_val(k.value))
                        types_list = to.make_iterable(types)
                        if isinstance(types_list, tuple):
                            types_list = list(types_list)

                        props[k.arg] = types_list

                    else:
                        raise KeyError('decorator has unknown argument')

            elif isinstance(e, ast.Name):  # @task [ie: naked]
                decorator_name = e.id

            if 'task' == decorator_name:
                visit_FunctionDef.task_count += 1

                visit_FunctionDef.function_name = node.name

                visit_FunctionDef.function_params = [to.parse_val(arg)
                                                     for arg in node.args.args]
            else:
                continue
Ejemplo n.º 2
0
    def visit_FunctionDef(node):
        '''visitor to function definitions, needed to extract decorator'''
        for e in node.decorator_list:
            assert isinstance(e, (ast.Call, ast.Name))

            decorator_name = None

            if isinstance(e, ast.Call):  # @task(args, ...)
                decorator_name = e.func.id

                for k in e.keywords:
                    if k.arg in ('accepts', 'returns'):
                        types = to.convert_to_types(to.parse_val(k.value))
                        types_list = to.make_iterable(types)
                        if isinstance(types_list, tuple):
                            types_list = list(types_list)

                        props[k.arg] = types_list

                    else:
                        raise KeyError('decorator has unknown argument')

            elif isinstance(e, ast.Name):  # @task [ie: naked]
                decorator_name = e.id

            if 'task' == decorator_name:
                visit_FunctionDef.task_count += 1

                visit_FunctionDef.function_name = node.name

                visit_FunctionDef.function_params = [
                    to.parse_val(arg) for arg in node.args.args
                ]
            else:
                continue
    def visit_Assign(node):
        '''visitor to assigns, needed for inline properties'''
        if not hasattr(node.targets[0], 'id'):
            return

        if 1 == len(node.targets) and node.targets[0].id in inline_properties:
            value = to.parse_val(node.value)
            attr_name = inline_properties.pop(node.targets[0].id)
            props[attr_name] = value
Ejemplo n.º 4
0
    def visit_Assign(node):
        '''visitor to assigns, needed for inline properties'''
        if not hasattr(node.targets[0], 'id'):
            return

        if 1 == len(node.targets) and node.targets[0].id in inline_properties:
            value = to.parse_val(node.value)
            attr_name = inline_properties.pop(node.targets[0].id)
            props[attr_name] = value
    def visit_FunctionDef(node):
        '''visitor to function definitions, needed to extract decorator'''
        for e in node.decorator_list:
            assert isinstance(e, (ast.Call, ast.Name))

            decorator_name = ''
            if isinstance(e, ast.Call):  # @task(args, ...)
                decorator_name = e.func.id
            elif isinstance(e, ast.Name):  # @task [ie: naked]
                decorator_name = e.id

            if 'task' == decorator_name:
                visit_FunctionDef.task_count += 1

                visit_FunctionDef.function_name = node.name

                visit_FunctionDef.function_params = [to.parse_val(arg)
                                                     for arg in node.args.args]
                visit_FunctionDef.doc = ast.get_docstring(node) or ''
Ejemplo n.º 6
0
    def visit_FunctionDef(node):
        '''visitor to function definitions, needed to extract decorator'''
        for e in node.decorator_list:
            assert isinstance(e, (ast.Call, ast.Name))

            decorator_name = ''
            if isinstance(e, ast.Call):  # @task(args, ...)
                decorator_name = e.func.id
            elif isinstance(e, ast.Name):  # @task [ie: naked]
                decorator_name = e.id

            if 'task' == decorator_name:
                visit_FunctionDef.task_count += 1

                visit_FunctionDef.function_name = node.name

                visit_FunctionDef.function_params = [
                    to.parse_val(arg) for arg in node.args.args
                ]
                visit_FunctionDef.doc = ast.get_docstring(node) or ''