@logExceptions(_LOGGER)<EOL><INDENT>def jobsGetFields(self, jobIDs, fields, requireAll=True):<DEDENT>
assert isinstance(jobIDs, self._SEQUENCE_TYPES)<EOL>assert len(jobIDs) >=<NUM_LIT:1><EOL>rows = self._getMatchingRowsWithRetries(<EOL>self._jobs, dict(job_id=jobIDs),<EOL>['<STR_LIT>'] + [self._jobs.pubToDBNameDict[x] for x in fields])<EOL>if requireAll and len(rows) < len(jobIDs):<EOL><INDENT>raise RuntimeError("<STR_LIT>" % (<EOL>(set(jobIDs) - set(r[<NUM_LIT:0>] for r in rows)),))<EOL><DEDENT>return [(r[<NUM_LIT:0>], list(r[<NUM_LIT:1>:])) for r in rows]<EOL>
Fetch the values of 1 or more fields from a sequence of job records.
        Here, 'fields' is a sequence (list or tuple) with the names of the fields to
        fetch. The names are the public names of the fields (camelBack, not the
        lower_case_only form as stored in the DB).

        WARNING!!!: The order of the results are NOT necessarily in the same order as
        the order of the job IDs passed in!!!

        Parameters:
        ----------------------------------------------------------------
        jobIDs:        A sequence of jobIDs
        fields:        A list  of fields to return for each jobID

        Returns:      A list of tuples->(jobID, [field1, field2,...])