We basically have TINKERPOP-1278 ready for review. For those just tuning
in, that is the gremlin-python branch which can be viewed here:

https://github.com/apache/tinkerpop/tree/TINKERPOP-1278

As I mentioned in a separate email, I don't think we should bother trying
to issue a pull request for this as it is a massive body of work and GitHub
tools really won't be useful here. Better to just check-out the branch and
examine what's going on. Let's use this thread to get our standard
review/vote process done.

I don't plan on firing up a separate VOTE thread, so feel free to +1 here
on this one (we'll keep this informal unless someone has some objection).
I'll be sure to reference this thread in the JIRA issue itself. I'll also
note that while we typically hold votes open for 72 hours, that won't be
the case here as this is not a typical vote thread - it is a code review
and we have no such restrictions on time when it comes to those.

Note that we are positioning gremlin-python for 3.2.2 and that it is going
to be considered a bit experimental so that we can get some feedback on
usage and perhaps root out some bugs in the process.There is still a fair
bit of work to do to make this package awesome but as of right now, it's
very usable.

Feel free to bring up problems you notice, but I think that reviewers
should consider the big picture of this pull request rather than the minute
details. Once we get things back on master we can make some adjustments as
needed, but I think it's basically time to bring that feature branch back
home and get it merged.

One of the nice bits that came in recently from Marko to this branch were
native python Vertex, Edge, etc. classes which lets users work directly
with graph elements (as opposed to Map). In that way, we get:

>>> g.V()[0].toList()
[v[1]]
>>> g.E()[0].toList()
[e[7][1-knows->2]]
>>> g.V().properties('name')[0].toList()
[vp[name->marko]]
>>> g.E().properties('weight')[0].toList()
[p[weight->0.5]]

eh? eh? nice, right? Note that retrieval of sideEffects is working well now
too:

>>>
g.V().repeat(groupCount('m').by('name').both()).times(10).cap('m').next()
{u'vadas': 2378L, u'marko': 5740L, u'josh': 5740L, u'lop': 5740L,
u'ripple': 2378L, u'peter': 2378L}
>>> t = g.V().repeat(groupCount('m').by('name').both()).times(10).iterate()
>>> t.side_effects
sideEffects[size:1]
>>> t.side_effects.keys()
set([u'm'])
>>> t.side_effects['m']
{u'lop': 5740L, u'marko': 5740L, u'vadas': 2378L, u'ripple': 2378L,
u'peter': 2378L, u'josh': 5740L}

I think the interfaces and core classes are feeling pretty solid now for
both java and python. We have a good body of test around much of this, but
have only been able to test native python connectivity to Gremlin Server
stuff manually. We don't have automated tests for that, but there are many
automated tests that hit the key aspects of the core of all this processing
so in that sense there is some solid test coverage in place. As of
yesterday, full integration tests were passing on this branch which
includes GraphSON 2.0. I don't believe that much was done today that could
have affected that outcome.

The documentation has been updated but will likely need some more work. We
can do a lot of that during code freeze week. Here's some links to the
newest bits:

http://tinkerpop.apache.org/docs/3.2.2-SNAPSHOT/reference/#connecting-via-remotegraph

http://tinkerpop.apache.org/docs/3.2.2-SNAPSHOT/reference/#gremlin-variants

Marko, please feel free to follow up with finer points that I've missed -
my mind is a bit spent on things at this point but wanted this email out
tonight. Anyway, at this point, I'm going to start this off with a +1 and
say this is ready to merge back to master.

Reply via email to