Sadashiv's picture
Upload 146 files
17c5137 verified
from src.entity.config_entity import TRANSFORMER_OBJECT_FILE_NAME
from src.entity.config_entity import MODEL_FILE_NAME
from src.entity.config_entity import TARGET_ENCODER_OBJECT_FILE_NAME
from src.exception import FertilizerException
from src.logger import logging
import os
import sys
from glob import glob
from typing import Optional
class ModelResolver:
def __init__(
self,
model_registry: str = 'saved_models',
transformer_dir_name = 'transformer',
target_encoder_dir_name = 'target_encoder',
model_dir_name = 'model'
):
self.model_registry = model_registry
os.makedirs(self.model_registry, exist_ok=True)
self.transformer_dir_name = transformer_dir_name
self.target_encoder_dir_name = target_encoder_dir_name
self.model_dir_name = model_dir_name
def get_latest_dir_path(self) ->Optional[str]:
try:
dir_names = os.listdir(self.model_registry)
if len(dir_names) == 0:
return None
dir_names = list(map(int, dir_names))
latest_dir_name = max(dir_names)
return os.path.join(self.model_registry, f"{latest_dir_name}")
except Exception as e:
raise FertilizerException(e, sys)
def get_latest_model_path(self):
try:
latest_dir = self.get_latest_dir_path()
if latest_dir is None:
raise Exception(f"Model is not available")
return os.path.join(latest_dir, self.model_dir_name, MODEL_FILE_NAME)
except Exception as e:
raise FertilizerException(e, sys)
def get_latest_transformer_path(self):
try:
latest_dir = self.get_latest_dir_path()
if latest_dir is None:
raise Exception(f"Transformer is not available")
return os.path.join(latest_dir, self.transformer_dir_name, TRANSFORMER_OBJECT_FILE_NAME)
except Exception as e:
raise FertilizerException(e, sys)
def get_latest_target_encoder_path(self):
try:
latest_dir = self.get_latest_dir_path()
if latest_dir is None:
raise Exception(f"Target Encoder is not available")
return os.path.join(latest_dir, self.target_encoder_dir_name, TARGET_ENCODER_OBJECT_FILE_NAME)
except Exception as e:
raise FertilizerException(e, sys)
def get_latest_save_dir_path(self):
try:
latest_dir = self.get_latest_dir_path()
if latest_dir is None:
return os.path.join(self.model_registry, f"{0}")
latest_dir_num = int(os.path.basename(self.get_latest_dir_path()))
return os.path.join(self.model_registry, f"{latest_dir_num + 1}")
except Exception as e:
raise FertilizerException(e, sys)
def get_latest_save_model_path(self):
try:
latest_dir = self.get_latest_save_dir_path()
return os.path.join(latest_dir, self.model_dir_name, MODEL_FILE_NAME)
except Exception as e:
raise FertilizerException(e, sys)
def get_latest_save_transformer_path(self):
try:
latest_dir = self.get_latest_save_dir_path()
return os.path.join(latest_dir, self.transformer_dir_name, TRANSFORMER_OBJECT_FILE_NAME)
except Exception as e:
raise FertilizerException(e, sys)
def get_latest_save_target_encoder_path(self):
try:
latest_dir = self.get_latest_save_dir_path()
return os.path.join(latest_dir, self.target_encoder_dir_name, TARGET_ENCODER_OBJECT_FILE_NAME)
except Exception as e:
raise FertilizerException(e, sys)