Repository: tinkerpop
Updated Branches:
  refs/heads/master 793ed6d6d -> fcabd01c4


Added better support for Gremlin language tokens in python CTR


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

Branch: refs/heads/master
Commit: c0a35e25b7cb87cac9786a2c30d94cf560311338
Parents: 793ed6d
Author: Stephen Mallette <[email protected]>
Authored: Fri Aug 31 13:33:14 2018 -0400
Committer: Stephen Mallette <[email protected]>
Committed: Fri Aug 31 13:34:01 2018 -0400

----------------------------------------------------------------------
 gremlin-python/glv/TraversalSource.template     | 12 ++---
 gremlin-python/glv/generate.groovy              | 16 ++++--
 .../jython/gremlin_python/process/traversal.py  | 54 +++++++++++++++++++-
 3 files changed, 72 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c0a35e25/gremlin-python/glv/TraversalSource.template
----------------------------------------------------------------------
diff --git a/gremlin-python/glv/TraversalSource.template 
b/gremlin-python/glv/TraversalSource.template
index 3ca2786..4e312ea 100644
--- a/gremlin-python/glv/TraversalSource.template
+++ b/gremlin-python/glv/TraversalSource.template
@@ -134,15 +134,15 @@ def <%= method %>(*args):
 statics.add_static('<%= method %>',<%= method %>)
 <% } %>
 
+<% tokens.each { k,v -> %>
 '''
-IO
+<%= k %>
 '''
 
-
-class IO(object):
-<% io.each {k,v -> %>
-    <%= k %> = "<%= v %>"
-<% } %>
+class <%= k %>(object):
+<% v.each {a,b -> %>
+    <%= a %> = "<%= b %>"
+<% }} %>
 
 
 '''

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c0a35e25/gremlin-python/glv/generate.groovy
----------------------------------------------------------------------
diff --git a/gremlin-python/glv/generate.groovy 
b/gremlin-python/glv/generate.groovy
index f810e10..c7ad241 100644
--- a/gremlin-python/glv/generate.groovy
+++ b/gremlin-python/glv/generate.groovy
@@ -18,6 +18,10 @@
  */
 
 import org.apache.tinkerpop.gremlin.jsr223.CoreImports
+import 
org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ConnectedComponent
+import 
org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRank
+import 
org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PeerPressure
+import 
org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ShortestPath
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
 import 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
@@ -25,6 +29,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.P
 import org.apache.tinkerpop.gremlin.process.traversal.IO
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import java.lang.reflect.Modifier
+
 // this is a bit of a copy of what's in SymbolHelper - no way around it 
because this code generation task occurs
 // before the SymbolHelper is available to the plugin.
 def toPythonMap = ["global": "global_",
@@ -39,6 +44,13 @@ def toPythonMap = ["global": "global_",
                    "list": "list_",
                    "set": "set_",
                    "all": "all_"]
+
+def gatherTokensFrom = { tokenClasses ->
+    def m = [:]
+    tokenClasses.each { tc -> m << [(tc.simpleName) : tc.getFields().sort{ a, 
b -> a.name <=> b.name }.collectEntries{ f -> [(f.name) : f.get(null)]}]}
+    return m
+}
+
 def toJavaMap = toPythonMap.collectEntries{k,v -> [(v):k]}
 def toPython = { symbol -> toPythonMap.getOrDefault(symbol, symbol) }
 def toJava = { symbol -> toJavaMap.getOrDefault(symbol, symbol) }
@@ -79,9 +91,7 @@ def binding = ["enums": CoreImports.getClassImports()
                        collect { toPython(it.name) }.
                        unique().
                        sort { a, b -> a <=> b },
-               "io": IO.class.getFields().
-                       sort{ a, b -> a.name <=> b.name }.
-                       collectEntries{ f -> [(f.name) : f.get(null)]},
+               "tokens": gatherTokensFrom([IO, ConnectedComponent, 
ShortestPath, PageRank, PeerPressure]),
                "toPython": toPython,
                "toJava": toJava]
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c0a35e25/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 49bb7b1..4bb4c9c 100644
--- a/gremlin-python/src/main/jython/gremlin_python/process/traversal.py
+++ b/gremlin-python/src/main/jython/gremlin_python/process/traversal.py
@@ -304,11 +304,11 @@ def without(*args):
 statics.add_static('without',without)
 
 
+
 '''
 IO
 '''
 
-
 class IO(object):
 
     graphml = "graphml"
@@ -323,6 +323,58 @@ class IO(object):
 
     writer = "~tinkerpop.io.writer"
 
+'''
+ConnectedComponent
+'''
+
+class ConnectedComponent(object):
+
+    component = "gremlin.connectedComponentVertexProgram.component"
+
+    edges = "~tinkerpop.connectedComponent.edges"
+
+    propertyName = "~tinkerpop.connectedComponent.propertyName"
+
+'''
+ShortestPath
+'''
+
+class ShortestPath(object):
+
+    distance = "~tinkerpop.shortestPath.distance"
+
+    edges = "~tinkerpop.shortestPath.edges"
+
+    includeEdges = "~tinkerpop.shortestPath.includeEdges"
+
+    maxDistance = "~tinkerpop.shortestPath.maxDistance"
+
+    target = "~tinkerpop.shortestPath.target"
+
+'''
+PageRank
+'''
+
+class PageRank(object):
+
+    edges = "~tinkerpop.pageRank.edges"
+
+    propertyName = "~tinkerpop.pageRank.propertyName"
+
+    times = "~tinkerpop.pageRank.times"
+
+'''
+PeerPressure
+'''
+
+class PeerPressure(object):
+
+    edges = "~tinkerpop.peerPressure.edges"
+
+    propertyName = "~tinkerpop.peerPressure.propertyName"
+
+    times = "~tinkerpop.peerPressure.times"
+
 
 
 '''

Reply via email to