Skip to content

Commit 7a92c28

Browse files
committed
Preserve boolean metric formatting
1 parent 8bd33ad commit 7a92c28

2 files changed

Lines changed: 25 additions & 3 deletions

File tree

openevolve/utils/format_utils.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@ def format_metrics_safe(metrics: Dict[str, Any]) -> str:
2020

2121
formatted_parts = []
2222
for name, value in metrics.items():
23-
# Check if value is numeric (int, float)
24-
if isinstance(value, (int, float)):
23+
# bool is a subclass of int, but logging it as 1.0000/0.0000 is confusing.
24+
if isinstance(value, bool):
25+
formatted_parts.append(f"{name}={value}")
26+
elif isinstance(value, (int, float)):
2527
try:
2628
# Only apply float formatting to numeric values
2729
formatted_parts.append(f"{name}={value:.4f}")
@@ -54,7 +56,12 @@ def format_improvement_safe(parent_metrics: Dict[str, Any], child_metrics: Dict[
5456
if metric in parent_metrics:
5557
parent_value = parent_metrics[metric]
5658
# Only calculate improvement for numeric values
57-
if isinstance(child_value, (int, float)) and isinstance(parent_value, (int, float)):
59+
if (
60+
isinstance(child_value, (int, float))
61+
and isinstance(parent_value, (int, float))
62+
and not isinstance(child_value, bool)
63+
and not isinstance(parent_value, bool)
64+
):
5865
try:
5966
diff = child_value - parent_value
6067
improvement_parts.append(f"{metric}={diff:+.4f}")

tests/test_format_utils.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from openevolve.utils.format_utils import format_improvement_safe, format_metrics_safe
2+
3+
4+
def test_format_metrics_safe_preserves_boolean_values():
5+
assert format_metrics_safe({"valid": True, "score": 0.25}) == "valid=True, score=0.2500"
6+
7+
8+
def test_format_improvement_safe_ignores_boolean_diffs():
9+
assert (
10+
format_improvement_safe(
11+
{"valid": False, "score": 0.25},
12+
{"valid": True, "score": 0.5},
13+
)
14+
== "score=+0.2500"
15+
)

0 commit comments

Comments
 (0)