You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2019/09/04 13:22:24 UTC
[tinkerpop] 14/40: Aded Binding and fixed up enum derser in python
graphbinary
This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a commit to branch TINKERPOP-2279
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit c1eba925ca5e92695a616e30dd8ffcfeda08f9b9
Author: Stephen Mallette <sp...@genoprime.com>
AuthorDate: Thu Aug 1 10:36:45 2019 -0400
Aded Binding and fixed up enum derser in python graphbinary
---
.../gremlin_python/structure/io/graphbinaryV1.py | 40 +++++++++++++++-------
.../tests/structure/io/test_graphbinaryV1.py | 7 +++-
2 files changed, 33 insertions(+), 14 deletions(-)
diff --git a/gremlin-python/src/main/jython/gremlin_python/structure/io/graphbinaryV1.py b/gremlin-python/src/main/jython/gremlin_python/structure/io/graphbinaryV1.py
index 7a91edf..8eb323b 100644
--- a/gremlin-python/src/main/jython/gremlin_python/structure/io/graphbinaryV1.py
+++ b/gremlin-python/src/main/jython/gremlin_python/structure/io/graphbinaryV1.py
@@ -71,7 +71,7 @@ class DataType(Enum):
vertex = 0x11
vertexproperty = 0x12
barrier = 0x13
- binding = 0x14 # todo
+ binding = 0x14
bytecode = 0x15 # todo
cardinality = 0x16
column = 0x17
@@ -521,9 +521,6 @@ class VertexPropertyIO(_GraphBinaryTypeIO):
class _EnumIO(_GraphBinaryTypeIO):
- python_type = Enum
- base_enum = None
-
@classmethod
def dictify(cls, obj, writer):
ba = bytearray([cls.graphbinary_type.value])
@@ -532,45 +529,62 @@ class _EnumIO(_GraphBinaryTypeIO):
@classmethod
def objectify(cls, b, reader):
- return cls.base_enum[cls.read_string(b)]
+ return cls.python_type[cls.read_string(b)]
class BarrierIO(_EnumIO):
graphbinary_type = DataType.barrier
- base_enum = Barrier
+ python_type = Barrier
class CardinalityIO(_EnumIO):
graphbinary_type = DataType.cardinality
- base_enum = Cardinality
+ python_type = Cardinality
class ColumnIO(_EnumIO):
graphbinary_type = DataType.column
- base_enum = Column
+ python_type = Column
class DirectionIO(_EnumIO):
graphbinary_type = DataType.direction
- base_enum = Direction
+ python_type = Direction
class OperatorIO(_EnumIO):
graphbinary_type = DataType.operator
- base_enum = Operator
+ python_type = Operator
class OrderIO(_EnumIO):
graphbinary_type = DataType.order
- base_enum = Order
+ python_type = Order
class PickIO(_EnumIO):
graphbinary_type = DataType.pick
- base_enum = Pick
+ python_type = Pick
class PopIO(_EnumIO):
graphbinary_type = DataType.pop
- base_enum = Pop
+ python_type = Pop
+
+
+class BindingIO(_GraphBinaryTypeIO):
+
+ python_type = Binding
+ graphbinary_type = DataType.binding
+
+ @classmethod
+ def dictify(cls, obj, writer):
+ ba = bytearray([cls.graphbinary_type.value])
+ ba.extend(cls.string_as_bytes(obj.key))
+ ba.extend(writer.writeObject(obj.value))
+ return ba
+
+ @classmethod
+ def objectify(cls, b, reader):
+ return Binding(cls.read_string(b), reader.readObject(b))
diff --git a/gremlin-python/src/main/jython/tests/structure/io/test_graphbinaryV1.py b/gremlin-python/src/main/jython/tests/structure/io/test_graphbinaryV1.py
index 10c77c1..f3ee2c8 100644
--- a/gremlin-python/src/main/jython/tests/structure/io/test_graphbinaryV1.py
+++ b/gremlin-python/src/main/jython/tests/structure/io/test_graphbinaryV1.py
@@ -31,7 +31,7 @@ import six
from gremlin_python.statics import timestamp, long
from gremlin_python.structure.graph import Vertex, Edge, Property, VertexProperty, Graph, Path
from gremlin_python.structure.io.graphbinaryV1 import GraphBinaryWriter, GraphBinaryReader, DataType
-from gremlin_python.process.traversal import P, Barrier
+from gremlin_python.process.traversal import P, Barrier, Binding
from gremlin_python.process.strategies import SubgraphStrategy
from gremlin_python.process.graph_traversal import __
@@ -154,3 +154,8 @@ class TestGraphSONWriter(object):
x = Barrier.normSack
output = self.graphbinary_reader.readObject(self.graphbinary_writer.writeObject(x))
assert x == output
+
+ def test_binding(self):
+ x = Binding("name", "marko")
+ output = self.graphbinary_reader.readObject(self.graphbinary_writer.writeObject(x))
+ assert x == output