Skip to content

Commit 3fb14a4

Browse files
committed
minor fix to dict type safety where sets values are not sorted (makes testing more deterministic)
1 parent aec85b1 commit 3fb14a4

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

osbot_utils/type_safe/type_safe_core/collections/Type_Safe__Dict.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,10 @@ def serialize_value(v):
9292
elif isinstance(v, tuple):
9393
return serialized
9494
else: # set
95-
return serialized
95+
if isinstance(self.expected_key_type, type) and issubclass(self.expected_key_type,str): # for strings
96+
return sorted(serialized) # return sorted set to make it more deterministic and easier to test
97+
else: # else
98+
return serialized # return list created from set (which is had non-deterministic order)
9699
else:
97100
return serialize_to_dict(v) # Use serialize_to_dict for unknown types (so that we don't return a non json object)
98101

osbot_utils/utils/Objects.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ def serialize_to_dict(obj):
283283
return obj
284284
elif isinstance(obj, type):
285285
return f"{obj.__module__}.{obj.__name__}" # save the full type name
286-
elif isinstance(obj, (list, tuple, List)): # Added tuple here
286+
elif isinstance(obj, (list, tuple, List)): # Added tuple here
287287
return [serialize_to_dict(item) for item in obj]
288288
elif isinstance(obj, (set, frozenset)):
289289
return [serialize_to_dict(item) for item in obj]

0 commit comments

Comments
 (0)