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/06/27 17:44:33 UTC

tinkerpop git commit: simplified next() model and added Traversal.next(amount).

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1278 b41fa42ec -> 8153231ed


simplified next() model and added Traversal.next(amount).


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

Branch: refs/heads/TINKERPOP-1278
Commit: 8153231edc9878f57d76bb02af2ec6109d08259b
Parents: b41fa42
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Jun 27 11:44:30 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Jun 27 11:44:30 2016 -0600

----------------------------------------------------------------------
 .../python/GraphTraversalSourceGenerator.groovy |  1 -
 .../python/TraversalSourceGenerator.groovy      | 39 ++++++++++----------
 .../jython/gremlin_python/graph_traversal.py    |  1 -
 .../jython/gremlin_python/groovy_translator.py  |  6 +--
 .../jython/gremlin_python/jython_translator.py  |  6 +--
 .../main/jython/gremlin_python/translator.py    |  1 -
 .../src/main/jython/gremlin_python/traversal.py | 39 ++++++++++----------
 .../python/driver/RESTRemoteConnectionTest.java | 19 ++++++++++
 8 files changed, 63 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8153231e/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GraphTraversalSourceGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GraphTraversalSourceGenerator.groovy b/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GraphTraversalSourceGenerator.groovy
index 39bdc10..5867e86 100644
--- a/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GraphTraversalSourceGenerator.groovy
+++ b/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GraphTraversalSourceGenerator.groovy
@@ -56,7 +56,6 @@ specific language governing permissions and limitations
 under the License.
 '''
 """)
-        pythonClass.append("from aenum import Enum\n")
         pythonClass.append("from traversal import RawExpression\n")
         pythonClass.append("from traversal import PythonTraversal\n")
         pythonClass.append("from statics import add_static\n")

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8153231e/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 504d240..1e38c65 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
@@ -83,26 +83,6 @@ class PythonTraversal(object):
         return self
 
     def __next__(self):
-        return self.next()
-
-    def toList(self):
-        return list(iter(self))
-
-    def toSet(self):
-        return set(iter(self))
-
-    def next(self, amount):
-        count = 0
-        tempList = []
-        while count < amount:
-            count = count + 1
-            temp = next(self, None)
-            if None == temp:
-                break
-            tempList.append(temp)
-        return tempList
-
-    def next(self):
         if self.results is None:
             self.results = self.remote_connection.submit(self.translator.target_language,
                                                          self.translator.traversal_script, self.bindings)
@@ -114,6 +94,25 @@ class PythonTraversal(object):
             self.last_traverser = None
         return object
 
+    def toList(self):
+        return list(iter(self))
+
+    def toSet(self):
+        return set(iter(self))
+
+    def next(self, amount=None):
+        if amount is None:
+            return self.__next__()
+        else:
+            count = 0
+            tempList = []
+            while count < amount:
+                count = count + 1
+                try: temp = self.__next__()
+                except StopIteration: return tempList
+                tempList.append(temp)
+            return tempList
+
 """)
 
 ///////////

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8153231e/gremlin-python/src/main/jython/gremlin_python/graph_traversal.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/graph_traversal.py b/gremlin-python/src/main/jython/gremlin_python/graph_traversal.py
index f0a4668..758c0da 100644
--- a/gremlin-python/src/main/jython/gremlin_python/graph_traversal.py
+++ b/gremlin-python/src/main/jython/gremlin_python/graph_traversal.py
@@ -16,7 +16,6 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 '''
-from aenum import Enum
 from traversal import RawExpression
 from traversal import PythonTraversal
 from statics import add_static

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8153231e/gremlin-python/src/main/jython/gremlin_python/groovy_translator.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/groovy_translator.py b/gremlin-python/src/main/jython/gremlin_python/groovy_translator.py
index 38334cb..c1bae1a 100644
--- a/gremlin-python/src/main/jython/gremlin_python/groovy_translator.py
+++ b/gremlin-python/src/main/jython/gremlin_python/groovy_translator.py
@@ -41,21 +41,21 @@ class GroovyTranslator(Translator):
             step_name) + "(" + GroovyTranslator.stringify(*args) + ")"
 
     def addSpawnStep(self, traversal, step_name, *args):
-        newTranslator = GroovyTranslator(self.alias, self.source_language)
+        newTranslator = GroovyTranslator(self.alias, self.source_language, self.target_language)
         newTranslator.traversal_script = self.traversal_script
         newTranslator.traversal_script = newTranslator.traversal_script + "." + SymbolHelper.toJava(
             step_name) + "(" + GroovyTranslator.stringify(*args) + ")"
         traversal.translator = newTranslator
 
     def addSource(self, traversal_source, source_name, *args):
-        newTranslator = GroovyTranslator(self.alias, self.source_language)
+        newTranslator = GroovyTranslator(self.alias, self.source_language, self.target_language)
         newTranslator.traversal_script = self.traversal_script
         newTranslator.traversal_script = newTranslator.traversal_script + "." + SymbolHelper.toJava(
             source_name) + "(" + GroovyTranslator.stringify(*args) + ")"
         traversal_source.translator = newTranslator
 
     def getAnonymousTraversalTranslator(self):
-        return GroovyTranslator("__", self.source_language)
+        return GroovyTranslator("__", self.source_language, self.target_language)
 
     @staticmethod
     def stringOrObject(arg):

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8153231e/gremlin-python/src/main/jython/gremlin_python/jython_translator.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/jython_translator.py b/gremlin-python/src/main/jython/gremlin_python/jython_translator.py
index c82008d..5372629 100644
--- a/gremlin-python/src/main/jython/gremlin_python/jython_translator.py
+++ b/gremlin-python/src/main/jython/gremlin_python/jython_translator.py
@@ -45,21 +45,21 @@ class JythonTranslator(Translator):
             step_name) + "(" + JythonTranslator.stringify(*args) + ")"
 
     def addSpawnStep(self, traversal, step_name, *args):
-        newTranslator = JythonTranslator(self.alias, self.source_language)
+        newTranslator = JythonTranslator(self.alias, self.source_language, self.target_language)
         newTranslator.traversal_script = self.traversal_script
         newTranslator.traversal_script = newTranslator.traversal_script + "." + SymbolHelper.toJava(
             step_name) + "(" + JythonTranslator.stringify(*args) + ")"
         traversal.translator = newTranslator
 
     def addSource(self, traversal_source, source_name, *args):
-        newTranslator = JythonTranslator(self.alias, self.source_language)
+        newTranslator = JythonTranslator(self.alias, self.source_language, self.target_language)
         newTranslator.traversal_script = self.traversal_script
         newTranslator.traversal_script = newTranslator.traversal_script + "." + SymbolHelper.toJava(
             source_name) + "(" + JythonTranslator.stringify(*args) + ")"
         traversal_source.translator = newTranslator
 
     def getAnonymousTraversalTranslator(self):
-        return JythonTranslator("__", self.source_language)
+        return JythonTranslator("__", self.source_language, self.target_language)
 
     @staticmethod
     def stringOrObject(arg):

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8153231e/gremlin-python/src/main/jython/gremlin_python/translator.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/translator.py b/gremlin-python/src/main/jython/gremlin_python/translator.py
index 1f324a2..7cfd752 100644
--- a/gremlin-python/src/main/jython/gremlin_python/translator.py
+++ b/gremlin-python/src/main/jython/gremlin_python/translator.py
@@ -31,7 +31,6 @@ class Translator(object):
         self.source_language = source_language
         self.target_language = target_language
         self.traversal_script = alias
-        self.statics = {}
 
     @abstractmethod
     def addStep(self, traversal, step_name, *args):

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8153231e/gremlin-python/src/main/jython/gremlin_python/traversal.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/traversal.py b/gremlin-python/src/main/jython/gremlin_python/traversal.py
index ac81f0b..153e4fd 100644
--- a/gremlin-python/src/main/jython/gremlin_python/traversal.py
+++ b/gremlin-python/src/main/jython/gremlin_python/traversal.py
@@ -45,26 +45,6 @@ class PythonTraversal(object):
         return self
 
     def __next__(self):
-        return self.next()
-
-    def toList(self):
-        return list(iter(self))
-
-    def toSet(self):
-        return set(iter(self))
-
-    def next(self, amount):
-        count = 0
-        tempList = []
-        while count < amount:
-            count = count + 1
-            temp = next(self, None)
-            if None == temp:
-                break
-            tempList.append(temp)
-        return tempList
-
-    def next(self):
         if self.results is None:
             self.results = self.remote_connection.submit(self.translator.target_language,
                                                          self.translator.traversal_script, self.bindings)
@@ -76,6 +56,25 @@ class PythonTraversal(object):
             self.last_traverser = None
         return object
 
+    def toList(self):
+        return list(iter(self))
+
+    def toSet(self):
+        return set(iter(self))
+
+    def next(self, amount=None):
+        if amount is None:
+            return self.__next__()
+        else:
+            count = 0
+            tempList = []
+            while count < amount:
+                count = count + 1
+                try: temp = self.__next__()
+                except StopIteration: return tempList
+                tempList.append(temp)
+            return tempList
+
 Barrier = Enum('Barrier', 'normSack')
 
 add_static('normSack', Barrier.normSack)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8153231e/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/RESTRemoteConnectionTest.java
----------------------------------------------------------------------
diff --git a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/RESTRemoteConnectionTest.java b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/RESTRemoteConnectionTest.java
index 6805763..0035d4b 100644
--- a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/RESTRemoteConnectionTest.java
+++ b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/RESTRemoteConnectionTest.java
@@ -55,6 +55,12 @@ public class RESTRemoteConnectionTest {
     }
 
     @Test
+    public void testPythonGraphTraversalNext() throws Exception {
+        final String result = (String) jython.eval("g.V().repeat(__.out()).times(2).name.next()");
+        assertTrue(result.equals("lop") || result.equals("ripple"));
+    }
+
+    @Test
     public void testPythonGraphTraversalToList() throws Exception {
         final List<String> results = (List) jython.eval("g.V().repeat(__.out()).times(2).name.toList()");
         assertEquals(2, results.size());
@@ -69,4 +75,17 @@ public class RESTRemoteConnectionTest {
         assertTrue(results.contains("lop"));
         assertTrue(results.contains("ripple"));
     }
+
+    @Test
+    public void testPythonGraphTraversalNextAmount() throws Exception {
+        List<String> results = (List) jython.eval("g.V().repeat(__.out()).times(2).name.next(2)");
+        assertEquals(2, results.size());
+        assertTrue(results.contains("lop"));
+        assertTrue(results.contains("ripple"));
+        //
+        results = (List) jython.eval("g.V().repeat(__.out()).times(2).name.next(4)");
+        assertEquals(2, results.size());
+        assertTrue(results.contains("lop"));
+        assertTrue(results.contains("ripple"));
+    }
 }