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 00:56:25 UTC

incubator-tinkerpop git commit: got complex P nesting working. going to add a ProcessStandardSuite test case that does nasty P-nesting so we know it works for all variants.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1278 252d28431 -> 99834114d


got complex P nesting working. going to add a ProcessStandardSuite test case that does nasty P-nesting so we know it works for all variants.


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

Branch: refs/heads/TINKERPOP-1278
Commit: 99834114dfefa2213482fe9e6c5aa42bac5e6ff6
Parents: 252d284
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Jun 1 18:56:21 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Jun 1 18:56:21 2016 -0600

----------------------------------------------------------------------
 .../python/GremlinPythonGenerator.groovy        | 17 ++++-
 .../python/gremlin-python-3.2.1-SNAPSHOT.py     | 79 ++++++++++----------
 2 files changed, 55 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/99834114/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 1be203c..df3af56 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
@@ -139,18 +139,31 @@ class Helper(object):
         }
         pythonClass.append("\n\n");
 
-        pythonClass.append("class P(object):\n");
+        pythonClass.append("""class P(object):
+   def __init__(self, pString):
+      self.pString = pString
+   def __repr__(self):
+      return self.pString
+""")
         P.getMethods()
                 .findAll { P.class.isAssignableFrom(it.returnType) }
+                .findAll { !it.name.equals("or") && !it.name.equals("and") && !it.name.equals("not") }
                 .collect { methodMap[it.name] }
                 .toSet()
                 .each { method ->
             pythonClass.append(
                     """   @staticmethod
    def ${method}(*args):
-      return "P.${method}(" + Helper.stringify(*args) + ")"
+      return P("P.${method}(" + Helper.stringify(*args) + ")")
 """)
         };
+        pythonClass.append("""   def _and(self, arg):
+      return P(self.pString + ".and(" + Helper.stringify(arg) + ")")
+   def _or(self, arg):
+      return P(self.pString + ".or(" + Helper.stringify(arg) + ")")
+   def _not(self, arg):
+      return P(self.pString + ".not(" + Helper.stringify(arg) + ")")
+""")
         pythonClass.append("\n\n")
 
         pythonClass.append("class Pop(object):\n");

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/99834114/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 0ea7293..fcad0fe 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
@@ -96,57 +96,58 @@ class Order(object):
 
 
 class P(object):
-   @staticmethod
-   def _or(*args):
-      return "P._or(" + Helper.stringify(*args) + ")"
+   def __init__(self, pString):
+      self.pString = pString
+   def __repr__(self):
+      return self.pString
    @staticmethod
    def test(*args):
-      return "P.test(" + Helper.stringify(*args) + ")"
+      return P("P.test(" + Helper.stringify(*args) + ")")
    @staticmethod
    def within(*args):
-      return "P.within(" + Helper.stringify(*args) + ")"
+      return P("P.within(" + Helper.stringify(*args) + ")")
    @staticmethod
    def lt(*args):
-      return "P.lt(" + Helper.stringify(*args) + ")"
+      return P("P.lt(" + Helper.stringify(*args) + ")")
    @staticmethod
    def eq(*args):
-      return "P.eq(" + Helper.stringify(*args) + ")"
+      return P("P.eq(" + Helper.stringify(*args) + ")")
    @staticmethod
    def inside(*args):
-      return "P.inside(" + Helper.stringify(*args) + ")"
+      return P("P.inside(" + Helper.stringify(*args) + ")")
    @staticmethod
    def gt(*args):
-      return "P.gt(" + Helper.stringify(*args) + ")"
+      return P("P.gt(" + Helper.stringify(*args) + ")")
    @staticmethod
    def without(*args):
-      return "P.without(" + Helper.stringify(*args) + ")"
+      return P("P.without(" + Helper.stringify(*args) + ")")
    @staticmethod
-   def _and(*args):
-      return "P._and(" + Helper.stringify(*args) + ")"
+   def negate(*args):
+      return P("P.negate(" + Helper.stringify(*args) + ")")
    @staticmethod
    def outside(*args):
-      return "P.outside(" + Helper.stringify(*args) + ")"
-   @staticmethod
-   def negate(*args):
-      return "P.negate(" + Helper.stringify(*args) + ")"
+      return P("P.outside(" + Helper.stringify(*args) + ")")
    @staticmethod
    def clone(*args):
-      return "P.clone(" + Helper.stringify(*args) + ")"
-   @staticmethod
-   def _not(*args):
-      return "P._not(" + Helper.stringify(*args) + ")"
+      return P("P.clone(" + Helper.stringify(*args) + ")")
    @staticmethod
    def gte(*args):
-      return "P.gte(" + Helper.stringify(*args) + ")"
+      return P("P.gte(" + Helper.stringify(*args) + ")")
    @staticmethod
    def neq(*args):
-      return "P.neq(" + Helper.stringify(*args) + ")"
+      return P("P.neq(" + Helper.stringify(*args) + ")")
    @staticmethod
    def lte(*args):
-      return "P.lte(" + Helper.stringify(*args) + ")"
+      return P("P.lte(" + Helper.stringify(*args) + ")")
    @staticmethod
    def between(*args):
-      return "P.between(" + Helper.stringify(*args) + ")"
+      return P("P.between(" + Helper.stringify(*args) + ")")
+   def _and(self, arg):
+      return P(self.pString + ".and(" + Helper.stringify(arg) + ")")
+   def _or(self, arg):
+      return P(self.pString + ".or(" + Helper.stringify(arg) + ")")
+   def _not(self, arg):
+      return P(self.pString + ".not(" + Helper.stringify(arg) + ")")
 
 
 class Pop(object):
@@ -249,12 +250,12 @@ class PythonGraphTraversal(object):
   def coalesce(self, *args):
     self.traversalString = self.traversalString + ".coalesce(" + Helper.stringify(*args) + ")"
     return self
-  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) + ")"
+    return self
   def hasValue(self, *args):
     self.traversalString = self.traversalString + ".hasValue(" + Helper.stringify(*args) + ")"
     return self
@@ -417,12 +418,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
@@ -501,12 +502,12 @@ class PythonGraphTraversal(object):
   def until(self, *args):
     self.traversalString = self.traversalString + ".until(" + Helper.stringify(*args) + ")"
     return self
-  def outV(self, *args):
-    self.traversalString = self.traversalString + ".outV(" + Helper.stringify(*args) + ")"
-    return self
   def emit(self, *args):
     self.traversalString = self.traversalString + ".emit(" + Helper.stringify(*args) + ")"
     return self
+  def outV(self, *args):
+    self.traversalString = self.traversalString + ".outV(" + Helper.stringify(*args) + ")"
+    return self
   def inject(self, *args):
     self.traversalString = self.traversalString + ".inject(" + Helper.stringify(*args) + ")"
     return self
@@ -544,12 +545,12 @@ class __(object):
   def coalesce(*args):
     return PythonGraphTraversal("__").coalesce(*args)
   @staticmethod
-  def hasLabel(*args):
-    return PythonGraphTraversal("__").hasLabel(*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
@@ -784,12 +785,12 @@ class __(object):
   def until(*args):
     return PythonGraphTraversal("__").until(*args)
   @staticmethod
-  def outV(*args):
-    return PythonGraphTraversal("__").outV(*args)
-  @staticmethod
   def emit(*args):
     return PythonGraphTraversal("__").emit(*args)
   @staticmethod
+  def outV(*args):
+    return PythonGraphTraversal("__").outV(*args)
+  @staticmethod
   def inject(*args):
     return PythonGraphTraversal("__").inject(*args)
   @staticmethod