Hello,

I have pure Python talking to GremlinServer now via David Brown's 
gremlin-python WebSocket driver.

        
http://tinkerpop.apache.org/docs/3.1.3-SNAPSHOT/tutorials/gremlin-language-variants/#using-python-and-gremlin-server

I haven't updated the text, but you can see the Groovy script that generates 
the code. Slicky.

Here it is in action:

>>> execfile("/Users/marko/Desktop/gremlin-python.py")
>>> g = PythonGraphTraversalSource("g")
>>> g.V().hasLabel("person").repeat(__.out()).times(2).name[0:2].toList()
[u'ripple', u'lop']
>>> m = g.V().hasLabel("person").repeat(__.out()).times(2).name[0:2].toList()
>>> type(m)
<type 'list'>
>>> g.V().out("created").count().toList()
[4]
>>> g.V().out("created").groupCount().by("name").toList()
[{u'ripple': 1, u'lop': 3}]
>>>

Criznazy,
Marko.

http://markorodriguez.com

On Apr 20, 2016, at 2:25 PM, Marko Rodriguez <okramma...@gmail.com> wrote:

> Hi,
> 
> I added the pure Python model:
> 
>       
> http://tinkerpop.apache.org/docs/3.1.3-SNAPSHOT/tutorials/gremlin-language-variants/#using-python-and-gremlin-server
> 
> So this section just ends with a generated String. It would be neat to show 
> David Brown's python driver library submitted that string and getting back a 
> result set. Anyone have the patience to set up GremlinServer and import 
> python driver module and "do the do" ? 
> 
> Also note the section on "Language Drivers vs. Language Variants."
>       
> http://tinkerpop.apache.org/docs/3.1.3-SNAPSHOT/tutorials/gremlin-language-variants/
>  (forgot to a href anchor it -- scroll down)
> 
> Finally, here is the generate gremlin-python.py file.
>       
> https://github.com/apache/incubator-tinkerpop/blob/TINKERPOP-1232/docs/static/resources/gremlin-python.py
> 
> Take care,
> Marko.
> 
> http://markorodriguez.com
> 
> On Apr 20, 2016, at 1:20 PM, Marko Rodriguez <okramma...@gmail.com> wrote:
> 
>> Hi Dylan,
>> 
>>> That's a nice article on Jython. I can confirm that the same can be
>>> accomplished with PHP. I actually like the script to generate the
>>> traversal. It's more effort but is more IDE friendly than using magic
>>> methods.
>> 
>> Great. Its still DRAFT so please provide ideas/directions.
>> 
>>> To bounce off of the  Python->Gremlin-Groovy(String). How would that work
>>> with bindings? For instance how would one write the following groovy script:
>>> 
>>> a = "person";b = "name";c = "marko";
>>> g.V().has(a, b, c);
>>> 
>>> (I think it's important to support multiline queries as the gremlin-server
>>> communication overhead is pretty significant)
>> 
>> I don't know yet. Perhaps, in Python, you write:
>> 
>> g.V().has("#a") to denote that you want the #a-string to be a variable and 
>> thus, the compilation is g.V().has(a). Then its up to the language driver to 
>> determine how bindings are declared.
>> 
>> Thoughts?,
>> Marko.
>> 
>> http://markorodriguez.com
>> 
>> 
>>> 
>>> On Wed, Apr 20, 2016 at 12:09 PM, Marko Rodriguez <okramma...@gmail.com>
>>> wrote:
>>> 
>>>> Hi,
>>>> 
>>>> Here is a published SNAPSHOT DRAFT of what I have so far for the tutorial.
>>>> 
>>>> http://tinkerpop.apache.org/docs/3.1.3-SNAPSHOT/tutorials/gremlin-language-variants/
>>>> 
>>>> I've asked Ketrina to do a new graphic for this. It will be CrAzY.
>>>> 
>>>> The gremlin-jython.py link is broken as I didn't do a full doc build. Its
>>>> here to look at if you are interested:
>>>> 
>>>> https://github.com/apache/incubator-tinkerpop/blob/TINKERPOP-1232/docs/static/resources/gremlin-jython.py
>>>> 
>>>> Marko.
>>>> 
>>>> http://markorodriguez.com
>>>> 
>>>> On Apr 19, 2016, at 10:08 PM, 8trk <mark.hender...@8trk.com> wrote:
>>>> 
>>>>> Ha. That is very cool. You can easily just rewrite that for PHP and
>>>> probably Ruby too and have working native interfaces.
>>>>> 
>>>>> I updated my Gist to work with your examples. I had to update Gremlinpy
>>>> because I didn’t define __ correctly (thanks! this was a fun challenge).
>>>>> 
>>>>> https://gist.github.com/emehrkay/68a9e64789826f6a59e8b5c837dd6ce4 <
>>>> https://gist.github.com/emehrkay/68a9e64789826f6a59e8b5c837dd6ce4>
>>>>> 
>>>>> 
>>>>>> On Apr 19, 2016, at 11:55 PM, Marko Rodriguez <okramma...@gmail.com>
>>>> wrote:
>>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>>> I think adhering to the Gremlin-Java interface is a great idea exactly
>>>> for the reasons that you stated.
>>>>>>> The main reason that I didn’t map one-to-one with the native interface
>>>> is because I wasn’t too sure how to do so, I knew that there was a lot of
>>>> method overloading which isn’t possible in either of the languages that I
>>>> wrote this in (Python/PHP), and I figured this approach would be more
>>>> flexible with regard to changes in the language (to make it TP3 all I had
>>>> to do was define all of the predicates check for them when they’re passed
>>>> into functions).
>>>>>> 
>>>>>> Check this out. Here is a Groovy script the generates the Python
>>>> traversal class.
>>>>>> 
>>>>>>    https://gist.github.com/okram/940adc02834a97a7187d3da57cbf3227
>>>>>>            - super simple.
>>>>>> 
>>>>>> Thus, no need to fat finger anything in and you know you have every
>>>> method implemented. Moreover, every release, just generate the Python class
>>>> by running this script in the Gremlin Console. And it just works:
>>>>>> 
>>>>>>>>> g.V().has("name","marko")
>>>>>> g.V().has("name", "marko")
>>>>>>>>> g.V().has("person","name","marko")
>>>>>> g.V().has("person", "name", "marko")
>>>>>>>>> g.V().where(out("knows"))
>>>>>> g.V().where(__.out("knows"))
>>>>>>>>> g.V()._as("a").out("created")._as("b").where(_as("a").out("knows"))
>>>>>> g.V().as("a").out("created").as("b").where(__.as("a").out("knows"))
>>>>>>>>> g.V().match(_as("a").out("knows")._as("b"),
>>>> _as("b").out("knows")._as("a"))
>>>>>> g.V().match(__.as("a").out("knows").as("b"),
>>>> __.as("b").out("knows").as("a"))
>>>>>>>>> 
>>>> g.V().hasLabel("person").has("age",gt(30)).out("created","knows").name
>>>>>> g.V().hasLabel("person").has("age", P.gt(30)).out("created",
>>>> "knows").values("name")
>>>>>> 
>>>>>> 
>>>>>>> The more that I think about it, I think that Gremlinpy’s aim was to be
>>>> able to write Groovy in Python. That is the main reason why I didn’t choose
>>>> just straight-up string concatenation — I needed to be able to do things
>>>> like if clauses or closures or really compounded queries. (In Gizmo, my
>>>> OGM, I’ve built some pretty dense queries to send to the Gremlin server).
>>>>>> 
>>>>>> Yea, the closures are the hard part. I saw that in Python you can walk
>>>> the syntax tree of a closure :) … nasty.
>>>>>> 
>>>>>>> Your approach is clearly closer to to Gremlin-Java interface and we
>>>> should probably use some variant of it going forward. I quickly took that
>>>> interface and used Gremlinpy to handle all of the processing as seen in
>>>> this gist:
>>>> https://gist.github.com/emehrkay/68a9e64789826f6a59e8b5c837dd6ce4
>>>>>> 
>>>>>> Interesting. See how it does with my auto-code generator. Also, I want
>>>> to steal your P, T constructs as I think you do that better in Gremlinpy.
>>>>>> 
>>>>>> Marko.
>>>>>> 
>>>>>> http://markorodriguez.com
>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>>> On Apr 19, 2016, at 10:54 PM, Marko Rodriguez <okramma...@gmail.com>
>>>> wrote:
>>>>>>>> 
>>>>>>>> Hi,
>>>>>>>> 
>>>>>>>> Sweet -- your dev@ mail works now.
>>>>>>>> 
>>>>>>>>> I think you are on to something with this code example. Gremlinpy
>>>> does this, but a bit differently. It uses Python’s magic methods to
>>>> dynamically build a linked list.
>>>>>>>>> 
>>>>>>>>> So when you do something like
>>>>>>>>> 
>>>>>>>>> g = Gremlin()
>>>>>>>>> g.function()
>>>>>>>>> 
>>>>>>>>> It creates simply adds an gremlinpy.gremlin.Function object to the
>>>> queue. That object has the parameters to send once the linked list is
>>>> converted to a string.
>>>>>>>> 
>>>>>>>> Why would you create a queue and not just concatenate a String?
>>>>>>>> 
>>>>>>>>> Check out the readme for a few more examples (it can do things like
>>>> add pre-defined statements to the chain, nesting Gremlin instances, and
>>>> manually binding params) https://github.com/emehrkay/gremlinpy <
>>>> https://github.com/emehrkay/gremlinpy>
>>>>>>>> 
>>>>>>>> Ah, parameter bindings. Hmm…
>>>>>>>> 
>>>>>>>>> I think that a very simple linked list build with a fluid interface
>>>> and few predefined object types may be a good approach to defining a native
>>>> way to represent a Gremlin query.
>>>>>>>>> 
>>>>>>>>> What do you think?
>>>>>>>> 
>>>>>>>> It would be really clean if there was GraphTraversalSource,
>>>> GraphTraversal, and __ Traversal without any "extra methods." In Gremlinpy
>>>> README I see lots of other methods off of "g" that are not Gremlin-Java
>>>> methods. It would be cool if it was a direct map of Gremlin-Java (like
>>>> Gremlin-Groovy and Gremlin-Scala). Where the only deviations are things
>>>> like _in(), _as(), etc and any nifty language tricks like g.V().name or
>>>> g.V().out()[0:10]. This way, we instill in the designers that any Gremlin
>>>> language variant should be "identical," where (within reason) the docs for
>>>> Gremlin-Java are just as useful to Gremlinpy people. Furthermore, by
>>>> stressing this, we ensure that variants don't deviate and go down their own
>>>> syntax/constructs path. For instance, I see g.v(12) instead of g.V(12).
>>>> When a Gremlin language variant wants to do something new, we should argue
>>>> -- "submit a PR to Gremlin-Java w/ your desired addition" as Apache's
>>>> Gremlin-Java should be considered the standard/idiomatic representation of
>>>> Gremlin.
>>>>>>>> 
>>>>>>>> Finally, it would be cool to have a tool that introspected on
>>>> Gremlin-Java and verified that Gremlinpy had all the methods implemented.
>>>> Another thing to stress to language variant designers -- make sure you are
>>>> in sync with every version so write a test case that does such
>>>> introspection.
>>>>>>>> 
>>>>>>>> Thoughts?,
>>>>>>>> Marko.
>>>>>>>> 
>>>>>>>> http://markorodriguez.com
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>> On Apr 19, 2016, at 10:19 PM, Marko Rodriguez <okramma...@gmail.com>
>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>> Hello,
>>>>>>>>>> 
>>>>>>>>>> Okay, so I got into a groove. Here is
>>>> Python->Gremlin-Groovy(String). This is pure Python -- nothing Jython going
>>>> on here.
>>>>>>>>>> 
>>>>>>>>>> https://gist.github.com/okram/4705fed038dde673f4c5323416899992
>>>>>>>>>> 
>>>>>>>>>> Here it is in action:
>>>>>>>>>> 
>>>>>>>>>> # create a traversal source (stupid class name, I know)
>>>>>>>>>>>>> g = PythonStringGraphTraversalSource("g")
>>>>>>>>>> 
>>>>>>>>>> # simple warmup
>>>>>>>>>>>>> g.V().has("name","marko")
>>>>>>>>>> g.V().has("name", "marko")
>>>>>>>>>> 
>>>>>>>>>> # one has()-method, but varargs parsing is smart
>>>>>>>>>>>>> g.V().has("person","name","marko")
>>>>>>>>>> g.V().has("person", "name", "marko")
>>>>>>>>>> 
>>>>>>>>>> # strings and numbers mixed
>>>>>>>>>>>>> g.V().has("person","age",32)
>>>>>>>>>> g.V().has("person", "age", 32)
>>>>>>>>>> 
>>>>>>>>>> # nested anonymous traversal
>>>>>>>>>>>>> g.V().where(out("knows"))
>>>>>>>>>> g.V().where(__.out("knows"))
>>>>>>>>>> 
>>>>>>>>>> # as() is reserved in Python, so _as() is used.
>>>>>>>>>>>>> 
>>>> g.V()._as("a").out("created")._as("b").where(_as("a").out("knows"))
>>>>>>>>>> g.V().as("a").out("created").as("b").where(__.as("a").out("knows"))
>>>>>>>>>> 
>>>>>>>>>> # multi-traversal match()
>>>>>>>>>>>>> g.V().match(_as("a").out("knows")._as("b"),
>>>> _as("b").out("knows")._as("a"))
>>>>>>>>>> g.V().match(__.as("a").out("knows").as("b"),
>>>> __.as("b").out("knows").as("a"))
>>>>>>>>>> 
>>>>>>>>>> # P-predicates and .name-sugar (attribute access interception)
>>>>>>>>>>>>> 
>>>> g.V().hasLabel("person").has("age",gt(30)).out("created","knows").name
>>>>>>>>>> g.V().hasLabel("person").has("age", P.gt(30)).out("created",
>>>> "knows").values("name")
>>>>>>>>>> 
>>>>>>>>>> # smart about boolean conversion
>>>>>>>>>>>>> g.V().valueMap(True,"name","age")
>>>>>>>>>> g.V().valueMap(true, "name", "age")
>>>>>>>>>> 
>>>>>>>>>> # lambdas -- ghetto as its not a Python lambda, but a Groovy lambda
>>>> string
>>>>>>>>>>>>> g.V().map('it.get().value("name")')
>>>>>>>>>> g.V().map(it.get().value("name"))
>>>>>>>>>> 
>>>>>>>>>> What other constructs are there? I think thats it… Everything else
>>>> from here is just fat fingering in all the methods. Then, from there you
>>>> use David Brown's GremlinClient (
>>>> https://github.com/davebshow/gremlinclient) to shuffle the string across
>>>> the network to GremlinServer and get back results. I suppose there needs to
>>>> be some sort of .submit() method ? …. hmmm… wondering if .next()/hasNext()
>>>> iterator methods can be used to submit automagically and then it feels JUST
>>>> like Gremlin-Java.
>>>>>>>>>> 
>>>>>>>>>> @Mark: This is what Gremlinpy should do, no?
>>>>>>>>>> @Dylan: Can you find any Gremlin syntax hole I'm missing that isn't
>>>> solvable with the current espoused pattern?
>>>>>>>>>> 
>>>>>>>>>> Good, right?
>>>>>>>>>> Marko.
>>>>>>>>>> 
>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>> 
>>>>>>>>>> On Apr 19, 2016, at 4:51 PM, Marko Rodriguez <okramma...@gmail.com>
>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> Hi,
>>>>>>>>>>> 
>>>>>>>>>>> Done for the night. Here is PythonStringGraphTraversal.
>>>>>>>>>>> 
>>>>>>>>>>> https://gist.github.com/okram/4705fed038dde673f4c5323416899992
>>>>>>>>>>> 
>>>>>>>>>>> ??? Cool?
>>>>>>>>>>> 
>>>>>>>>>>> Marko.
>>>>>>>>>>> 
>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>> 
>>>>>>>>>>> On Apr 19, 2016, at 4:28 PM, Marko Rodriguez <okramma...@gmail.com>
>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> Hi,
>>>>>>>>>>>> 
>>>>>>>>>>>> So I "learned" Python and am able to do a Python class wrapper
>>>> around GraphTraversal.
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>> https://gist.github.com/okram/1a0c5f6b65a4b70c558537e5eeaad429
>>>>>>>>>>>> 
>>>>>>>>>>>> Its crazy, it "just works" -- with __ static methods and all.
>>>>>>>>>>>> 
>>>>>>>>>>>> The reason I wanted to create a wrapper is because I want to use
>>>> Python-specific language constructs and not only Gremlin-Java. What those
>>>> specific language constructs are, I don't know as I don't know Python :).
>>>> Moreover, this shell of a wrapper will be used for the JNI and String
>>>> construction models. Right?
>>>>>>>>>>>> 
>>>>>>>>>>>>>>> g = PythonGraphTraversalSource(graph)
>>>>>>>>>>>>>>> g
>>>>>>>>>>>> graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
>>>>>>>>>>>>>>> g.V()
>>>>>>>>>>>> [GraphStep(vertex,[])]
>>>>>>>>>>>>>>> g.V().toList()
>>>>>>>>>>>> [v[1], v[2], v[3], v[4], v[5], v[6]]
>>>>>>>>>>>>>>> g.V().where(__.out("created")).values("name").toList()
>>>>>>>>>>>> [marko, josh, peter]
>>>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> Even valueMap() which takes var args of different types works.
>>>>>>>>>>>> 
>>>>>>>>>>>>>>> g.V().valueMap()
>>>>>>>>>>>> [GraphStep(vertex,[]), PropertyMapStep(value)]
>>>>>>>>>>>>>>> g.V().valueMap().toList()
>>>>>>>>>>>> [{name=[marko], age=[29]}, {name=[vadas], age=[27]}, {name=[lop],
>>>> lang=[java]}, {name=[josh], age=[32]}, {name=[ripple], lang=[java]},
>>>> {name=[peter], age=[35]}]
>>>>>>>>>>>>>>> g.V().valueMap("name").toList()
>>>>>>>>>>>> [{name=[marko]}, {name=[vadas]}, {name=[lop]}, {name=[josh]},
>>>> {name=[ripple]}, {name=[peter]}]
>>>>>>>>>>>>>>> g.V().valueMap(True,"name").toList()
>>>>>>>>>>>> [{label=person, name=[marko], id=1}, {label=person, name=[vadas],
>>>> id=2}, {label=software, name=[lop], id=3}, {label=person, name=[josh],
>>>> id=4}, {label=software, name=[ripple], id=5}, {label=person, name=[peter],
>>>> id=6}]
>>>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> Easy peasy lemon squeezy or is there something fundamental I'm
>>>> missing?
>>>>>>>>>>>> 
>>>>>>>>>>>> Marko.
>>>>>>>>>>>> 
>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>> 
>>>>>>>>>>>> On Apr 19, 2016, at 2:58 PM, Marko Rodriguez <
>>>> okramma...@gmail.com> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> So I downloaded and installed Jython 2.7.0.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> This how easy it was to get Gremlin working in Jython.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> import sys
>>>>>>>>>>>>> 
>>>> sys.path.append("/Users/marko/software/tinkerpop/tinkerpop3/gremlin-console/target/apache-gremlin-console-3.2.1-SNAPSHOT-standalone/lib/commons-codec-1.9.jar")
>>>>>>>>>>>>> 
>>>> sys.path.append("/Users/marko/software/tinkerpop/tinkerpop3/gremlin-console/target/apache-gremlin-console-3.2.1-SNAPSHOT-standalone/lib/commons-configuration-1.10.jar")
>>>>>>>>>>>>> … lots of jars to add
>>>>>>>>>>>>> 
>>>> sys.path.append("/Users/marko/software/tinkerpop/tinkerpop3/gremlin-console/target/apache-gremlin-console-3.2.1-SNAPSHOT-standalone/ext/tinkergraph-gremlin/lib/tinkergraph-gremlin-3.2.1-SNAPSHOT.jar")
>>>>>>>>>>>>> 
>>>>>>>>>>>>> from org.apache.tinkerpop.gremlin.tinkergraph.structure import
>>>> TinkerFactory
>>>>>>>>>>>>> graph = TinkerFactory.createModern()
>>>>>>>>>>>>> g = graph.traversal()
>>>>>>>>>>>>> g
>>>>>>>>>>>>> g.V().hasLabel("person").out("knows").out("created")
>>>>>>>>>>>>> g.V().hasLabel("person").out("knows").out("created").toList()
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Then, the output looks like this:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> from org.apache.tinkerpop.gremlin.tinkergraph.structure
>>>> import TinkerFactory
>>>>>>>>>>>>>>>> graph = TinkerFactory.createModern()
>>>>>>>>>>>>>>>> g = graph.traversal()
>>>>>>>>>>>>>>>> g
>>>>>>>>>>>>> graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
>>>>>>>>>>>>>>>> g.V().hasLabel("person").out("knows").out("created")
>>>>>>>>>>>>> [GraphStep(vertex,[]), HasStep([~label.eq(person)]),
>>>> VertexStep(OUT,[knows],vertex), VertexStep(OUT,[created],vertex)]
>>>>>>>>>>>>>>>> g.V().hasLabel("person").out("knows").out("created").toList()
>>>>>>>>>>>>> [v[5], v[3]]
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Note that, of course, Jython's command line doesn't auto-iterate
>>>> traversals. Besides that -- sheez, that was simple.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> The trick now is to use Jython idioms to make Gremlin-Jython be
>>>> comfortable to Python users…
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Marko.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On Apr 19, 2016, at 11:43 AM, Marko Rodriguez <
>>>> okramma...@gmail.com> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> So I just pushed:
>>>>>>>>>>>>>> 
>>>> https://git1-us-west.apache.org/repos/asf?p=incubator-tinkerpop.git;a=commitdiff;h=0beae616
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> This should help provide the scaffolding for the tutorial.
>>>> Given that I know nothing about Python, I think my contributions start to
>>>> fall off significantly here. :) … Well, I can help and write more text, I
>>>> just don't know how to use Jython, Python idioms, Gremlinpy, etc…..
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> @Mark/Dylan: If you want to build the tutorial and look at it,
>>>> you simple do:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>    $ bin/process-docs.sh --dryRun
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> And then for me, the URI to which I point my browser for the
>>>> index.html on my local computer is:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>> file:///Users/marko/software/tinkerpop/tinkerpop3/target/docs/htmlsingle/tutorials/gremlin-language-variants/index.html
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Marko.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> On Apr 19, 2016, at 9:16 AM, Marko Rodriguez <
>>>> okramma...@gmail.com> wrote:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Hello (NOTE: I dropped gremlin-users@),
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Thank you Stephen. Its crazy how simple that is :D.
>>>>>>>>>>>>>>> 
>>>> https://twitter.com/apachetinkerpop/status/722432843360546816
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> So Mark, now your fork's TINKERPOP-1232/ branch and
>>>> https://github.com/apache/incubator-tinkerpop/tree/TINKERPOP-1232 exist
>>>> and we can keep them sync'd accordingly as we develop this tutorial. When
>>>> we feel that the tutorial is ready for primetime, we will issue a PR to
>>>> have it merged into tp31/ (and thus, up merged to master/).
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Where do we go from here? I think this is a good opportunity
>>>> to work both on Gremlinpy and the tutorial. Can we make Gremlinpy as true
>>>> to the spirit of "host language embedding" as possible? In doing so, can we
>>>> explain how we did it so other language providers can learn the best
>>>> practices?
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> In the tutorial we have 3 models we want to promote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>   1. Jython
>>>>>>>>>>>>>>>   2. Python JINI
>>>>>>>>>>>>>>>   3. Python String
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> (1) is easy to knock off. In fact, we should ask Michael
>>>> Pollmeier for advice here given his work on Gremlin-Scala. (2) -- ?? do you
>>>> know how do this? If so, it should be only fairly more difficult than (1).
>>>> Finally, (3) is the big win and where I think most of the work both in the
>>>> tutorial and in Gremlinpy will happen.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> How do you propose we proceed?
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Thank you,
>>>>>>>>>>>>>>> Marko.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On Apr 19, 2016, at 8:24 AM, Stephen Mallette <
>>>> spmalle...@gmail.com> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> ok - done:
>>>> https://github.com/apache/incubator-tinkerpop/tree/TINKERPOP-1232
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On Tue, Apr 19, 2016 at 9:41 AM, Marko Rodriguez <
>>>> okramma...@gmail.com> wrote:
>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> *** Mark, if you are not on dev@tinkerpop, I would recommend
>>>> joining that as I will drop gremlin-users@ from communication on this
>>>> ticket from here on out. ***
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> @Stephen: Mark forked the TinkerPop repository to his GitHub
>>>> account. I believe he gave you access as well as me.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Can you create a new stub tutorial for Mark+Dylan+me? (Moving
>>>> forward, I will learn how to do it from your one commit).
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>  gremlin-language-variants/
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> After that Mark+Dylan+me will go to town on:
>>>>>>>>>>>>>>>>  https://issues.apache.org/jira/browse/TINKERPOP-1232
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Thank you,
>>>>>>>>>>>>>>>> Marko.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Begin forwarded message:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> From: Mark Henderson <nore...@github.com>
>>>>>>>>>>>>>>>>> Subject: emehrkay added you to incubator-tinkerpop
>>>>>>>>>>>>>>>>> Date: April 15, 2016 10:04:54 AM MDT
>>>>>>>>>>>>>>>>> To: "Marko A. Rodriguez" <okramma...@gmail.com>
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> You can now push to this repository.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> ---
>>>>>>>>>>>>>>>>> View it on GitHub:
>>>>>>>>>>>>>>>>> https://github.com/emehrkay/incubator-tinkerpop
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> You received this message because you are subscribed to the
>>>> Google Groups "Gremlin-users" group.
>>>>>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from
>>>> it, send an email to gremlin-users+unsubscr...@googlegroups.com.
>>>>>>>>>>>>>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/gremlin-users/18A7D2FD-B9B1-4DC9-980B-66A6A8F9C7C8%40gmail.com
>>>> .
>>>>>>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> You received this message because you are subscribed to the
>>>> Google Groups "Gremlin-users" group.
>>>>>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from
>>>> it, send an email to gremlin-users+unsubscr...@googlegroups.com.
>>>>>>>>>>>>>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/gremlin-users/CAA-H43990bN1xrtkL%2BWW4Z%3DKY-bhamBuunpzmYcqVxniyv3NOw%40mail.gmail.com
>>>> .
>>>>>>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>>> 
>> 
> 

Reply via email to