SIENTIAPDE-1273

Refactor data handling in various modules to ensure DataFrame consistency

- Replaced direct DataFrame instantiation with `ensure_dataframe` utility in Gates, MLFlow, OPC, and ModelMetrics classes to standardize data handling.
- Updated return types in several asynchronous methods to return DataFrames instead of dictionaries for improved usability.
- Adjusted data export processes in workflows to convert DataFrames to dictionaries with `to_dict(orient='records')` for compatibility with downstream systems.
This commit is contained in:
vitor-aignosi
2025-11-14 16:55:00 -03:00
parent 4191f68d3b
commit d2b365a34d
12 changed files with 368 additions and 28 deletions

View File

@@ -20,6 +20,7 @@ with workflow.unsafe.imports_passed_through():
now,
)
from laborious.utils.dataframe_utils import ensure_dataframe
from laborious.utils.repository.minio_repository import MinioRepository
from laborious.utils.repository.model_repository import MLFlowRepository
@@ -139,7 +140,7 @@ class MLFlow(SientiaMonitoring):
"""
metadata = input_data['metadata']
self.info('Transforming data...', metadata)
data = DataFrame(input_data['data'])
data = ensure_dataframe(input_data['data'])
model_name = input_data['model_name']
model_config = input_data.get('model_config', {})
@@ -211,7 +212,7 @@ class MLFlow(SientiaMonitoring):
"""
metadata = input_data['metadata']
self.info('Predicting data...', metadata)
data = DataFrame(input_data['data'])
data = ensure_dataframe(input_data['data'])
model_name = input_data['model_name']
model_config = input_data.get('model_config', {})
@@ -422,7 +423,7 @@ class MLFlow(SientiaMonitoring):
@activity.defn(name='get_reference_data')
async def get_reference_data(self, input_data: dict[str, Any]) -> dict[Hashable, Any] | None:
async def get_reference_data(self, input_data: dict[str, Any]) -> DataFrame | None:
"""
Get reference data from the MLflow Model Registry.
@@ -451,4 +452,4 @@ class MLFlow(SientiaMonitoring):
reference_data['timestamp'] = to_datetime(reference_data['timestamp'])
reference_data['timestamp'] = reference_data['timestamp'].dt.strftime(DATETIME_FORMAT)
return reference_data.to_dict()
return reference_data