import os import sys from unittest.mock import MagicMock # 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. This module mocks the 'sientia' module to avoid requiring its installation during unit tests. The mock is registered in sys.modules before any test imports are executed. """ # Mock sientia module sientia_mock = MagicMock() sientia_mock.ModelAnalysis = MagicMock sys.modules['sientia'] = sientia_mock sys.modules['sientia.ModelAnalysis'] = MagicMock()