FILALIHicham commited on
Commit
f3a0d02
·
1 Parent(s): 5dc0abf

Add dynamic components in the Infrastructure tab

Browse files
config.py CHANGED
@@ -10,7 +10,7 @@ OBLIGATORY_FIELDS = [
10
  "taskType", "taskFamily", "taskStage", "algorithmName", "dataType",
11
  "volume", "volumeUnit", "nbRequest", "measurementMethod", "unit",
12
  "powerConsumption", "os", "language", "infraType", "componentName",
13
- "nbComponent", "country", "hashAlgorithm", "cryptographicAlgorithm", "value"
14
  ]
15
 
16
  # Dropdown Options
 
10
  "taskType", "taskFamily", "taskStage", "algorithmName", "dataType",
11
  "volume", "volumeUnit", "nbRequest", "measurementMethod", "unit",
12
  "powerConsumption", "os", "language", "infraType", "componentName",
13
+ "nbComponent", "country", "hashAlgorithm", "cryptographicAlgorithm", "ecryptedValue"
14
  ]
15
 
16
  # Dropdown Options
services/huggingface.py CHANGED
@@ -53,7 +53,6 @@ def create_flattened_data(data):
53
 
54
  # Handle inference properties
55
  inference_props = data.get("task", {}).get("dataset", [{}])[0].get("inferenceProperties", [])
56
- print("Extracted inference properties:", inference_props)
57
 
58
  # Process inference properties
59
  inference_data = []
@@ -76,6 +75,30 @@ def create_flattened_data(data):
76
  nbWordsOutput_str = ", ".join([str(p["nbWordsOutput"]) for p in inference_data if p.get("nbWordsOutput")]) if inference_data else None
77
  contextWindowSize_str = ", ".join([str(p["contextWindowSize"]) for p in inference_data if p.get("contextWindowSize")]) if inference_data else None
78
  cache_str = ", ".join([str(p["cache"]) for p in inference_data if p.get("cache")]) if inference_data else None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  return {
80
  # Header
81
  "licensing": [data["header"]["licensing"]],
@@ -150,13 +173,13 @@ def create_flattened_data(data):
150
  "infraType": [data["infrastructure"]["infraType"]],
151
  "cloudProvider": [data["infrastructure"]["cloudProvider"]],
152
  "cloudInstance": [data["infrastructure"]["cloudInstance"]],
153
- "componentName": [data["infrastructure"]["components"][0]["componentName"]],
154
- "nbComponent": [data["infrastructure"]["components"][0]["nbComponent"]],
155
- "memorySize": [data["infrastructure"]["components"][0]["memorySize"]],
156
- "manufacturer_infra": [data["infrastructure"]["components"][0]["manufacturer"]],
157
- "family": [data["infrastructure"]["components"][0]["family"]],
158
- "series": [data["infrastructure"]["components"][0]["series"]],
159
- "share": [data["infrastructure"]["components"][0]["share"]],
160
 
161
  # Environment
162
  "country": [data["environment"]["country"]],
@@ -173,5 +196,5 @@ def create_flattened_data(data):
173
  # Hash
174
  "hashAlgorithm": [data["$hash"]["hashAlgorithm"]],
175
  "cryptographicAlgorithm": [data["$hash"]["cryptographicAlgorithm"]],
176
- "value": [data["$hash"]["value"]]
177
  }
 
53
 
54
  # Handle inference properties
55
  inference_props = data.get("task", {}).get("dataset", [{}])[0].get("inferenceProperties", [])
 
56
 
57
  # Process inference properties
58
  inference_data = []
 
75
  nbWordsOutput_str = ", ".join([str(p["nbWordsOutput"]) for p in inference_data if p.get("nbWordsOutput")]) if inference_data else None
76
  contextWindowSize_str = ", ".join([str(p["contextWindowSize"]) for p in inference_data if p.get("contextWindowSize")]) if inference_data else None
77
  cache_str = ", ".join([str(p["cache"]) for p in inference_data if p.get("cache")]) if inference_data else None
78
+
79
+ # Handle components
80
+ components = data.get("infrastructure", {}).get("components", [])
81
+ component_data = []
82
+ for comp in components:
83
+ if comp:
84
+ component_data.append({
85
+ "componentName": comp.get("componentName"),
86
+ "nbComponent": comp.get("nbComponent"),
87
+ "memorySize": comp.get("memorySize"),
88
+ "manufacturer": comp.get("manufacturer"),
89
+ "family": comp.get("family"),
90
+ "series": comp.get("series"),
91
+ "share": comp.get("share")
92
+ })
93
+
94
+ componentName_str = ", ".join([str(p["componentName"]) for p in component_data if p.get("componentName")]) if component_data else None
95
+ nbComponent_str = ", ".join([str(p["nbComponent"]) for p in component_data if p.get("nbComponent")]) if component_data else None
96
+ memorySize_str = ", ".join([str(p["memorySize"]) for p in component_data if p.get("memorySize")]) if component_data else None
97
+ manufacturer_infra_str = ", ".join([str(p["manufacturer"]) for p in component_data if p.get("manufacturer")]) if component_data else None
98
+ family_str = ", ".join([str(p["family"]) for p in component_data if p.get("family")]) if component_data else None
99
+ series_str = ", ".join([str(p["series"]) for p in component_data if p.get("series")]) if component_data else None
100
+ share_str = ", ".join([str(p["share"]) for p in component_data if p.get("share")]) if component_data else None
101
+
102
  return {
103
  # Header
104
  "licensing": [data["header"]["licensing"]],
 
173
  "infraType": [data["infrastructure"]["infraType"]],
174
  "cloudProvider": [data["infrastructure"]["cloudProvider"]],
175
  "cloudInstance": [data["infrastructure"]["cloudInstance"]],
176
+ "componentName": [componentName_str],
177
+ "nbComponent": [nbComponent_str],
178
+ "memorySize": [memorySize_str],
179
+ "manufacturer_infra": [manufacturer_infra_str],
180
+ "family": [family_str],
181
+ "series": [series_str],
182
+ "share": [share_str],
183
 
184
  # Environment
185
  "country": [data["environment"]["country"]],
 
196
  # Hash
197
  "hashAlgorithm": [data["$hash"]["hashAlgorithm"]],
198
  "cryptographicAlgorithm": [data["$hash"]["cryptographicAlgorithm"]],
199
+ "value": [data["$hash"]["ecryptedValue"]]
200
  }
services/json_generator.py CHANGED
@@ -32,24 +32,39 @@ def generate_json(
32
  """Generate JSON data from form inputs."""
33
  # Process hyperparameters
34
  hyperparameters = []
35
- for name, value in zip(hyperparameter_names, hyperparameter_values):
36
- if name and value:
37
- hyperparameters.append({
38
- "name": name,
39
- "value": value
40
- })
41
-
42
  # Process inference properties
43
  inference_props_list = []
44
- for i in range(len(nbRequest)):
 
45
  inference_props_list.append({
46
- "nbRequest": nbRequest[i],
47
- "nbTokensInput": nbTokensInput[i],
48
- "nbWordsInput": nbWordsInput[i],
49
- "nbTokensOutput": nbTokensOutput[i],
50
- "nbWordsOutput": nbWordsOutput[i],
51
- "contextWindowSize": contextWindowSize[i],
52
- "cache": cache[i]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  })
54
 
55
  data = {
@@ -137,17 +152,7 @@ def generate_json(
137
  "infraType": infraType,
138
  "cloudProvider": cloudProvider,
139
  "cloudInstance": cloudInstance,
140
- "components": [
141
- {
142
- "componentName": componentName,
143
- "nbComponent": nbComponent,
144
- "memorySize": memorySize,
145
- "manufacturer": manufacturer_infra,
146
- "family": family,
147
- "series": series,
148
- "share": share
149
- }
150
- ]
151
  },
152
  "environment": {
153
  "country": country,
@@ -162,7 +167,7 @@ def generate_json(
162
  "$hash": {
163
  "hashAlgorithm": hashAlgorithm,
164
  "cryptographicAlgorithm": cryptographicAlgorithm,
165
- "value": value_hash
166
  }
167
  }
168
 
 
32
  """Generate JSON data from form inputs."""
33
  # Process hyperparameters
34
  hyperparameters = []
35
+ max_length = max(len(hyperparameter_names), len(hyperparameter_values))
36
+ for i in range(max_length):
37
+ hyperparameters.append({
38
+ "name": hyperparameter_names[i] if i < len(hyperparameter_names) and hyperparameter_names[i] else "",
39
+ "value": hyperparameter_values[i] if i < len(hyperparameter_values) and hyperparameter_values[i] else ""
40
+ })
41
+
42
  # Process inference properties
43
  inference_props_list = []
44
+ max_length = max(len(nbRequest), len(nbTokensInput), len(nbWordsInput), len(nbTokensOutput), len(nbWordsOutput), len(contextWindowSize), len(cache))
45
+ for i in range(max_length):
46
  inference_props_list.append({
47
+ "nbRequest": nbRequest[i] if i < len(nbRequest) and nbRequest[i] else "",
48
+ "nbTokensInput": nbTokensInput[i] if i < len(nbTokensInput) and nbTokensInput[i] else "",
49
+ "nbWordsInput": nbWordsInput[i] if i < len(nbWordsInput) and nbWordsInput[i] else "",
50
+ "nbTokensOutput": nbTokensOutput[i] if i < len(nbTokensOutput) and nbTokensOutput[i] else "",
51
+ "nbWordsOutput": nbWordsOutput[i] if i < len(nbWordsOutput) and nbWordsOutput[i] else "",
52
+ "contextWindowSize": contextWindowSize[i] if i < len(contextWindowSize) and contextWindowSize[i] else "",
53
+ "cache": cache[i] if i < len(cache) and cache[i] else ""
54
+ })
55
+
56
+ # Process components
57
+ components_list = []
58
+ max_length = max(len(componentName), len(nbComponent), len(memorySize), len(manufacturer_infra), len(family), len(series), len(share))
59
+ for i in range(max_length):
60
+ components_list.append({
61
+ "componentName": componentName[i] if i < len(componentName) and componentName[i] else "",
62
+ "nbComponent": nbComponent[i] if i < len(nbComponent) and nbComponent[i] else "",
63
+ "memorySize": memorySize[i] if i < len(memorySize) and memorySize[i] else "",
64
+ "manufacturer": manufacturer_infra[i] if i < len(manufacturer_infra) and manufacturer_infra[i] else "",
65
+ "family": family[i] if i < len(family) and family[i] else "",
66
+ "series": series[i] if i < len(series) and series[i] else "",
67
+ "share": share[i] if i < len(share) and share[i] else ""
68
  })
69
 
70
  data = {
 
152
  "infraType": infraType,
153
  "cloudProvider": cloudProvider,
154
  "cloudInstance": cloudInstance,
155
+ "components": components_list
 
 
 
 
 
 
 
 
 
 
156
  },
157
  "environment": {
158
  "country": country,
 
167
  "$hash": {
168
  "hashAlgorithm": hashAlgorithm,
169
  "cryptographicAlgorithm": cryptographicAlgorithm,
170
+ "ecryptedValue": value_hash
171
  }
172
  }
173
 
ui/form_components.py CHANGED
@@ -280,13 +280,49 @@ def create_infrastructure_tab():
280
  )
281
  cloudProvider = gr.Textbox(label="Cloud Provider", info="(name of your cloud provider)")
282
  cloudInstance = gr.Textbox(label="Cloud Instance", info="(name of your cloud instance)")
283
- componentName = gr.Textbox(label="Component Name", info="Required field<br>(type of subsystem part)")
284
- nbComponent = gr.Textbox(label="Number of Components", info="Required field<br>(number of items of this component)")
285
- memorySize = gr.Textbox(label="Memory Size", info="(size of memory in Gbytes)")
286
- manufacturer_infra = gr.Textbox(label="Manufacturer", info="(name of the manufacturer)")
287
- family = gr.Textbox(label="Family", info="(family of this component)")
288
- series = gr.Textbox(label="Series", info="(series of this component)")
289
- share = gr.Textbox(label="Share", info="(percentage of equipment used)")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
290
 
291
  return [
292
  infraType, cloudProvider, cloudInstance, componentName,
 
280
  )
281
  cloudProvider = gr.Textbox(label="Cloud Provider", info="(name of your cloud provider)")
282
  cloudInstance = gr.Textbox(label="Cloud Instance", info="(name of your cloud instance)")
283
+ with gr.Accordion("Components"):
284
+ _, componentName, nbComponent, memorySize, manufacturer_infra, family, series, share, add_component_btn = create_dynamic_section(
285
+ section_name="Component",
286
+ fields_config=[
287
+ {
288
+ "type": gr.Textbox,
289
+ "label": "Component Name",
290
+ "info": "Required field<br>(type of subsystem part)",
291
+ },
292
+ {
293
+ "type": gr.Textbox,
294
+ "label": "Number of Components",
295
+ "info": "Required field<br>(number of items of this component)",
296
+ },
297
+ {
298
+ "type": gr.Textbox,
299
+ "label": "Memory Size",
300
+ "info": "(size of memory in Gbytes)",
301
+ },
302
+ {
303
+ "type": gr.Textbox,
304
+ "label": "Manufacturer",
305
+ "info": "(name of the manufacturer)",
306
+ },
307
+ {
308
+ "type": gr.Textbox,
309
+ "label": "Family",
310
+ "info": "(family of this component)",
311
+ },
312
+ {
313
+ "type": gr.Textbox,
314
+ "label": "Series",
315
+ "info": "(series of this component)",
316
+ },
317
+ {
318
+ "type": gr.Textbox,
319
+ "label": "Share",
320
+ "info": "(percentage of equipment used)",
321
+ }
322
+ ],
323
+ initial_count=0,
324
+ layout="column"
325
+ )
326
 
327
  return [
328
  infraType, cloudProvider, cloudInstance, componentName,