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