def _RunClientAction(self, action, request, parser_factory, path_type):
    """Runs the client action  with the request and parses the result."""
    responses = list(action(request))

    if parser_factory is None:
      return responses

    # parse the responses
    parsed_responses = []

    for response in responses:
      for parser in parser_factory.SingleResponseParsers():
        parsed_responses.extend(
            parser.ParseResponse(self.knowledge_base, response, path_type))

      for parser in parser_factory.SingleFileParsers():
        precondition.AssertType(response, rdf_client_fs.StatEntry)
        pathspec = response.pathspec
        with vfs.VFSOpen(pathspec) as filedesc:
          parsed_responses.extend(
              parser.ParseFile(self.knowledge_base, pathspec, filedesc))

    for parser in parser_factory.MultiResponseParsers():
      parsed_responses.extend(
          parser.ParseResponses(self.knowledge_base, responses))

    for parser in parser_factory.MultiFileParsers():
      precondition.AssertIterableType(responses, rdf_client_fs.StatEntry)
      pathspecs = [response.pathspec for response in responses]
      with vfs.VFSMultiOpen(pathspecs) as filedescs:
        parsed_responses.extend(
            parser.ParseFiles(self.knowledge_base, pathspecs, filedescs))

    return parsed_responses
def _RunClientAction ( self , action , request , parser_factory , path_type ) : responses = list ( action ( request ) ) if parser_factory is None : return responses parsed_responses = [ ] for response in responses : for parser in parser_factory . SingleResponseParsers ( ) : parsed_responses . extend ( parser . ParseResponse ( self . knowledge_base , response , path_type ) ) for parser in parser_factory . SingleFileParsers ( ) : precondition . AssertType ( response , rdf_client_fs . StatEntry ) pathspec = response . pathspec with vfs . VFSOpen ( pathspec ) as filedesc : parsed_responses . extend ( parser . ParseFile ( self . knowledge_base , pathspec , filedesc ) ) for parser in parser_factory . MultiResponseParsers ( ) : parsed_responses . extend ( parser . ParseResponses ( self . knowledge_base , responses ) ) for parser in parser_factory . MultiFileParsers ( ) : precondition . AssertIterableType ( responses , rdf_client_fs . StatEntry ) pathspecs = [ response . pathspec for response in responses ] with vfs . VFSMultiOpen ( pathspecs ) as filedescs : parsed_responses . extend ( parser . ParseFiles ( self . knowledge_base , pathspecs , filedescs ) ) return parsed_responses
Runs the client action  with the request and parses the result.