[ 
https://issues.apache.org/jira/browse/TINKERPOP-2057?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

stephen mallette closed TINKERPOP-2057.
---------------------------------------
    Resolution: Not A Problem

sorry - took me a while to get to digging into this. upon investigation, i 
don't think that there's a problem here with Gremlin. It's an issue with the 
way dictionaries work native to Python. So here's your output:

{code}
gremlin> g.V().as("a").out().out().as("b").path().group().by(__.select("a", 
"b")).unfold()
==>{a=v[1], b=v[3]}=[[v[1], v[4], v[3]]]
==>{a=v[1], b=v[5]}=[[v[1], v[4], v[5]]]
{code}

You're returning a dictionary that uses a dictionary as a key. Python 
dictionary is immutable and therefore doesn't work as a key:

https://stackoverflow.com/q/20115680/1831717

It seems the dict could be "frozen" according to that answer, but I don't think 
we will do that. I think that this is just a limitation of the Gremlin language 
in python and that you should just alter your result structure to return a key 
that works for dictionaries in python.

Since this is behavior is expected of Python, I'm going to close this as it's 
not a bug - if you'd like to discuss it further, please bring up your concerns 
on the dev list.

https://lists.apache.org/list.html?dev@tinkerpop.apache.org


> TypeError when grouping by multiple attributes
> ----------------------------------------------
>
>                 Key: TINKERPOP-2057
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2057
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: python
>    Affects Versions: 3.3.3
>            Reporter: Pierce Freeman
>            Priority: Major
>
> The python serialization engine fails when trying to group a path by two 
> intermediate variables:
>  
> {code:java}
> graph = Graph()
> g = 
> graph.traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin','g'))
> g.V().as_("a").out().out().as_("b").path().group().by(__.select("a", 
> "b")).unfold().toList()
> {code}
> {code:java}
> ~/tinkerpop/gremlin-python/src/main/jython/gremlin_python/structure/io/graphsonV3d0.py
>  in objectify(cls, l, reader)
> 456 while x < len(l):
> 457 new_dict[reader.toObject(l[x])] = reader.toObject(l[x + 1])
> --> 458 x = x + 2
> 459 return new_dict
> 460 
> TypeError: unhashable type: 'dict'
> {code}
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to