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/04 19:34:46 UTC

tinkerpop git commit: added RemoteResponse to remote_connection.py where it mimics the RemoteResponse API of Gremlin-Java. Note that traversal side-effects are simply a dict (map) in gremlin-python. Moving forward, we can make a class, but its not necess

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1278 735a9f6d8 -> 52d354e24


added RemoteResponse to remote_connection.py where it mimics the RemoteResponse API of Gremlin-Java. Note that traversal side-effects are simply a dict (map) in gremlin-python. Moving forward, we can make a class, but its not necessary now.


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

Branch: refs/heads/TINKERPOP-1278
Commit: 52d354e249cdd066d41495d2eae14f70be40a778
Parents: 735a9f6
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Aug 4 13:34:41 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Aug 4 13:34:41 2016 -0600

----------------------------------------------------------------------
 .../tinkerpop/gremlin/python/TraversalSourceGenerator.groovy | 7 ++++---
 .../src/main/jython/gremlin_python/driver/__init__.py        | 1 +
 .../main/jython/gremlin_python/driver/remote_connection.py   | 8 +++++++-
 .../jython/gremlin_python/driver/rest_remote_connection.py   | 7 ++++---
 .../src/main/jython/gremlin_python/process/traversal.py      | 7 ++++---
 .../src/main/jython/gremlin_python/structure/remote_graph.py | 6 ++++--
 6 files changed, 24 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/52d354e2/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/TraversalSourceGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/TraversalSourceGenerator.groovy b/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/TraversalSourceGenerator.groovy
index 64fe074..f2a95bf 100644
--- a/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/TraversalSourceGenerator.groovy
+++ b/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/TraversalSourceGenerator.groovy
@@ -63,7 +63,8 @@ class Traversal(object):
         self.graph = graph
         self.traversal_strategies = traversal_strategies
         self.bytecode = bytecode
-        self.results = None
+        self.side_effects = {}
+        self.traversers = None
         self.last_traverser = None
         self.bindings = {}
 
@@ -85,10 +86,10 @@ class Traversal(object):
         return self
 
     def __next__(self):
-        if self.results is None:
+        if self.traversers is None:
             self.traversal_strategies.apply_strategies(self)
         if self.last_traverser is None:
-            self.last_traverser = next(self.results)
+            self.last_traverser = next(self.traversers)
         object = self.last_traverser.object
         self.last_traverser.bulk = self.last_traverser.bulk - 1
         if self.last_traverser.bulk <= 0:

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/52d354e2/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 bb4e612..2a14af1 100644
--- a/gremlin-python/src/main/jython/gremlin_python/driver/__init__.py
+++ b/gremlin-python/src/main/jython/gremlin_python/driver/__init__.py
@@ -17,6 +17,7 @@ specific language governing permissions and limitations
 under the License.
 '''
 from remote_connection import RemoteConnection
+from remote_connection import RemoteResponse
 from rest_remote_connection import RESTRemoteConnection
 
 __author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/52d354e2/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 f450d9f..4952fbe 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
@@ -29,4 +29,10 @@ class RemoteConnection(object):
     @abstractmethod
     def submit(self, target_language, bytecode):
         print "sending " + bytecode + " to GremlinServer..."
-        return iter([])
+        return RemoteResponse(iter([]), {})
+
+
+class RemoteResponse(object):
+    def __init__(self, traversers, side_effects):
+        self.traversers = traversers
+        self.side_effects = side_effects

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/52d354e2/gremlin-python/src/main/jython/gremlin_python/driver/rest_remote_connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/driver/rest_remote_connection.py b/gremlin-python/src/main/jython/gremlin_python/driver/rest_remote_connection.py
index 2b3c655..f204d15 100644
--- a/gremlin-python/src/main/jython/gremlin_python/driver/rest_remote_connection.py
+++ b/gremlin-python/src/main/jython/gremlin_python/driver/rest_remote_connection.py
@@ -21,6 +21,7 @@ import requests
 
 from gremlin_python.process.traversal import Traverser
 from remote_connection import RemoteConnection
+from remote_connection import RemoteResponse
 
 __author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
 
@@ -37,7 +38,7 @@ class RESTRemoteConnection(RemoteConnection):
             {"gremlin": bytecode, "source": self.traversal_source, "language": target_language, "bindings": None}))
         if response.status_code != requests.codes.ok:
             raise BaseException(response.text)
-        results = []
+        traversers = []
         for x in response.json()['result']['data']:
-            results.append(Traverser(x, 1))
-        return iter(results)
+            traversers.append(Traverser(x, 1))
+        return RemoteResponse(iter(traversers), {})

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/52d354e2/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 9e56272..1d9aa18 100644
--- a/gremlin-python/src/main/jython/gremlin_python/process/traversal.py
+++ b/gremlin-python/src/main/jython/gremlin_python/process/traversal.py
@@ -25,7 +25,8 @@ class Traversal(object):
         self.graph = graph
         self.traversal_strategies = traversal_strategies
         self.bytecode = bytecode
-        self.results = None
+        self.side_effects = {}
+        self.traversers = None
         self.last_traverser = None
         self.bindings = {}
 
@@ -47,10 +48,10 @@ class Traversal(object):
         return self
 
     def __next__(self):
-        if self.results is None:
+        if self.traversers is None:
             self.traversal_strategies.apply_strategies(self)
         if self.last_traverser is None:
-            self.last_traverser = next(self.results)
+            self.last_traverser = next(self.traversers)
         object = self.last_traverser.object
         self.last_traverser.bulk = self.last_traverser.bulk - 1
         if self.last_traverser.bulk <= 0:

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/52d354e2/gremlin-python/src/main/jython/gremlin_python/structure/remote_graph.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/structure/remote_graph.py b/gremlin-python/src/main/jython/gremlin_python/structure/remote_graph.py
index 9fef17d..03930a4 100644
--- a/gremlin-python/src/main/jython/gremlin_python/structure/remote_graph.py
+++ b/gremlin-python/src/main/jython/gremlin_python/structure/remote_graph.py
@@ -38,8 +38,10 @@ class RemoteStrategy(TraversalStrategy):
         if not (traversal.graph.__class__.__name__ == "RemoteGraph"):
             raise BaseException(
                 "RemoteStrategy can only be used with a RemoteGraph: " + traversal.graph.__class__.__name__)
-        if traversal.results is None:
-            traversal.results = traversal.graph.remote_connection.submit(
+        if traversal.traversers is None:
+            remote_response = traversal.graph.remote_connection.submit(
                 'gremlin-groovy',  # script engine
                 traversal.bytecode),  # script
+            traversal.side_effects = remote_response.side_effects
+            traversal.traversers = remote_response.traversers
         return