@@ -308,29 +308,30 @@ def end(self):
308308
309309class PackStreamValueSystem (ValueSystem ):
310310
311- def hydrate (self , obj ):
312- """ Hydrate an object or a collection of nested objects by replacing
313- structures with entity instances.
314- """
315- if isinstance (obj , Structure ):
316- signature , args = obj
317- if signature == b"N" :
318- return Node .hydrate (* map (self .hydrate , args ))
319- elif signature == b"R" :
320- return Relationship .hydrate (* map (self .hydrate , args ))
321- elif signature == b"r" :
322- return UnboundRelationship .hydrate (* map (self .hydrate , args ))
323- elif signature == b"P" :
324- return Path .hydrate (* map (self .hydrate , args ))
311+ def hydrate (self , values ):
312+
313+ def hydrate_ (obj ):
314+ if isinstance (obj , Structure ):
315+ signature , args = obj
316+ if signature == b"N" :
317+ return Node .hydrate (* map (hydrate_ , args ))
318+ elif signature == b"R" :
319+ return Relationship .hydrate (* map (hydrate_ , args ))
320+ elif signature == b"r" :
321+ return UnboundRelationship .hydrate (* map (hydrate_ , args ))
322+ elif signature == b"P" :
323+ return Path .hydrate (* map (hydrate_ , args ))
324+ else :
325+ # If we don't recognise the structure type, just return it as-is
326+ return obj
327+ elif isinstance (obj , list ):
328+ return list (map (hydrate_ , obj ))
329+ elif isinstance (obj , dict ):
330+ return {key : hydrate_ (value ) for key , value in obj .items ()}
325331 else :
326- # If we don't recognise the structure type, just return it as-is
327332 return obj
328- elif isinstance (obj , list ):
329- return list (map (self .hydrate , obj ))
330- elif isinstance (obj , dict ):
331- return {key : self .hydrate (value ) for key , value in obj .items ()}
332- else :
333- return obj
333+
334+ return tuple (map (hydrate_ , values ))
334335
335336
336337GraphDatabase .value_systems ["packstream" ] = PackStreamValueSystem ()
0 commit comments