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 00:09:33 UTC

tinkerpop git commit: cleaned things up really nice. RemoteTraversalSideEffects is now an abstract class that simply takes the lambdas for keys/values. Super clean. Removes lots of code from driver_remote_connection. Also, named things better -- get_side

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1278 5cd3cd8b8 -> 136531ea2


cleaned things up really nice. RemoteTraversalSideEffects is now an abstract class that simply takes the lambdas for keys/values. Super clean. Removes lots of code from driver_remote_connection. Also, named things better -- get_sideEffect_value -- not get_gather. Coolio. Now I'm done for the night.


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

Branch: refs/heads/TINKERPOP-1278
Commit: 136531ea2e9a51c96fd9cb072f760d29a060a8d4
Parents: 5cd3cd8
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Aug 23 18:09:28 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Aug 23 18:09:28 2016 -0600

----------------------------------------------------------------------
 .../jython/gremlin_python/driver/__init__.py    |  1 +
 .../driver/driver_remote_connection.py          | 51 ++++++--------------
 .../gremlin_python/driver/remote_connection.py  | 18 +++++++
 .../jython/gremlin_python/process/traversal.py  |  6 +--
 4 files changed, 34 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/136531ea/gremlin-python/src/main/jython/gremlin_python/driver/__init__.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/driver/__init__.py b/gremlin-python/src/main/jython/gremlin_python/driver/__init__.py
index 5d41e2e..8266cd2 100644
--- a/gremlin-python/src/main/jython/gremlin_python/driver/__init__.py
+++ b/gremlin-python/src/main/jython/gremlin_python/driver/__init__.py
@@ -19,6 +19,7 @@ under the License.
 from .remote_connection import RemoteConnection
 from .remote_connection import RemoteStrategy
 from .remote_connection import RemoteTraversal
+from .remote_connection import RemoteTraversalSideEffects
 
 try:
     from .driver_remote_connection import DriverRemoteConnection

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/136531ea/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 26d9ed3..b5f99e9 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
@@ -24,6 +24,7 @@ from tornado import websocket
 
 from .remote_connection import RemoteConnection
 from .remote_connection import RemoteTraversal
+from .remote_connection import RemoteTraversalSideEffects
 from ..process.graphson import GraphSONWriter
 from ..process.traversal import Traverser
 
@@ -56,13 +57,13 @@ class DriverRemoteConnection(RemoteConnection):
                op="bytecode",
                processor="traversal"):
         request_id = str(uuid.uuid4())
-        traversers = self._loop.run_sync(lambda: self.submit_bytecode(
-            bytecode, request_id))
-        return RemoteTraversal(iter(traversers),
-                               TraversalSideEffects(self, request_id))
+        traversers = self._loop.run_sync(lambda: self.submit_traversal_bytecode(bytecode, request_id))
+        keys_lambda = lambda: self._loop.run_sync(lambda: self.submit_sideEffect_keys(request_id))
+        value_lambda = lambda key: self._loop.run_sync(lambda: self.submit_sideEffect_value(request_id, key))
+        return RemoteTraversal(iter(traversers), RemoteTraversalSideEffects(keys_lambda, value_lambda))
 
     @gen.coroutine
-    def submit_bytecode(self, bytecode, request_id):
+    def submit_traversal_bytecode(self, bytecode, request_id):
         """
         Submit bytecode to Gremlin Server
 
@@ -74,20 +75,20 @@ class DriverRemoteConnection(RemoteConnection):
 
         :returns: :py:class:`Response` object
         """
-        message = self._get_bytecode_message(bytecode, request_id)
+        message = self._get_traversal_bytecode_message(bytecode, request_id)
         traversers = yield self._execute_message(message, parse_traverser)
         raise gen.Return(traversers)
 
     @gen.coroutine
-    def submit_keys(self, request_id):
-        message = self._get_keys_message(request_id)
+    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)
 
     @gen.coroutine
-    def submit_gather(self, request_id, key):
-        message = self._get_gather_message(request_id, key)
+    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)
 
@@ -109,7 +110,7 @@ class DriverRemoteConnection(RemoteConnection):
         """Close underlying connection and mark as closed."""
         self._ws.close()
 
-    def _get_bytecode_message(self, bytecode, request_id):
+    def _get_traversal_bytecode_message(self, bytecode, request_id):
         message = {
             "requestId": {
                 "@type": "gremlin:uuid",
@@ -125,7 +126,7 @@ class DriverRemoteConnection(RemoteConnection):
         message = self._finalize_message(message)
         return message
 
-    def _get_keys_message(self, request_id):
+    def _get_sideEffect_keys_message(self, request_id):
         message = {
             "requestId": {
                 "@type": "gremlin:uuid",
@@ -143,7 +144,7 @@ class DriverRemoteConnection(RemoteConnection):
         message = self._finalize_message(message)
         return message
 
-    def _get_gather_message(self, request_id, key):
+    def _get_sideEffect_value_message(self, request_id, key):
         message = {
             "requestId": {
                 "@type": "gremlin:uuid",
@@ -222,27 +223,3 @@ class Response:
             raise GremlinServerError(
                 "{0}: {1}".format(status_code, msg))
         raise gen.Return(results)
-
-
-class TraversalSideEffects(object):
-    def __init__(self, remote_connection, request_id):
-        self._remote_connection = remote_connection
-        self._request_id = request_id
-        self._loop = self._remote_connection._loop
-
-    def keys(self):
-        keys = self._loop.run_sync(
-            lambda: self._remote_connection.submit_keys(self._request_id))
-        return keys
-
-    def get(self, key):
-        side_effects = self._loop.run_sync(
-            lambda: self._remote_connection.submit_gather(self._request_id, key)
-        )
-        return side_effects
-
-    def __getitem__(self, key):
-        return self.get(key)
-
-    def __repr__(self):
-        return "sideEffects[size:" + str(len(self.keys())) + "]"

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/136531ea/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py b/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py
index dee0580..a2c973c 100644
--- a/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py
+++ b/gremlin-python/src/main/jython/gremlin_python/driver/remote_connection.py
@@ -52,6 +52,24 @@ class RemoteTraversal(Traversal):
         self.side_effects = side_effects
 
 
+class RemoteTraversalSideEffects(object):
+    def __init__(self, keys_lambda, value_lambda):
+        self.keys_lambda = keys_lambda
+        self.value_lambda = value_lambda
+
+    def keys(self):
+        return self.keys_lambda()
+
+    def get(self, key):
+        return self.value_lambda(key)
+
+    def __getitem__(self, key):
+        return self.get(key)
+
+    def __repr__(self):
+        return "sideEffects[size:" + str(len(self.keys())) + "]"
+
+
 class RemoteStrategy(TraversalStrategy):
     def __init__(self, remote_connection):
         self.remote_connection = remote_connection

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/136531ea/gremlin-python/src/main/jython/gremlin_python/process/traversal.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/process/traversal.py b/gremlin-python/src/main/jython/gremlin_python/process/traversal.py
index 9a8c7c6..c9fa482 100644
--- a/gremlin-python/src/main/jython/gremlin_python/process/traversal.py
+++ b/gremlin-python/src/main/jython/gremlin_python/process/traversal.py
@@ -43,17 +43,13 @@ class Traversal(object):
         if self.last_traverser.bulk <= 0:
             self.last_traverser = None
         return object
-    def sideEffects(self):
-        if self.traversers is None:
-            self.traversal_strategies.apply_strategies(self)
-        return self.side_effects
     def toList(self):
         return list(iter(self))
     def toSet(self):
         return set(iter(self))
     def iterate(self):
         while True:
-            try: self.__next__()
+            try: self.nextTraverser()
             except StopIteration: return self
     def nextTraverser(self):
         if self.traversers is None: