On Thursday, November 14, 2013 06:03:54 PM Damien Lespiau wrote: > When resuming and loading the partial JSON file from disk, the 'status' > property is replaced by status.Status objects. When serializing back > those objects, JSONEncoder is unhappy because it doesn't know how to > serialize status.Status objects and gives up with exceptions like: > > TypeError: skip is not JSON serializable > > We can write a small subclass of JSONEncoder that knows about Status > objects and use it to do the initial write back of the partial JSON > file. > > Signed-off-by: Damien Lespiau <[email protected]> > --- > framework/core.py | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/framework/core.py b/framework/core.py > index 2d5d0dc..9f153a3 100644 > --- a/framework/core.py > +++ b/framework/core.py > @@ -58,6 +58,11 @@ __all__ = ['Environment', > 'Test', > 'testBinDir'] > > +class PiglitJSONEncoder(json.JSONEncoder): > + def default(self, o): > + if isinstance(o, status.Status): > + return str(o) > + return json.JSONEncoder.default(self, o) > > class JSONWriter: > ''' > @@ -108,7 +113,7 @@ class JSONWriter: > self.file = file > self.__indent_level = 0 > self.__inhibit_next_indent = False > - self.__encoder = json.JSONEncoder(indent=self.INDENT) > + self.__encoder = PiglitJSONEncoder(indent=self.INDENT) > > # self.__is_collection_empty > #
This looks fine. I had implemented this when I did the status work, but then didn't think I needed it. Resume is not a commonly used feature obviously. Reviewed-by: Dylan Baker <[email protected]>
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
