Refactor ModelMetrics to utilize DriftAnalysis for drift detection - Replaced ModelAnalysis with DriftAnalysis in the ModelMetrics class to enhance drift detection capabilities. - Updated method signatures and documentation to reflect the changes in target_name and return values. - Adjusted data handling to ensure compatibility with the new analysis methods and improved clarity in the drift metrics dataframe preparation.
67 lines
2.1 KiB
Python
67 lines
2.1 KiB
Python
import os
|
|
|
|
from sientia_do.temporal.activities.postgres_sync import Postgres
|
|
|
|
|
|
def _noop_postgres_del(_self):
|
|
"""
|
|
Unit tests use MagicMock metrics controllers; postgres_sync.Postgres.__del__ calls
|
|
close() during GC and triggers async shutdown. Explicit ``close()`` is covered in tests.
|
|
"""
|
|
return None
|
|
|
|
|
|
Postgres.__del__ = _noop_postgres_del # type: ignore[method-assign]
|
|
|
|
# The production code converts SIENTIA_MINIO_OFFLOAD_THRESHOLD_MEGABYTES to int at import-time.
|
|
# Tests must set it to a valid integer string to avoid import errors.
|
|
os.environ.setdefault('SIENTIA_MINIO_OFFLOAD_THRESHOLD_MEGABYTES', '1')
|
|
|
|
|
|
class DummyMinioDataFramePayload:
|
|
"""
|
|
Minimal payload double used by unit tests.
|
|
|
|
The production workflow/gates expect a MinioDataFramePayload-like object with:
|
|
- async retrieve(minio_repo, workflow_metadata) -> DataFrame | dict
|
|
- has_data() -> bool
|
|
- cleanup_prefix() -> str | None
|
|
- last_timestamp: attribute
|
|
- status: attribute
|
|
"""
|
|
|
|
def __init__(
|
|
self,
|
|
*,
|
|
retrieve_return=None,
|
|
has_data: bool = True,
|
|
cleanup_prefix: str | None = None,
|
|
last_timestamp: str = '2024-01-01',
|
|
status: dict | None = None,
|
|
):
|
|
self._retrieve_return = retrieve_return
|
|
self._has_data = has_data
|
|
self._cleanup_prefix = cleanup_prefix
|
|
self.last_timestamp = last_timestamp
|
|
self.status = status
|
|
|
|
async def retrieve(self, _minio_repo, _workflow_metadata=None):
|
|
return self._retrieve_return
|
|
|
|
def has_data(self) -> bool:
|
|
return self._has_data
|
|
|
|
def cleanup_prefix(self) -> str | None:
|
|
return self._cleanup_prefix
|
|
|
|
|
|
"""
|
|
Pytest configuration file with global mocks for external dependencies.
|
|
|
|
The historical ``sientia`` package is no longer imported by the codebase;
|
|
drift analysis lives in ``sientia_model.analytics.drift_analysis`` and is
|
|
imported lazily inside Temporal activities. No global module-level mock is
|
|
required here — unit tests that need to control ``DriftAnalysis`` outputs
|
|
should patch ``laborious.activities.model_metrics.DriftAnalysis`` directly.
|
|
"""
|