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>() {{