# src/transformers/sensor_data.py from typing import Dict, Any import pandas as pd import numpy as np from datetime import datetime from uuid import UUID, uuid4 from config import config class WoDataTransformer: def transform(self, df: pd.DataFrame) -> pd.DataFrame: """ Transform sensor data according to business rules """ # Create a copy to avoid modifying original data transformed = df.copy() # 1. Add UUID transformed['id'] = uuid4() # # 5. Drop unnecessary columns # columns_to_drop = self.config.get('columns_to_drop', []) # if columns_to_drop: # transformed = transformed.drop(columns=columns_to_drop, errors='ignore') return transformed def validate(self, df: pd.DataFrame) -> bool: """ Validate transformed data """ if df.empty: return False # Check required columns if not all(col in df.columns for col in config.get('columns')): return False # check id column and id is UUID if 'id' not in df.columns: return False if not all(isinstance(val, UUID) for val in df['id']): return False return True