machineconfig 4.1__py3-none-any.whl → 4.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- machineconfig/cluster/sessions_managers/utils/load_balancer.py +30 -145
- machineconfig/cluster/sessions_managers/utils/load_balancer_helper.py +145 -0
- {machineconfig-4.1.dist-info → machineconfig-4.2.dist-info}/METADATA +1 -1
- {machineconfig-4.1.dist-info → machineconfig-4.2.dist-info}/RECORD +7 -6
- {machineconfig-4.1.dist-info → machineconfig-4.2.dist-info}/WHEEL +0 -0
- {machineconfig-4.1.dist-info → machineconfig-4.2.dist-info}/entry_points.txt +0 -0
- {machineconfig-4.1.dist-info → machineconfig-4.2.dist-info}/top_level.txt +0 -0
|
@@ -1,162 +1,47 @@
|
|
|
1
1
|
|
|
2
2
|
from machineconfig.utils.schemas.layouts.layout_types import TabConfig, LayoutConfig
|
|
3
|
-
from machineconfig.utils.accessories import split_list
|
|
4
|
-
from typing import Literal
|
|
3
|
+
# from machineconfig.utils.accessories import split_list
|
|
4
|
+
from typing import Literal, Protocol
|
|
5
|
+
from machineconfig.cluster.sessions_managers.utils.load_balancer_helper import restrict_num_tabs_helper1, restrict_num_tabs_helper2, restrict_num_tabs_helper3, restrict_num_tabs_helper4
|
|
5
6
|
|
|
7
|
+
class COMMAND_SPLITTER(Protocol):
|
|
8
|
+
def __call__(self, command: str, to: int) -> list[str]: ...
|
|
6
9
|
|
|
7
10
|
|
|
8
|
-
def
|
|
9
|
-
"""Split tabs into chunks where each chunk's total weight <= max_weight."""
|
|
10
|
-
chunks: list[list[TabConfig]] = []
|
|
11
|
-
current_chunk: list[TabConfig] = []
|
|
12
|
-
current_weight = 0
|
|
13
|
-
for tab in tabs:
|
|
14
|
-
tab_weight = tab.get("tabWeight", 1)
|
|
15
|
-
if current_weight + tab_weight > max_weight and current_chunk:
|
|
16
|
-
chunks.append(current_chunk)
|
|
17
|
-
current_chunk = [tab]
|
|
18
|
-
current_weight = tab_weight
|
|
19
|
-
else:
|
|
20
|
-
current_chunk.append(tab)
|
|
21
|
-
current_weight += tab_weight
|
|
22
|
-
|
|
23
|
-
if current_chunk:
|
|
24
|
-
chunks.append(current_chunk)
|
|
25
|
-
|
|
26
|
-
return chunks
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def combine_tabs_into_super_tabs(tabs: list[TabConfig], num_super_tabs: int) -> list[TabConfig]:
|
|
30
|
-
"""Combine tabs into num_super_tabs super tabs with combined commands."""
|
|
31
|
-
if len(tabs) <= num_super_tabs:
|
|
32
|
-
return tabs # No need to combine
|
|
33
|
-
|
|
34
|
-
tab_groups = split_list(tabs, to=num_super_tabs)
|
|
35
|
-
super_tabs: list[TabConfig] = []
|
|
36
|
-
for idx, group in enumerate(tab_groups):
|
|
37
|
-
if len(group) == 1:
|
|
38
|
-
super_tabs.append(group[0])
|
|
39
|
-
else:
|
|
40
|
-
combined_command = "; ".join(tab["command"] for tab in group)
|
|
41
|
-
combined_name = f"super_tab_{idx+1}"
|
|
42
|
-
# Use startDir of the first tab
|
|
43
|
-
start_dir = group[0]["startDir"]
|
|
44
|
-
# Sum weights
|
|
45
|
-
total_weight = sum(tab.get("tabWeight", 1) for tab in group)
|
|
46
|
-
super_tabs.append({
|
|
47
|
-
"tabName": combined_name,
|
|
48
|
-
"startDir": start_dir,
|
|
49
|
-
"command": combined_command,
|
|
50
|
-
"tabWeight": total_weight
|
|
51
|
-
})
|
|
52
|
-
return super_tabs
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
def combine_tabs_by_weight_into_super_tabs(tabs: list[TabConfig], max_weight: int) -> list[TabConfig]:
|
|
56
|
-
"""Combine tabs into super tabs where each super tab has weight <= max_weight."""
|
|
57
|
-
tab_groups = split_tabs_by_weight(tabs, max_weight=max_weight)
|
|
58
|
-
super_tabs: list[TabConfig] = []
|
|
59
|
-
for idx, group in enumerate(tab_groups):
|
|
60
|
-
if len(group) == 1:
|
|
61
|
-
super_tabs.append(group[0])
|
|
62
|
-
else:
|
|
63
|
-
combined_command = "; ".join(tab["command"] for tab in group)
|
|
64
|
-
combined_name = f"super_tab_{idx+1}"
|
|
65
|
-
start_dir = group[0]["startDir"]
|
|
66
|
-
total_weight = sum(tab.get("tabWeight", 1) for tab in group)
|
|
67
|
-
super_tabs.append({
|
|
68
|
-
"tabName": combined_name,
|
|
69
|
-
"startDir": start_dir,
|
|
70
|
-
"command": combined_command,
|
|
71
|
-
"tabWeight": total_weight
|
|
72
|
-
})
|
|
73
|
-
return super_tabs
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
def restrict_num_tabs(layout_configs: list[LayoutConfig], max_thresh: int, threshold_type: Literal["number", "weight"], breaking_method: Literal["moreLayouts", "combineTabs"]) -> list[LayoutConfig]:
|
|
11
|
+
def limit_tab_num(layout_configs: list[LayoutConfig], max_thresh: int, threshold_type: Literal["number", "weight"], breaking_method: Literal["moreLayouts", "combineTabs"]) -> list[LayoutConfig]:
|
|
77
12
|
match threshold_type, breaking_method:
|
|
78
13
|
case "number", "moreLayouts":
|
|
79
|
-
return
|
|
14
|
+
return restrict_num_tabs_helper1(layout_configs=layout_configs, max_thresh=max_thresh, threshold_type=threshold_type, breaking_method=breaking_method)
|
|
80
15
|
case "number", "combineTabs":
|
|
81
|
-
return
|
|
16
|
+
return restrict_num_tabs_helper2(layout_configs=layout_configs, max_thresh=max_thresh, threshold_type=threshold_type, breaking_method=breaking_method)
|
|
82
17
|
case "weight", "moreLayouts":
|
|
83
|
-
return
|
|
18
|
+
return restrict_num_tabs_helper3(layout_configs=layout_configs, max_thresh=max_thresh, threshold_type=threshold_type, breaking_method=breaking_method)
|
|
84
19
|
case "weight", "combineTabs":
|
|
85
|
-
return
|
|
20
|
+
return restrict_num_tabs_helper4(layout_configs=layout_configs, max_thresh=max_thresh, threshold_type=threshold_type, breaking_method=breaking_method)
|
|
86
21
|
case _:
|
|
87
22
|
raise NotImplementedError(f"The combination {threshold_type}, {breaking_method} is not implemented")
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
def _restrict_num_tabs_helper1(layout_configs: list[LayoutConfig], max_thresh: int, threshold_type: Literal["number"], breaking_method: Literal["moreLayouts"]) -> list[LayoutConfig]:
|
|
91
|
-
"""When threshold is exceeded, create more layouts with max_thresh tabs each."""
|
|
92
|
-
new_layout_configs: list[LayoutConfig] = []
|
|
93
|
-
for a_layout_config in layout_configs:
|
|
94
|
-
if len(a_layout_config["layoutTabs"]) > max_thresh:
|
|
95
|
-
print(f"Layout '{a_layout_config['layoutName']}' has too many tabs ({len(a_layout_config['layoutTabs'])} > {max_thresh}). Splitting into multiple layouts.")
|
|
96
|
-
tab_chunks = split_list(a_layout_config["layoutTabs"], every=max_thresh)
|
|
97
|
-
for idx, tab_chunk in enumerate(tab_chunks):
|
|
98
|
-
new_layout_configs.append({
|
|
99
|
-
"layoutName": f"{a_layout_config['layoutName']}_part{idx+1}",
|
|
100
|
-
"layoutTabs": tab_chunk
|
|
101
|
-
})
|
|
102
|
-
else:
|
|
103
|
-
print(f"Layout '{a_layout_config['layoutName']}' has acceptable number of tabs ({len(a_layout_config['layoutTabs'])} <= {max_thresh}). Keeping as is.")
|
|
104
|
-
new_layout_configs.append(a_layout_config)
|
|
105
|
-
return new_layout_configs
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
def _restrict_num_tabs_helper2(layout_configs: list[LayoutConfig], max_thresh: int, threshold_type: Literal["number"], breaking_method: Literal["combineTabs"]) -> list[LayoutConfig]:
|
|
109
|
-
"""When threshold is exceeded, combine tabs into super tabs to reduce count to max_thresh."""
|
|
110
|
-
new_layout_configs: list[LayoutConfig] = []
|
|
111
|
-
for a_layout_config in layout_configs:
|
|
112
|
-
num_tabs = len(a_layout_config["layoutTabs"])
|
|
113
|
-
if num_tabs > max_thresh:
|
|
114
|
-
print(f"Layout '{a_layout_config['layoutName']}' has too many tabs ({num_tabs} > {max_thresh}). Combining into {max_thresh} super tabs.")
|
|
115
|
-
super_tabs = combine_tabs_into_super_tabs(a_layout_config["layoutTabs"], num_super_tabs=max_thresh)
|
|
116
|
-
new_layout_configs.append({
|
|
117
|
-
"layoutName": a_layout_config["layoutName"],
|
|
118
|
-
"layoutTabs": super_tabs
|
|
119
|
-
})
|
|
120
|
-
else:
|
|
121
|
-
print(f"Layout '{a_layout_config['layoutName']}' has acceptable number of tabs ({num_tabs} <= {max_thresh}). Keeping as is.")
|
|
122
|
-
new_layout_configs.append(a_layout_config)
|
|
123
|
-
return new_layout_configs
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
def _restrict_num_tabs_helper3(layout_configs: list[LayoutConfig], max_thresh: int, threshold_type: Literal["weight"], breaking_method: Literal["moreLayouts"]) -> list[LayoutConfig]:
|
|
127
|
-
"""When threshold is exceeded, create more layouts with max_thresh total weight each."""
|
|
128
|
-
new_layout_configs: list[LayoutConfig] = []
|
|
129
|
-
for a_layout_config in layout_configs:
|
|
130
|
-
layout_weight = sum(tab.get("tabWeight", 1) for tab in a_layout_config["layoutTabs"])
|
|
131
|
-
if layout_weight > max_thresh:
|
|
132
|
-
print(f"Layout '{a_layout_config['layoutName']}' has too much weight ({layout_weight} > {max_thresh}). Splitting into multiple layouts.")
|
|
133
|
-
tab_chunks = split_tabs_by_weight(a_layout_config["layoutTabs"], max_weight=max_thresh)
|
|
134
|
-
for idx, tab_chunk in enumerate(tab_chunks):
|
|
135
|
-
new_layout_configs.append({
|
|
136
|
-
"layoutName": f"{a_layout_config['layoutName']}_part{idx+1}",
|
|
137
|
-
"layoutTabs": tab_chunk
|
|
138
|
-
})
|
|
139
|
-
else:
|
|
140
|
-
print(f"Layout '{a_layout_config['layoutName']}' has acceptable total weight ({layout_weight} <= {max_thresh}). Keeping as is.")
|
|
141
|
-
new_layout_configs.append(a_layout_config)
|
|
142
|
-
return new_layout_configs
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
def _restrict_num_tabs_helper4(layout_configs: list[LayoutConfig], max_thresh: int, threshold_type: Literal["weight"], breaking_method: Literal["combineTabs"]) -> list[LayoutConfig]:
|
|
146
|
-
"""When threshold is exceeded, combine tabs into super tabs with weight <= max_thresh."""
|
|
23
|
+
def limit_tab_weight(layout_configs: list[LayoutConfig], max_weight: int, command_splitter: COMMAND_SPLITTER) -> list[LayoutConfig]:
|
|
147
24
|
new_layout_configs: list[LayoutConfig] = []
|
|
148
25
|
for a_layout_config in layout_configs:
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
26
|
+
new_tabs: list[TabConfig] = []
|
|
27
|
+
for tab in a_layout_config["layoutTabs"]:
|
|
28
|
+
tab_weight = tab.get("tabWeight", 1)
|
|
29
|
+
if tab_weight > max_weight:
|
|
30
|
+
print(f"Tab '{tab['tabName']}' in layout '{a_layout_config['layoutName']}' has too much weight ({tab_weight} > {max_weight}). Splitting command.")
|
|
31
|
+
split_commands = command_splitter(tab["command"], to=max_weight)
|
|
32
|
+
for idx, cmd in enumerate(split_commands):
|
|
33
|
+
new_tabs.append({
|
|
34
|
+
"tabName": f"{tab['tabName']}_part{idx+1}",
|
|
35
|
+
"startDir": tab["startDir"],
|
|
36
|
+
"command": cmd,
|
|
37
|
+
"tabWeight": max_weight
|
|
38
|
+
})
|
|
39
|
+
else:
|
|
40
|
+
new_tabs.append(tab)
|
|
41
|
+
new_layout_configs.append({
|
|
42
|
+
"layoutName": a_layout_config["layoutName"],
|
|
43
|
+
"layoutTabs": new_tabs
|
|
44
|
+
})
|
|
160
45
|
return new_layout_configs
|
|
161
46
|
|
|
162
47
|
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
from machineconfig.utils.accessories import split_list
|
|
2
|
+
from machineconfig.utils.schemas.layouts.layout_types import TabConfig, LayoutConfig
|
|
3
|
+
|
|
4
|
+
from typing import Literal
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def split_tabs_by_weight(tabs: list[TabConfig], max_weight: int) -> list[list[TabConfig]]:
|
|
8
|
+
"""Split tabs into chunks where each chunk's total weight <= max_weight."""
|
|
9
|
+
chunks: list[list[TabConfig]] = []
|
|
10
|
+
current_chunk: list[TabConfig] = []
|
|
11
|
+
current_weight = 0
|
|
12
|
+
for tab in tabs:
|
|
13
|
+
tab_weight = tab.get("tabWeight", 1)
|
|
14
|
+
if current_weight + tab_weight > max_weight and current_chunk:
|
|
15
|
+
chunks.append(current_chunk)
|
|
16
|
+
current_chunk = [tab]
|
|
17
|
+
current_weight = tab_weight
|
|
18
|
+
else:
|
|
19
|
+
current_chunk.append(tab)
|
|
20
|
+
current_weight += tab_weight
|
|
21
|
+
|
|
22
|
+
if current_chunk:
|
|
23
|
+
chunks.append(current_chunk)
|
|
24
|
+
|
|
25
|
+
return chunks
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def combine_tabs_into_super_tabs(tabs: list[TabConfig], num_super_tabs: int) -> list[TabConfig]:
|
|
29
|
+
"""Combine tabs into num_super_tabs super tabs with combined commands."""
|
|
30
|
+
if len(tabs) <= num_super_tabs:
|
|
31
|
+
return tabs # No need to combine
|
|
32
|
+
|
|
33
|
+
tab_groups = split_list(tabs, to=num_super_tabs)
|
|
34
|
+
super_tabs: list[TabConfig] = []
|
|
35
|
+
for idx, group in enumerate(tab_groups):
|
|
36
|
+
if len(group) == 1:
|
|
37
|
+
super_tabs.append(group[0])
|
|
38
|
+
else:
|
|
39
|
+
combined_command = "; ".join(tab["command"] for tab in group)
|
|
40
|
+
combined_name = f"super_tab_{idx+1}"
|
|
41
|
+
# Use startDir of the first tab
|
|
42
|
+
start_dir = group[0]["startDir"]
|
|
43
|
+
# Sum weights
|
|
44
|
+
total_weight = sum(tab.get("tabWeight", 1) for tab in group)
|
|
45
|
+
super_tabs.append({
|
|
46
|
+
"tabName": combined_name,
|
|
47
|
+
"startDir": start_dir,
|
|
48
|
+
"command": combined_command,
|
|
49
|
+
"tabWeight": total_weight
|
|
50
|
+
})
|
|
51
|
+
return super_tabs
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def combine_tabs_by_weight_into_super_tabs(tabs: list[TabConfig], max_weight: int) -> list[TabConfig]:
|
|
55
|
+
"""Combine tabs into super tabs where each super tab has weight <= max_weight."""
|
|
56
|
+
tab_groups = split_tabs_by_weight(tabs, max_weight=max_weight)
|
|
57
|
+
super_tabs: list[TabConfig] = []
|
|
58
|
+
for idx, group in enumerate(tab_groups):
|
|
59
|
+
if len(group) == 1:
|
|
60
|
+
super_tabs.append(group[0])
|
|
61
|
+
else:
|
|
62
|
+
combined_command = "; ".join(tab["command"] for tab in group)
|
|
63
|
+
combined_name = f"super_tab_{idx+1}"
|
|
64
|
+
start_dir = group[0]["startDir"]
|
|
65
|
+
total_weight = sum(tab.get("tabWeight", 1) for tab in group)
|
|
66
|
+
super_tabs.append({
|
|
67
|
+
"tabName": combined_name,
|
|
68
|
+
"startDir": start_dir,
|
|
69
|
+
"command": combined_command,
|
|
70
|
+
"tabWeight": total_weight
|
|
71
|
+
})
|
|
72
|
+
return super_tabs
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def restrict_num_tabs_helper1(layout_configs: list[LayoutConfig], max_thresh: int, threshold_type: Literal["number"], breaking_method: Literal["moreLayouts"]) -> list[LayoutConfig]:
|
|
76
|
+
"""When threshold is exceeded, create more layouts with max_thresh tabs each."""
|
|
77
|
+
new_layout_configs: list[LayoutConfig] = []
|
|
78
|
+
for a_layout_config in layout_configs:
|
|
79
|
+
if len(a_layout_config["layoutTabs"]) > max_thresh:
|
|
80
|
+
print(f"Layout '{a_layout_config['layoutName']}' has too many tabs ({len(a_layout_config['layoutTabs'])} > {max_thresh}). Splitting into multiple layouts.")
|
|
81
|
+
tab_chunks = split_list(a_layout_config["layoutTabs"], every=max_thresh)
|
|
82
|
+
for idx, tab_chunk in enumerate(tab_chunks):
|
|
83
|
+
new_layout_configs.append({
|
|
84
|
+
"layoutName": f"{a_layout_config['layoutName']}_part{idx+1}",
|
|
85
|
+
"layoutTabs": tab_chunk
|
|
86
|
+
})
|
|
87
|
+
else:
|
|
88
|
+
print(f"Layout '{a_layout_config['layoutName']}' has acceptable number of tabs ({len(a_layout_config['layoutTabs'])} <= {max_thresh}). Keeping as is.")
|
|
89
|
+
new_layout_configs.append(a_layout_config)
|
|
90
|
+
return new_layout_configs
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def restrict_num_tabs_helper2(layout_configs: list[LayoutConfig], max_thresh: int, threshold_type: Literal["number"], breaking_method: Literal["combineTabs"]) -> list[LayoutConfig]:
|
|
94
|
+
"""When threshold is exceeded, combine tabs into super tabs to reduce count to max_thresh."""
|
|
95
|
+
new_layout_configs: list[LayoutConfig] = []
|
|
96
|
+
for a_layout_config in layout_configs:
|
|
97
|
+
num_tabs = len(a_layout_config["layoutTabs"])
|
|
98
|
+
if num_tabs > max_thresh:
|
|
99
|
+
print(f"Layout '{a_layout_config['layoutName']}' has too many tabs ({num_tabs} > {max_thresh}). Combining into {max_thresh} super tabs.")
|
|
100
|
+
super_tabs = combine_tabs_into_super_tabs(a_layout_config["layoutTabs"], num_super_tabs=max_thresh)
|
|
101
|
+
new_layout_configs.append({
|
|
102
|
+
"layoutName": a_layout_config["layoutName"],
|
|
103
|
+
"layoutTabs": super_tabs
|
|
104
|
+
})
|
|
105
|
+
else:
|
|
106
|
+
print(f"Layout '{a_layout_config['layoutName']}' has acceptable number of tabs ({num_tabs} <= {max_thresh}). Keeping as is.")
|
|
107
|
+
new_layout_configs.append(a_layout_config)
|
|
108
|
+
return new_layout_configs
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def restrict_num_tabs_helper3(layout_configs: list[LayoutConfig], max_thresh: int, threshold_type: Literal["weight"], breaking_method: Literal["moreLayouts"]) -> list[LayoutConfig]:
|
|
112
|
+
"""When threshold is exceeded, create more layouts with max_thresh total weight each."""
|
|
113
|
+
new_layout_configs: list[LayoutConfig] = []
|
|
114
|
+
for a_layout_config in layout_configs:
|
|
115
|
+
layout_weight = sum(tab.get("tabWeight", 1) for tab in a_layout_config["layoutTabs"])
|
|
116
|
+
if layout_weight > max_thresh:
|
|
117
|
+
print(f"Layout '{a_layout_config['layoutName']}' has too much weight ({layout_weight} > {max_thresh}). Splitting into multiple layouts.")
|
|
118
|
+
tab_chunks = split_tabs_by_weight(a_layout_config["layoutTabs"], max_weight=max_thresh)
|
|
119
|
+
for idx, tab_chunk in enumerate(tab_chunks):
|
|
120
|
+
new_layout_configs.append({
|
|
121
|
+
"layoutName": f"{a_layout_config['layoutName']}_part{idx+1}",
|
|
122
|
+
"layoutTabs": tab_chunk
|
|
123
|
+
})
|
|
124
|
+
else:
|
|
125
|
+
print(f"Layout '{a_layout_config['layoutName']}' has acceptable total weight ({layout_weight} <= {max_thresh}). Keeping as is.")
|
|
126
|
+
new_layout_configs.append(a_layout_config)
|
|
127
|
+
return new_layout_configs
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def restrict_num_tabs_helper4(layout_configs: list[LayoutConfig], max_thresh: int, threshold_type: Literal["weight"], breaking_method: Literal["combineTabs"]) -> list[LayoutConfig]:
|
|
131
|
+
"""When threshold is exceeded, combine tabs into super tabs with weight <= max_thresh."""
|
|
132
|
+
new_layout_configs: list[LayoutConfig] = []
|
|
133
|
+
for a_layout_config in layout_configs:
|
|
134
|
+
layout_weight = sum(tab.get("tabWeight", 1) for tab in a_layout_config["layoutTabs"])
|
|
135
|
+
if layout_weight > max_thresh:
|
|
136
|
+
print(f"Layout '{a_layout_config['layoutName']}' has too much weight ({layout_weight} > {max_thresh}). Combining into super tabs with weight <= {max_thresh}.")
|
|
137
|
+
super_tabs = combine_tabs_by_weight_into_super_tabs(a_layout_config["layoutTabs"], max_weight=max_thresh)
|
|
138
|
+
new_layout_configs.append({
|
|
139
|
+
"layoutName": a_layout_config["layoutName"],
|
|
140
|
+
"layoutTabs": super_tabs
|
|
141
|
+
})
|
|
142
|
+
else:
|
|
143
|
+
print(f"Layout '{a_layout_config['layoutName']}' has acceptable total weight ({layout_weight} <= {max_thresh}). Keeping as is.")
|
|
144
|
+
new_layout_configs.append(a_layout_config)
|
|
145
|
+
return new_layout_configs
|
|
@@ -20,7 +20,8 @@ machineconfig/cluster/sessions_managers/zellij_local_manager.py,sha256=4ap0Gtd8w
|
|
|
20
20
|
machineconfig/cluster/sessions_managers/zellij_remote.py,sha256=3gz-wgqVW7B-4CgvJq0fiDh8691h4yeK3Xh3CfSPc2s,8749
|
|
21
21
|
machineconfig/cluster/sessions_managers/zellij_remote_manager.py,sha256=T-j1KMV7mDTeGSHC5To0_JmqNtjSR_LVZT9VanP4lyI,8313
|
|
22
22
|
machineconfig/cluster/sessions_managers/utils/enhanced_command_runner.py,sha256=3vcQVg-HHa_WTxBGPtKMAdoSqJVa2EO5KAtrY8a6I3c,5264
|
|
23
|
-
machineconfig/cluster/sessions_managers/utils/load_balancer.py,sha256=
|
|
23
|
+
machineconfig/cluster/sessions_managers/utils/load_balancer.py,sha256=q9k3ofvgcZzx_oKtaymWf75JpDAs5pagwRRYzfVgu30,3176
|
|
24
|
+
machineconfig/cluster/sessions_managers/utils/load_balancer_helper.py,sha256=i5TRittC1IWTgMZNyG8AR5qq-3WrGp3xgIx2m5ktT7g,7526
|
|
24
25
|
machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py,sha256=CFGcZPFTZQJtFf0OvMUHhadZ0qbImCP3wxvbWYVcVYo,7445
|
|
25
26
|
machineconfig/cluster/sessions_managers/wt_utils/process_monitor.py,sha256=Mitm7mKiKl5lT0OiEUHAqVg2Q21RjsKO1-hpJTHJ5lM,15196
|
|
26
27
|
machineconfig/cluster/sessions_managers/wt_utils/remote_executor.py,sha256=lApUy67_WhfaBXqt0meZSx_QvwiXjN0YLdyE3c7kP_s,6744
|
|
@@ -405,8 +406,8 @@ machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=CCs5ebomW1ac
|
|
|
405
406
|
machineconfig/utils/schemas/installer/installer_types.py,sha256=DLagmIe0G5-xg7HZ9VrlFCDk1gIbwvX7O4gZjwq0wh0,1326
|
|
406
407
|
machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
|
|
407
408
|
machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
|
|
408
|
-
machineconfig-4.
|
|
409
|
-
machineconfig-4.
|
|
410
|
-
machineconfig-4.
|
|
411
|
-
machineconfig-4.
|
|
412
|
-
machineconfig-4.
|
|
409
|
+
machineconfig-4.2.dist-info/METADATA,sha256=rffGO9RS2gCZbESOyc4G44R-Txmfx8SAOlpSQcZGXhY,7031
|
|
410
|
+
machineconfig-4.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
411
|
+
machineconfig-4.2.dist-info/entry_points.txt,sha256=c6ea0waVseT1rbfz1bw3k-eph2yVaB67x9hx64Mpvfs,1066
|
|
412
|
+
machineconfig-4.2.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
|
|
413
|
+
machineconfig-4.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|