[
https://issues.apache.org/jira/browse/TINKERPOP-2395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Connor Skennerton updated TINKERPOP-2395:
-----------------------------------------
Description:
The following works fine in the console but fails when converted to python
using gremlin-server 3.4.7.
{code:java}
graph = TinkerGraph.open()
g = graph.traversal()
g.addV('test').property(set, 'name', 'name1').property(set, 'name', 'name2')
g.addV('test').property(set, 'name', 'name1').property(set, 'name', 'name2')
g.addV('source').property(set, 'name', 'source')
g.V(0L).as('0').V(3L).as('3').V(6L).as('6').addE('root').from('6').to('0').addE('root').from('6').to('3')
g.V().has('name', 'source').out('root').groupCount().by(values('name').fold())
==>[[name1,name2]:2]
{code}
The stack trace from python is as follows
{code:java}
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/driver/connection.py",
line 83, in _receive
status_code = self._protocol.data_received(data, self._results)
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/driver/protocol.py",
line 83, in data_received
message = self._message_serializer.deserialize_message(message)
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/driver/serializer.py",
line 163, in deserialize_message
return self._graphson_reader.toObject(msg)
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 129, in toObject
return dict((self.toObject(k), self.toObject(v)) for k, v in obj.items())
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 129, in <genexpr>
return dict((self.toObject(k), self.toObject(v)) for k, v in obj.items())
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 129, in toObject
return dict((self.toObject(k), self.toObject(v)) for k, v in obj.items())
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 129, in <genexpr>
return dict((self.toObject(k), self.toObject(v)) for k, v in obj.items())
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 126, in toObject
return
self.deserializers[obj[GraphSONUtil.TYPE_KEY]].objectify(obj[GraphSONUtil.VALUE_KEY],
self)
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 432, in objectify
new_list.append(reader.toObject(obj))
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 126, in toObject
return
self.deserializers[obj[GraphSONUtil.TYPE_KEY]].objectify(obj[GraphSONUtil.VALUE_KEY],
self)
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 269, in objectify
return Traverser(reader.toObject(d["value"]),
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 126, in toObject
return
self.deserializers[obj[GraphSONUtil.TYPE_KEY]].objectify(obj[GraphSONUtil.VALUE_KEY],
self)
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 484, in objectify
new_dict[reader.toObject(l[x])] = reader.toObject(l[x + 1])
TypeError: unhashable type: 'list'
{code}
Converting the list to a tuple would allow python to use these values as
dictionary keys
was:
The following works fine in the console but fails when converted to python
using gremlin-server 3.4.7.
{code:java}
graph = TinkerGraph.open()
g = graph.traversal()
g.addV('test').property(set, 'name', 'name1').property(set, 'name', 'name2')
g.addV('test').property(set, 'name', 'name1').property(set, 'name', 'name2')
g.addV('source').property(set, 'name', 'source')
g.V(0L).as('0').V(3L).as('3').V(6L).as('6').addE('root').from('6').to('0').addE('root').from('6').to('3')
g.V().has('name', 'source').out('root').groupCount().by(values('name').fold())
==>[[name1,name2]:2]
{code}
The stack trace from python is as follows
{code:java}
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/driver/connection.py",
line 83, in _receive
status_code = self._protocol.data_received(data, self._results)
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/driver/protocol.py",
line 83, in data_received
message = self._message_serializer.deserialize_message(message)
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/driver/serializer.py",
line 163, in deserialize_message
return self._graphson_reader.toObject(msg)
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 129, in toObject
return dict((self.toObject(k), self.toObject(v)) for k, v in obj.items())
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 129, in <genexpr>
return dict((self.toObject(k), self.toObject(v)) for k, v in obj.items())
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 129, in toObject
return dict((self.toObject(k), self.toObject(v)) for k, v in obj.items())
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 129, in <genexpr>
return dict((self.toObject(k), self.toObject(v)) for k, v in obj.items())
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 126, in toObject
return
self.deserializers[obj[GraphSONUtil.TYPE_KEY]].objectify(obj[GraphSONUtil.VALUE_KEY],
self)
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 432, in objectify
new_list.append(reader.toObject(obj))
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 126, in toObject
return
self.deserializers[obj[GraphSONUtil.TYPE_KEY]].objectify(obj[GraphSONUtil.VALUE_KEY],
self)
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 269, in objectify
return Traverser(reader.toObject(d["value"]),
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 126, in toObject
return
self.deserializers[obj[GraphSONUtil.TYPE_KEY]].objectify(obj[GraphSONUtil.VALUE_KEY],
self)
File
"/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
line 484, in objectify
new_dict[reader.toObject(l[x])] = reader.toObject(l[x + 1])
TypeError: unhashable type: 'list'
{code}
Python allows tuples (but not lists) to be used as dictionary keys.
> Gremlin Python doesn't support list as keys in groupCount
> ---------------------------------------------------------
>
> Key: TINKERPOP-2395
> URL: https://issues.apache.org/jira/browse/TINKERPOP-2395
> Project: TinkerPop
> Issue Type: Bug
> Components: python
> Affects Versions: 3.4.7
> Reporter: Connor Skennerton
> Priority: Major
>
> The following works fine in the console but fails when converted to python
> using gremlin-server 3.4.7.
> {code:java}
> graph = TinkerGraph.open()
> g = graph.traversal()
> g.addV('test').property(set, 'name', 'name1').property(set, 'name', 'name2')
> g.addV('test').property(set, 'name', 'name1').property(set, 'name', 'name2')
> g.addV('source').property(set, 'name', 'source')
> g.V(0L).as('0').V(3L).as('3').V(6L).as('6').addE('root').from('6').to('0').addE('root').from('6').to('3')
> g.V().has('name', 'source').out('root').groupCount().by(values('name').fold())
> ==>[[name1,name2]:2]
> {code}
> The stack trace from python is as follows
> {code:java}
> File
> "/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/driver/connection.py",
> line 83, in _receive
> status_code = self._protocol.data_received(data, self._results)
> File
> "/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/driver/protocol.py",
> line 83, in data_received
> message = self._message_serializer.deserialize_message(message)
> File
> "/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/driver/serializer.py",
> line 163, in deserialize_message
> return self._graphson_reader.toObject(msg)
> File
> "/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
> line 129, in toObject
> return dict((self.toObject(k), self.toObject(v)) for k, v in obj.items())
> File
> "/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
> line 129, in <genexpr>
> return dict((self.toObject(k), self.toObject(v)) for k, v in obj.items())
> File
> "/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
> line 129, in toObject
> return dict((self.toObject(k), self.toObject(v)) for k, v in obj.items())
> File
> "/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
> line 129, in <genexpr>
> return dict((self.toObject(k), self.toObject(v)) for k, v in obj.items())
> File
> "/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
> line 126, in toObject
> return
> self.deserializers[obj[GraphSONUtil.TYPE_KEY]].objectify(obj[GraphSONUtil.VALUE_KEY],
> self)
> File
> "/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
> line 432, in objectify
> new_list.append(reader.toObject(obj))
> File
> "/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
> line 126, in toObject
> return
> self.deserializers[obj[GraphSONUtil.TYPE_KEY]].objectify(obj[GraphSONUtil.VALUE_KEY],
> self)
> File
> "/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
> line 269, in objectify
> return Traverser(reader.toObject(d["value"]),
> File
> "/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
> line 126, in toObject
> return
> self.deserializers[obj[GraphSONUtil.TYPE_KEY]].objectify(obj[GraphSONUtil.VALUE_KEY],
> self)
> File
> "/Users/connor.skennerton/.pyenv/versions/dogma/lib/python3.6/site-packages/gremlin_python/structure/io/graphsonV3d0.py",
> line 484, in objectify
> new_dict[reader.toObject(l[x])] = reader.toObject(l[x + 1])
> TypeError: unhashable type: 'list'
> {code}
> Converting the list to a tuple would allow python to use these values as
> dictionary keys
--
This message was sent by Atlassian Jira
(v8.3.4#803005)