An asynchronous DSL for the Gremlin-Python driver
Licensed under the Apache Software License v2
aiogremlin is an asynchronous DSL based on the official
Gremlin-Python GLV designed for integration with
event loop based asynchronous Python networking libraries, including
tornado. It uses the
async/await syntax introduced
in PEP 492, and is therefore Python 3.5+ only.
aiogremlin tries to follow
Gremlin-Python as closely as possible both in terms
of API and implementation. It is released according to the TinkerPop release schedule.
aiogremlin is built directly on top of TinkerPop and allows access to all of the internals. This ensures all the
TinkerPop features are available to the end-user. The TinkerPop stack provides several tools which can be used to work
- Gremlin, a database agnostic query language for Graph Databases.
- Gremlin Server, a server that provides an interface for executing Gremlin on remote machines.
- a data-flow framework for splitting, merging, filtering, and transforming of data
- Graph Computer, a framework for running algorithms against a Graph Database.
- Support for both OLTP and OLAP engines.
- TinkerGraph a Graph Database and the reference implementation for TinkerPop.
- Native Gephi integration for visualizing graphs.
- Interfaces for most major Graph Compute Engines including Hadoop M/R. Spark, and Giraph.
aiogremlin also supports any of the many databases compatible with TinkerPop including the following.
Some unique feature provided by the Goblin OGM include:
- High level asynchronous Object Graph Mapper (OGM) - provided by goblin
- Integration with the official gremlin-python Gremlin Language Variant (GLV)
- Native Python support for asynchronous programing including coroutines, iterators, and context managers as specified in PEP 492
- Asynchronous Python driver for the Gremlin Server
Graphimplementation that produces native Python GLV traversals
import asyncio from aiogremlin import DriverRemoteConnection, Graph loop = asyncio.get_event_loop() async def go(loop): remote_connection = await DriverRemoteConnection.open( 'ws://localhost:8182/gremlin', 'g') g = Graph().traversal().withRemote(remote_connection) vertices = await g.V().toList() await remote_connection.close() return vertices vertices = loop.run_until_complete(go(loop)) print(vertices) # [v, v, v, v, v, v]
As an open-source project we run entierly off donations. Buy one of our hardworking developers a beer by donating with one of the above buttons. All donations go to our bounty fund and allow us to place bounties on important bugs and enhancements.
Support and Documentation
Aparapi conforms to the Semantic Versioning 2.0.0 standard. That means the version of a release isnt arbitrary but rather describes how the library interfaces have changed. Read more about it at the Semantic Versioning page.
This particular repository only represents the one component in a suite of libraries. There are several other related repositories worth taking a look at.