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/08/24 20:42:58 UTC
[1/2] tinkerpop git commit: python getSideEffects() now aggreagates
correctly. cleaned up driver_connection alot.
Repository: tinkerpop
Updated Branches:
refs/heads/TINKERPOP-1278 531dcb59a -> 72a5ae0c4
python getSideEffects() now aggreagates correctly. cleaned up driver_connection alot.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/fbbcd467
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/fbbcd467
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/fbbcd467
Branch: refs/heads/TINKERPOP-1278
Commit: fbbcd467831d303fcdf8ea04668212424b094d20
Parents: 58704a7
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Aug 24 14:42:40 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Aug 24 14:42:40 2016 -0600
----------------------------------------------------------------------
.../driver/driver_remote_connection.py | 69 +++++++++-----------
1 file changed, 30 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fbbcd467/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py b/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
index f7e50ad..77354e8 100644
--- a/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
+++ b/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
@@ -22,8 +22,8 @@ from tornado import gen
from tornado import ioloop
from tornado import websocket
+from gremlin_python.structure.io.graphson import GraphSONReader
from gremlin_python.structure.io.graphson import GraphSONWriter
-from gremlin_python.structure.io.graphson import TraverserDeserializer
from .remote_connection import RemoteConnection
from .remote_connection import RemoteTraversal
from .remote_connection import RemoteTraversalSideEffects
@@ -33,21 +33,7 @@ class GremlinServerError(Exception):
pass
-# when the object is known to be a traverser, just use a direct call to the deserializer
-__traverserDeserializer = TraverserDeserializer()
-
-
-def parse_traverser(traverser_dict):
- return __traverserDeserializer._objectify(traverser_dict)
-
-
-def parse_side_effect(result):
- return result
-
-
class DriverRemoteConnection(RemoteConnection):
- """Remote connection to the Gremlin Server"""
-
def __init__(self, url, traversal_source, loop=None, username="", password=""):
super(DriverRemoteConnection, self).__init__(url, traversal_source)
if loop is None:
@@ -68,33 +54,21 @@ class DriverRemoteConnection(RemoteConnection):
@gen.coroutine
def submit_traversal_bytecode(self, bytecode, request_id):
- """
- Submit bytecode to Gremlin Server
-
- :param str gremlin: Gremlin script to submit to server.
- :param str lang: Language of scripts submitted to the server.
- "gremlin-groovy" by default
- :param str op: Gremlin Server op argument. "eval" by default.
- :param str processor: Gremlin Server processor argument. "" by default.
-
- :returns: :py:class:`Response` object
- """
message = self._get_traversal_bytecode_message(bytecode, request_id)
- traversers = yield self._execute_message(message, parse_traverser)
+ traversers = yield self._execute_message(message, lambda result: GraphSONReader._objectify(result))
raise gen.Return(traversers)
@gen.coroutine
def submit_sideEffect_keys(self, request_id):
message = self._get_sideEffect_keys_message(request_id)
- resp_parser = lambda result: result
- keys = yield self._execute_message(message, resp_parser)
- raise gen.Return(keys)
+ keys = yield self._execute_message(message, lambda result: GraphSONReader._objectify(result))
+ raise gen.Return(set(keys))
@gen.coroutine
def submit_sideEffect_value(self, request_id, key):
message = self._get_sideEffect_value_message(request_id, key)
- side_effects = yield self._execute_message(message, parse_side_effect)
- raise gen.Return(side_effects)
+ side_effects = yield self._execute_message(message, lambda result: GraphSONReader._objectify(result))
+ raise gen.Return(side_effects[0]) # don't get it wrapped in a list
@gen.coroutine
def _execute_message(self, message, resp_parser):
@@ -107,11 +81,10 @@ class DriverRemoteConnection(RemoteConnection):
msg = yield resp.receive()
if msg is None:
break
- results += msg
+ results.append(msg)
raise gen.Return(results)
def close(self):
- """Close underlying connection and mark as closed."""
self._ws.close()
def _get_traversal_bytecode_message(self, bytecode, request_id):
@@ -210,20 +183,38 @@ class Response:
status_code = message["status"]["code"]
data = message["result"]["data"]
msg = message["status"]["message"]
+ meta = message["result"]["meta"]
+ aggregateTo = None if "aggregateTo" not in meta else meta["aggregateTo"]
+
if status_code == 407:
self._authenticate(self._username, self._password, self._processor)
- traversers = yield self.receive()
+ yield self.receive()
elif status_code == 204:
self._closed = True
return
elif status_code in [200, 206]:
- results = []
- for result in data:
- results.append(self._resp_parser(result))
+ # todo: bulk
+ if "list" == aggregateTo:
+ results = []
+ for item in data:
+ results.append(self._resp_parser(item))
+ elif "set" == aggregateTo:
+ results = set()
+ for item in data:
+ results.add(self._resp_parser(item))
+ elif "map" == aggregateTo:
+ results = {}
+ for item in data:
+ m = self._resp_parser(item)
+ results[m.keys()[0]] = m[m.keys()[0]]
+ else:
+ results = []
+ for item in data:
+ results.append(self._resp_parser(item))
if status_code == 200:
self._closed = True
+ raise gen.Return(results)
else:
self._closed = True
raise GremlinServerError(
"{0}: {1}".format(status_code, msg))
- raise gen.Return(results)
[2/2] tinkerpop git commit: Merge branch 'TINKERPOP-1278' of
https://git-wip-us.apache.org/repos/asf/tinkerpop into TINKERPOP-1278
Posted by ok...@apache.org.
Merge branch 'TINKERPOP-1278' of https://git-wip-us.apache.org/repos/asf/tinkerpop into TINKERPOP-1278
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/72a5ae0c
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/72a5ae0c
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/72a5ae0c
Branch: refs/heads/TINKERPOP-1278
Commit: 72a5ae0c43f49562624b6154c9dfdd1e4ff400f1
Parents: fbbcd46 531dcb5
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Aug 24 14:42:47 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Aug 24 14:42:47 2016 -0600
----------------------------------------------------------------------
data/grateful-dead-v2d0-typed.json | 1616 +++++++++---------
data/tinkerpop-classic-v2d0-typed.json | 12 +-
data/tinkerpop-crew-v2d0-typed.json | 12 +-
data/tinkerpop-modern-v2d0-typed.json | 12 +-
.../structure/io/graphson/GraphSONMapper.java | 2 +-
.../structure/io/graphson/GraphSONModule.java | 68 +-
.../structure/io/graphson/GraphSONTokens.java | 2 +-
...aphSONMapperV2d0PartialEmbeddedTypeTest.java | 14 +-
.../gremlin_python/structure/io/graphson.py | 38 +-
.../io/graphson/grateful-dead-v2d0-typed.json | 1616 +++++++++---------
.../graphson/tinkerpop-classic-v2d0-typed.json | 12 +-
.../io/graphson/tinkerpop-crew-v2d0-typed.json | 12 +-
.../graphson/tinkerpop-modern-v2d0-typed.json | 12 +-
13 files changed, 1714 insertions(+), 1714 deletions(-)
----------------------------------------------------------------------