Python – gremlin python retrieves ID and tags (valueMap(True))

gremlin python retrieves ID and tags (valueMap(True))… here is a solution to the problem.

gremlin python retrieves ID and tags (valueMap(True))

python g.V('test_red1').valueMap().toList()

Works fine, but I get this error when I pass true to the request id and label. Is there anything I’m missing?

g.V('test_red1').valueMap(True).toList()

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ec2-user/environment/merchantGraph/gremlin_python/process/traversal.py", line 52, in toList
    return list(iter(self))
  File "/home/ec2-user/environment/merchantGraph/gremlin_python/process/traversal.py", line 43, in __next__
 ...

Am I missing something. I’m using AWS Neptune….

I’m adding extra import statements

and backtracking

import time
import requests
import json
from gremlin_python import statics
from gremlin_python.structure.graph import Graph
from gremlin_python.process.graph_traversal import __
from gremlin_python.process.strategies import *
from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection

import boto3
from os import environ

graph = Graph()
g = graph.traversal().withRemote(DriverRemoteConnection(environ['gremlinNeptuneConnection'],'g'))

# this works
g.V('test_red1').valueMap().toList()

# this fails
g.V('test_red1').valueMap(True).toList()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ec2-user/environment/merchantGraph/gremlin_python/process/traversal.py", line 52, in toList
    return list(iter(self))
  ....
  File "/home/ec2-user/environment/merchantGraph/gremlin_python/structure/io/graphsonV3d0.py", line 455, in objectify
    new_dict[reader.toObject(l[x])] = reader.toObject(l[x + 1])

TypeError: unhashable type: 'dict'

Solution

My guess is that you’re having trouble with the recently reported valueMap(true) error :

https://issues.apache.org/jira/browse/TINKERPOP-1860

It is patched and will be fixed in version 3.3.2. Until then you’ll have to fix this, because there’s really no workaround other than reverting to GraphSON 2.0 (which has its own set of drawbacks). One workaround is project() your result:

gremlin> g.V().project('props','id','label').
...... 1>         by(valueMap()).
...... 2>         by(id).
...... 3>         by(label)
==>[props:[name:[marko],age:[29]],id:1,label:person]
==>[props:[name:[vadas],age:[27]],id:2,label:person]
==>[props:[name:[lop],lang:[java]],id:3,label:software]
==>[props:[name:[josh],age:[32]],id:4,label:person]
==>[props:[name:[ripple],lang:[java]],id:5,label:software]
==>[props:[name:[peter],age:[35]],id:6,label:person]

Related Problems and Solutions