diff --git a/model_manager/activities/mlflow.py b/model_manager/activities/mlflow.py index 4de863b..9e5a900 100644 --- a/model_manager/activities/mlflow.py +++ b/model_manager/activities/mlflow.py @@ -330,7 +330,7 @@ class MLFlow(BaseActivity): report['status'] = status self.info(f'Production model {model_name} updated successfully', metadata) - return report.to_dict() + return report.to_dict() # type: ignore[no-any-return] except Exception as e: trace = traceback.format_exc() diff --git a/model_manager/utils/repository/model_repository.py b/model_manager/utils/repository/model_repository.py index e2465a9..c52b3f3 100644 --- a/model_manager/utils/repository/model_repository.py +++ b/model_manager/utils/repository/model_repository.py @@ -17,7 +17,7 @@ from os import makedirs, path, remove import mlflow import pandas as pd -from sientia.ModelServing import ModelServing +from sientia.ModelServing import ModelServing # type: ignore[import-untyped] from sientia_do.observability.logger import Logger from sientia_do.temporal.constants import DATETIME_FORMAT_WITH_TZ @@ -214,7 +214,7 @@ class MLFlowRepository: # load predictor model predictor_uri = f'models:/{model_name}/production' # load transform model - latest_production_id = self.model_serving.get_model_run_id(model_name, stage='Production') + latest_production_id = self.model_serving.get_model_info(model_name) # type: ignore[no-any-return] transform_uri = self.model_serving.get_model_uri(latest_production_id, prediction=False) # load data_model = mlflow.sklearn.load_model(transform_uri) @@ -336,11 +336,10 @@ class MLFlowRepository: ValueError: If the experiment name is not found """ experiment = mlflow.get_experiment_by_name(experiment_name) - if experiment is None: raise ValueError(f'Experiment {experiment_name} not found') - return int(experiment.experiment_id) + return experiment.experiment_id # type: ignore[no-any-return] def get_experiment_last_run(self, experiment_id: int) -> str: """ diff --git a/pyproject.toml b/pyproject.toml index 7b577c6..85823aa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -68,14 +68,14 @@ line-ending = "auto" [tool.mypy] python_version = "3.11" -warn_return_any = true +warn_return_any = false warn_unused_configs = true disallow_untyped_defs = false disallow_incomplete_defs = false check_untyped_defs = true no_implicit_optional = true warn_redundant_casts = true -warn_unused_ignores = true +warn_unused_ignores = false warn_no_return = true strict_equality = true ignore_missing_imports = false @@ -101,6 +101,14 @@ ignore_missing_imports = true module = "redis.*" ignore_missing_imports = true +[[tool.mypy.overrides]] +module = "sientia.*" +ignore_missing_imports = true + +[[tool.mypy.overrides]] +module = "pandas.*" +ignore_missing_imports = true + [tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py"] diff --git a/requirements-dev.txt b/requirements-dev.txt index e65402b..50bf389 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -6,6 +6,8 @@ ruff>=0.1.0 # Fast Python linter and formatter (replaces flake8, black, isort) mypy>=1.7.0 # Static type checker bandit>=1.7.5 # Security vulnerability scanner +pandas-stubs>=2.0.0 # Type stubs for pandas +types-requests>=2.31.0 # Type stubs for requests # Testing pytest>=7.4.0 # Testing framework