David M. Brown created TINKERPOP-1561:
-----------------------------------------
Summary: gremiln-python GraphSONWriter doesn't properly serialize
long in Python 3.5
Key: TINKERPOP-1561
URL: https://issues.apache.org/jira/browse/TINKERPOP-1561
Project: TinkerPop
Issue Type: Bug
Components: language-variant
Affects Versions: 3.2.3
Environment: Python 3.5
Reporter: David M. Brown
Because `long` doesn't exist in Python 3, we created a simple wrapper that
inherits from `int` to fill the void. After the last changes to the
gremlin-python `graphson` module, this inheritance causes our longs to be
serialized as `Int32`. For example:
```python
from gremlin_python.statics import long
from gremlin_python.structure.io.graphson import GraphSONWriter
writer = GraphSONWriter()
writer.toDict(1)
{'@type': 'g:Int32', '@value': 1}
writer.toDict(long(1))
{'@type': 'g:Int32', '@value': 1}
```
This should be an easy fix. As far as I can see there are two main approaches:
1. Combine the `Int64I0` and `Int32IO` classes and perform an instance check
for long in the `dictify()` method; or,
2. Implement a `long` type that doesn't inherit from int. Here we would
probably want to define a variety of methods so our `long` emulates Python's
numeric object.
Does anyone have an opinion on a preferred approach? I would probably go with
the first approach, but either could work.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)