Files
mlflow--mlflow/tests/tracking/fluent/test_metric_value_conversion_utils.py
2026-07-13 13:22:34 +08:00

40 lines
1.3 KiB
Python

import numpy as np
import pytest
import mlflow
from mlflow import tracking
from mlflow.exceptions import INVALID_PARAMETER_VALUE, ErrorCode, MlflowException
from mlflow.tracking.fluent import start_run
from mlflow.tracking.metric_value_conversion_utils import convert_metric_value_to_float_if_possible
from tests.helper_functions import random_int
def test_reraised_value_errors():
multi_item_array = np.random.rand(2, 2)
with pytest.raises(MlflowException, match=r"Failed to convert metric value to float") as e:
convert_metric_value_to_float_if_possible(multi_item_array)
assert e.value.error_code == ErrorCode.Name(INVALID_PARAMETER_VALUE)
def test_convert_metric_value_to_float():
float_metric_val = float(random_int(10, 50))
assert convert_metric_value_to_float_if_possible(float_metric_val) == float_metric_val
ndarray_val = np.random.rand(1)
assert convert_metric_value_to_float_if_possible(ndarray_val) == float(ndarray_val[0])
def test_log_np_array_as_metric():
ndarray_val = np.random.rand(1)
ndarray_float_val = float(ndarray_val[0])
with start_run() as run:
mlflow.log_metric("name_numpy", ndarray_val)
finished_run = tracking.MlflowClient().get_run(run.info.run_id)
assert finished_run.data.metrics == {"name_numpy": ndarray_float_val}