def pretty_json(obj: Any) -> Any:
import json
- return json.dumps(obj, sort_keys=True, indent=2)
+ return json.dumps(_make_serializable(obj), sort_keys=True, indent=2)
+
+
+def _make_serializable(obj):
+ """Convert non-JSON-serializable objects to serializable equivalents"""
+ if obj.__class__.__name__ == 'mappingproxy':
+ return {k: _make_serializable(v) for k, v in obj.items()}
+ elif isinstance(obj, tuple):
+ return [_make_serializable(item) for item in obj]
+ elif isinstance(obj, list):
+ return [_make_serializable(item) for item in obj]
+ elif isinstance(obj, dict):
+ return {k: _make_serializable(v) for k, v in obj.items()}
+ else:
+ return obj
class CephCommander: