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/13 19:37:49 UTC

[31/42] tinkerpop git commit: nada.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3364102/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategy.java
new file mode 100644
index 0000000..b712270
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategy.java
@@ -0,0 +1,95 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.process.traversal.strategy.creation;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SackStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SideEffectStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.util.Translator;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
+import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
+
+import javax.script.Bindings;
+import javax.script.ScriptEngine;
+import javax.script.SimpleBindings;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class TranslationStrategy extends AbstractTraversalStrategy<TraversalStrategy.CreationStrategy> implements TraversalStrategy.CreationStrategy {
+
+    private Translator<?> translator;
+
+    public TranslationStrategy(final Translator<?> translator) {
+        this.translator = translator;
+        if (!this.translator.getAlias().equals("__"))
+            __.setAnonymousGraphTraversalSupplier(() -> (GraphTraversal) translator.__());
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        if (!(traversal.getParent() instanceof EmptyStep))
+            return;
+        try {
+            final String traversalScriptString = this.translator.getTraversalScript();
+            System.out.println(traversalScriptString + "!!!");
+            __.setAnonymousGraphTraversalSupplier(null);
+            ScriptEngine engine = ScriptEngineCache.get(this.translator.getScriptEngine());
+            TraversalStrategies strategies = traversal.getStrategies().clone().removeStrategies(TranslationStrategy.class);
+            final Bindings bindings = new SimpleBindings();
+            bindings.put(this.translator.getAlias(), new GraphTraversalSource(traversal.getGraph().orElse(EmptyGraph.instance()), strategies));
+            Traversal.Admin<?, ?> translatedTraversal = (Traversal.Admin<?, ?>) engine.eval(traversalScriptString, bindings);
+            assert !translatedTraversal.isLocked();
+            assert !traversal.isLocked();
+            //traversal.setSideEffects(translatedTraversal.getSideEffects());
+            traversal.setStrategies(strategies);
+            TraversalHelper.removeAllSteps(traversal);
+            TraversalHelper.removeToTraversal((Step) translatedTraversal.getStartStep(), EmptyStep.instance(), traversal);
+        } catch (final Exception e) {
+            throw new IllegalArgumentException(e.getMessage(), e);
+        }
+    }
+
+    @Override
+    public void addStep(final Traversal.Admin<?, ?> traversal, final String stepName, final Object... arguments) {
+        this.translator.addStep(traversal, stepName, arguments);
+    }
+
+    @Override
+    public void addSource(final TraversalSource traversalSource, final String sourceName, final Object... arguments) {
+        final TranslationStrategy clone = new TranslationStrategy(this.translator.clone());
+        traversalSource.getStrategies().addStrategies(clone);
+        clone.translator.addSource(traversalSource, sourceName, arguments);
+    }
+
+    public Translator getTranslator() {
+        return this.translator;
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3364102/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/Translator.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/Translator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/Translator.java
index e3438cb..cc9edb9 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/Translator.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/Translator.java
@@ -20,6 +20,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.util;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -30,10 +31,18 @@ public interface Translator<V extends Traversal> extends Cloneable {
 
     public String getAlias();
 
-    public void addStep(final String stepName, final Object... arguments);
+    public void addStep(final Traversal.Admin<?, ?> traversal, final String stepName, final Object... arguments);
+
+    public default void addSource(final TraversalSource traversalSource, final String sourceName, final Object... arguments) {
+        addStep(EmptyTraversal.instance(), sourceName, arguments);
+    }
+
+    public default void addSource(final String sourceName, final Object... arguments) {
+
+    }
+
+    public default void addStep(final String sourceName, final Object... arguments) {
 
-    public default void addStrategy(final String strategyName, final Object... arguments) {
-        this.addStep(strategyName, arguments);
     }
 
     public V __();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3364102/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
index 67e96b7..cd7576d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
@@ -22,6 +22,8 @@ import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.Traversa
 import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.lambda.ElementValueTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.lambda.TokenTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
@@ -563,4 +565,30 @@ public final class TraversalHelper {
         }
         return false;
     }
+
+    public static void addStepToCreationStrategies(final Traversal.Admin<?, ?> traversal, final Object... arguments) {
+        final List<TraversalStrategy.CreationStrategy> strategies = traversal.getStrategies().getStrategies(TraversalStrategy.CreationStrategy.class);
+        if (!strategies.isEmpty()) {
+            final String stepName = Thread.currentThread().getStackTrace()[2].getMethodName();
+            for (final TraversalStrategy.CreationStrategy creationStrategy : strategies) {
+                creationStrategy.addStep(traversal, stepName, arguments);
+            }
+        }
+    }
+
+    public static void addSourceToCreationStrategies(final TraversalSource traversalSource, final Object... arguments) {
+        final List<TraversalStrategy.CreationStrategy> strategies = traversalSource.getStrategies().getStrategies(TraversalStrategy.CreationStrategy.class);
+        if (!strategies.isEmpty()) {
+            final String sourceName = Thread.currentThread().getStackTrace()[2].getMethodName();
+            for (final TraversalStrategy.CreationStrategy creationStrategy : strategies) {
+                creationStrategy.addSource(traversalSource, sourceName, arguments);
+            }
+        }
+    }
+
+    public static void removeAllSteps(final Traversal.Admin<?, ?> traversal) {
+        while (!traversal.getSteps().isEmpty()) {
+            traversal.removeStep(0);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3364102/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
index 0e95d29..8b97570 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
@@ -186,10 +186,6 @@ public interface Graph extends AutoCloseable, Host {
         return new GraphTraversalSource(this);
     }
 
-    public default GraphTraversalSource traversal(final Translator<GraphTraversal> translator) {
-        return new ScriptGraphTraversalSource(this, translator);
-    }
-
     /**
      * Get the {@link Vertex} objects in this graph with the provided vertex ids. If no ids are provided, get all
      * vertices.  Note that a vertex identifier does not need to correspond to the actual id used in the graph.  It

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3364102/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
index d48416a..3ffbb2b 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
@@ -30,7 +30,7 @@ public abstract class GroovySackTest {
     public static class Traversals extends SackTest {
 
         @Override
-        public Traversal<Vertex, String> get_g_withSackXhellowX_V_outE_sackXassignX_byXlabelX_inV_sack() {
+        public Traversal<Vertex, String> get_g_withSackXhelloX_V_outE_sackXassignX_byXlabelX_inV_sack() {
             new ScriptTraversal<>(g, "gremlin-groovy", "g.withSack('hello').V.outE.sack(assign).by(label).inV.sack")
         }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3364102/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/GroovyTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/GroovyTranslator.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/GroovyTranslator.java
index 379c361..92dd699 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/GroovyTranslator.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/GroovyTranslator.java
@@ -21,8 +21,12 @@ package org.apache.tinkerpop.gremlin.groovy;
 
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.SackFunctions;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.script.ScriptGraphTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.AbstractLambdaTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.creation.TranslationStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.VerificationException;
 import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP;
 import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
@@ -31,7 +35,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.Translator;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TranslatorHelper;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -42,12 +45,11 @@ import java.util.List;
 public class GroovyTranslator implements Translator<GraphTraversal> {
 
     private StringBuilder traversalScript;
-    private final String alias;
+    private String alias;
 
     public GroovyTranslator(final String alias) {
         this.alias = alias;
         this.traversalScript = new StringBuilder(this.alias);
-
     }
 
     @Override
@@ -61,7 +63,7 @@ public class GroovyTranslator implements Translator<GraphTraversal> {
     }
 
     @Override
-    public void addStep(final String stepName, final Object... arguments) {
+    public void addStep(final Traversal.Admin<?, ?> traversal, final String stepName, final Object... arguments) {
         final List<Object> objects = TranslatorHelper.flattenArguments(arguments);
         if (objects.isEmpty())
             this.traversalScript.append(".").append(stepName).append("()");
@@ -75,9 +77,16 @@ public class GroovyTranslator implements Translator<GraphTraversal> {
         }
     }
 
+    /*Override
+    public void addSource(final TraversalSource source, final String sourceName, final Object... arguments) {
+        source.getStrategies().toList().
+    }*/
+
     @Override
     public GraphTraversal __() {
-        return new ScriptGraphTraversal(EmptyGraph.instance(), new GroovyTranslator("__"));
+        final GraphTraversal traversal = new DefaultGraphTraversal();
+        traversal.asAdmin().setStrategies(traversal.asAdmin().getStrategies().clone().addStrategies(new TranslationStrategy(new GroovyTranslator("__"))));
+        return traversal;
     }
 
     @Override
@@ -134,9 +143,13 @@ public class GroovyTranslator implements Translator<GraphTraversal> {
             return ((Enum) object).getDeclaringClass().getSimpleName() + "." + object.toString();
         else if (object instanceof Element)
             return convertToString(((Element) object).id()); // hack
-        else if (object instanceof ScriptGraphTraversal)
-            return ((ScriptGraphTraversal) object).getTraversalScript();
-        else
+        else if (object instanceof Traversal) {
+            final TranslationStrategy strategy = (TranslationStrategy) ((Traversal.Admin) object).getStrategies().toList()
+                    .stream()
+                    .filter(s -> s instanceof TranslationStrategy)
+                    .findFirst().get();
+            return strategy.getTranslator().getTraversalScript();
+        } else
             return null == object ? "null" : object.toString();
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3364102/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java
index 299bee2..1e44697 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java
@@ -48,7 +48,7 @@ import static org.junit.Assert.assertTrue;
 @RunWith(GremlinProcessRunner.class)
 public abstract class SackTest extends AbstractGremlinProcessTest {
 
-    public abstract Traversal<Vertex, String> get_g_withSackXhellowX_V_outE_sackXassignX_byXlabelX_inV_sack();
+    public abstract Traversal<Vertex, String> get_g_withSackXhelloX_V_outE_sackXassignX_byXlabelX_inV_sack();
 
     public abstract Traversal<Vertex, Double> get_g_withSackX0X_V_outE_sackXsumX_byXweightX_inV_sack_sum();
 
@@ -70,8 +70,8 @@ public abstract class SackTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
-    public void g_withSackXhellowX_V_outE_sackXassignX_byXlabelX_inV_sack() {
-        final Traversal<Vertex, String> traversal = get_g_withSackXhellowX_V_outE_sackXassignX_byXlabelX_inV_sack();
+    public void g_withSackXhelloX_V_outE_sackXassignX_byXlabelX_inV_sack() {
+        final Traversal<Vertex, String> traversal = get_g_withSackXhelloX_V_outE_sackXassignX_byXlabelX_inV_sack();
         checkResults(Arrays.asList("knows", "knows", "created", "created", "created", "created"), traversal);
     }
 
@@ -159,7 +159,7 @@ public abstract class SackTest extends AbstractGremlinProcessTest {
     public static class Traversals extends SackTest {
 
         @Override
-        public Traversal<Vertex, String> get_g_withSackXhellowX_V_outE_sackXassignX_byXlabelX_inV_sack() {
+        public Traversal<Vertex, String> get_g_withSackXhelloX_V_outE_sackXassignX_byXlabelX_inV_sack() {
             return g.withSack("hello").V().outE().sack(Operator.assign).by(T.label).inV().sack();
         }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3364102/gremlin-variant/src/main/java/org/apache/tinkerpop/gremlin/python/PythonTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-variant/src/main/java/org/apache/tinkerpop/gremlin/python/PythonTranslator.java b/gremlin-variant/src/main/java/org/apache/tinkerpop/gremlin/python/PythonTranslator.java
index 9344ecc..b24b153 100644
--- a/gremlin-variant/src/main/java/org/apache/tinkerpop/gremlin/python/PythonTranslator.java
+++ b/gremlin-variant/src/main/java/org/apache/tinkerpop/gremlin/python/PythonTranslator.java
@@ -67,7 +67,7 @@ public class PythonTranslator implements Translator<GraphTraversal> {
             .collect(Collectors.toCollection(() -> new HashSet<>(Arrays.asList("not"))));
 
     private StringBuilder traversalScript;
-    private final String alias;
+    private String alias;
     private final String scriptEngine;
     private final boolean importStatics;
 
@@ -122,7 +122,7 @@ public class PythonTranslator implements Translator<GraphTraversal> {
     }
 
     @Override
-    public void addStep(final String stepName, final Object... arguments) {
+    public void addStep(final Traversal.Admin<?, ?> traversal, final String stepName, final Object... arguments) {
         // flatten the arguments into a single array
         final List<Object> objects = TranslatorHelper.flattenArguments(arguments);
         final int size = objects.size();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3364102/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/groovy/GroovyProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/groovy/GroovyProvider.java b/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/groovy/GroovyProvider.java
index 310307e..fd7c6a9 100644
--- a/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/groovy/GroovyProvider.java
+++ b/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/groovy/GroovyProvider.java
@@ -34,6 +34,6 @@ public class GroovyProvider extends VariantGraphProvider {
             return graph.traversal();
             //throw new VerificationException("This test current does not work with Gremlin-Python", EmptyTraversal.instance());
         else
-            return graph.traversal(GroovyTranslator.of("g"));
+            return graph.traversal().withTranslator(GroovyTranslator.of("g"));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3364102/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/python/PythonProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/python/PythonProvider.java b/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/python/PythonProvider.java
index 28cdcfe..605862f 100644
--- a/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/python/PythonProvider.java
+++ b/gremlin-variant/src/test/java/org/apache/tinkerpop/gremlin/python/PythonProvider.java
@@ -61,6 +61,7 @@ public class PythonProvider extends VariantGraphProvider {
         try {
             if (importStatics)
                 ScriptEngineCache.get("jython").eval("for k in statics:\n  globals()[k] = statics[k]");
+            // else globals()[k] = None
         } catch (final ScriptException e) {
             throw new IllegalStateException(e.getMessage(), e);
         }
@@ -69,7 +70,7 @@ public class PythonProvider extends VariantGraphProvider {
             return graph.traversal();
             //throw new VerificationException("This test current does not work with Gremlin-Python", EmptyTraversal.instance());
         else
-            return graph.traversal(PythonTranslator.of("gremlin-groovy", "g", importStatics));
+            return graph.traversal().withTranslator(PythonTranslator.of("gremlin-groovy", "g", importStatics));
     }
 
 }