34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
import os
|
|
import pkgutil
|
|
import importlib
|
|
import inspect
|
|
from abc import ABC
|
|
|
|
from .base import BaseAnalysis
|
|
|
|
import pandas as pd
|
|
|
|
def load_analysis_modules():
|
|
analysis_modules = []
|
|
package_path = __path__[0]
|
|
|
|
for _, module_name, _ in pkgutil.iter_modules([package_path]):
|
|
module = importlib.import_module(f"app.analysis.{module_name}")
|
|
|
|
for _, obj in inspect.getmembers(module, inspect.isclass):
|
|
# Exclude abstract classes (like BasePlotAnalysis)
|
|
if issubclass(obj, BaseAnalysis) and obj is not BaseAnalysis and not inspect.isabstract(obj):
|
|
analysis_modules.append(obj()) # Instantiate only concrete classes
|
|
|
|
return analysis_modules
|
|
|
|
def load_data(file_path: str) -> pd.DataFrame:
|
|
"""Loads the scraped data from a CSV file into a Pandas DataFrame."""
|
|
if not os.path.exists(file_path):
|
|
raise FileNotFoundError(f"File {file_path} not found.")
|
|
|
|
df = pd.read_csv(file_path)
|
|
df["timestamp"] = pd.to_datetime(df["timestamp"], errors="coerce")
|
|
df["last_action"] = pd.to_datetime(df["last_action"], errors="coerce")
|
|
|
|
return df |