Fix a regression bug of attr serialization

This commit is contained in:
c-bata
2021-04-20 13:21:42 +09:00
parent be8a8f114d
commit 2b83d07f22
2 changed files with 16 additions and 12 deletions
+6 -10
View File
@@ -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
+10 -2
View File
@@ -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)