Spaces:
Running
on
Zero
Running
on
Zero
Commit
Β·
580e68f
1
Parent(s):
9d4ae64
fixed weird hueforge csv formatting.
Browse files
app.py
CHANGED
@@ -363,11 +363,10 @@ def create_empty_error_outputs(log_message=""):
|
|
363 |
|
364 |
def load_filaments_from_json_upload(file_obj):
|
365 |
"""
|
366 |
-
Called when the user picks a .json file
|
367 |
-
|
368 |
-
{"Filaments": [...]} variant.
|
369 |
"""
|
370 |
-
#
|
371 |
if file_obj is None:
|
372 |
current_script_df = filament_df_state.value
|
373 |
if current_script_df is not None and not current_script_df.empty:
|
@@ -381,12 +380,27 @@ def load_filaments_from_json_upload(file_obj):
|
|
381 |
try:
|
382 |
with open(file_obj.name, "r", encoding="utf-8") as f:
|
383 |
data = json.load(f)
|
384 |
-
|
385 |
-
# Hueforge sometimes nests the list under the βFilamentsβ key
|
386 |
if isinstance(data, dict) and "Filaments" in data:
|
387 |
data = data["Filaments"]
|
388 |
|
389 |
df_loaded = pd.DataFrame(data)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
390 |
df_loaded = ensure_required_cols(df_loaded, in_display_space=False)
|
391 |
|
392 |
expected_cols = ["Brand", " Name", " TD", " Color"]
|
|
|
363 |
|
364 |
def load_filaments_from_json_upload(file_obj):
|
365 |
"""
|
366 |
+
Called when the user picks a .json file and converts it to the
|
367 |
+
script-style DataFrame expected by the rest of the app.
|
|
|
368 |
"""
|
369 |
+
# ββ early-out when nothing was chosen ββββββββββββββββββββββββββββββ
|
370 |
if file_obj is None:
|
371 |
current_script_df = filament_df_state.value
|
372 |
if current_script_df is not None and not current_script_df.empty:
|
|
|
380 |
try:
|
381 |
with open(file_obj.name, "r", encoding="utf-8") as f:
|
382 |
data = json.load(f)
|
|
|
|
|
383 |
if isinstance(data, dict) and "Filaments" in data:
|
384 |
data = data["Filaments"]
|
385 |
|
386 |
df_loaded = pd.DataFrame(data)
|
387 |
+
|
388 |
+
# strip whitespace around every header first
|
389 |
+
df_loaded.columns = [c.strip() for c in df_loaded.columns]
|
390 |
+
|
391 |
+
# convert Hue-forge βniceβ headers to the script headers that
|
392 |
+
# still carry a leading blank
|
393 |
+
rename_map = {
|
394 |
+
"Name": " Name",
|
395 |
+
"TD": " TD",
|
396 |
+
"Color": " Color",
|
397 |
+
}
|
398 |
+
df_loaded.rename(
|
399 |
+
columns={k: v for k, v in rename_map.items() if k in df_loaded.columns},
|
400 |
+
inplace=True,
|
401 |
+
)
|
402 |
+
|
403 |
+
# now make sure the usual helpers see exactly the expected headers
|
404 |
df_loaded = ensure_required_cols(df_loaded, in_display_space=False)
|
405 |
|
406 |
expected_cols = ["Brand", " Name", " TD", " Color"]
|