Path: blob/master/elisp/emacs-for-python/rope-dist/rope/base/taskhandle.py
1415 views
import warnings12from rope.base import exceptions345class TaskHandle(object):67def __init__(self, name='Task', interrupts=True):8"""Construct a TaskHandle910If `interrupts` is `False` the task won't be interrupted by11calling `TaskHandle.stop()`.1213"""14self.name = name15self.interrupts = interrupts16self.stopped = False17self.job_sets = []18self.observers = []1920def stop(self):21"""Interrupts the refactoring"""22if self.interrupts:23self.stopped = True24self._inform_observers()2526def current_jobset(self):27"""Return the current `JobSet`"""28if self.job_sets:29return self.job_sets[-1]3031def add_observer(self, observer):32"""Register an observer for this task handle3334The observer is notified whenever the task is stopped or35a job gets finished.3637"""38self.observers.append(observer)3940def is_stopped(self):41return self.stopped4243def get_jobsets(self):44return self.job_sets4546def create_jobset(self, name='JobSet', count=None):47result = JobSet(self, name=name, count=count)48self.job_sets.append(result)49self._inform_observers()50return result5152def _inform_observers(self):53for observer in list(self.observers):54observer()555657class JobSet(object):5859def __init__(self, handle, name, count):60self.handle = handle61self.name = name62self.count = count63self.done = 064self.job_name = None6566def started_job(self, name):67self.check_status()68self.job_name = name69self.handle._inform_observers()7071def finished_job(self):72self.check_status()73self.done += 174self.handle._inform_observers()75self.job_name = None7677def check_status(self):78if self.handle.is_stopped():79raise exceptions.InterruptedTaskError()8081def get_active_job_name(self):82return self.job_name8384def get_percent_done(self):85if self.count is not None and self.count > 0:86percent = self.done * 100 // self.count87return min(percent, 100)8889def get_name(self):90return self.name919293class NullTaskHandle(object):9495def __init__(self):96pass9798def is_stopped(self):99return False100101def stop(self):102pass103104def create_jobset(self, *args, **kwds):105return NullJobSet()106107def get_jobsets(self):108return []109110def add_observer(self, observer):111pass112113114class NullJobSet(object):115116def started_job(self, name):117pass118119def finished_job(self):120pass121122def check_status(self):123pass124125def get_active_job_name(self):126pass127128def get_percent_done(self):129pass130131def get_name(self):132pass133134135