[meld] PEP8 and docstring fixes for task.py
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld] PEP8 and docstring fixes for task.py
- Date: Thu, 18 Apr 2013 21:22:23 +0000 (UTC)
commit 0b2b795dc21d0754709683ba1820dbc4e3f3f2af
Author: Kai Willadsen <kai willadsen gmail com>
Date: Mon Mar 4 08:10:02 2013 +1000
PEP8 and docstring fixes for task.py
meld/task.py | 110 ++++++++++++++++++++++-------------------------------------
1 file changed, 41 insertions(+), 69 deletions(-)
---
diff --git a/meld/task.py b/meld/task.py
index a9feddc..7e95877 100644
--- a/meld/task.py
+++ b/meld/task.py
@@ -1,19 +1,20 @@
-### Copyright (C) 2002-2006 Stephen Kennedy <stevek gnome org>
+# Copyright (C) 2002-2006 Stephen Kennedy <stevek gnome org>
+# Copyright (C) 2012 Kai Willadsen <kai willadsen gmail com>
-### This program is free software; you can redistribute it and/or modify
-### it under the terms of the GNU General Public License as published by
-### the Free Software Foundation; either version 2 of the License, or
-### (at your option) any later version.
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
-### This program is distributed in the hope that it will be useful,
-### but WITHOUT ANY WARRANTY; without even the implied warranty of
-### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-### GNU General Public License for more details.
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
-### You should have received a copy of the GNU General Public License
-### along with this program; if not, write to the Free Software
-### Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-### USA.
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
"""Classes to implement scheduling for cooperative threads."""
@@ -23,14 +24,12 @@ import traceback
class SchedulerBase(object):
- """Base class with common functionality for schedulers.
+ """Base class with common functionality for schedulers
- Derived classes should implement the 'get_current_task' method.
+ Derived classes must implement get_current_task.
"""
def __init__(self):
- """Create a scheduler with no current tasks.
- """
self.tasks = []
self.callbacks = []
@@ -39,22 +38,17 @@ class SchedulerBase(object):
def connect(self, signal, action):
assert signal == "runnable"
- try:
- self.callbacks.index(action)
- except ValueError:
- self.callbacks.append( action )
+ if action not in self.callbacks:
+ self.callbacks.append(action)
- def add_task(self, task, atfront=0):
- """Add 'task' to the task list.
+ def add_task(self, task, atfront=False):
+ """Add a task to the scheduler's task list
- 'task' may be a function, generator or scheduler.
- The task is deemed to be finished when either it returns a
- false value or raises StopIteration.
+ The task may be a function, generator or scheduler, and is
+ deemed to have finished when it returns a false value or raises
+ StopIteration.
"""
- try:
- self.tasks.remove(task)
- except ValueError:
- pass
+ self.remove_task(task)
if atfront:
self.tasks.insert(0, task)
@@ -65,26 +59,22 @@ class SchedulerBase(object):
callback(self)
def remove_task(self, task):
- """Remove 'task'.
- """
+ """Remove a single task from the scheduler"""
try:
self.tasks.remove(task)
except ValueError:
pass
def remove_all_tasks(self):
- """Remove all tasks.
- """
+ """Remove all tasks from the scheduler"""
self.tasks = []
def add_scheduler(self, sched):
- """Calls add_task and listens for 'sched' to emit 'runnable'.
- """
- sched.connect("runnable", lambda t : self.add_task(t))
+ """Adds a subscheduler as a child task of this scheduler"""
+ sched.connect("runnable", lambda t: self.add_task(t))
def remove_scheduler(self, sched):
- """Remove 'task'.
- """
+ """Remove a sub-scheduler from this scheduler"""
self.remove_task(sched)
try:
self.callbacks.remove(sched)
@@ -92,16 +82,11 @@ class SchedulerBase(object):
pass
def get_current_task(self):
- """Function overridden by derived classes.
-
- The usual implementation will be to call self._iteration(task) where
- 'task' is one of self.tasks.
- """
- raise NotImplementedError("This method must be overridden by subclasses.")
+ """Overridden function returning the next task to run"""
+ raise NotImplementedError
def __call__(self):
- """Check for pending tasks and run an iteration of the current task.
- """
+ """Run an iteration of the current task"""
if len(self.tasks):
r = self.iteration()
if r:
@@ -109,22 +94,15 @@ class SchedulerBase(object):
return self.tasks_pending()
def complete_tasks(self):
- """Run all currently added tasks to completion.
-
- Tasks added after the call to complete_tasks are not run.
- """
+ """Run all of the scheduler's current tasks to completion"""
while self.tasks_pending():
self.iteration()
-
+
def tasks_pending(self):
return len(self.tasks) != 0
def iteration(self):
- """Perform one iteration of the current task..
-
- Calls self.get_current_task() to find the current task.
- Remove task from self.tasks if it is complete.
- """
+ """Perform one iteration of the current task"""
try:
task = self.get_current_task()
except StopIteration:
@@ -146,10 +124,8 @@ class SchedulerBase(object):
class LifoScheduler(SchedulerBase):
- """Most recently added tasks are called first.
- """
- def __init__(self):
- SchedulerBase.__init__(self)
+ """Scheduler calling most recently added tasks first"""
+
def get_current_task(self):
try:
return self.tasks[-1]
@@ -158,10 +134,8 @@ class LifoScheduler(SchedulerBase):
class FifoScheduler(SchedulerBase):
- """Subtasks are called in the order they were added.
- """
- def __init__(self):
- SchedulerBase.__init__(self)
+ """Scheduler calling tasks in the order they were added"""
+
def get_current_task(self):
try:
return self.tasks[0]
@@ -170,10 +144,8 @@ class FifoScheduler(SchedulerBase):
class RoundRobinScheduler(SchedulerBase):
- """Each subtask is called in turn.
- """
- def __init__(self):
- SchedulerBase.__init__(self)
+ """Scheduler repeatedly calling tasks in turn"""
+
def get_current_task(self):
try:
self.tasks.append(self.tasks.pop(0))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]