コード例 #1
0
    def __enter__(self):
        """Load tasks from self.taskfile"""
        with open(self.taskfile, mode="rb") as t:
            tasklist = task_pb2.Tasks()
            tasklist.ParseFromString(t.read())
            logging.info(f"Loaded data from {self.taskfile}")
            self.tasks: Mapping[int, task_pb2.Task] = {}
            self.history: Mapping[int, task_pb2.Task] = {}
            # add to the dict and set id with maximum value
            for t in tasklist.pending:
                self.tasks[t.id] = t
                self.history[t.id] = []
                if self.task_id < t.id:
                    self.task_id = t.id
            self.task_id += 1
            print(f"next task id = {self.task_id}")

            with open("taskhistory.protobuf", mode="rb") as pt:
                historyTasklist = task_pb2.Tasks()
                historyTasklist.ParseFromString(pt.read())
                logging.info(f"Loaded data from taskhistory.protobuf")
                # add to the dict
                for task in historyTasklist.pending:
                    self.history[task.id].append(task)
                    print(self.history[task.id])

            return self
コード例 #2
0
    def __exit__(self, exc_type, exc_val, exc_tb):
        """Save tasks to self.taskfile"""
        with open(self.taskfile, mode="wb") as t:
            tasks = task_pb2.Tasks(pending=self.tasks.values())
            t.write(tasks.SerializeToString())
            logging.info(f"Saved data to {self.taskfile}")

        with open("taskhistory.protobuf", mode="wb") as pt:
            for taskList in self.history.values():
                tasks = task_pb2.Tasks(pending=taskList)
                pt.write(tasks.SerializeToString())
            logging.info(f"Saved data to taskhistory.protobuf\n")
コード例 #3
0
    def listTasks(self, request: task_pb2.TaskQuery,
                  context) -> task_pb2.Tasks:
        logging.debug(f"listTasks parameters {pformat(request)}")
        # return a list of tasks that are in the specified states
        if len(request.selected) != 0:
            # for state in request.selected:
            #     task_list = [i for i in self.tasks.values() if i.state == state]
            # return task_pb2.Tasks(pending=task_list)
            return task_pb2.Tasks(pending=[
                i for i in self.tasks.values() if i.state in request.selected
            ])

        else:
            return task_pb2.Tasks(pending=self.tasks.values())
コード例 #4
0
 def __exit__(self, exc_type, exc_val, exc_tb):
     """Save tasks to self.taskfile"""
     with open(self.taskfile, mode="wb") as t:
         #get all the tasks from self.tasks dict
         tasks = task_pb2.Tasks(pending=self.tasks.values())
         t.write(tasks.SerializeToString())
         logging.info(f"Saved data to {self.taskfile}")
コード例 #5
0
    def listTasks(self, request, context) -> task_pb2.Tasks:  # print list

        #print(request.selected)
        tem = {}
        if len(request.selected) == 0:  # if input zero state
            logging.debug("listTasks")
            context.set_code(grpc.StatusCode.OK)
            return self.tasks

        if (max(request.selected) > 4) or (min(request.selected) <
                                           0):  # state range
            logging.debug(f"out of range {pformat(request)}")
            context.set_code(grpc.StatusCode.OUT_OF_RANGE)
            context.set_details(f"out of range {pformat(request)}")
            return tem

        for i in self.tasks:  # filter
            y = task_pb2.Task(id=i,
                              description=self.tasks[i].description,
                              state=self.tasks[i].state)
            tem[i] = y
            #print(tem[2])

        remove = [
            k for k in self.tasks.keys()
            if not tem[k].state in request.selected
        ]
        for k in remove:
            del tem[k]
        print(tem)
        logging.debug(f"listTasks parameters {pformat(request)}")
        context.set_code(grpc.StatusCode.OK)

        return task_pb2.Tasks(pending=tem.values())
コード例 #6
0
 def __enter__(self):
     """Load tasks from self.taskfile"""
     with open(self.taskfile, mode="rb") as t:       # load
         tasklist = task_pb2.Tasks()
         tasklist.ParseFromString(t.read())
         logging.info(f"Loaded data from {self.taskfile}")
         self.tasks: Mapping[int, task_pb2.Task] = {
             t.id: t for t in tasklist.pending
         }
     return self
コード例 #7
0
    def __enter__(self):
        """Load tasks from self.taskfile"""
        with open(self.taskfile, mode="rb") as t:
            tasklist = task_pb2.Tasks()
            tasklist.ParseFromString(t.read())
            logging.info(f"Loaded data from {self.taskfile}")
            self.tasks: Mapping[int, task_pb2.Task] = self.mmp(tasklist)  #TODO

            #for keep histry
            self.hist_tasks: Mapping[int, List[data_str]] = {}
        return self
コード例 #8
0
 def __enter__(self):
     """Load tasks from self.taskfile"""
     with open(self.taskfile, mode="rb") as t:
         tasklist = task_pb2.Tasks()
         tasklist.ParseFromString(t.read())
         logging.info(f"Loaded data from {self.taskfile}")
         self.tasks: Mapping[int, task_pb2.Task] = {}
         taskid_temp: int
         for item in tasklist.pending:
             self.tasks[item.id] = item
             taskid_temp = item.id
         self.task_id = taskid_temp + 1
     return self
コード例 #9
0
def process_tasks_yaml(file_name, start_time):
    config = yaml.load(open(file_name, "r"))
    # From the config file, prepare the task.
    end_time = parse_time(config["_End_Time_"])

    tasks = task_pb2.Tasks()
    for group, content in config.iteritems():
        if not isinstance(content, list): continue

        is_sequence = group[-1] != "_"
        prev_task_id = ""
        global_segment = {}
        prereq = None
        for task_item in content:
            # print task_item
            task_id, spec = task_item.split(" ", 2)
            if task_id == "set_":
                global_segment = parse_time_seg(spec, start_time=start_time)
                continue
            if task_id == "pre_req_":
                prereq = spec.split(",")
                continue

            segment = parse_time_seg(spec,
                                     additional=global_segment,
                                     start_time=start_time)
            # print segment
            this_times = convert_time_seg(segment, start_time, end_time)

            for idx, time in enumerate(this_times):
                task = tasks.tasks.add()
                if idx > 0:
                    task.id = task_id + "-" + str(idx)
                else:
                    task.id = task_id
                task.group = group
                task.time.CopyFrom(time)
                if prereq:
                    task.pre_req_ids.extend(prereq)
                if is_sequence and prev_task_id:
                    task.pre_req_ids.append(prev_task_id)

                prev_task_id = task_id

    tasks.global_start_time = util_dt_time(start_time)
    tasks.rest_time = time_to_rest
    tasks.max_heap_size = 100
    return tasks
コード例 #10
0
 def __enter__(self):
     """Load tasks from self.taskfile"""
     with open(self.taskfile, mode="rb") as t:
         tasklist = task_pb2.Tasks()
         tasklist.ParseFromString(t.read())
         logging.info(f"Loaded data from {self.taskfile}")
         self.tasks: Mapping[int, task_pb2.Task] = {}
         # add to the dict and set id with maximum value
         for t in tasklist.pending:
             self.tasks[t.id] = t
             if self.task_id < t.id :
                 self.task_id = t.id
         self.task_id +=1
         print(f"next task id = {self.task_id}")
         
         return self
コード例 #11
0
def process_tasks_yaml(file_name, start_time):
    config = yaml.load(open(file_name, "r"))
    # From the config file, prepare the task.
    end_time = parse_time(config["_End_Time_"])

    global_segment = {}

    tasks = task_pb2.Tasks()
    for task_id, content in config.iteritems():
        if not isinstance(content, dict): continue

        spec = content["labels"]
        # print task_item
        # if task_id == "set_":
        #     global_segment = parse_time_seg(spec, start_time=start_time);
        #     continue;

        segment = parse_time_seg(spec,
                                 additional=global_segment,
                                 start_time=start_time)
        # print segment
        this_times = convert_time_seg(segment, start_time, end_time)

        for idx, time in enumerate(this_times):
            task = tasks.tasks.add()
            if idx > 0:
                task.id = task_id + "-" + str(idx)
            else:
                task.id = task_id
            task.time.CopyFrom(time)
            if "prereqs" in content:
                # print "Task " + task_id + " has prereqs = " + content["prereqs"];
                task.pre_req_ids.extend(content["prereqs"].split(","))

    tasks.global_start_time = util_dt_time(start_time)
    tasks.rest_time = time_to_rest
    tasks.max_heap_size = 100000
    return tasks
コード例 #12
0
 def __init__(self):
     # TODO: initialise attributes to store our tasks.
     self.tasks = task_pb2.Tasks()
コード例 #13
0
 def listTasks(self, request: empty_pb2.Empty, context) -> task_pb2.Tasks:
     logging.debug(f"listTasks parameters {pformat(request)}")
     return task_pb2.Tasks(pending=self.tasks.values())
コード例 #14
0
 def listTasks(self, request: task_pb2.TaskQuery, context) -> task_pb2.Tasks:
     logging.debug(f"listTasks parameters {pformat(request)}")
     tasks = [ task for task in self.tasks.values() if task.state in request.selected or len(request.selected) == 0 ]
     print(tasks)
     return task_pb2.Tasks(pending=tasks)
コード例 #15
0
 def __init__(self):
     # initialise a Tasks attribute to store our tasks.
     self.Tasks = task_pb2.Tasks()
コード例 #16
0
        task.pre_req_ids.append(pre_req_id)
    return task


def PrintSchedule(schedules):
    print "num of steps = %d" % schedules.search_steps
    table = PrettyTable(["Task", "Start", "End"])
    table.align["Task"] = "l"
    table.padding_width = 1

    for schedule in schedules.schedules:
        table.add_row([schedule.id, schedule.start, schedule.end])
    print table


tasks = task_pb2.Tasks()
tasks.tasks.extend([
    AddTask("Work-1", 30, 0, ""),
    AddTask("Work-2", 20, 30, "Work-1"),
    AddTask("Work-3", 40, 10, "Work-2"),
    AddTask("Work-4", 40, 20, "Work-3"),
    AddTask("Work-5", 40, 40, "Work-4"),
    AddTask("Work-6", 40, 10, "Work-5"),
    AddTask("Research-1", 20, 0, ""),
    AddTask("Research-2", 20, 90, "Research-1"),
    AddTask("Research-3", 30, 10, "Research-2"),
    AddTask("Research-4", 70, 20, "Research-3"),
    AddTask("Research-5", 20, 60, "Research-4"),
    AddTask("Research-6", 30, 50, "Research-5")
])
コード例 #17
0
 def listTasks(self, request, context):
     logging.info("returning task list")
     # TODO: implement this!
     print("returning task list")
     return task_pb2.Tasks(tasks=self.tasks.tasks)