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