Source code for gremlin.utils

"""Utility functions to support GremlinMagic operations"""
import json
import re

from aiogremlin.gremlin_python.driver import request
from aiogremlin.remote.driver_remote_side_effects import (
    RemoteTraversalSideEffects)
from gremlin import registry, resultset


[docs]def parse(connection_str): """Parse connection string passed by user""" if ' as ' in connection_str.lower(): descriptors = re.split(' as ', connection_str, flags=re.IGNORECASE) else: descriptors = (connection_str, None) return descriptors
def _sanitize_namespace(user_ns): bindings = {} for k, v in user_ns.items(): try: json.dumps(v) except: pass else: bindings[k] = v return bindings
[docs]def submit(gremlin, user_ns, aliases, conn): """ Submit a script to the Gremlin Server using the IPython namespace using the IPython namespace to pass bindings using Magics configuration and a connection registered with :py:class:`ConnectionRegistry<gremlin.registry.ConnectionRegistry>` """ loop = conn.loop bindings = _sanitize_namespace(user_ns) message = request.RequestMessage( processor='', op='eval', args={'gremlin': gremlin, 'aliases': aliases, 'bindings': bindings}) return loop.run_until_complete(_submit(conn, message))
async def _submit(conn, message): result_set = await conn.write(message) results = await result_set.all() return resultset.ResultSet(results, message)