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 2017/10/19 17:37:23 UTC

[1/3] tinkerpop git commit: Fixed an attachement-bug in with a solution generalized to .

Repository: tinkerpop
Updated Branches:
  refs/heads/master 66a7856bd -> c12f45ca9


Fixed an attachement-bug in  with a solution generalized to .


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

Branch: refs/heads/master
Commit: 79b621c9a0ddc2d96f951c54ee3f1db3c8490d4c
Parents: 19e261c
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Oct 18 16:45:16 2017 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Oct 18 16:45:16 2017 -0600

----------------------------------------------------------------------
 CHANGELOG.asciidoc                                      |  1 +
 .../process/traversal/step/sideEffect/StartStep.java    |  7 ++++++-
 .../traversal/step/sideEffect/InjectStepTest.java       |  5 ++++-
 .../tests/driver/test_driver_remote_connection.py       | 12 +++++++++---
 4 files changed, 20 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/79b621c9/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 8ecff99..778660e 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -23,6 +23,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 [[release-3-2-7]]
 === TinkerPop 3.2.7 (Release Date: NOT OFFICIALLY RELEASED YET)
 
+* Fixed an "attachement"-bug in `InjectStep` with a solution generalized to `StartStep`.
 * Truncate the script in error logs and error return messages for "Method code too large" errors in Gremlin Server.
 * Fixed a bug in `LambdaRestrictionStrategy` where it was too eager to consider a step as being a lambda step.
 * `ReferenceVertex` was missing its `label()` string. `ReferenceElement` now supports all label handling.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/79b621c9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java
index cfb7323..77d4a48 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java
@@ -22,6 +22,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
+import org.apache.tinkerpop.gremlin.structure.util.Attachable;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.util.ArrayList;
@@ -65,7 +66,11 @@ public class StartStep<S> extends AbstractStep<S, S> {
             }
             this.first = false;
         }
-        return this.starts.next();
+        ///
+        final Traverser.Admin<S> start = this.starts.next();
+        if (start.get() instanceof Attachable && this.getTraversal().getGraph().isPresent())
+            start.set(((Attachable<S>) start.get()).attach(Attachable.Method.get(this.getTraversal().getGraph().get())));
+        return start;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/79b621c9/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/InjectStepTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/InjectStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/InjectStepTest.java
index fd72b1b..fced802 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/InjectStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/InjectStepTest.java
@@ -33,7 +33,10 @@ public class InjectStepTest extends StepTest {
     @Override
     protected List<Traversal> getTraversals() {
         return Arrays.asList(
-                __.identity()
+                __.identity(),
+                __.inject("a", "b"),
+                __.inject("a"),
+                __.inject("b")
         );
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/79b621c9/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py b/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
index 0f8c06b..1071493 100644
--- a/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
+++ b/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
@@ -67,7 +67,8 @@ class TestDriverRemoteConnection(object):
         # # todo: need a traversal metrics deserializer
         g.V().out().profile().next()
         # #
-        results = g.V().has('name','peter').as_('a').out('created').as_('b').select('a','b').by(__.valueMap()).toList()
+        results = g.V().has('name', 'peter').as_('a').out('created').as_('b').select('a', 'b').by(
+            __.valueMap()).toList()
         assert 1 == len(results)
         assert 'peter' == results[0]['a']['name'][0]
         assert 35 == results[0]['a']['age'][0]
@@ -75,6 +76,11 @@ class TestDriverRemoteConnection(object):
         assert 'java' == results[0]['b']['lang'][0]
         assert 2 == len(results[0]['a'])
         assert 2 == len(results[0]['b'])
+        # #
+        results = g.V(1).inject(g.V(2).next()).values('name').toList()
+        assert 2 == len(results)
+        assert 'marko' in results
+        assert 'vadas' in results
 
     def test_strategies(self, remote_connection):
         statics.load_statics(globals())
@@ -169,13 +175,13 @@ class TestDriverRemoteConnection(object):
         assert "knows" == edge.label
         assert a == edge.outV
         assert b == edge.inV
-        g.V().has("name","marko").outE("knows").where(__.inV().has("name","peter")).drop().iterate()
+        g.V().has("name", "marko").outE("knows").where(__.inV().has("name", "peter")).drop().iterate()
         ##
         edge = g.withSideEffect("a", a).withSideEffect("b", b).V().limit(1).addE("knows").from_("a").to("b").next()
         assert "knows" == edge.label
         assert a == edge.outV
         assert b == edge.inV
-        g.V().has("name","marko").outE("knows").where(__.inV().has("name","peter")).drop().iterate()
+        g.V().has("name", "marko").outE("knows").where(__.inV().has("name", "peter")).drop().iterate()
 
     def test_side_effect_close(self, remote_connection):
         g = Graph().traversal().withRemote(remote_connection)


[2/3] tinkerpop git commit: fixed an old hack in GroovyTranslator and PythonTranslator that makes it possible to translate Elements to their detached form. Added an InjectTest that demonstrates proper functioning for the respective XXXTranslators.

Posted by ok...@apache.org.
fixed an old hack in GroovyTranslator and PythonTranslator that makes it possible to translate Elements to their detached form. Added an InjectTest that demonstrates proper functioning for the respective XXXTranslators.


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

Branch: refs/heads/master
Commit: ff49cbea3d388592f911323ff2fd9144c2665aa6
Parents: 79b621c
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Oct 19 10:26:39 2017 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Oct 19 10:26:39 2017 -0600

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../step/sideEffect/GroovyInjectTest.groovy     |  5 ++++
 .../gremlin/groovy/jsr223/GroovyTranslator.java | 31 ++++++++++++++++++--
 .../gremlin/python/jsr223/PythonTranslator.java | 22 ++++++++++++--
 .../traversal/step/sideEffect/InjectTest.java   | 16 +++++++++-
 5 files changed, 68 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff49cbea/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 778660e..07f1d69 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -23,6 +23,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 [[release-3-2-7]]
 === TinkerPop 3.2.7 (Release Date: NOT OFFICIALLY RELEASED YET)
 
+* Fixed an old hack in `GroovyTranslator` and `PythonTranslator` where `Elements` were being mapped to their id only.
 * Fixed an "attachement"-bug in `InjectStep` with a solution generalized to `StartStep`.
 * Truncate the script in error logs and error return messages for "Method code too large" errors in Gremlin Server.
 * Fixed a bug in `LambdaRestrictionStrategy` where it was too eager to consider a step as being a lambda step.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff49cbea/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyInjectTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyInjectTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyInjectTest.groovy
index fb8efb2..06b79a2 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyInjectTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyInjectTest.groovy
@@ -38,5 +38,10 @@ public abstract class GroovyInjectTest {
         public Traversal<Vertex, Path> get_g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path(final Object v1Id) {
             new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out().name.inject('daniel').as('a').map { it.length() }.path", "v1Id", v1Id);
         }
+
+        @Override
+        public Traversal<Vertex, String> get_g_VX1X_injectXg_VX4XX_out_name(final Object v1Id, final Object v4Id) {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).inject(g.V(v4Id).next()).out.name", "v1Id", v1Id, "v4Id", v4Id)
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff49cbea/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
index 85490ae..b6410ec 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
@@ -31,7 +31,9 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.TraversalStrategyProxy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP;
 import org.apache.tinkerpop.gremlin.process.traversal.util.OrP;
+import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.Lambda;
@@ -157,9 +159,32 @@ public final class GroovyTranslator implements Translator.ScriptTranslator {
             return "TraversalOptionParent.Pick." + object.toString();
         else if (object instanceof Enum)
             return ((Enum) object).getDeclaringClass().getSimpleName() + "." + object.toString();
-        else if (object instanceof Element)
-            return convertToString(((Element) object).id()); // hack
-        else if (object instanceof Lambda) {
+        else if (object instanceof Element) {
+            if (object instanceof Vertex) {
+                final Vertex vertex = (Vertex) object;
+                return "new org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex(" +
+                        convertToString(vertex.id()) + "," +
+                        convertToString(vertex.label()) + ", Collections.emptyMap())";
+            } else if (object instanceof Edge) {
+                final Edge edge = (Edge) object;
+                return "new org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge(" +
+                        convertToString(edge.id()) + "," +
+                        convertToString(edge.label()) + "," +
+                        "Collections.emptyMap()," +
+                        convertToString(edge.outVertex().id()) + "," +
+                        convertToString(edge.outVertex().label()) + "," +
+                        convertToString(edge.inVertex().id()) + "," +
+                        convertToString(edge.inVertex().label()) + ")";
+            } else {// VertexProperty
+                final VertexProperty vertexProperty = (VertexProperty) object;
+                return "new org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty(" +
+                        convertToString(vertexProperty.id()) + "," +
+                        convertToString(vertexProperty.label()) + "," +
+                        convertToString(vertexProperty.value()) + "," +
+                        "Collections.emptyMap()," +
+                        convertToString(vertexProperty.element()) + ")";
+            }
+        } else if (object instanceof Lambda) {
             final String lambdaString = ((Lambda) object).getLambdaScript().trim();
             return lambdaString.startsWith("{") ? lambdaString : "{" + lambdaString + "}";
         } else if (object instanceof TraversalStrategyProxy) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff49cbea/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 0739c92..a5bfd25 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
@@ -33,8 +33,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.TraversalStrategyProxy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP;
 import org.apache.tinkerpop.gremlin.process.traversal.util.OrP;
+import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.Lambda;
@@ -190,9 +192,23 @@ public class PythonTranslator implements Translator.ScriptTranslator {
             return convertStatic(((Enum) object).getDeclaringClass().getSimpleName() + ".") + SymbolHelper.toPython(object.toString());
         else if (object instanceof P)
             return convertPToString((P) object, new StringBuilder()).toString();
-        else if (object instanceof Element)
-            return convertToString(((Element) object).id()); // hack
-        else if (object instanceof Lambda)
+        else if (object instanceof Element) {
+            if (object instanceof Vertex) {
+                final Vertex vertex = (Vertex) object;
+                return "Vertex(" + convertToString(vertex.id()) + "," + convertToString(vertex.label()) + ")";
+            } else if (object instanceof Edge) {
+                final Edge edge = (Edge) object;
+                return "Edge(" + convertToString(edge.id()) + ", " +
+                        "Vertex(" + convertToString(edge.outVertex().id()) + ")," +
+                        convertToString(edge.label()) +
+                        ",Vertex(" + convertToString(edge.inVertex().id()) + "))";
+            } else { // VertexProperty
+                final VertexProperty vertexProperty = (VertexProperty) object;
+                return "VertexProperty(" + convertToString(vertexProperty.id()) + "," +
+                        convertToString(vertexProperty.label()) + "," +
+                        convertToString(vertexProperty.value()) + ")";
+            }
+        } else if (object instanceof Lambda)
             return convertLambdaToString((Lambda) object);
         else
             return null == object ? "None" : object.toString();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff49cbea/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/InjectTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/InjectTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/InjectTest.java
index 44eadb6..d3fc1ed 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/InjectTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/InjectTest.java
@@ -23,7 +23,6 @@ import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
@@ -47,6 +46,8 @@ public abstract class InjectTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Path> get_g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path(final Object v1Id);
 
+    public abstract Traversal<Vertex, String> get_g_VX1X_injectXg_VX4XX_out_name(final Object v1Id, final Object v4Id);
+
     @Test
     @LoadGraphWith(MODERN)
     public void g_VX1X_out_injectXv2X_name() {
@@ -83,6 +84,14 @@ public abstract class InjectTest extends AbstractGremlinProcessTest {
         assertEquals(4, counter);
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_VX1X_injectXg_VX4XX_out_name() {
+        final Traversal<Vertex, String> traversal = get_g_VX1X_injectXg_VX4XX_out_name(convertToVertexId("marko"), convertToVertexId("josh"));
+        printTraversalForm(traversal);
+        checkResults(Arrays.asList("ripple", "lop", "lop", "vadas", "josh"), traversal);
+    }
+
     public static class Traversals extends InjectTest {
 
         @Override
@@ -94,5 +103,10 @@ public abstract class InjectTest extends AbstractGremlinProcessTest {
         public Traversal<Vertex, Path> get_g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path(final Object v1Id) {
             return g.V(v1Id).out().<String>values("name").inject("daniel").as("a").map(t -> t.get().length()).path();
         }
+
+        @Override
+        public Traversal<Vertex, String> get_g_VX1X_injectXg_VX4XX_out_name(final Object v1Id, final Object v4Id) {
+            return g.V(v1Id).inject(g.V(v4Id).next()).out().values("name");
+        }
     }
 }


[3/3] tinkerpop git commit: Merge branch 'tp32'

Posted by ok...@apache.org.
Merge branch 'tp32'


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

Branch: refs/heads/master
Commit: c12f45ca9819b50af4dd993d41b16db782fc6c0f
Parents: 66a7856 ff49cbe
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Oct 19 11:37:18 2017 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Oct 19 11:37:18 2017 -0600

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  2 ++
 .../traversal/step/sideEffect/StartStep.java    |  7 ++++-
 .../step/sideEffect/InjectStepTest.java         |  5 +++-
 .../gremlin/groovy/jsr223/GroovyTranslator.java | 31 ++++++++++++++------
 .../gremlin/python/jsr223/PythonTranslator.java | 22 +++++++-------
 .../driver/test_driver_remote_connection.py     | 12 ++++++--
 .../traversal/step/sideEffect/InjectTest.java   | 16 +++++++++-
 7 files changed, 70 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c12f45ca/CHANGELOG.asciidoc
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c12f45ca/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c12f45ca/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c12f45ca/gremlin-python/src/main/jython/tests/driver/test_driver_remote_connection.py
----------------------------------------------------------------------