import json import pandas as pd from pathlib import Path import sys sys.path.append(str(Path(__file__).resolve().parents[1])) from utils.logger import * import logging logger = logging.getLogger(__name__) def load_news_events(path=None): if path is None: path = Path(__file__).resolve().parents[2] / "artifacts" / "data" / "raw" / "news_events.json" try: with open(path, "r", encoding="utf-8") as f: data = pd.DataFrame(json.load(f)) logger.info(f"News events loaded successfully: {data.shape}") return data except Exception as e: logger.error(f"Failed to load news events: {e}") raise def load_weather_alerts(path=None): if path is None: path = Path(__file__).resolve().parents[2] / "artifacts" / "data" / "raw" / "weather_alerts.json" try: with open(path, "r", encoding="utf-8") as f: data = pd.DataFrame(json.load(f)) logger.info(f"Weather alerts loaded successfully: {data.shape}") return data except Exception as e: logger.error(f"Failed to load weather alerts: {e}") raise def load_supply_chain_disruptions(csv_path=None): if csv_path is None: csv_path = Path(__file__).resolve().parents[2] / "artifacts" / "data" / "raw" / "DataCoSupplyChainDataset.csv" try: df = pd.read_csv(csv_path, encoding="utf-8") logger.info(f"Historic incidents loaded successfully: {df.shape}") return df except UnicodeDecodeError: df = pd.read_csv(csv_path, encoding="ISO-8859-1") logger.info(f"Historic incidents loaded successfully (ISO-8859-1): {df.shape}") return df except Exception as e: logger.error(f"Failed to load historic supply chain CSV: {e}") raise if __name__ == "__main__": try: news_df = load_news_events() weather_df = load_weather_alerts() try: incidents_df = load_supply_chain_disruptions() except Exception as e: logger.error(f"No historic CSV loaded: {e}") except Exception as e: logger.error(f"Major error in data ingestion: {e}")