diff --git a/goblin/api.py b/goblin/api.py index bdddbd175bf75ca33609bb37bc3128435f162019..0a0b5c23902c4986232e9be1f74c8d5e9137fcdb 100644 --- a/goblin/api.py +++ b/goblin/api.py @@ -309,10 +309,15 @@ class Edge(metaclass=meta.ElementMeta): class VertexProperty(metaclass=meta.ElementMeta): + __data_type__ = None + def __init__(self, value): self._value = value + @property + def value(self): + return self._value + def __repr__(self): return '<{}(type={}, value={})'.format(self.__class__.__name__, - self.__data_type__, - self._value) + self.__data_type__, self.value) diff --git a/goblin/driver/api.py b/goblin/driver/api.py index 24154de34145fe8077ad46964370f7be4f85a6c6..22ab80d15c48ddab174c2a0ed4e7b4cc247a3efc 100644 --- a/goblin/driver/api.py +++ b/goblin/driver/api.py @@ -18,6 +18,6 @@ class GremlinServer: if client_session is None: client_session = aiohttp.ClientSession(loop=loop) ws = await client_session.ws_connect(url) - return connection.Connection(ws, loop, client_session, + return connection.Connection(url, ws, loop, client_session, force_close=force_close, username=username, password=password) diff --git a/goblin/driver/connection.py b/goblin/driver/connection.py index f4bd98a6a0ff4773c014814c14962b2ebf409983..3fbb2ac4849e63fa7a28df7440fbff4c83001dd0 100644 --- a/goblin/driver/connection.py +++ b/goblin/driver/connection.py @@ -53,15 +53,13 @@ class AbstractConnection(abc.ABC): class Connection(AbstractConnection): - def __init__(self, ws, loop, conn_factory, *, force_close=True, - force_release=False, pool=None, username=None, - password=None): + def __init__(self, url, ws, loop, conn_factory, *, force_close=True, + username=None, password=None): + self._url = url self._ws = ws self._loop = loop self._conn_factory = conn_factory self._force_close = force_close - self._force_release = force_release - self._pool = pool self._username = username self._password = password self._closed = False @@ -79,14 +77,6 @@ class Connection(AbstractConnection): def force_close(self): return self._force_close - @property - def force_release(self): - return self._force_release - - async def release(self): - if self.pool: - await self.pool.release(self) - async def submit(self, gremlin, *, @@ -111,6 +101,8 @@ class Connection(AbstractConnection): request_id) response_queue = asyncio.Queue(loop=self._loop) self.response_queues[request_id] = response_queue + if self._ws.closed: + self._ws = await self.conn_factory.ws_connect(self._url) self._ws.send_bytes(message) self._loop.create_task(self.receive()) return Response(response_queue, self._loop) @@ -118,7 +110,6 @@ class Connection(AbstractConnection): async def close(self): await self._ws.close() self._closed = True - self._pool = None await self._conn_factory.close() def _prepare_message(self, gremlin, bindings, lang, aliases, op, @@ -198,8 +189,6 @@ class Connection(AbstractConnection): async def term(self): if self._force_close: await self.close() - elif self._force_release: - await self.release() async def __aenter__(self): return self @@ -207,4 +196,3 @@ class Connection(AbstractConnection): async def __aexit__(self, exc_type, exc, tb): await self.close() self._conn = None - self._pool = None diff --git a/goblin/mapper.py b/goblin/mapper.py index da15b010b02b9d2af1a22bedc5f125d68ce19677..3521153ea6f87290774c39fe96ebd4ef8208e583 100644 --- a/goblin/mapper.py +++ b/goblin/mapper.py @@ -82,7 +82,5 @@ class Mapping: def __repr__(self): return '<{}(type={}, label={}, properties={})'.format( - self.__class__.__name__, - self._type, - self._label, + self.__class__.__name__, self._type, self._label, self._properties)