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/08/23 19:09:37 UTC

tinkerpop git commit: Bindings is now key/value as opposed to variable/value. graphson.py is cleaner with reuse around prefixing. Was able to open up yet more test cases. Really cool.

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1278 1c0e2629a -> 064722bab


Bindings is now key/value as opposed to variable/value. graphson.py is cleaner with reuse around prefixing. Was able to open up yet more test cases. Really cool.


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

Branch: refs/heads/TINKERPOP-1278
Commit: 064722bab242e3f5c007d13e078c3cc537921887
Parents: 1c0e262
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Aug 23 13:09:32 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Aug 23 13:09:32 2016 -0600

----------------------------------------------------------------------
 .../gremlin/process/traversal/Bytecode.java     | 16 ++++-----
 .../python/TraversalSourceGenerator.groovy      | 12 +++----
 .../jython/gremlin_python/process/graphson.py   | 35 +++++++++-----------
 .../jython/gremlin_python/process/traversal.py  | 12 +++----
 .../gremlin/python/jsr223/PythonProvider.java   | 11 +++---
 5 files changed, 40 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/064722ba/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java
index ef82d8e..c200741 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java
@@ -121,7 +121,7 @@ public final class Bytecode implements Cloneable, Serializable {
     private static final void addInstructionBindings(final Map<String, Object> bindingsMap, final Instruction instruction) {
         for (final Object argument : instruction.getArguments()) {
             if (argument instanceof Binding)
-                bindingsMap.put(((Binding) argument).variable, ((Binding) argument).value);
+                bindingsMap.put(((Binding) argument).key, ((Binding) argument).value);
             else if (argument instanceof Bytecode)
                 bindingsMap.putAll(((Bytecode) argument).getBindings());
         }
@@ -197,16 +197,16 @@ public final class Bytecode implements Cloneable, Serializable {
 
     public static class Binding<V> implements Serializable {
 
-        private final String variable;
+        private final String key;
         private final V value;
 
-        public Binding(final String variable, final V value) {
-            this.variable = variable;
+        public Binding(final String key, final V value) {
+            this.key = key;
             this.value = value;
         }
 
         public String variable() {
-            return this.variable;
+            return this.key;
         }
 
         public V value() {
@@ -215,19 +215,19 @@ public final class Bytecode implements Cloneable, Serializable {
 
         @Override
         public String toString() {
-            return "binding[" + this.variable + "=" + this.value + "]";
+            return "binding[" + this.key + "=" + this.value + "]";
         }
 
         @Override
         public boolean equals(final Object object) {
             return object instanceof Binding &&
-                    this.variable.equals(((Binding) object).variable) &&
+                    this.key.equals(((Binding) object).key) &&
                     this.value.equals(((Binding) object).value);
         }
 
         @Override
         public int hashCode() {
-            return this.variable.hashCode() + this.value.hashCode();
+            return this.key.hashCode() + this.value.hashCode();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/064722ba/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/TraversalSourceGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/TraversalSourceGenerator.groovy b/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/TraversalSourceGenerator.groovy
index 742c609..c079068 100644
--- a/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/TraversalSourceGenerator.groovy
+++ b/gremlin-python/src/main/groovy/org/apache/tinkerpop/gremlin/python/TraversalSourceGenerator.groovy
@@ -244,14 +244,14 @@ BINDINGS
 '''
 
 class Bindings(object):
-    def of(self,variable,value):
-        if not isinstance(variable, str):
-            raise TypeError("Variable must be str")
-        return (variable,value)
+    def of(self,key,value):
+        if not isinstance(key, str):
+            raise TypeError("Key must be str")
+        return (key,value)
 
 class Binding(object):
-    def __init__(self,variable,value):
-        self.variable = variable
+    def __init__(self,key,value):
+        self.key = key
         self.value = value
 
 """)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/064722ba/gremlin-python/src/main/jython/gremlin_python/process/graphson.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/process/graphson.py b/gremlin-python/src/main/jython/gremlin_python/process/graphson.py
index 5ebbb00..884b805 100644
--- a/gremlin-python/src/main/jython/gremlin_python/process/graphson.py
+++ b/gremlin-python/src/main/jython/gremlin_python/process/graphson.py
@@ -21,8 +21,8 @@ import json
 from abc import abstractmethod
 from aenum import Enum
 from types import FunctionType
-from types import LongType
 from types import IntType
+from types import LongType
 
 from .traversal import Binding
 from .traversal import Bytecode
@@ -57,6 +57,8 @@ class GraphSONSerializer(object):
 
 class BytecodeSerializer(GraphSONSerializer):
     def _dictify(self, bytecode):
+        if isinstance(bytecode, Traversal):
+            bytecode = bytecode.bytecode
         dict = {}
         sources = []
         for instruction in bytecode.source_instructions:
@@ -76,15 +78,13 @@ class BytecodeSerializer(GraphSONSerializer):
             dict["source"] = sources
         if len(steps) > 0:
             dict["step"] = steps
-        return {_SymbolHelper._TYPE: _SymbolHelper.prefix("bytecode"), _SymbolHelper._VALUE: dict}
+        return _SymbolHelper.objectify("bytecode", dict)
 
 
 class EnumSerializer(GraphSONSerializer):
     def _dictify(self, enum):
-        dict = {}
-        dict[_SymbolHelper._TYPE] = _SymbolHelper.prefix(_SymbolHelper.toGremlin(type(enum).__name__))
-        dict[_SymbolHelper._VALUE] = _SymbolHelper.toGremlin(str(enum.name))
-        return dict
+        return _SymbolHelper.objectify(_SymbolHelper.toGremlin(type(enum).__name__),
+                                       _SymbolHelper.toGremlin(str(enum.name)))
 
 
 class PSerializer(GraphSONSerializer):
@@ -95,15 +95,15 @@ class PSerializer(GraphSONSerializer):
             dict["value"] = GraphSONWriter._dictify(p.value)
         else:
             dict["value"] = [GraphSONWriter._dictify(p.value), GraphSONWriter._dictify(p.other)]
-        return {_SymbolHelper._TYPE: _SymbolHelper.prefix("P"), _SymbolHelper._VALUE: dict}
+        return _SymbolHelper.objectify("P", dict)
 
 
 class BindingSerializer(GraphSONSerializer):
     def _dictify(self, binding):
         dict = {}
-        dict["key"] = binding.variable
+        dict["key"] = binding.key
         dict["value"] = GraphSONWriter._dictify(binding.value)
-        return {_SymbolHelper._TYPE: _SymbolHelper.prefix("binding"), _SymbolHelper._VALUE: dict}
+        return _SymbolHelper.objectify("binding", dict)
 
 
 class LambdaSerializer(GraphSONSerializer):
@@ -121,24 +121,19 @@ class LambdaSerializer(GraphSONSerializer):
             dict["arguments"] = eval(dict["value"]).func_code.co_argcount
         else:
             dict["arguments"] = -1
-        return {_SymbolHelper._TYPE: _SymbolHelper.prefix("lambda"), _SymbolHelper._VALUE: dict}
+        return _SymbolHelper.objectify("lambda", dict)
 
 
 class NumberSerializer(GraphSONSerializer):
     def _dictify(self, number):
         if isinstance(number, long):
-            return {_SymbolHelper._TYPE: _SymbolHelper.prefix("int64"), _SymbolHelper._VALUE: number}
+            return _SymbolHelper.objectify("int64", number)
         elif isinstance(number, int):
-            return {_SymbolHelper._TYPE: _SymbolHelper.prefix("int32"), _SymbolHelper._VALUE: number}
+            return _SymbolHelper.objectify("int32", number)
         else:
             return number
 
 
-class TraversalSerializer(BytecodeSerializer):
-    def _dictify(self, traversal):
-        return BytecodeSerializer._dictify(self, traversal.bytecode)
-
-
 class _SymbolHelper(object):
     symbolMap = {"_global": "global", "_as": "as", "_in": "in", "_and": "and",
                  "_or": "or", "_is": "is", "_not": "not", "_from": "from"}
@@ -151,17 +146,17 @@ class _SymbolHelper(object):
         return _SymbolHelper.symbolMap[symbol] if symbol in _SymbolHelper.symbolMap else symbol
 
     @staticmethod
-    def prefix(type, prefix="gremlin"):
-        return prefix + ":" + type
+    def objectify(type, value, prefix="gremlin"):
+        return {_SymbolHelper._TYPE: prefix + ":" + type, _SymbolHelper._VALUE: value}
 
 
 serializers = {
+    Traversal: BytecodeSerializer(),
     Bytecode: BytecodeSerializer(),
     Binding: BindingSerializer(),
     P: PSerializer(),
     Enum: EnumSerializer(),
     FunctionType: LambdaSerializer(),
-    Traversal: TraversalSerializer(),
     LongType: NumberSerializer(),
     IntType: NumberSerializer()
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/064722ba/gremlin-python/src/main/jython/gremlin_python/process/traversal.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/process/traversal.py b/gremlin-python/src/main/jython/gremlin_python/process/traversal.py
index 2531efb..e561f87 100644
--- a/gremlin-python/src/main/jython/gremlin_python/process/traversal.py
+++ b/gremlin-python/src/main/jython/gremlin_python/process/traversal.py
@@ -302,13 +302,13 @@ BINDINGS
 '''
 
 class Bindings(object):
-    def of(self,variable,value):
-        if not isinstance(variable, str):
-            raise TypeError("Variable must be str")
-        return (variable,value)
+    def of(self,key,value):
+        if not isinstance(key, str):
+            raise TypeError("Key must be str")
+        return (key,value)
 
 class Binding(object):
-    def __init__(self,variable,value):
-        self.variable = variable
+    def __init__(self,key,value):
+        self.key = key
         self.value = value
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/064722ba/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java
index e98a044..887f980 100644
--- a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java
+++ b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonProvider.java
@@ -27,10 +27,11 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionCompu
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PageRankTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PeerPressureTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProfileTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategyProcessTest;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategy;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
@@ -69,17 +70,15 @@ public class PythonProvider extends AbstractGraphProvider {
             "g_VX1X_out_injectXv2X_name",
             "shouldNeverPropagateANoBulkTraverser",
             "shouldNeverPropagateANullValuedTraverser",
+            "shouldHidePartitionKeyForValues",
             //
-            "g_VXlistXv1_v2_v3XX_name",
-            "g_V_hasLabelXpersonX_asXpX_VXsoftwareX_addInEXuses_pX",
-            "g_VXv1X_hasXage_gt_30X",
-            //
+            PeerPressureTest.Traversals.class.getCanonicalName(),
+            ProfileTest.Traversals.class.getCanonicalName(), // only fails in OLAP
             PageRankTest.Traversals.class.getCanonicalName(),
             ProgramTest.Traversals.class.getCanonicalName(),
             TraversalInterruptionTest.class.getCanonicalName(),
             TraversalInterruptionComputerTest.class.getCanonicalName(),
             EventStrategyProcessTest.class.getCanonicalName(),
-            PartitionStrategyProcessTest.class.getCanonicalName(),
             ElementIdStrategyProcessTest.class.getCanonicalName()));
 
     private static final Set<Class> IMPLEMENTATION = new HashSet<Class>() {{