    def is_runnable(self):
        """Check whether the task can be run or not.

        If force_run is True, the task can be run regardless.
        If disabled is True, the task is prevented to be run
        (unless force_true=True).
        If neither of the previous, the start_cond is inspected
        and if it is True, the task can be run.
        """
        # Also add methods:
        #    set_pending() : Set forced_state to False
        #    resume() : Reset forced_state to None
        #    set_running() : Set forced_state to True
        forced_run = bool(self.batches)
        if forced_run:
            return True
        if self.disabled:
            return False

        cond = self.start_cond.observe(task=self)

        return cond
Check whether the task can be run or not.

If force_run is True, the task can be run regardless.
If disabled is True, the task is prevented to be run
(unless force_true=True).
If neither of the previous, the start_cond is inspected
and if it is True, the task can be run.
rocketry/core/task.py