fixed serialize problem

This commit is contained in:
ayzen
2025-10-06 17:43:03 +03:00
parent 6297155f71
commit e25d3aef3c

View File

@ -562,6 +562,26 @@ class BaseProcessor:
# --------------------------------------------------------------------- #
# History Export/Import
# --------------------------------------------------------------------- #
def _make_json_serializable(self, obj: Any) -> Any:
"""
Recursively convert non-serializable objects to JSON-compatible types.
Handles Enums, custom objects, etc.
"""
from enum import Enum
if isinstance(obj, Enum):
return obj.value
elif isinstance(obj, dict):
return {key: self._make_json_serializable(value) for key, value in obj.items()}
elif isinstance(obj, (list, tuple)):
return [self._make_json_serializable(item) for item in obj]
elif hasattr(obj, '__dict__'):
# Custom object - try to serialize its dict
return self._make_json_serializable(obj.__dict__)
else:
return obj
def export_history_data(self) -> list[dict[str, Any]]:
"""
Export sweep history in JSON-serializable format.
@ -578,13 +598,16 @@ class BaseProcessor:
calibrated_data = entry["calibrated_data"]
reference_data = entry.get("reference_data")
# Convert vna_config to fully serializable format
vna_config = self._make_json_serializable(entry.get("vna_config", {}))
exported.append({
"sweep_number": sweep_data.sweep_number if sweep_data else None,
"timestamp": entry.get("timestamp"),
"sweep_points": sweep_data.points if sweep_data else [],
"calibrated_points": calibrated_data.points if calibrated_data else [],
"reference_points": reference_data.points if reference_data else [],
"vna_config": entry.get("vna_config", {}),
"vna_config": vna_config,
})
return exported