You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Dicts with non-string keys get serialized wrong #4
Just want to make one note on this that isn't in the original issue/discussion:
This suggestion would turn tuples, which are hashable, into lists, which are not. This means that if someone reports a dictionary that has tuples as keys to NetLogo, and then pass them right back into python, it will fail because the keys are now unhashable lists. It would be quite confusing to people unless they are aware of this issue. (To be fair, most people who work with Python are...)
One option would be to iterate over keys in the extension, and turn all keys that are unhashable into a hashable object before creating the dictionary in python. But it seems a bit dangerous to make assumptions about what people want their data types to be, too.
Activity
arthurhjorth commentedon Feb 7, 2020
Just want to make one note on this that isn't in the original issue/discussion:
This suggestion would turn tuples, which are hashable, into lists, which are not. This means that if someone reports a dictionary that has tuples as keys to NetLogo, and then pass them right back into python, it will fail because the keys are now unhashable lists. It would be quite confusing to people unless they are aware of this issue. (To be fair, most people who work with Python are...)
One option would be to iterate over keys in the extension, and turn all keys that are unhashable into a hashable object before creating the dictionary in python. But it seems a bit dangerous to make assumptions about what people want their data types to be, too.
qiemem commentedon Feb 7, 2020
Good call. Worth noting we don't attempt to convert anything to dictionaries right now. e.g.:
It's up to the user to then wrap
fooin a dict.So the only real option I see is to make tuples are default iterable target instead of lists, but that doesn't seem reasonable to me.
arthurhjorth commentedon Feb 10, 2020
I definitely agree with that, and it makes sense to just make people be explicit about calling
dict()ortuple()when passing data back to Python.