def _interpret_hadoop_jar_command_stderr(stderr, record_callback=None):
    def yield_lines():
        try:
            for line in stderr:
                yield to_string(line)
        except IOError as e:
            # this is just the PTY's way of saying goodbye
            if e.errno == errno.EIO:
                return
            else:
                raise

    def pre_filter(line):
        return bool(_HADOOP_STREAMING_NON_LOG4J_LINE_RE.match(line))

    def yield_records():
        for record in _parse_hadoop_log4j_records(yield_lines(),
                                                  pre_filter=pre_filter):
            if record_callback:
                record_callback(record)
            yield record

    result = _parse_step_log_from_log4j_records(yield_records())

    _add_implied_job_id(result)
    for error in result.get('errors') or ():
        _add_implied_task_id(error)

    return result
Returns the first image found
dataset/ETHPy150Open Yelp/mrjob/mrjob/logs/step.py/_interpret_hadoop_jar_command_stderr--crossover with--dataset/ETHPy150Open scottrice/Ice/ice/gridproviders/combined_provider.py/CombinedProvider.image_for_rom