You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2016/08/27 00:54:46 UTC
[31/50] [abbrv] tinkerpop git commit: Have CPython testing of
side_effects working -- ghetto. Made _list, _set,
_all in python as these are Python built in functions and our static enums
shouldn't override these symbols.
Have CPython testing of side_effects working -- ghetto. Made _list,_set,_all in python as these are Python built in functions and our static enums shouldn't override these symbols.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/87be8a7d
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/87be8a7d
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/87be8a7d
Branch: refs/heads/master
Commit: 87be8a7d1b7f3f000a6f2aa1fb7e7aa877c5a1cf
Parents: 18e3d64
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Aug 25 16:06:24 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Aug 25 16:06:24 2016 -0600
----------------------------------------------------------------------
.../gremlin/python/jsr223/PythonTranslator.java | 4 +-
.../gremlin/python/jsr223/SymbolHelper.java | 3 +
.../driver/driver_remote_connection.py | 10 ++-
.../jython/gremlin_python/process/traversal.py | 10 +--
.../gremlin_python/structure/io/graphson.py | 5 +-
.../driver/DriverRemoteConnectionTest.java | 73 ++++++++++++++------
.../io/graphson/GraphSONWriterTest.java | 6 +-
7 files changed, 74 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87be8a7d/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java
index 0721c34..08295e0 100644
--- a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java
+++ b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java
@@ -146,9 +146,9 @@ public class PythonTranslator implements Translator.ScriptTranslator {
else if (object instanceof Class)
return ((Class) object).getCanonicalName();
else if (object instanceof VertexProperty.Cardinality)
- return "Cardinality." + object.toString();
+ return "Cardinality." + SymbolHelper.toPython(object.toString());
else if (object instanceof SackFunctions.Barrier)
- return "Barrier." + object.toString();
+ return "Barrier." + SymbolHelper.toPython(object.toString());
else if (object instanceof Enum)
return convertStatic(((Enum) object).getDeclaringClass().getSimpleName() + ".") + SymbolHelper.toPython(object.toString());
else if (object instanceof P)
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87be8a7d/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/SymbolHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/SymbolHelper.java b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/SymbolHelper.java
index 2b4c112..5264ce7 100644
--- a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/SymbolHelper.java
+++ b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/SymbolHelper.java
@@ -39,6 +39,9 @@ public final class SymbolHelper {
TO_PYTHON_MAP.put("is", "_is");
TO_PYTHON_MAP.put("not", "_not");
TO_PYTHON_MAP.put("from", "_from");
+ TO_PYTHON_MAP.put("list", "_list");
+ TO_PYTHON_MAP.put("set", "_set");
+ TO_PYTHON_MAP.put("all", "_all");
//
TO_PYTHON_MAP.forEach((k, v) -> FROM_PYTHON_MAP.put(v, k));
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87be8a7d/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py b/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
index 165eed6..f1aaeee 100644
--- a/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
+++ b/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
@@ -86,7 +86,10 @@ class DriverRemoteConnection(RemoteConnection):
}
}
}
- keys = yield self._execute_message(message)
+ try:
+ keys = yield self._execute_message(message)
+ except:
+ keys = []
raise gen.Return(set(keys))
@gen.coroutine
@@ -107,7 +110,10 @@ class DriverRemoteConnection(RemoteConnection):
"aliases": {"g": self.traversal_source}
}
}
- value = yield self._execute_message(message)
+ try:
+ value = yield self._execute_message(message)
+ except:
+ raise KeyError(key)
raise gen.Return(value)
@gen.coroutine
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87be8a7d/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 7b9d4d5..b39ec35 100644
--- a/gremlin-python/src/main/jython/gremlin_python/process/traversal.py
+++ b/gremlin-python/src/main/jython/gremlin_python/process/traversal.py
@@ -77,10 +77,10 @@ class Traversal(object):
Barrier = Enum('Barrier', 'normSack')
statics.add_static('normSack', Barrier.normSack)
-Cardinality = Enum('Cardinality', 'list set single')
+Cardinality = Enum('Cardinality', '_list _set single')
statics.add_static('single', Cardinality.single)
-statics.add_static('list', Cardinality.list)
-statics.add_static('set', Cardinality.set)
+statics.add_static('_list', Cardinality._list)
+statics.add_static('_set', Cardinality._set)
Column = Enum('Column', 'keys values')
statics.add_static('keys', Column.keys)
@@ -113,10 +113,10 @@ statics.add_static('keyDecr', Order.keyDecr)
statics.add_static('valueDecr', Order.valueDecr)
statics.add_static('shuffle', Order.shuffle)
-Pop = Enum('Pop', 'all first last')
+Pop = Enum('Pop', '_all first last')
statics.add_static('first', Pop.first)
statics.add_static('last', Pop.last)
-statics.add_static('all', Pop.all)
+statics.add_static('_all', Pop._all)
Scope = Enum('Scope', '_global local')
statics.add_static('_global', Scope._global)
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87be8a7d/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py b/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py
index c3199c6..b8305ac 100644
--- a/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py
+++ b/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py
@@ -70,7 +70,7 @@ class GraphSONReader(object):
type = object[_SymbolHelper._TYPE]
if type in deserializers:
return deserializers[type]._objectify(object)
- # list and map are treated as normal json objects (could be isolated deserializers)
+ # list and map are treated as normal json objects (could be isolated deserializers)
newDict = {}
for key in object:
newDict[GraphSONReader._objectify(key)] = GraphSONReader._objectify(object[key])
@@ -247,7 +247,8 @@ class PropertyDeserializer(GraphSONDeserializer):
class _SymbolHelper(object):
symbolMap = {"_global": "global", "_as": "as", "_in": "in", "_and": "and",
- "_or": "or", "_is": "is", "_not": "not", "_from": "from"}
+ "_or": "or", "_is": "is", "_not": "not", "_from": "from",
+ "_set": "set", "_list": "list", "_all": "all"}
_TYPE = "@type"
_VALUE = "@value"
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87be8a7d/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/DriverRemoteConnectionTest.java
----------------------------------------------------------------------
diff --git a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/DriverRemoteConnectionTest.java b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/DriverRemoteConnectionTest.java
index ba0f5d0..0434809 100644
--- a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/DriverRemoteConnectionTest.java
+++ b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/DriverRemoteConnectionTest.java
@@ -20,6 +20,7 @@
package org.apache.tinkerpop.gremlin.python.driver;
import org.apache.tinkerpop.gremlin.TestHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalSideEffects;
import org.apache.tinkerpop.gremlin.server.GremlinServer;
import org.apache.tinkerpop.gremlin.server.Settings;
import org.junit.BeforeClass;
@@ -63,30 +64,36 @@ public class DriverRemoteConnectionTest {
}
}
- private static List<String> submit(final String traversal) throws IOException {
- final StringBuilder script = new StringBuilder();
- script.append("from gremlin_python import statics\n");
- script.append("from gremlin_python.structure.graph import Graph\n");
- script.append("from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection\n");
- script.append("from gremlin_python.structure.io.graphson import GraphSONWriter\n\n");
- script.append("statics.load_statics(globals())\n");
- script.append("graph = Graph()\n");
- script.append("g = graph.traversal().withRemote(DriverRemoteConnection('ws://localhost:8182','g',username='stephen', password='password'))\n");
- script.append("results = " + traversal + ".toList()\n");
- script.append("print results\n\n");
+ private static List<String> submit(final String... scriptLines) throws IOException {
+ final StringBuilder builder = new StringBuilder();
+ builder.append("from gremlin_python import statics\n");
+ builder.append("from gremlin_python.structure.graph import Graph\n");
+ builder.append("from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection\n");
+ builder.append("from gremlin_python.structure.io.graphson import GraphSONWriter\n\n");
+ builder.append("statics.load_statics(globals())\n");
+ builder.append("graph = Graph()\n");
+ builder.append("g = graph.traversal().withRemote(DriverRemoteConnection('ws://localhost:8182','g',username='stephen', password='password'))\n");
+ for (int i = 0; i < scriptLines.length - 1; i++) {
+ builder.append(scriptLines[i] + "\n");
+ }
+ builder.append("final = " + scriptLines[scriptLines.length - 1] + "\n");
+ builder.append("if isinstance(final,dict):\n");
+ builder.append(" for key in final.keys():\n");
+ builder.append(" print (str(key),str(final[key]))\n");
+ builder.append("elif isinstance(final,str):\n");
+ builder.append(" print final\n");
+ builder.append("else:\n");
+ builder.append(" for result in final:\n");
+ builder.append(" print result\n\n");
File file = TestHelper.generateTempFile(DriverRemoteConnectionTest.class, "temp", "py");
final Writer writer = new BufferedWriter(new FileWriter(file.getAbsoluteFile()));
- writer.write(script.toString());
+ writer.write(builder.toString());
writer.flush();
writer.close();
final BufferedReader reader = new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec("python " + file.getAbsolutePath()).getInputStream()));
- final List<String> lines = reader.lines()
- .map(line -> line.substring(1, line.length() - 1))
- .flatMap(line -> Arrays.stream(line.split(",")))
- .map(String::trim)
- .collect(Collectors.toList());
+ final List<String> lines = reader.lines().map(String::trim).collect(Collectors.toList());
reader.close();
file.delete();
return lines;
@@ -99,27 +106,47 @@ public class DriverRemoteConnectionTest {
List<String> result = DriverRemoteConnectionTest.submit("g.V().count()");
assertEquals(1, result.size());
- assertEquals("6L", result.get(0));
+ assertEquals("6", result.get(0));
//
result = DriverRemoteConnectionTest.submit("g.V(1).out('created').name");
assertEquals(1, result.size());
- assertEquals("u'lop'", result.get(0));
+ assertEquals("lop", result.get(0));
//
result = DriverRemoteConnectionTest.submit("g.V(1).out()");
assertEquals(3, result.size());
assertTrue(result.contains("v[4]"));
assertTrue(result.contains("v[2]"));
assertTrue(result.contains("v[3]"));
+ //
+ result = DriverRemoteConnectionTest.submit("g.V().repeat(out()).times(2).name");
+ assertEquals(2, result.size());
+ assertTrue(result.contains("lop"));
+ assertTrue(result.contains("ripple"));
}
@Test
- public void testAnonymousTraversals() throws Exception {
+ public void testSideEffects() throws Exception {
if (!PYTHON_EXISTS) return;
- List<String> result = DriverRemoteConnectionTest.submit("g.V().repeat(out()).times(2).name");
+ List<String> result = DriverRemoteConnectionTest.submit(
+ "t = g.V().out().iterate()",
+ "str(t.side_effects)");
+ assertEquals(1, result.size());
+ assertEquals(new DefaultTraversalSideEffects().toString(), result.get(0));
+ //
+ result = DriverRemoteConnectionTest.submit(
+ "t = g.V().out('created').groupCount('m').by('name').iterate()",
+ "t.side_effects['m']");
+ assertEquals(2, result.size());
+ assertTrue(result.contains("('ripple', '1')"));
+ assertTrue(result.contains("('lop', '3')"));
+ //
+ result = DriverRemoteConnectionTest.submit(
+ "t = g.V().out('created').groupCount('m').by('name').aggregate('n').iterate()",
+ "t.side_effects.keys()");
assertEquals(2, result.size());
- assertTrue(result.contains("u'lop'"));
- assertTrue(result.contains("u'ripple'"));
+ assertTrue(result.contains("m"));
+ assertTrue(result.contains("n"));
}
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/87be8a7d/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/structure/io/graphson/GraphSONWriterTest.java
----------------------------------------------------------------------
diff --git a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/structure/io/graphson/GraphSONWriterTest.java b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/structure/io/graphson/GraphSONWriterTest.java
index 1b438b6..5e71bda 100644
--- a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/structure/io/graphson/GraphSONWriterTest.java
+++ b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/structure/io/graphson/GraphSONWriterTest.java
@@ -101,9 +101,9 @@ public class GraphSONWriterTest {
for (final T t : T.values()) {
assertEquals(t, mapper.readValue(jythonEngine.eval("GraphSONWriter.writeObject(T." + t.name() + ")").toString(), Object.class));
}
- for (final Pop t : Pop.values()) {
- assertEquals(t, mapper.readValue(jythonEngine.eval("GraphSONWriter.writeObject(Pop." + t.name() + ")").toString(), Object.class));
- }
+ assertEquals(Pop.first, mapper.readValue(jythonEngine.eval("GraphSONWriter.writeObject(Pop.first)").toString(), Object.class));
+ assertEquals(Pop.last, mapper.readValue(jythonEngine.eval("GraphSONWriter.writeObject(Pop.last)").toString(), Object.class));
+ assertEquals(Pop.all, mapper.readValue(jythonEngine.eval("GraphSONWriter.writeObject(Pop._all)").toString(), Object.class));
assertEquals(Scope.global, mapper.readValue(jythonEngine.eval("GraphSONWriter.writeObject(Scope._global)").toString(), Object.class));
assertEquals(Scope.local, mapper.readValue(jythonEngine.eval("GraphSONWriter.writeObject(Scope.local)").toString(), Object.class));
}