3
0
Fork 0

fix: improve JSON-safe rendering for sets

This commit is contained in:
Lance Edgar 2026-03-06 19:57:08 -06:00
parent 22a1c99abe
commit 634c1b1fe5
2 changed files with 31 additions and 0 deletions

View file

@ -654,6 +654,13 @@ def make_json_safe(value, key=None, warn=True):
parent[i] = make_json_safe(v, key=key, warn=warn)
value = parent
elif isinstance(value, set):
# recursively convert set (as list)
parent = list(value)
for i, v in enumerate(parent):
parent[i] = make_json_safe(v, key=key, warn=warn)
value = parent
elif isinstance(value, _uuid.UUID):
# convert UUID to str
value = value.hex

View file

@ -735,6 +735,30 @@ class TestMakeJsonSafe(TestCase):
],
)
def test_set(self):
model = self.app.model
person = model.Person(full_name="Betty Boop")
data = {
"foo",
"bar",
person,
}
self.assertRaises(TypeError, json.dumps, data)
value = mod.make_json_safe(data)
self.assertNotIsInstance(value, set)
self.assertIsInstance(value, list)
# nb. must sort values, otherwise comparison may fail
self.assertEqual(
sorted(value),
[
"Betty Boop", # nb. upper-case sorts first
"bar",
"foo",
],
)
class TestRenderVueFinalize(TestCase):