You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2016/08/24 20:42:58 UTC

[1/2] tinkerpop git commit: python getSideEffects() now aggreagates correctly. cleaned up driver_connection alot.

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1278 531dcb59a -> 72a5ae0c4


python getSideEffects() now aggreagates correctly. cleaned up driver_connection alot.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/fbbcd467
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/fbbcd467
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/fbbcd467

Branch: refs/heads/TINKERPOP-1278
Commit: fbbcd467831d303fcdf8ea04668212424b094d20
Parents: 58704a7
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Aug 24 14:42:40 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Aug 24 14:42:40 2016 -0600

----------------------------------------------------------------------
 .../driver/driver_remote_connection.py          | 69 +++++++++-----------
 1 file changed, 30 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fbbcd467/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py b/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
index f7e50ad..77354e8 100644
--- a/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
+++ b/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
@@ -22,8 +22,8 @@ from tornado import gen
 from tornado import ioloop
 from tornado import websocket
 
+from gremlin_python.structure.io.graphson import GraphSONReader
 from gremlin_python.structure.io.graphson import GraphSONWriter
-from gremlin_python.structure.io.graphson import TraverserDeserializer
 from .remote_connection import RemoteConnection
 from .remote_connection import RemoteTraversal
 from .remote_connection import RemoteTraversalSideEffects
@@ -33,21 +33,7 @@ class GremlinServerError(Exception):
     pass
 
 
-# when the object is known to be a traverser, just use a direct call to the deserializer
-__traverserDeserializer = TraverserDeserializer()
-
-
-def parse_traverser(traverser_dict):
-    return __traverserDeserializer._objectify(traverser_dict)
-
-
-def parse_side_effect(result):
-    return result
-
-
 class DriverRemoteConnection(RemoteConnection):
-    """Remote connection to the Gremlin Server"""
-
     def __init__(self, url, traversal_source, loop=None, username="", password=""):
         super(DriverRemoteConnection, self).__init__(url, traversal_source)
         if loop is None:
@@ -68,33 +54,21 @@ class DriverRemoteConnection(RemoteConnection):
 
     @gen.coroutine
     def submit_traversal_bytecode(self, bytecode, request_id):
-        """
-        Submit bytecode to Gremlin Server
-
-        :param str gremlin: Gremlin script to submit to server.
-        :param str lang: Language of scripts submitted to the server.
-            "gremlin-groovy" by default
-        :param str op: Gremlin Server op argument. "eval" by default.
-        :param str processor: Gremlin Server processor argument. "" by default.
-
-        :returns: :py:class:`Response` object
-        """
         message = self._get_traversal_bytecode_message(bytecode, request_id)
-        traversers = yield self._execute_message(message, parse_traverser)
+        traversers = yield self._execute_message(message, lambda result: GraphSONReader._objectify(result))
         raise gen.Return(traversers)
 
     @gen.coroutine
     def submit_sideEffect_keys(self, request_id):
         message = self._get_sideEffect_keys_message(request_id)
-        resp_parser = lambda result: result
-        keys = yield self._execute_message(message, resp_parser)
-        raise gen.Return(keys)
+        keys = yield self._execute_message(message, lambda result: GraphSONReader._objectify(result))
+        raise gen.Return(set(keys))
 
     @gen.coroutine
     def submit_sideEffect_value(self, request_id, key):
         message = self._get_sideEffect_value_message(request_id, key)
-        side_effects = yield self._execute_message(message, parse_side_effect)
-        raise gen.Return(side_effects)
+        side_effects = yield self._execute_message(message, lambda result: GraphSONReader._objectify(result))
+        raise gen.Return(side_effects[0])  # don't get it wrapped in a list
 
     @gen.coroutine
     def _execute_message(self, message, resp_parser):
@@ -107,11 +81,10 @@ class DriverRemoteConnection(RemoteConnection):
             msg = yield resp.receive()
             if msg is None:
                 break
-            results += msg
+            results.append(msg)
         raise gen.Return(results)
 
     def close(self):
-        """Close underlying connection and mark as closed."""
         self._ws.close()
 
     def _get_traversal_bytecode_message(self, bytecode, request_id):
@@ -210,20 +183,38 @@ class Response:
         status_code = message["status"]["code"]
         data = message["result"]["data"]
         msg = message["status"]["message"]
+        meta = message["result"]["meta"]
+        aggregateTo = None if "aggregateTo" not in meta else meta["aggregateTo"]
+
         if status_code == 407:
             self._authenticate(self._username, self._password, self._processor)
-            traversers = yield self.receive()
+            yield self.receive()
         elif status_code == 204:
             self._closed = True
             return
         elif status_code in [200, 206]:
-            results = []
-            for result in data:
-                results.append(self._resp_parser(result))
+            # todo: bulk
+            if "list" == aggregateTo:
+                results = []
+                for item in data:
+                    results.append(self._resp_parser(item))
+            elif "set" == aggregateTo:
+                results = set()
+                for item in data:
+                    results.add(self._resp_parser(item))
+            elif "map" == aggregateTo:
+                results = {}
+                for item in data:
+                    m = self._resp_parser(item)
+                    results[m.keys()[0]] = m[m.keys()[0]]
+            else:
+                results = []
+                for item in data:
+                    results.append(self._resp_parser(item))
             if status_code == 200:
                 self._closed = True
+            raise gen.Return(results)
         else:
             self._closed = True
             raise GremlinServerError(
                 "{0}: {1}".format(status_code, msg))
-        raise gen.Return(results)


[2/2] tinkerpop git commit: Merge branch 'TINKERPOP-1278' of https://git-wip-us.apache.org/repos/asf/tinkerpop into TINKERPOP-1278

Posted by ok...@apache.org.
Merge branch 'TINKERPOP-1278' of https://git-wip-us.apache.org/repos/asf/tinkerpop into TINKERPOP-1278


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/72a5ae0c
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/72a5ae0c
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/72a5ae0c

Branch: refs/heads/TINKERPOP-1278
Commit: 72a5ae0c43f49562624b6154c9dfdd1e4ff400f1
Parents: fbbcd46 531dcb5
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Aug 24 14:42:47 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Aug 24 14:42:47 2016 -0600

----------------------------------------------------------------------
 data/grateful-dead-v2d0-typed.json              | 1616 +++++++++---------
 data/tinkerpop-classic-v2d0-typed.json          |   12 +-
 data/tinkerpop-crew-v2d0-typed.json             |   12 +-
 data/tinkerpop-modern-v2d0-typed.json           |   12 +-
 .../structure/io/graphson/GraphSONMapper.java   |    2 +-
 .../structure/io/graphson/GraphSONModule.java   |   68 +-
 .../structure/io/graphson/GraphSONTokens.java   |    2 +-
 ...aphSONMapperV2d0PartialEmbeddedTypeTest.java |   14 +-
 .../gremlin_python/structure/io/graphson.py     |   38 +-
 .../io/graphson/grateful-dead-v2d0-typed.json   | 1616 +++++++++---------
 .../graphson/tinkerpop-classic-v2d0-typed.json  |   12 +-
 .../io/graphson/tinkerpop-crew-v2d0-typed.json  |   12 +-
 .../graphson/tinkerpop-modern-v2d0-typed.json   |   12 +-
 13 files changed, 1714 insertions(+), 1714 deletions(-)
----------------------------------------------------------------------