Quality - run black on api/sequence directory

This commit is contained in:
bosonprojets
2022-09-09 02:25:20 +01:00
parent 4689cc858a
commit 87f0475b99
25 changed files with 477 additions and 150 deletions
@@ -59,10 +59,12 @@ class Usecase:
if attempts > max_worst_case_attempts:
is_cyclic = True
break # We have an infinite loop due to a cyclic graph
break # We have an infinite loop due to a cyclic graph
if is_cyclic:
raise RecursionError("Task graph is cyclic and so critical path method cannot be performed.")
raise RecursionError(
"Task graph is cyclic and so critical path method cannot be performed."
)
return
self.pending_nodes = set(self.g.nodes)
@@ -88,7 +90,9 @@ class Usecase:
self.g = nx.DiGraph()
self.edges = []
self.g.add_node("start", duration=0, duration_type="ELAPSEDTIME", calendar=None)
self.g.add_node("finish", duration=0, duration_type="ELAPSEDTIME", calendar=None)
self.g.add_node(
"finish", duration=0, duration_type="ELAPSEDTIME", calendar=None
)
for rel in self.settings["work_schedule"].Controls:
for related_object in rel.RelatedObjects:
if not related_object.is_a("IfcTask"):
@@ -103,7 +107,9 @@ class Usecase:
return
if task.TaskTime and task.TaskTime.ScheduleDuration:
duration = ifcopenshell.util.date.ifc2datetime(task.TaskTime.ScheduleDuration).days
duration = ifcopenshell.util.date.ifc2datetime(
task.TaskTime.ScheduleDuration
).days
duration_type = task.TaskTime.DurationType
else:
duration = 0
@@ -124,7 +130,9 @@ class Usecase:
{
"lag_time": 0
if not rel.TimeLag
else ifcopenshell.util.date.ifc2datetime(rel.TimeLag.LagValue.wrappedValue).days,
else ifcopenshell.util.date.ifc2datetime(
rel.TimeLag.LagValue.wrappedValue
).days,
"type": self.sequence_type_map[rel.SequenceType],
},
)
@@ -137,7 +145,9 @@ class Usecase:
if not predecessor_types:
self.edges.append(("start", task.id(), {"lag_time": 0, "type": "FS"}))
if task.TaskTime and task.TaskTime.ScheduleStart:
self.start_dates.append(ifcopenshell.util.date.ifc2datetime(task.TaskTime.ScheduleStart))
self.start_dates.append(
ifcopenshell.util.date.ifc2datetime(task.TaskTime.ScheduleStart)
)
if not successor_types:
self.edges.append((task.id(), "finish", {"lag_time": 0, "type": "FF"}))
@@ -154,13 +164,25 @@ class Usecase:
self.file,
task_time=task.TaskTime,
attributes={
"FreeFloat": ifcopenshell.util.date.datetime2ifc(data["free_float"], "IfcDuration"),
"TotalFloat": ifcopenshell.util.date.datetime2ifc(data["total_float"], "IfcDuration"),
"FreeFloat": ifcopenshell.util.date.datetime2ifc(
data["free_float"], "IfcDuration"
),
"TotalFloat": ifcopenshell.util.date.datetime2ifc(
data["total_float"], "IfcDuration"
),
"IsCritical": data["total_float"].days == 0,
"EarlyStart": ifcopenshell.util.date.datetime2ifc(data["early_start"], "IfcDateTime"),
"EarlyFinish": ifcopenshell.util.date.datetime2ifc(data["early_finish"], "IfcDateTime"),
"LateStart": ifcopenshell.util.date.datetime2ifc(data["late_start"], "IfcDateTime"),
"LateFinish": ifcopenshell.util.date.datetime2ifc(data["late_finish"], "IfcDateTime"),
"EarlyStart": ifcopenshell.util.date.datetime2ifc(
data["early_start"], "IfcDateTime"
),
"EarlyFinish": ifcopenshell.util.date.datetime2ifc(
data["early_finish"], "IfcDateTime"
),
"LateStart": ifcopenshell.util.date.datetime2ifc(
data["late_start"], "IfcDateTime"
),
"LateFinish": ifcopenshell.util.date.datetime2ifc(
data["late_finish"], "IfcDateTime"
),
},
)
@@ -190,10 +212,15 @@ class Usecase:
if edge["lag_time"]:
days += edge["lag_time"]
if days:
starts.append(datetime.datetime.combine(self.offset_date(finish, days, data), datetime.time(9)))
starts.append(
datetime.datetime.combine(
self.offset_date(finish, days, predecessor_data), datetime.time(9)
self.offset_date(finish, days, data), datetime.time(9)
)
)
starts.append(
datetime.datetime.combine(
self.offset_date(finish, days, predecessor_data),
datetime.time(9),
)
)
else:
@@ -204,7 +231,9 @@ class Usecase:
return
if edge["lag_time"]:
starts.append(self.offset_date(start, edge["lag_time"], data))
starts.append(self.offset_date(start, edge["lag_time"], predecessor_data))
starts.append(
self.offset_date(start, edge["lag_time"], predecessor_data)
)
else:
starts.append(start)
elif edge["type"] == "FF":
@@ -212,8 +241,12 @@ class Usecase:
if finish is None:
return
if edge["lag_time"]:
finishes.append(self.offset_date(finish, edge["lag_time"], data))
finishes.append(self.offset_date(finish, edge["lag_time"], predecessor_data))
finishes.append(
self.offset_date(finish, edge["lag_time"], data)
)
finishes.append(
self.offset_date(finish, edge["lag_time"], predecessor_data)
)
else:
finishes.append(finish)
elif edge["type"] == "SF":
@@ -225,11 +258,14 @@ class Usecase:
days += edge["lag_time"]
if days or edge["lag_time"]:
finishes.append(
datetime.datetime.combine(self.offset_date(start, days, data), datetime.time(17))
datetime.datetime.combine(
self.offset_date(start, days, data), datetime.time(17)
)
)
finishes.append(
datetime.datetime.combine(
self.offset_date(start, days, predecessor_data), datetime.time(17)
self.offset_date(start, days, predecessor_data),
datetime.time(17),
)
)
else:
@@ -247,7 +283,9 @@ class Usecase:
if potential_finish > data["early_finish"]:
data["early_finish"] = potential_finish
else:
data["early_start"] = ifcopenshell.util.sequence.get_start_or_finish_date(
data[
"early_start"
] = ifcopenshell.util.sequence.get_start_or_finish_date(
data["early_finish"],
datetime.timedelta(days=data["duration"]),
data["duration_type"],
@@ -303,10 +341,15 @@ class Usecase:
days += edge["lag_time"]
if days or edge["lag_time"]:
finishes.append(
datetime.datetime.combine(self.offset_date(start, -days, data), datetime.time(17))
datetime.datetime.combine(
self.offset_date(start, -days, data), datetime.time(17)
)
)
finishes.append(
datetime.datetime.combine(self.offset_date(start, -days, successor_data), datetime.time(17))
datetime.datetime.combine(
self.offset_date(start, -days, successor_data),
datetime.time(17),
)
)
else:
finishes.append(start)
@@ -325,12 +368,18 @@ class Usecase:
return
if edge["lag_time"]:
starts.append(self.offset_date(start, -edge["lag_time"], data))
starts.append(self.offset_date(start, -edge["lag_time"], successor_data))
starts.append(
self.offset_date(start, -edge["lag_time"], successor_data)
)
else:
starts.append(start)
free_floats.append(
self.calculate_free_float(
data["early_start"], successor_data["early_start"], edge["lag_time"], data, successor_data
data["early_start"],
successor_data["early_start"],
edge["lag_time"],
data,
successor_data,
)
)
elif edge["type"] == "FF":
@@ -338,13 +387,21 @@ class Usecase:
if finish is None:
return
if edge["lag_time"]:
finishes.append(self.offset_date(finish, -edge["lag_time"], data))
finishes.append(self.offset_date(finish, -edge["lag_time"], successor_data))
finishes.append(
self.offset_date(finish, -edge["lag_time"], data)
)
finishes.append(
self.offset_date(finish, -edge["lag_time"], successor_data)
)
else:
finishes.append(finish)
free_floats.append(
self.calculate_free_float(
data["early_finish"], successor_data["early_finish"], edge["lag_time"], data, successor_data
data["early_finish"],
successor_data["early_finish"],
edge["lag_time"],
data,
successor_data,
)
)
elif edge["type"] == "SF":
@@ -356,23 +413,37 @@ class Usecase:
days += edge["lag_time"]
if days:
starts.append(
datetime.datetime.combine(self.offset_date(finish, -days, data), datetime.time(9))
datetime.datetime.combine(
self.offset_date(finish, -days, data), datetime.time(9)
)
)
starts.append(
datetime.datetime.combine(self.offset_date(finish, -days, successor_data), datetime.time(9))
datetime.datetime.combine(
self.offset_date(finish, -days, successor_data),
datetime.time(9),
)
)
else:
starts.append(finish)
free_floats.append(
self.calculate_free_float(
data["early_start"], successor_data["early_finish"], edge["lag_time"], data, successor_data
data["early_start"],
successor_data["early_finish"],
edge["lag_time"],
data,
successor_data,
)
)
if starts and finishes:
data["late_start"] = min(starts)
data["late_finish"] = min(finishes)
if self.offset_date(data["late_start"], data["duration"], data) < data["late_finish"]:
data["late_finish"] = ifcopenshell.util.sequence.get_start_or_finish_date(
if (
self.offset_date(data["late_start"], data["duration"], data)
< data["late_finish"]
):
data[
"late_finish"
] = ifcopenshell.util.sequence.get_start_or_finish_date(
data["late_start"],
datetime.timedelta(days=data["duration"]),
data["duration_type"],
@@ -380,7 +451,9 @@ class Usecase:
date_type="FINISH",
)
else:
data["late_start"] = ifcopenshell.util.sequence.get_start_or_finish_date(
data[
"late_start"
] = ifcopenshell.util.sequence.get_start_or_finish_date(
data["late_finish"],
datetime.timedelta(days=data["duration"]),
data["duration_type"],
@@ -421,7 +494,9 @@ class Usecase:
data["total_float"] = data["late_finish"] - data["early_finish"]
# If the float is within the span of a single day, it may show as a 8 hours
if data["total_float"].seconds == 60 * 60 * 8:
data["total_float"] = datetime.timedelta(days=data["total_float"].days + 1)
data["total_float"] = datetime.timedelta(
days=data["total_float"].days + 1
)
data["free_float"] = min(free_floats) if free_floats else None
# If the float is within the span of a single day, it may show as a 8 hours
@@ -430,7 +505,14 @@ class Usecase:
return True
def calculate_free_float(self, predecessor_date, successor_date, lag_time, predecessor_data, successor_data):
def calculate_free_float(
self,
predecessor_date,
successor_date,
lag_time,
predecessor_data,
successor_data,
):
if not lag_time:
min_successor_date = successor_date
else: