def default(self, obj): new_obj = obj if isinstance(obj, collections.Iterable): return list(obj) elif isinstance(obj, datetime): return obj.isoformat() elif hasattr(obj, "__getitem__") and hasattr(obj, "keys"): return dict(obj) elif hasattr(obj, "__dict__"): return {member: getattr(obj, member) for member in get_public_members(obj)} return json.JSONEncoder.default(self, obj)
def default(self, obj): if hasattr(obj, "__json__"): return obj.__json__() elif isinstance(obj, collections.Iterable): return list(obj) elif isinstance(obj, datetime): return obj.isoformat() elif hasattr(obj, "__getitem__") and hasattr(obj, "keys"): return dict(obj) elif hasattr(obj, "__dict__"): return {member: getattr(obj, member) for member in get_public_members(obj)} return json.JSONEncoder.default(self, obj)
def default(self, obj): if hasattr(obj, "__json__"): fdata = FunctionMetadata.from_function(obj.__json__) params = self._filter_params( fdata.optional_params, fdata.non_optional_params) return obj.__json__(**params) elif isinstance(obj, collections.Iterable): return list(obj) elif isinstance(obj, datetime): return obj.isoformat() elif hasattr(obj, "__getitem__") and hasattr(obj, "keys"): return dict(obj) elif hasattr(obj, "__dict__"): return {member: getattr(obj, member) for member in get_public_members(obj)} return json.JSONEncoder.default(self, obj)
def default(self, obj): if hasattr(obj, "__json__"): fdata = FunctionMetadata.from_function(obj.__json__) params = self._filter_params(fdata.optional_params, fdata.non_optional_params) return obj.__json__(**params) elif isinstance(obj, collections.Iterable): return list(obj) elif isinstance(obj, datetime): return obj.isoformat() elif hasattr(obj, "__getitem__") and hasattr(obj, "keys"): return dict(obj) elif hasattr(obj, "__dict__"): return { member: getattr(obj, member) for member in get_public_members(obj) } return json.JSONEncoder.default(self, obj)
def __json__(self, use_relpath=False): _dict = get_public_members(self) if use_relpath: _dict['file'] = relpath(_dict['file']) return _dict
def __json__(self, use_relpath=False): _dict = get_public_members(self) if use_relpath and _dict['diffs']: _dict['diffs'] = {relpath(file): diff for file, diff in _dict['diffs'].items()} return _dict