def get_call_ast(func_name, args=None, kwargs=None, return_type=None):
    ' Return an AST representing the call to a function with the name\n    func_name, passing it the arguments args (given as a list) and the\n    keyword arguments kwargs (given as a dictionary).\n    func_name -- either the name of a callable as a string, or an AST\n        representing a callable expression\n    return_type -- if this is not None, return a TypedCall object with this\n        return type instead '
    if (args is None):
        args = []
    keywords = []
    if (kwargs is not None):
        for (key, value) in kwargs.iteritems():
            keywords.append(ast.keyword(arg=key, value=value))
    if isinstance(func_name, ast.AST):
        func_ast = func_name
    else:
        func_ast = ast.Name(id=func_name, ctx=ast.Load)
    if (return_type is None):
        return ast.Call(func=func_ast, args=args, keywords=keywords, starargs=None, kwargs=None)
    else:
        return TypedCall(func=func_ast, args=args, keywords=keywords, return_type=return_type)
Return an AST representing the call to a function with the name
func_name, passing it the arguments args (given as a list) and the
keyword arguments kwargs (given as a dictionary).
func_name -- either the name of a callable as a string, or an AST
    representing a callable expression
return_type -- if this is not None, return a TypedCall object with this
    return type instead
def get_call_ast(func_name, args=None, kwargs=None, return_type=None):
    ' Return an AST representing the call to a function with the name\n    func_name, passing it the arguments args (given as a list) and the\n    keyword arguments kwargs (given as a dictionary).\n    func_name -- either the name of a callable as a string, or an AST\n        representing a callable expression\n    return_type -- if this is not None, return a TypedCall object with this\n        return type instead '
    if (args is None):
        args = []
    keywords = []
    if (kwargs is not None):
        for (key, value) in kwargs.iteritems():
            keywords.append(ast.keyword(arg=key, value=value))
    if isinstance(func_name, ast.AST):
        func_ast = func_name
    else:
        func_ast = ast.Name(id=func_name, ctx=ast.Load)
    if (return_type is None):
        return ast.Call(func=func_ast, args=args, keywords=keywords, starargs=None, kwargs=None)
    else:
        return TypedCall(func=func_ast, args=args, keywords=keywords, return_type=return_type)