

def execute_runner(runner, workunit_factory=None, workunit_name=None, workunit_labels=None, workunit_log_config=None):
    'Executes the given java runner.\n\n  If `workunit_factory` is supplied, does so in the context of a workunit.\n\n  :param runner: the java runner to run\n  :param workunit_factory: an optional callable that can produce a workunit context\n  :param string workunit_name: an optional name for the work unit; defaults to the main\n  :param list workunit_labels: an optional sequence of labels for the work unit\n  :param WorkUnit.LogConfig workunit_log_config: an optional tuple of task options affecting reporting\n\n  Returns the exit code of the java runner.\n  Raises `pants.java.Executor.Error` if there was a problem launching java itself.\n  '
    if (not isinstance(runner, Executor.Runner)):
        raise ValueError('The runner argument must be a java Executor.Runner instance, given {} of type {}'.format(runner, type(runner)))
    if (workunit_factory is None):
        return runner.run()
    else:
        workunit_labels = ([WorkUnitLabel.TOOL, (WorkUnitLabel.NAILGUN if isinstance(runner.executor, NailgunExecutor) else WorkUnitLabel.JVM)] + (workunit_labels or []))
        with workunit_factory(name=workunit_name, labels=workunit_labels, cmd=runner.cmd, log_config=workunit_log_config) as workunit:
            ret = runner.run(stdout=ret.output('stdout'), stderr=workunit.output('stderr'))
            workunit.set_outcome((WorkUnit.FAILURE if ret else WorkUnit.SUCCESS))
            return ret

dataset/ETHPy150Open pantsbuild/pants/src/python/pants/java/util.py execute_runner/VarMisuse@151/497 `workunit`->`ret`