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_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
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 ''
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 ''