old_contents: """Displays the number of pending tasks in TaskWarrior.
  
  Requires the following library:
      * taskw
  
  Parameters:
      * taskwarrior.taskrc : path to the taskrc file (defaults to ~/.taskrc)
  
  
  contributed by `chdorb <https://github.com/chdorb>`_ - many thanks!
  """
  
  from taskw import TaskWarrior
  
  import core.module
  import core.widget
  import core.decorators
  
  
  class Module(core.module.Module):
      def __init__(self, config, theme):
          super().__init__(config, theme, core.widget.Widget(self.output))
  
          self.__pending_tasks = "0"
  
      def update(self):
          """Return a string with the number of pending tasks from TaskWarrior
          or the descripton of an active task.
  
          if show.active is set in the config, show the description of the
          current active task, otherwise the number of pending tasks will be displayed.
          """
          try:
              taskrc = self.parameter("taskrc", "~/.taskrc")
              show_active = self.parameter("show_active", False)
              w = TaskWarrior(config_filename=taskrc)
              active_tasks = (
                  w.filter_tasks({"start.any": "", "status": "pending"}) or None
              )
              if show_active and active_tasks:
                  # this is using the first element of the list, if there happen
                  # to be other active tasks, they won't be displayed.
                  reporting_tasks = (
                      f"{active_tasks[0]['id']} - {active_tasks[0]['description']}"
                  )
              else:
                  reporting_tasks = len(w.filter_tasks({"status": "pending"}))
              self.__pending_tasks = reporting_tasks
          except:
              self.__pending_tasks = "n/a"
  
      @core.decorators.scrollable
      def output(self, _):
          """Format the task counter to output in bumblebee."""
          return "{}".format(self.__pending_tasks)
  
  
  # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
  
new_contents: """Displays the number of pending tasks in TaskWarrior.
  
  Requires the following library:
      * taskw
  
  Parameters:
      * taskwarrior.taskrc : path to the taskrc file (defaults to ~/.taskrc)
  
  
  contributed by `chdorb <https://github.com/chdorb>`_ - many thanks!
  """
  
  from taskw import TaskWarrior
  
  import core.module
  import core.widget
  import core.decorators
  
  
  class Module(core.module.Module):
      def __init__(self, config, theme):
          super().__init__(config, theme, core.widget.Widget(self.output))
  
          self.__pending_tasks = "0"
          self.__status = "stopped"
  
      def update(self):
          """Return a string with the number of pending tasks from TaskWarrior
          or the descripton of an active task.
  
          if show.active is set in the config, show the description of the
          current active task, otherwise the number of pending tasks will be displayed.
          """
          try:
              taskrc = self.parameter("taskrc", "~/.taskrc")
              show_active = self.parameter("show_active", False)
              w = TaskWarrior(config_filename=taskrc)
              active_tasks = (
                  w.filter_tasks({"start.any": "", "status": "pending"}) or None
              )
              if show_active and active_tasks:
                  # this is using the first element of the list, if there happen
                  # to be other active tasks, they won't be displayed.
                  reporting_tasks = (
                      f"{active_tasks[0]['id']} - {active_tasks[0]['description']}"
                  )
                  self.__status = "active"
              else:
                  reporting_tasks = len(w.filter_tasks({"status": "pending"}))
                  self.__status = "stopped"
              self.__pending_tasks = reporting_tasks
          except:
              self.__pending_tasks = "n/a"
              self.__status = "stopped"
  
      @core.decorators.scrollable
      def output(self, _):
          """Format the task counter to output in bumblebee."""
          return "{}".format(self.__pending_tasks)
  
      def state(self, widget):
          """Return the set status to reflect state"""
          return self.__status
  
  
  # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
  
subject: add state handling