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.
