def test_metrics_dict_add_integer() -> None: """ Adding a scalar metric where the value is an integer by accident should still store the metric. """ m = MetricsDict() m.add_metric("foo", 1) assert "foo" in m.values() assert m.values()["foo"] == [1.0]
def test_delete_metric() -> None: """ Deleting a set of metrics from the dictionary. """ m = MetricsDict() m.add_metric(MetricType.LOSS, 1) assert m.values()[MetricType.LOSS.value] == [1.0] m.delete_metric(MetricType.LOSS) assert MetricType.LOSS.value not in m.values()
def test_metrics_dict1() -> None: """ Test insertion of scalar values into a MetricsDict. """ m = MetricsDict() assert m.get_hue_names() == [MetricsDict.DEFAULT_HUE_KEY] name = "foo" v1 = 2.7 v2 = 3.14 m.add_metric(name, v1) m.add_metric(name, v2) assert m.values()[name] == [v1, v2] with pytest.raises(ValueError) as ex: # noinspection PyTypeChecker m.add_metric(name, [1.0]) # type: ignore assert "Expected the metric to be a scalar" in str(ex) assert m.skip_nan_when_averaging[name] is False v3 = 3.0 name2 = "bar" m.add_metric(name2, v3, skip_nan_when_averaging=True) assert m.skip_nan_when_averaging[name2] is True # Expected average: Metric "foo" averages over two values v1 and v2. For "bar", we only inserted one value anyhow average = m.average() mean_v1_v2 = mean([v1, v2]) assert average.values() == {name: [mean_v1_v2], name2: [v3]} num_entries = m.num_entries() assert num_entries == {name: 2, name2: 1}