code: def parse_source_file(file_name):
    
  
    nodes = ast.parse(_openfile(file_name))
  
    module_imports = get_nodes_by_instance_type(nodes, _ast.Import)
    specific_imports = get_nodes_by_instance_type(nodes, _ast.ImportFrom)
  
    assignment_objs = get_nodes_by_instance_type(nodes, _ast.Assign)
    call_objects = get_nodes_by_instance_type(nodes, _ast.Call)
  
    argparse_assignments = get_nodes_by_containing_attr(assignment_objs, 'ArgumentParser')
    add_arg_assignments  = get_nodes_by_containing_attr(call_objects, 'add_argument')
    parse_args_assignment = get_nodes_by_containing_attr(call_objects, 'parse_args')
  
    ast_argparse_source = chain(
      module_imports,
      specific_imports,
      argparse_assignments,
      add_arg_assignments
      # parse_args_assignment
    )
    return ast_argparse_source
docs: Parses the AST of Python file for lines containing
    references to the argparse module.
  
    returns the collection of ast objects found.
  
    Example client code:
  
      1. parser = ArgumentParser(desc="My help Message")
      2. parser.add_argument('filename', help="Name of the file to load")
      3. parser.add_argument('-f', '--format', help='Format of output \nOptions: ['md', 'html']
      4. args = parser.parse_args()
  
    Variables:
      * nodes 									Primary syntax tree object
      *	argparse_assignments   	The assignment of the ArgumentParser (line 1 in example code)
      * add_arg_assignments     Calls to add_argument() (lines 2-3 in example code)
      * parser_var_name					The instance variable of the ArgumentParser (line 1 in example code)
      * ast_source							The curated collection of all parser related nodes in the client code