REFACTOR: Split code and dynamic models
All checks were successful
Build docker container / Build image (push) Successful in 11m15s
All checks were successful
Build docker container / Build image (push) Successful in 11m15s
This commit is contained in:
0
src/utils/__init__.py
Normal file
0
src/utils/__init__.py
Normal file
15
src/utils/dynamic_loader.py
Normal file
15
src/utils/dynamic_loader.py
Normal file
@@ -0,0 +1,15 @@
|
||||
import importlib
|
||||
from typing import Any
|
||||
|
||||
def execute_function(module_name: str, function_name: str, *args, **kwargs) -> Any:
|
||||
"""Ejecutar una función dinámicamente"""
|
||||
try:
|
||||
module = importlib.import_module(module_name)
|
||||
function = getattr(module, function_name)
|
||||
return function(*args, **kwargs)
|
||||
except ImportError as e:
|
||||
raise ValueError(f"Modulo '{module_name}' no esta disponible: {str(e)}")
|
||||
except AttributeError as e:
|
||||
raise ValueError(f"Función '{function_name}' no esta disponible en el módulo '{module_name}': {str(e)}")
|
||||
except Exception as e:
|
||||
raise ValueError(f"Error ejecutando la función '{function_name}': {str(e)}")
|
||||
30
src/utils/validators.py
Normal file
30
src/utils/validators.py
Normal file
@@ -0,0 +1,30 @@
|
||||
from typing import Dict, Any, Tuple
|
||||
|
||||
def validate_predict_params(model_type: str, params: Dict[str, Any], model_config) -> Dict[str, Any]:
|
||||
"""Validar parámetros para predicción"""
|
||||
config = model_config.get_model_config(model_type)
|
||||
required_params = config.get("required_params", [])
|
||||
|
||||
# Verificar parámetros requeridos
|
||||
missing_params = [p for p in required_params if p not in params]
|
||||
|
||||
if missing_params:
|
||||
return {
|
||||
"valid": False,
|
||||
"message": f"Faltan los siguientes parámetros: {', '.join(missing_params)}",
|
||||
"required_params": required_params
|
||||
}
|
||||
|
||||
# Validar tipos de datos básicos
|
||||
for param in required_params:
|
||||
try:
|
||||
# Intentar convertir a número
|
||||
float(params[param])
|
||||
except ValueError:
|
||||
return {
|
||||
"valid": False,
|
||||
"message": f"El parámetro '{param}' tiene que ser un número",
|
||||
"invalid_param": param
|
||||
}
|
||||
|
||||
return {"valid": True}
|
||||
Reference in New Issue
Block a user