@scm_locked
def reproduce(self, revs: Optional[Iterable]=None, keep_stash: Optional[bool]=True, **kwargs):
    'Reproduce the specified experiments.\n\n        Args:\n            revs: If revs is not specified, all stashed experiments will be\n                reproduced.\n            keep_stash: If True, stashed experiments will be preserved if they\n                fail to reproduce successfully.\n        '
    stash_revs = self.stash_revs
    if (revs is None):
        to_run = dict(stash_revs)
    else:
        to_run = {rev: (stash_revs[rev] if (rev in stash_revs) else self.StashEntry(None, rev, rev, None, None)) for rev in revs}
    logger.debug("Reproducing experiment revs '%s'", ', '.join((rev[:7] for rev in to_run)))
    executors = self._init_executors(to_run)
    exec_results = self._reproduce(executors, **kwargs)
    if keep_stash:
        to_drop = sorted((stash_revs[rev][0] for rev in exec_results if (rev in stash_revs)), reverse=True)
    else:
        to_drop = sorted((stash_revs[rev][0] for rev in to_run if (rev in stash_revs)), reverse=True)
    for index in to_drop:
        self.stash.drop(index)
    result = {}
    for (_, exp_result) in exec_results.items():
        result.update(exp_result)
    return result
Reproduce the specified experiments.

Args:
    revs: If revs is not specified, all stashed experiments will be
        reproduced.
    keep_stash: If True, stashed experiments will be preserved if they
        fail to reproduce successfully.
@scm_locked
def reproduce(self, revs: Optional[Iterable]=None, keep_stash: Optional[bool]=True, **kwargs):
    'Reproduce the specified experiments.\n\n        Args:\n            revs: If revs is not specified, all stashed experiments will be\n                reproduced.\n            keep_stash: If True, stashed experiments will be preserved if they\n                fail to reproduce successfully.\n        '
    stash_revs = self.stash_revs
    if (revs is None):
        to_run = dict(stash_revs)
    else:
        to_run = {rev: (stash_revs[rev] if (rev in stash_revs) else self.StashEntry(None, rev, rev, None, None)) for rev in revs}
    logger.debug("Reproducing experiment revs '%s'", ', '.join((rev[:7] for rev in to_run)))
    executors = self._init_executors(to_run)
    exec_results = self._reproduce(executors, **kwargs)
    if keep_stash:
        to_drop = sorted((stash_revs[rev][0] for rev in exec_results if (rev in stash_revs)), reverse=True)
    else:
        to_drop = sorted((stash_revs[rev][0] for rev in to_run if (rev in stash_revs)), reverse=True)
    for index in to_drop:
        self.stash.drop(index)
    result = {}
    for (_, exp_result) in exec_results.items():
        result.update(exp_result)
    return result