def _rerun_step(self, *, step: steps.Step, part, progress, hint='', prerequisite_step: steps.Step=steps.STAGE): staged_state = self.config.get_project_state(steps.STAGE) primed_state = self.config.get_project_state(steps.PRIME) # We need to clean this step, but if it involves cleaning any steps # upon which other parts depend, those parts need to be marked as dirty # so they can run again, taking advantage of the new dependency. dirty_parts = mark_dependents_dirty(part.name, step, self.config) # First clean the step, then run it again part.clean(staged_state, primed_state, step) for current_step in [step] + step.next_steps(): self._dirty_reports[part.name][current_step] = None self._steps_run[part.name].discard(current_step) self._run_step( step=step, part=part, progress=progress, hint=hint, prerequisite_step=prerequisite_step) if dirty_parts: logger.warning( 'The following {} now out of date: {}'.format( formatting_utils.pluralize( dirty_parts, 'part is', 'parts are'), formatting_utils.humanize_list(dirty_parts, 'and')))
def _rerun_step(self, *, step: steps.Step, part, progress, hint=""): staged_state = self.config.get_project_state(steps.STAGE) primed_state = self.config.get_project_state(steps.PRIME) # First clean the step, then run it again part.clean(staged_state, primed_state, step) # Uncache this and later steps since we just cleaned them: their status # has changed for current_step in [step] + step.next_steps(): self._cache.clear_step(part, current_step) self._run_step(step=step, part=part, progress=progress, hint=hint)