def initialize(self, **kwargs): """Initializes all the units belonging to this Workflow, in dependency order. """ try: snapshot = kwargs["snapshot"] except KeyError: raise from_none( KeyError( "\"snapshot\" (True/False) must be provided in kwargs")) units_number = len(self) fin_text = "%d units were initialized" % units_number maxlen = max([len(u.name) for u in self] + [len(fin_text)]) if not self.is_standalone: self.verify_interface(IDistributable) progress = ProgressBar( maxval=units_number, term_width=min(80, len(self) + 8 + maxlen), widgets=[Percentage(), ' ', Bar(), ' ', ' ' * maxlen], poll=0) progress.widgets[0].TIME_SENSITIVE = True self.info("Initializing units in %s...", self.name) progress.start() units_in_dependency_order = list(self.units_in_dependency_order) iqueue = list(units_in_dependency_order) while len(iqueue) > 0: unit = iqueue.pop(0) # Early abort in case of KeyboardInterrupt if self.thread_pool.joined: break progress.widgets[-1] = unit.name + ' ' * (maxlen - len(unit.name)) progress.update() if not self.is_standalone: unit.verify_interface(IDistributable) try: partially = unit.initialize(**kwargs) except: self.error("Unit \"%s\" failed to initialize", unit.name) raise if partially: iqueue.append(unit) else: if snapshot and not unit._remembers_gates: unit.close_gate() unit.close_upstream() progress.inc() progress.widgets[-1] = fin_text + ' ' * (maxlen - len(fin_text)) progress.finish() initialized_units_number = len(units_in_dependency_order) if initialized_units_number < units_number: self.warning("Not all units were initialized (%d left): %s", units_number - initialized_units_number, set(self) - set(units_in_dependency_order))
def initialize(self, **kwargs): """Initializes all the units belonging to this Workflow, in dependency order. """ try: snapshot = kwargs["snapshot"] except KeyError: raise from_none(KeyError( "\"snapshot\" (True/False) must be provided in kwargs")) units_number = len(self) fin_text = "%d units were initialized" % units_number maxlen = max([len(u.name) for u in self] + [len(fin_text)]) if not self.is_standalone: self.verify_interface(IDistributable) progress = ProgressBar(maxval=units_number, term_width=min(80, len(self) + 8 + maxlen), widgets=[Percentage(), ' ', Bar(), ' ', ' ' * maxlen], poll=0) progress.widgets[0].TIME_SENSITIVE = True self.info("Initializing units in %s...", self.name) progress.start() units_in_dependency_order = list(self.units_in_dependency_order) iqueue = list(units_in_dependency_order) while len(iqueue) > 0: unit = iqueue.pop(0) # Early abort in case of KeyboardInterrupt if self.thread_pool.joined: break progress.widgets[-1] = unit.name + ' ' * (maxlen - len(unit.name)) progress.update() if not self.is_standalone: unit.verify_interface(IDistributable) try: partially = unit.initialize(**kwargs) except: self.error("Unit \"%s\" failed to initialize", unit.name) raise if partially: iqueue.append(unit) else: if snapshot and not unit._remembers_gates: unit.close_gate() unit.close_upstream() progress.inc() progress.widgets[-1] = fin_text + ' ' * (maxlen - len(fin_text)) progress.finish() initialized_units_number = len(units_in_dependency_order) if initialized_units_number < units_number: self.warning("Not all units were initialized (%d left): %s", units_number - initialized_units_number, set(self) - set(units_in_dependency_order))