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/23 19:22:43 UTC

tinkerpop git commit: added SymbolHelper to gremlin_python so more than just groovy_translator can use it.

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1278 77b1bbddd -> 07964b273


added SymbolHelper to gremlin_python so more than just groovy_translator can use it.


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

Branch: refs/heads/TINKERPOP-1278
Commit: 07964b273a1544acf1747e296e4c2dd7d3a0ecb3
Parents: 77b1bbd
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Jun 23 13:22:39 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jun 23 13:22:39 2016 -0600

----------------------------------------------------------------------
 .../python/GremlinPythonSourceGenerator.groovy  |  4 +-
 .../gremlin/python/util/SymbolHelper.java       |  2 +-
 .../src/main/jython/gremlin_python/__init__.py  | 16 +++---
 .../jython/gremlin_python/gremlin_python.py     | 52 ++++++++++----------
 .../jython/gremlin_python/groovy_translator.py  | 34 +++----------
 .../main/jython/gremlin_python/translator.py    | 20 ++++++++
 6 files changed, 64 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/07964b27/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GremlinPythonSourceGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GremlinPythonSourceGenerator.groovy b/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GremlinPythonSourceGenerator.groovy
index 78e65ba..9099015 100644
--- a/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GremlinPythonSourceGenerator.groovy
+++ b/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/GremlinPythonSourceGenerator.groovy
@@ -177,7 +177,7 @@ globalTranslator = None
                 .sort { a, b -> a <=> b }
                 .each { method ->
             final Class<?> returnType = (GraphTraversal.getMethods() as Set).findAll {
-                it.name.equals(SymbolHelper.fromPython(method))
+                it.name.equals(SymbolHelper.toJava(method))
             }.collect { it.returnType }[0]
             if (null != returnType && Traversal.isAssignableFrom(returnType)) {
                 pythonClass.append(
@@ -283,7 +283,7 @@ globalTranslator = None
             pythonClass.append(
                     """   @staticmethod
    def ${method}(*args):
-      return P("${SymbolHelper.fromPython(method)}", *args)
+      return P("${SymbolHelper.toJava(method)}", *args)
 """)
         };
         pythonClass.append("""   def _and(self, arg):

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/07964b27/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/util/SymbolHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/util/SymbolHelper.java b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/util/SymbolHelper.java
index b1908ce..da97245 100644
--- a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/util/SymbolHelper.java
+++ b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/util/SymbolHelper.java
@@ -51,7 +51,7 @@ public final class SymbolHelper {
         return TO_PYTHON_MAP.getOrDefault(symbol, symbol);
     }
 
-    public static String fromPython(final String pythonSymbol) {
+    public static String toJava(final String pythonSymbol) {
         return FROM_PYTHON_MAP.getOrDefault(pythonSymbol, pythonSymbol);
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/07964b27/gremlin-python/src/main/jython/gremlin_python/__init__.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/__init__.py b/gremlin-python/src/main/jython/gremlin_python/__init__.py
index e9e2fa5..8f4fc49 100644
--- a/gremlin-python/src/main/jython/gremlin_python/__init__.py
+++ b/gremlin-python/src/main/jython/gremlin_python/__init__.py
@@ -16,20 +16,20 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 '''
-from gremlin_python import PythonGraphTraversal
-from gremlin_python import PythonGraphTraversalSource
-from gremlin_python import __
-from gremlin_python import statics
-from gremlin_python import T
-from gremlin_python import Order
+from gremlin_python import Barrier
 from gremlin_python import Cardinality
 from gremlin_python import Column
 from gremlin_python import Direction
 from gremlin_python import Operator
+from gremlin_python import Order
 from gremlin_python import P
 from gremlin_python import Pop
+from gremlin_python import PythonGraphTraversal
+from gremlin_python import PythonGraphTraversalSource
 from gremlin_python import Scope
-from gremlin_python import Barrier
+from gremlin_python import T
+from gremlin_python import __
+from gremlin_python import statics
 from groovy_translator import GroovyTranslator
 
-__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
\ No newline at end of file
+__author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/07964b27/gremlin-python/src/main/jython/gremlin_python/gremlin_python.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/gremlin_python.py b/gremlin-python/src/main/jython/gremlin_python/gremlin_python.py
index 08be95c..1ecca2b 100644
--- a/gremlin-python/src/main/jython/gremlin_python/gremlin_python.py
+++ b/gremlin-python/src/main/jython/gremlin_python/gremlin_python.py
@@ -1642,36 +1642,16 @@ def where(*args):
 statics['where'] = where
 
 
+Barrier = Enum('Barrier', 'normSack')
+
+statics['normSack'] = Barrier.normSack
+
 Pop = Enum('Pop', 'first last all')
 
 statics['first'] = Pop.first
 statics['last'] = Pop.last
 statics['all'] = Pop.all
 
-Cardinality = Enum('Cardinality', 'single list set')
-
-statics['single'] = Cardinality.single
-statics['list'] = Cardinality.list
-statics['set'] = Cardinality.set
-
-T = Enum('T', 'label id key value')
-
-statics['label'] = T.label
-statics['id'] = T.id
-statics['key'] = T.key
-statics['value'] = T.value
-
-Scope = Enum('Scope', '_global local')
-
-statics['_global'] = Scope._global
-statics['local'] = Scope.local
-
-Direction = Enum('Direction', 'OUT IN BOTH')
-
-statics['OUT'] = Direction.OUT
-statics['IN'] = Direction.IN
-statics['BOTH'] = Direction.BOTH
-
 Operator = Enum('Operator', 'sum minus mult div min max assign _and _or addAll sumLong')
 
 statics['sum'] = Operator.sum
@@ -1686,6 +1666,25 @@ statics['_or'] = Operator._or
 statics['addAll'] = Operator.addAll
 statics['sumLong'] = Operator.sumLong
 
+Cardinality = Enum('Cardinality', 'single list set')
+
+statics['single'] = Cardinality.single
+statics['list'] = Cardinality.list
+statics['set'] = Cardinality.set
+
+Direction = Enum('Direction', 'OUT IN BOTH')
+
+statics['OUT'] = Direction.OUT
+statics['IN'] = Direction.IN
+statics['BOTH'] = Direction.BOTH
+
+T = Enum('T', 'label id key value')
+
+statics['label'] = T.label
+statics['id'] = T.id
+statics['key'] = T.key
+statics['value'] = T.value
+
 Order = Enum('Order', 'incr decr keyIncr valueIncr keyDecr valueDecr shuffle')
 
 statics['incr'] = Order.incr
@@ -1696,9 +1695,10 @@ statics['keyDecr'] = Order.keyDecr
 statics['valueDecr'] = Order.valueDecr
 statics['shuffle'] = Order.shuffle
 
-Barrier = Enum('Barrier', 'normSack')
+Scope = Enum('Scope', '_global local')
 
-statics['normSack'] = Barrier.normSack
+statics['_global'] = Scope._global
+statics['local'] = Scope.local
 
 Column = Enum('Column', 'keys values')
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/07964b27/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 c31d858..da18a4e 100644
--- a/gremlin-python/src/main/jython/gremlin_python/groovy_translator.py
+++ b/gremlin-python/src/main/jython/gremlin_python/groovy_translator.py
@@ -23,6 +23,7 @@ from aenum import Enum
 from gremlin_python import P
 from gremlin_python import Raw
 from gremlin_python import RawExpression
+from translator import SymbolHelper
 from translator import Translator
 
 if sys.version_info.major > 2:
@@ -30,53 +31,32 @@ if sys.version_info.major > 2:
 
 __author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
 
-symbolMap = {"_global": "global", "_as": "as", "_in": "in", "_and": "and", "_or": "or", "_is": "is", "_not": "not",
-             "_from": "from"}
-
-enumMap = {"Cardinality": "VertexProperty.Cardinality", "Barrier": "SackFunctions.Barrier"}
-
 
 class GroovyTranslator(Translator):
     def __init__(self, alias, source_language="python", target_language="gremlin-groovy"):
         Translator.__init__(self, alias, source_language, target_language)
 
     def addStep(self, traversal, step_name, *args):
-        self.traversal_script = self.traversal_script + "." + GroovyTranslator.mapMethod(
+        self.traversal_script = self.traversal_script + "." + SymbolHelper.toJava(
             step_name) + "(" + GroovyTranslator.stringify(*args) + ")"
 
     def addSpawnStep(self, traversal, step_name, *args):
         newTranslator = GroovyTranslator(self.alias, self.source_language)
         newTranslator.traversal_script = self.traversal_script
-        newTranslator.traversal_script = newTranslator.traversal_script + "." + GroovyTranslator.mapMethod(
+        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.traversal_script = self.traversal_script
-        newTranslator.traversal_script = newTranslator.traversal_script + "." + GroovyTranslator.mapMethod(
+        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)
 
-    ### HELPER METHODS ###
-
-    @staticmethod
-    def mapMethod(method):
-        if (method in symbolMap):
-            return symbolMap[method]
-        else:
-            return method
-
-    @staticmethod
-    def mapEnum(enum):
-        if (enum in enumMap):
-            return enumMap[enum]
-        else:
-            return enum
-
     @staticmethod
     def stringOrObject(arg):
         if isinstance(arg, str):
@@ -88,13 +68,13 @@ class GroovyTranslator(Translator):
         elif isinstance(arg, float):
             return str(arg) + "f"
         elif isinstance(arg, Enum):  # Column, Order, Direction, Scope, T, etc.
-            return GroovyTranslator.mapEnum(type(arg).__name__) + "." + GroovyTranslator.mapMethod(str(arg.name))
+            return SymbolHelper.toJava(type(arg).__name__) + "." + SymbolHelper.toJava(str(arg.name))
         elif isinstance(arg, P):
             if arg.other is None:
-                return "P." + GroovyTranslator.mapMethod(arg.operator) + "(" + GroovyTranslator.stringOrObject(
+                return "P." + SymbolHelper.toJava(arg.operator) + "(" + GroovyTranslator.stringOrObject(
                     arg.value) + ")"
             else:
-                return GroovyTranslator.stringOrObject(arg.other) + "." + GroovyTranslator.mapMethod(
+                return GroovyTranslator.stringOrObject(arg.other) + "." + SymbolHelper.toJava(
                     arg.operator) + "(" + GroovyTranslator.stringOrObject(arg.value) + ")"
         elif callable(arg):  # closures
             lambdaString = arg().strip()

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/07964b27/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 9376554..3c1dc7d 100644
--- a/gremlin-python/src/main/jython/gremlin_python/translator.py
+++ b/gremlin-python/src/main/jython/gremlin_python/translator.py
@@ -20,6 +20,10 @@ from abc import abstractmethod
 
 __author__ = 'Marko A. Rodriguez (http://markorodriguez.com)'
 
+TO_JAVA_MAP = {"_global": "global", "_as": "as", "_in": "in", "_and": "and",
+                   "_or": "or", "_is": "is", "_not": "not", "_from": "from",
+                   "Cardinality": "VertexProperty.Cardinality", "Barrier": "SackFunctions.Barrier"}
+
 
 class Translator(object):
     def __init__(self, alias, source_language, target_language):
@@ -47,3 +51,19 @@ class Translator(object):
     @abstractmethod
     def __repr__(self):
         return "translator[" + self.source_language + "->" + self.target_language + "]"
+
+
+class SymbolHelper(object):
+    @staticmethod
+    def toJava(symbol):
+        if (symbol in TO_JAVA_MAP):
+            return TO_JAVA_MAP[symbol]
+        else:
+            return symbol
+
+    @staticmethod
+    def mapEnum(enum):
+        if (enum in enumMap):
+            return enumMap[enum]
+        else:
+            return enum