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 4f73bbb859193563e9005838dbeb5bcce7aa33d1
Author: Stephen Mallette <[email protected]>
AuthorDate: Fri Aug 2 07:03:40 2019 -0400

    Added boolean and textp to python graphbinary
---
 .../gremlin_python/structure/io/graphbinaryV1.py   | 39 ++++++++++++++++++++++
 .../tests/structure/io/test_graphbinaryV1.py       |  9 +++++
 2 files changed, 48 insertions(+)

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 208a1e3..2f64ba2 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
@@ -90,6 +90,15 @@ class DataType(Enum):
     biginteger = 0x23    #todo
     byte = 0x24
     bytebuffer = 0x25
+    short = 0x26         #todo?
+    boolean = 0x27
+    textp = 0x28
+    traversalstrategy = 0x29
+    bulkset = 0x2a
+    tree = 0x2b
+    metrics = 0x2c
+    traversalmetrics = 0x2d
+    custom = 0x00
 
 
 class GraphBinaryTypeType(type):
@@ -752,3 +761,33 @@ class ByteBufferIO(_GraphBinaryTypeIO):
         return ByteBufferType(b.read(size))
 
 
+class BooleanIO(_GraphBinaryTypeIO):
+    python_type = bool
+    graphbinary_type = DataType.boolean
+
+    @classmethod
+    def dictify(cls, obj, writer):
+        ba = bytearray([cls.graphbinary_type.value])
+        ba.extend(struct.pack(">b", 0x01 if obj else 0x00))
+        return ba
+
+    @classmethod
+    def objectify(cls, b, reader):
+        return True if struct.unpack_from(">b", b.read(1))[0] == 0x01 else 
False
+
+
+class TextPIO(_GraphBinaryTypeIO):
+    graphbinary_type = DataType.textp
+    python_type = TextP
+
+    @classmethod
+    def dictify(cls, obj, writer):
+        ba = bytearray([cls.graphbinary_type.value])
+        ba.extend(cls.string_as_bytes(obj.operator))
+        additional = [writer.writeObject(obj.value), 
writer.writeObject(obj.other)] \
+            if obj.other is not None else [writer.writeObject(obj.value)]
+        ba.extend(struct.pack(">i", len(additional)))
+        for a in additional:
+            ba.extend(a)
+
+        return ba
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 4c827ad..620c3fc 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
@@ -178,4 +178,13 @@ class TestGraphSONWriter(object):
         output = 
self.graphbinary_reader.readObject(self.graphbinary_writer.writeObject(x))
         assert x == output
 
+    def test_boolean(self):
+        x = True
+        output = 
self.graphbinary_reader.readObject(self.graphbinary_writer.writeObject(x))
+        assert x == output
+
+        x = False
+        output = 
self.graphbinary_reader.readObject(self.graphbinary_writer.writeObject(x))
+        assert x == output
+
 

Reply via email to