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: