mirror of
https://github.com/wassname/optuna-dashboard.git
synced 2026-09-21 13:10:53 +08:00
Fix a regression bug of attr serialization
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import json
|
||||
from typing import Any
|
||||
from typing import Dict
|
||||
from typing import List
|
||||
@@ -14,7 +15,7 @@ except ImportError:
|
||||
from typing_extensions import TypedDict
|
||||
|
||||
|
||||
MAX_ATTR_LENGTH = 128
|
||||
MAX_ATTR_LENGTH = 1024
|
||||
Attribute = TypedDict(
|
||||
"Attribute",
|
||||
{
|
||||
@@ -42,16 +43,11 @@ def serialize_attrs(attrs: Dict[str, Any]) -> List[Attribute]:
|
||||
serialized: List[Attribute] = []
|
||||
for k, v in attrs.items():
|
||||
value: str
|
||||
if isinstance(v, str):
|
||||
value = v[:MAX_ATTR_LENGTH] if len(v) > MAX_ATTR_LENGTH else v
|
||||
elif isinstance(v, (bool, float, int)):
|
||||
value = str(v)
|
||||
elif isinstance(v, bytes):
|
||||
if isinstance(v, bytes):
|
||||
value = "<binary object>"
|
||||
elif v is None:
|
||||
value = "None"
|
||||
else: # unsupported type
|
||||
continue
|
||||
else:
|
||||
value = json.dumps(v)
|
||||
value = value[:MAX_ATTR_LENGTH] if len(value) > MAX_ATTR_LENGTH else value
|
||||
serialized.append({"key": k, "value": value})
|
||||
return serialized
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ class SerializeAttrsTestCase(TestCase):
|
||||
self.assertEqual(serialized[0]["value"], "<binary object>")
|
||||
|
||||
def test_serialize_string(self) -> None:
|
||||
for length in [100, 128, 150]:
|
||||
for length in [1000, 1024, 1100]:
|
||||
with self.subTest(f"length: {length}"):
|
||||
value = "a" * length
|
||||
serialized = serialize_attrs(
|
||||
@@ -17,4 +17,12 @@ class SerializeAttrsTestCase(TestCase):
|
||||
"key": value,
|
||||
}
|
||||
)
|
||||
self.assertLessEqual(len(serialized[0]["value"]), 128)
|
||||
self.assertLessEqual(len(serialized[0]["value"]), 1024)
|
||||
|
||||
def test_serialize_dict(self) -> None:
|
||||
serialized = serialize_attrs(
|
||||
{
|
||||
"key": {"foo": "bar"},
|
||||
}
|
||||
)
|
||||
self.assertLessEqual(len(serialized), 1)
|
||||
|
||||
Reference in New Issue
Block a user