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/02 20:37:13 UTC
incubator-tinkerpop git commit: PythonGraphTraversal now implements
Python __iter__ and thus,
once a result set comes back from Gremlin server as an iterator,
it will behave just like Gremlin-Java. That is,
the traversal is an iterator. Made the nested P
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/TINKERPOP-1278 fc5e2cbef -> 9ab3e15e8
PythonGraphTraversal now implements Python __iter__ and thus, once a result set comes back from Gremlin server as an iterator, it will behave just like Gremlin-Java. That is, the traversal is an iterator. Made the nested P-test in HasTest even crazier trying to break things.. all is still good in the hood.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/9ab3e15e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/9ab3e15e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/9ab3e15e
Branch: refs/heads/TINKERPOP-1278
Commit: 9ab3e15e8554db0bdfe7126ea96a9f65ba67471b
Parents: fc5e2cb
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Jun 2 14:37:07 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jun 2 14:37:07 2016 -0600
----------------------------------------------------------------------
.../traversal/step/filter/GroovyHasTest.groovy | 4 +-
.../process/traversal/step/filter/HasTest.java | 10 ++--
.../python/GremlinPythonGenerator.groovy | 13 +++--
.../variant/python/PythonVariantConverter.java | 2 +-
.../python/gremlin-python-3.2.1-SNAPSHOT.py | 53 ++++++++++----------
5 files changed, 43 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9ab3e15e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
index 8f452d3..a692618 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
@@ -156,8 +156,8 @@ public abstract class GroovyHasTest {
}
@Override
- public Traversal<Vertex, String> get_g_V_hasLabelXpersonX_hasXage_notXltX10XX_andXltX29X_orXeqX35XXXX_name() {
- new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('person').has('age', not(lt(10)).and(lt(29).or(eq(35)))).name")
+ public Traversal<Vertex, String> get_g_V_hasLabelXpersonX_hasXage_notXlteX10X_andXnotXbetweenX11_20XXXX_andXltX29X_orXeqX35XXXX_name() {
+ new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('person').has('age', not(lte(10).and(not(between(11,20)))).and(lt(29).or(eq(35)))).name")
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9ab3e15e/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
index 2682a71..aaab647 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
@@ -107,7 +107,7 @@ public abstract class HasTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Vertex> get_g_V_hasIdX1_2X(final Object v1Id, final Object v2Id);
- public abstract Traversal<Vertex, String> get_g_V_hasLabelXpersonX_hasXage_notXltX10XX_andXltX29X_orXeqX35XXXX_name();
+ public abstract Traversal<Vertex, String> get_g_V_hasLabelXpersonX_hasXage_notXlteX10X_andXnotXbetweenX11_20XXXX_andXltX29X_orXeqX35XXXX_name();
@Test
@LoadGraphWith(MODERN)
@@ -408,8 +408,8 @@ public abstract class HasTest extends AbstractGremlinProcessTest {
@Test
@LoadGraphWith(MODERN)
- public void g_V_hasLabelXpersonX_hasXage_notXltX10XX_andXltX29X_orXeqX35XXXX_name() {
- final Traversal<Vertex, String> traversal = get_g_V_hasLabelXpersonX_hasXage_notXltX10XX_andXltX29X_orXeqX35XXXX_name();
+ public void g_V_hasLabelXpersonX_hasXage_notXlteX10X_andXnotXbetweenX11_20XXXX_andXltX29X_orXeqX35XXXX_name() {
+ final Traversal<Vertex, String> traversal = get_g_V_hasLabelXpersonX_hasXage_notXlteX10X_andXnotXbetweenX11_20XXXX_andXltX29X_orXeqX35XXXX_name();
printTraversalForm(traversal);
checkResults(Arrays.asList("peter", "vadas"), traversal);
}
@@ -549,8 +549,8 @@ public abstract class HasTest extends AbstractGremlinProcessTest {
}
@Override
- public Traversal<Vertex, String> get_g_V_hasLabelXpersonX_hasXage_notXltX10XX_andXltX29X_orXeqX35XXXX_name() {
- return g.V().hasLabel("person").has("age", P.not(P.lt(10)).and(P.lt(29).or(P.eq(35)))).values("name");
+ public Traversal<Vertex, String> get_g_V_hasLabelXpersonX_hasXage_notXlteX10X_andXnotXbetweenX11_20XXXX_andXltX29X_orXeqX35XXXX_name() {
+ return g.V().hasLabel("person").has("age", P.not(P.lte(10).and(P.not(P.between(11, 20)))).and(P.lt(29).or(P.eq(35)))).values("name");
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9ab3e15e/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 3d3dd74..5f569be 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
@@ -144,6 +144,7 @@ class Helper(object):
"""class PythonGraphTraversal(object):
def __init__(self, traversalString):
self.traversalString = traversalString
+ self.results = None
def __repr__(self):
return self.traversalString;
def __getitem__(self,index):
@@ -155,6 +156,13 @@ class Helper(object):
raise TypeError("Index must be int or slice")
def __getattr__(self,key):
return self.values(key)
+ def __iter__(self):
+ return self
+ def next(self):
+ if(self.results is None):
+ print "sending " + self.traversalString + " to GremlinServer..."
+ self.results = iter([]) # get iterator from driver
+ return self.results.next()
""")
GraphTraversal.getMethods()
.collect { methodMap[it.name] }
@@ -207,11 +215,6 @@ class Helper(object):
pythonClass.append(" ${value} = \"VertexProperty.Cardinality.${value}\"\n");
}
pythonClass.append("\n");
- pythonClass.append("if(sys.argv[0]):\n")
- VertexProperty.Cardinality.values().each { value ->
- pythonClass.append(" ${value} = Cardinality.${value}\n");
- }
- pythonClass.append("\n");
//////////////
pythonClass.append("class Column(object):\n");
Column.values().each { value ->
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9ab3e15e/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/process/variant/python/PythonVariantConverter.java
----------------------------------------------------------------------
diff --git a/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/process/variant/python/PythonVariantConverter.java b/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/process/variant/python/PythonVariantConverter.java
index bceb72e..ca57292 100644
--- a/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/process/variant/python/PythonVariantConverter.java
+++ b/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/process/variant/python/PythonVariantConverter.java
@@ -146,7 +146,7 @@ public class PythonVariantConverter implements VariantConverter {
else if (object instanceof SackFunctions.Barrier)
return convertStatic("Barrier.") + object.toString();
else if (object instanceof VertexProperty.Cardinality)
- return convertStatic("Cardinality.") + object.toString();
+ return "Cardinality." + object.toString();
else if (object instanceof Direction)
return convertStatic("Direction.") + object.toString();
else if (object instanceof Operator)
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9ab3e15e/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 8c55dbb..a55431f 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
@@ -76,8 +76,6 @@ class PythonGraphTraversalSource(object):
return PythonGraphTraversalSource(self.traversalSourceString + ".withSack(" + Helper.stringify(*args) + ")")
def withStrategies(self, *args):
return PythonGraphTraversalSource(self.traversalSourceString + ".withStrategies(" + 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 inject(self, *args):
@@ -87,6 +85,7 @@ class PythonGraphTraversalSource(object):
class PythonGraphTraversal(object):
def __init__(self, traversalString):
self.traversalString = traversalString
+ self.results = None
def __repr__(self):
return self.traversalString;
def __getitem__(self,index):
@@ -98,6 +97,13 @@ class PythonGraphTraversal(object):
raise TypeError("Index must be int or slice")
def __getattr__(self,key):
return self.values(key)
+ def __iter__(self):
+ return self
+ def next(self):
+ if(self.results is None):
+ print "sending " + self.traversalString + " to GremlinServer..."
+ self.results = iter([]) # get iterator from driver
+ return self.results.next()
def asAdmin(self, *args):
self.traversalString = self.traversalString + ".asAdmin(" + Helper.stringify(*args) + ")"
return self
@@ -131,15 +137,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) + ")"
+ 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) + ")"
return self
- def hasValue(self, *args):
- self.traversalString = self.traversalString + ".hasValue(" + Helper.stringify(*args) + ")"
- return self
def toE(self, *args):
self.traversalString = self.traversalString + ".toE(" + Helper.stringify(*args) + ")"
return self
@@ -251,12 +257,12 @@ class PythonGraphTraversal(object):
def _or(self, *args):
self.traversalString = self.traversalString + ".or(" + Helper.stringify(*args) + ")"
return self
- def constant(self, *args):
- self.traversalString = self.traversalString + ".constant(" + Helper.stringify(*args) + ")"
- return self
def outE(self, *args):
self.traversalString = self.traversalString + ".outE(" + Helper.stringify(*args) + ")"
return self
+ def constant(self, *args):
+ self.traversalString = self.traversalString + ".constant(" + Helper.stringify(*args) + ")"
+ return self
def project(self, *args):
self.traversalString = self.traversalString + ".project(" + Helper.stringify(*args) + ")"
return self
@@ -299,12 +305,12 @@ class PythonGraphTraversal(object):
def otherV(self, *args):
self.traversalString = self.traversalString + ".otherV(" + Helper.stringify(*args) + ")"
return self
- def coin(self, *args):
- self.traversalString = self.traversalString + ".coin(" + Helper.stringify(*args) + ")"
- return self
def option(self, *args):
self.traversalString = self.traversalString + ".option(" + Helper.stringify(*args) + ")"
return self
+ def coin(self, *args):
+ self.traversalString = self.traversalString + ".coin(" + Helper.stringify(*args) + ")"
+ return self
def drop(self, *args):
self.traversalString = self.traversalString + ".drop(" + Helper.stringify(*args) + ")"
return self
@@ -426,15 +432,15 @@ class __(object):
def coalesce(*args):
return PythonGraphTraversal("__").coalesce(*args)
@staticmethod
+ def hasValue(*args):
+ return PythonGraphTraversal("__").hasValue(*args)
+ @staticmethod
def optional(*args):
return PythonGraphTraversal("__").optional(*args)
@staticmethod
def hasLabel(*args):
return PythonGraphTraversal("__").hasLabel(*args)
@staticmethod
- def hasValue(*args):
- return PythonGraphTraversal("__").hasValue(*args)
- @staticmethod
def toE(*args):
return PythonGraphTraversal("__").toE(*args)
@staticmethod
@@ -537,12 +543,12 @@ class __(object):
def _or(*args):
return PythonGraphTraversal("__")._or(*args)
@staticmethod
- def constant(*args):
- return PythonGraphTraversal("__").constant(*args)
- @staticmethod
def outE(*args):
return PythonGraphTraversal("__").outE(*args)
@staticmethod
+ def constant(*args):
+ return PythonGraphTraversal("__").constant(*args)
+ @staticmethod
def project(*args):
return PythonGraphTraversal("__").project(*args)
@staticmethod
@@ -699,12 +705,12 @@ if(sys.argv[0]):
return __.order(*args)
def coalesce(*args):
return __.coalesce(*args)
+ def hasValue(*args):
+ return __.hasValue(*args)
def optional(*args):
return __.optional(*args)
def hasLabel(*args):
return __.hasLabel(*args)
- def hasValue(*args):
- return __.hasValue(*args)
def toE(*args):
return __.toE(*args)
def fold(*args):
@@ -773,10 +779,10 @@ if(sys.argv[0]):
return __.addOutE(*args)
def _or(*args):
return __._or(*args)
- def constant(*args):
- return __.constant(*args)
def outE(*args):
return __.outE(*args)
+ def constant(*args):
+ return __.constant(*args)
def project(*args):
return __.project(*args)
def barrier(*args):
@@ -874,11 +880,6 @@ class Cardinality(object):
list = "VertexProperty.Cardinality.list"
set = "VertexProperty.Cardinality.set"
-if(sys.argv[0]):
- single = Cardinality.single
- list = Cardinality.list
- set = Cardinality.set
-
class Column(object):
keys = "Column.keys"
values = "Column.values"