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/01 23:38:18 UTC

incubator-tinkerpop git commit: getting slick with the reflection. got withStrategies(), withComputer(), etc. working. This is really really cool.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1278 139a08cf1 -> 252d28431


getting slick with the reflection. got withStrategies(), withComputer(), etc. working. This is really really cool.


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

Branch: refs/heads/TINKERPOP-1278
Commit: 252d2843189edb7aa4c9b094aff42609c57b27d3
Parents: 139a08c
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Jun 1 17:38:11 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Jun 1 17:38:11 2016 -0600

----------------------------------------------------------------------
 .../python/GremlinPythonGenerator.groovy        |  48 +++----
 .../python/gremlin-python-3.2.1-SNAPSHOT.py     | 129 ++++---------------
 2 files changed, 50 insertions(+), 127 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/252d2843/gremlin-variant/src/main/groovy/org/apache/tinkerpop/gremlin/process/variant/python/GremlinPythonGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-variant/src/main/groovy/org/apache/tinkerpop/gremlin/process/variant/python/GremlinPythonGenerator.groovy b/gremlin-variant/src/main/groovy/org/apache/tinkerpop/gremlin/process/variant/python/GremlinPythonGenerator.groovy
index e03363b..1be203c 100644
--- a/gremlin-variant/src/main/groovy/org/apache/tinkerpop/gremlin/process/variant/python/GremlinPythonGenerator.groovy
+++ b/gremlin-variant/src/main/groovy/org/apache/tinkerpop/gremlin/process/variant/python/GremlinPythonGenerator.groovy
@@ -19,15 +19,19 @@
 
 package org.apache.tinkerpop.gremlin.process.variant.python
 
+import org.apache.tinkerpop.gremlin.process.computer.Computer
 import org.apache.tinkerpop.gremlin.process.traversal.Operator
 import org.apache.tinkerpop.gremlin.process.traversal.Order
 import org.apache.tinkerpop.gremlin.process.traversal.P
 import org.apache.tinkerpop.gremlin.process.traversal.Pop
+import org.apache.tinkerpop.gremlin.process.traversal.SackFunctions
 import org.apache.tinkerpop.gremlin.process.traversal.Scope
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy
 import org.apache.tinkerpop.gremlin.structure.Column
 import org.apache.tinkerpop.gremlin.structure.Direction
 import org.apache.tinkerpop.gremlin.structure.T
@@ -67,22 +71,21 @@ under the License.
         final Map<String, String> invertedMethodMap = [:].withDefault { it };
         methodMap.entrySet().forEach { invertedMethodMap.put(it.value, it.key) }
 
+        final Set<String> NO_QUOTE = [VertexProperty.Cardinality, Column, Direction, Operator, Order, P, Pop, Scope, SackFunctions.Barrier, T,
+                                      ReadOnlyStrategy, Computer]
+                .collect { it.getSimpleName() }.toSet();
+        final Map<String, String> enumMap = [Cardinality: "VertexProperty.Cardinality", Barrier: "SackFunctions.Barrier"]
+                .withDefault { it }
+
         pythonClass.append("""
 class Helper(object):
   @staticmethod
   def stringOrObject(arg):
     if (type(arg) is str and
-       not(arg.startswith("VertexProperty.Cardinality.")) and
-       not(arg.startswith("P.")) and
-       not(arg.startswith("Order.")) and
-       not(arg.startswith("Scope.")) and
-       not(arg.startswith("Pop.")) and
-       not(arg.startswith("Column.")) and
-       not(arg.startswith("T.")) and
-       not(arg.startswith("Operator.")) and
-       not(arg.startswith("SackFunctions.Barrier.")) and
-       not(arg.startswith("Direction."))):
-      return "\\"" + arg + "\\""
+""")
+        NO_QUOTE.forEach { pythonClass.append("      not(arg.startswith(\"${enumMap[it]}.\")) and\n") }
+        pythonClass.append("      not(len(arg)==0)):\n")
+        pythonClass.append("""         return "\\"" + arg + "\\""
     elif type(arg) is bool:
       return str(arg).lower()
     elif type(arg) is long:
@@ -188,18 +191,20 @@ class Helper(object):
             }.collect {
                 it.returnType
             }[0]
-            if (null != returnType && Traversal.isAssignableFrom(returnType)) {
-                pythonClass.append(
-                        """  def ${method}(self, *args):
+            if (null != returnType) {
+                if (Traversal.isAssignableFrom(returnType)) {
+                    pythonClass.append(
+                            """  def ${method}(self, *args):
     return PythonGraphTraversal(self.traversalSourceString + ".${method}(" + Helper.stringify(*args) + ")")
 """)
-            } else {
-                pythonClass.append(
-                        """  def ${method}(self, *args):
+                } else if (TraversalSource.isAssignableFrom(returnType)) {
+                    pythonClass.append(
+                            """  def ${method}(self, *args):
     return PythonGraphTraversalSource(self.traversalSourceString + ".${method}(" + Helper.stringify(*args) + ")")
 """)
+                }
             }
-        }; []
+        }
         pythonClass.append("\n\n")
 
 ////////////////////
@@ -234,12 +239,6 @@ class Helper(object):
     self.traversalString = self.traversalString + ".${invertedMethodMap[method]}(" + Helper.stringify(*args) + ")"
     return self
 """)
-            } else {
-                pythonClass.append(
-                        """  def ${method}(self, *args):
-    self.traversalString = self.traversalString + ".${invertedMethodMap[method]}(" + Helper.stringify(*args) + ")"
-    return self.toList()
-""")
             }
         };
         pythonClass.append("\n\n")
@@ -249,6 +248,7 @@ class Helper(object):
 ////////////////////////
         pythonClass.append("class __(object):\n");
         __.getMethods()
+                .findAll { Traversal.isAssignableFrom(it.returnType) }
                 .collect { methodMap[it.name] }
                 .toSet()
                 .each { method ->

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/252d2843/gremlin-variant/variants/python/gremlin-python-3.2.1-SNAPSHOT.py
----------------------------------------------------------------------
diff --git a/gremlin-variant/variants/python/gremlin-python-3.2.1-SNAPSHOT.py b/gremlin-variant/variants/python/gremlin-python-3.2.1-SNAPSHOT.py
index 0fe3429..0ea7293 100644
--- a/gremlin-variant/variants/python/gremlin-python-3.2.1-SNAPSHOT.py
+++ b/gremlin-variant/variants/python/gremlin-python-3.2.1-SNAPSHOT.py
@@ -21,17 +21,20 @@ class Helper(object):
   @staticmethod
   def stringOrObject(arg):
     if (type(arg) is str and
-       not(arg.startswith("VertexProperty.Cardinality.")) and
-       not(arg.startswith("P.")) and
-       not(arg.startswith("Order.")) and
-       not(arg.startswith("Scope.")) and
-       not(arg.startswith("Pop.")) and
-       not(arg.startswith("Column.")) and
-       not(arg.startswith("T.")) and
-       not(arg.startswith("Operator.")) and
-       not(arg.startswith("SackFunctions.Barrier.")) and
-       not(arg.startswith("Direction."))):
-      return "\"" + arg + "\""
+      not(arg.startswith("Operator.")) and
+      not(arg.startswith("Order.")) and
+      not(arg.startswith("P.")) and
+      not(arg.startswith("Pop.")) and
+      not(arg.startswith("ReadOnlyStrategy.")) and
+      not(arg.startswith("VertexProperty.Cardinality.")) and
+      not(arg.startswith("Scope.")) and
+      not(arg.startswith("T.")) and
+      not(arg.startswith("Column.")) and
+      not(arg.startswith("Computer.")) and
+      not(arg.startswith("SackFunctions.Barrier.")) and
+      not(arg.startswith("Direction.")) and
+      not(len(arg)==0)):
+         return "\"" + arg + "\""
     elif type(arg) is bool:
       return str(arg).lower()
     elif type(arg) is long:
@@ -173,28 +176,12 @@ class PythonGraphTraversalSource(object):
     self.traversalSourceString = traversalSourceString
   def __repr__(self):
     return "graphtraversalsource[" + self.traversalSourceString + "]"
-  def standard(self, *args):
-    return PythonGraphTraversalSource(self.traversalSourceString + ".standard(" + Helper.stringify(*args) + ")")
-  def getClass(self, *args):
-    return PythonGraphTraversalSource(self.traversalSourceString + ".getClass(" + Helper.stringify(*args) + ")")
-  def wait(self, *args):
-    return PythonGraphTraversalSource(self.traversalSourceString + ".wait(" + Helper.stringify(*args) + ")")
-  def tx(self, *args):
-    return PythonGraphTraversalSource(self.traversalSourceString + ".tx(" + Helper.stringify(*args) + ")")
   def E(self, *args):
     return PythonGraphTraversal(self.traversalSourceString + ".E(" + Helper.stringify(*args) + ")")
-  def notifyAll(self, *args):
-    return PythonGraphTraversalSource(self.traversalSourceString + ".notifyAll(" + Helper.stringify(*args) + ")")
   def withoutStrategies(self, *args):
     return PythonGraphTraversalSource(self.traversalSourceString + ".withoutStrategies(" + Helper.stringify(*args) + ")")
-  def notify(self, *args):
-    return PythonGraphTraversalSource(self.traversalSourceString + ".notify(" + Helper.stringify(*args) + ")")
-  def computer(self, *args):
-    return PythonGraphTraversalSource(self.traversalSourceString + ".computer(" + Helper.stringify(*args) + ")")
   def V(self, *args):
     return PythonGraphTraversal(self.traversalSourceString + ".V(" + Helper.stringify(*args) + ")")
-  def hashCode(self, *args):
-    return PythonGraphTraversalSource(self.traversalSourceString + ".hashCode(" + Helper.stringify(*args) + ")")
   def withComputer(self, *args):
     return PythonGraphTraversalSource(self.traversalSourceString + ".withComputer(" + Helper.stringify(*args) + ")")
   def withSideEffect(self, *args):
@@ -203,24 +190,14 @@ class PythonGraphTraversalSource(object):
     return PythonGraphTraversalSource(self.traversalSourceString + ".withBulk(" + Helper.stringify(*args) + ")")
   def withPath(self, *args):
     return PythonGraphTraversalSource(self.traversalSourceString + ".withPath(" + Helper.stringify(*args) + ")")
-  def getGraph(self, *args):
-    return PythonGraphTraversalSource(self.traversalSourceString + ".getGraph(" + Helper.stringify(*args) + ")")
   def withSack(self, *args):
     return PythonGraphTraversalSource(self.traversalSourceString + ".withSack(" + Helper.stringify(*args) + ")")
-  def getStrategies(self, *args):
-    return PythonGraphTraversalSource(self.traversalSourceString + ".getStrategies(" + Helper.stringify(*args) + ")")
   def withStrategies(self, *args):
     return PythonGraphTraversalSource(self.traversalSourceString + ".withStrategies(" + Helper.stringify(*args) + ")")
-  def build(self, *args):
-    return PythonGraphTraversalSource(self.traversalSourceString + ".build(" + Helper.stringify(*args) + ")")
-  def equals(self, *args):
-    return PythonGraphTraversalSource(self.traversalSourceString + ".equals(" + Helper.stringify(*args) + ")")
   def clone(self, *args):
     return PythonGraphTraversalSource(self.traversalSourceString + ".clone(" + Helper.stringify(*args) + ")")
   def addV(self, *args):
     return PythonGraphTraversal(self.traversalSourceString + ".addV(" + Helper.stringify(*args) + ")")
-  def toString(self, *args):
-    return PythonGraphTraversalSource(self.traversalSourceString + ".toString(" + Helper.stringify(*args) + ")")
   def inject(self, *args):
     return PythonGraphTraversal(self.traversalSourceString + ".inject(" + Helper.stringify(*args) + ")")
 
@@ -236,12 +213,9 @@ class PythonGraphTraversal(object):
     elif type(index) is slice:
       return self.range(index.start,index.stop)
     else:
-      raise TypeError("index must be int or slice")
+      raise TypeError("Index must be int or slice")
   def __getattr__(self,key):
     return self.values(key)
-  def explain(self, *args):
-    self.traversalString = self.traversalString + ".explain(" + Helper.stringify(*args) + ")"
-    return self.toList()
   def asAdmin(self, *args):
     self.traversalString = self.traversalString + ".asAdmin(" + Helper.stringify(*args) + ")"
     return self
@@ -275,18 +249,15 @@ class PythonGraphTraversal(object):
   def coalesce(self, *args):
     self.traversalString = self.traversalString + ".coalesce(" + Helper.stringify(*args) + ")"
     return self
-  def hasValue(self, *args):
-    self.traversalString = self.traversalString + ".hasValue(" + Helper.stringify(*args) + ")"
+  def hasLabel(self, *args):
+    self.traversalString = self.traversalString + ".hasLabel(" + Helper.stringify(*args) + ")"
     return self
   def optional(self, *args):
     self.traversalString = self.traversalString + ".optional(" + Helper.stringify(*args) + ")"
     return self
-  def hasLabel(self, *args):
-    self.traversalString = self.traversalString + ".hasLabel(" + Helper.stringify(*args) + ")"
+  def hasValue(self, *args):
+    self.traversalString = self.traversalString + ".hasValue(" + Helper.stringify(*args) + ")"
     return self
-  def hasNext(self, *args):
-    self.traversalString = self.traversalString + ".hasNext(" + Helper.stringify(*args) + ")"
-    return self.toList()
   def toE(self, *args):
     self.traversalString = self.traversalString + ".toE(" + Helper.stringify(*args) + ")"
     return self
@@ -308,9 +279,6 @@ class PythonGraphTraversal(object):
   def toV(self, *args):
     self.traversalString = self.traversalString + ".toV(" + Helper.stringify(*args) + ")"
     return self
-  def toBulkSet(self, *args):
-    self.traversalString = self.traversalString + ".toBulkSet(" + Helper.stringify(*args) + ")"
-    return self.toList()
   def range(self, *args):
     self.traversalString = self.traversalString + ".range(" + Helper.stringify(*args) + ")"
     return self
@@ -386,9 +354,6 @@ class PythonGraphTraversal(object):
   def filter(self, *args):
     self.traversalString = self.traversalString + ".filter(" + Helper.stringify(*args) + ")"
     return self
-  def toSet(self, *args):
-    self.traversalString = self.traversalString + ".toSet(" + Helper.stringify(*args) + ")"
-    return self.toList()
   def subgraph(self, *args):
     self.traversalString = self.traversalString + ".subgraph(" + Helper.stringify(*args) + ")"
     return self
@@ -413,9 +378,6 @@ class PythonGraphTraversal(object):
   def project(self, *args):
     self.traversalString = self.traversalString + ".project(" + Helper.stringify(*args) + ")"
     return self
-  def toList(self, *args):
-    self.traversalString = self.traversalString + ".toList(" + Helper.stringify(*args) + ")"
-    return self.toList()
   def barrier(self, *args):
     self.traversalString = self.traversalString + ".barrier(" + Helper.stringify(*args) + ")"
     return self
@@ -425,9 +387,6 @@ class PythonGraphTraversal(object):
   def has(self, *args):
     self.traversalString = self.traversalString + ".has(" + Helper.stringify(*args) + ")"
     return self
-  def forEachRemaining(self, *args):
-    self.traversalString = self.traversalString + ".forEachRemaining(" + Helper.stringify(*args) + ")"
-    return self.toList()
   def group(self, *args):
     self.traversalString = self.traversalString + ".group(" + Helper.stringify(*args) + ")"
     return self
@@ -443,9 +402,6 @@ class PythonGraphTraversal(object):
   def propertyMap(self, *args):
     self.traversalString = self.traversalString + ".propertyMap(" + Helper.stringify(*args) + ")"
     return self
-  def fill(self, *args):
-    self.traversalString = self.traversalString + ".fill(" + Helper.stringify(*args) + ")"
-    return self.toList()
   def sideEffect(self, *args):
     self.traversalString = self.traversalString + ".sideEffect(" + Helper.stringify(*args) + ")"
     return self
@@ -470,9 +426,6 @@ class PythonGraphTraversal(object):
   def drop(self, *args):
     self.traversalString = self.traversalString + ".drop(" + Helper.stringify(*args) + ")"
     return self
-  def next(self, *args):
-    self.traversalString = self.traversalString + ".next(" + Helper.stringify(*args) + ")"
-    return self.toList()
   def inE(self, *args):
     self.traversalString = self.traversalString + ".inE(" + Helper.stringify(*args) + ")"
     return self
@@ -491,12 +444,6 @@ class PythonGraphTraversal(object):
   def choose(self, *args):
     self.traversalString = self.traversalString + ".choose(" + Helper.stringify(*args) + ")"
     return self
-  def toStream(self, *args):
-    self.traversalString = self.traversalString + ".toStream(" + Helper.stringify(*args) + ")"
-    return self.toList()
-  def remove(self, *args):
-    self.traversalString = self.traversalString + ".remove(" + Helper.stringify(*args) + ")"
-    return self.toList()
   def aggregate(self, *args):
     self.traversalString = self.traversalString + ".aggregate(" + Helper.stringify(*args) + ")"
     return self
@@ -530,18 +477,15 @@ class PythonGraphTraversal(object):
   def mapValues(self, *args):
     self.traversalString = self.traversalString + ".mapValues(" + Helper.stringify(*args) + ")"
     return self
-  def tryNext(self, *args):
-    self.traversalString = self.traversalString + ".tryNext(" + Helper.stringify(*args) + ")"
-    return self.toList()
   def match(self, *args):
     self.traversalString = self.traversalString + ".match(" + Helper.stringify(*args) + ")"
     return self
-  def peerPressure(self, *args):
-    self.traversalString = self.traversalString + ".peerPressure(" + Helper.stringify(*args) + ")"
-    return self
   def addE(self, *args):
     self.traversalString = self.traversalString + ".addE(" + Helper.stringify(*args) + ")"
     return self
+  def peerPressure(self, *args):
+    self.traversalString = self.traversalString + ".peerPressure(" + Helper.stringify(*args) + ")"
+    return self
   def label(self, *args):
     self.traversalString = self.traversalString + ".label(" + Helper.stringify(*args) + ")"
     return self
@@ -600,14 +544,14 @@ class __(object):
   def coalesce(*args):
     return PythonGraphTraversal("__").coalesce(*args)
   @staticmethod
-  def hasValue(*args):
-    return PythonGraphTraversal("__").hasValue(*args)
+  def hasLabel(*args):
+    return PythonGraphTraversal("__").hasLabel(*args)
   @staticmethod
   def optional(*args):
     return PythonGraphTraversal("__").optional(*args)
   @staticmethod
-  def hasLabel(*args):
-    return PythonGraphTraversal("__").hasLabel(*args)
+  def hasValue(*args):
+    return PythonGraphTraversal("__").hasValue(*args)
   @staticmethod
   def toE(*args):
     return PythonGraphTraversal("__").toE(*args)
@@ -630,9 +574,6 @@ class __(object):
   def toV(*args):
     return PythonGraphTraversal("__").toV(*args)
   @staticmethod
-  def wait(*args):
-    return PythonGraphTraversal("__").wait(*args)
-  @staticmethod
   def range(*args):
     return PythonGraphTraversal("__").range(*args)
   @staticmethod
@@ -642,9 +583,6 @@ class __(object):
   def local(*args):
     return PythonGraphTraversal("__").local(*args)
   @staticmethod
-  def notify(*args):
-    return PythonGraphTraversal("__").notify(*args)
-  @staticmethod
   def out(*args):
     return PythonGraphTraversal("__").out(*args)
   @staticmethod
@@ -705,12 +643,6 @@ class __(object):
   def subgraph(*args):
     return PythonGraphTraversal("__").subgraph(*args)
   @staticmethod
-  def equals(*args):
-    return PythonGraphTraversal("__").equals(*args)
-  @staticmethod
-  def toString(*args):
-    return PythonGraphTraversal("__").toString(*args)
-  @staticmethod
   def to(*args):
     return PythonGraphTraversal("__").to(*args)
   @staticmethod
@@ -720,9 +652,6 @@ class __(object):
   def addOutE(*args):
     return PythonGraphTraversal("__").addOutE(*args)
   @staticmethod
-  def getClass(*args):
-    return PythonGraphTraversal("__").getClass(*args)
-  @staticmethod
   def _or(*args):
     return PythonGraphTraversal("__")._or(*args)
   @staticmethod
@@ -792,9 +721,6 @@ class __(object):
   def values(*args):
     return PythonGraphTraversal("__").values(*args)
   @staticmethod
-  def notifyAll(*args):
-    return PythonGraphTraversal("__").notifyAll(*args)
-  @staticmethod
   def _is(*args):
     return PythonGraphTraversal("__")._is(*args)
   @staticmethod
@@ -816,9 +742,6 @@ class __(object):
   def cap(*args):
     return PythonGraphTraversal("__").cap(*args)
   @staticmethod
-  def hashCode(*args):
-    return PythonGraphTraversal("__").hashCode(*args)
-  @staticmethod
   def repeat(*args):
     return PythonGraphTraversal("__").repeat(*args)
   @staticmethod