README.md 5.27 KB
Newer Older
1
2
# ![Goblin logo](https://git.qoto.org/goblin-ogm/goblin/uploads/bb8f7349fdb9aa2a7a244e4c95b380a7/goblin-logo.png)  AIO Gremlin

3
[![tests](http://git.qoto.org/goblin-ogm/aiogremlin/badges/master/pipeline.svg)](http://git.qoto.org/goblin-ogm/aiogremlin/commits/master)
4
[![Requirements](https://requires.io/github/goblin-ogm/aiogremlin/requirements.svg?branch=master)](https://requires.io/github/goblin-ogm/aiogremlin/requirements/?branch=master)
5
[![test coverage](http://git.qoto.org/goblin-ogm/aiogremlin/badges/master/coverage.svg)](http://git.qoto.org/goblin-ogm/aiogremlin/commits/master)
6
[![codecov](https://codecov.io/gh/goblin-ogm/aiogremlin/branch/master/graph/badge.svg)](https://codecov.io/gh/goblin-ogm/aiogremlin)
7
[![Codacy](https://api.codacy.com/project/badge/Grade/99c4b7d53ee94c85b95433ee4ff6230c)](https://www.codacy.com/gh/goblin-ogm/aiogremlin?utm_source=github.com&utm_medium=referral&utm_content=goblin-ogm/aiogremlin&utm_campaign=Badge_Grade)
8
[![Scrutinizer](https://img.shields.io/scrutinizer/quality/g/goblin-ogm/aiogremlin/master.svg?style=flat)](https://scrutinizer-ci.com/g/goblin-ogm/aiogremlin)
9
10

[![PyPi](https://img.shields.io/pypi/v/aiogremlin.svg?style=flat)](https://pypi.python.org/pypi/aiogremlin)
11
[![Supported Versions](https://img.shields.io/pypi/pyversions/aiogremlin.svg?style=flat)](https://pypi.python.org/pypi/aiogremlin)
12
13
14
[![Downloads](https://img.shields.io/pypi/dm/aiogremlin.svg?style=flat)](https://pypi.python.org/pypi/aiogremlin)
[![SemVer](https://img.shields.io/badge/SemVer-v2.0.0-green)](https://semver.org/spec/v2.0.0.html)
[![docs](https://readthedocs.org/projects/aiogremlin/badge/?version=latest)](https://aiogremlin.readthedocs.io/en/latest/)
15
[![Gitter](https://badges.gitter.im/goblin-ogm/aiogremlin.svg)](https://gitter.im/goblin-ogm/aiogremlin?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
davebshow's avatar
davebshow committed
16

17
18
19
An asynchronous DSL for the Gremlin-Python driver

**Licensed under the Apache Software License v2**
davebshow's avatar
davebshow committed
20

21
`aiogremlin` is an asynchronous DSL based on the official `Gremlin-Python` GLV designed for integration with
davebshow's avatar
davebshow committed
22
event loop based asynchronous Python networking libraries, including `asyncio`,
davebshow's avatar
davebshow committed
23
`aiohttp`, and `tornado`. It uses the `async/await` syntax introduced
davebshow's avatar
davebshow committed
24
in PEP 492, and is therefore Python 3.5+ only.
davebshow's avatar
davebshow committed
25

davebshow's avatar
davebshow committed
26
`aiogremlin` tries to follow `Gremlin-Python` as closely as possible both in terms
27
of API and implementation. It is released according to the TinkerPop release schedule.
davebshow's avatar
davebshow committed
28

davebshow's avatar
davebshow committed
29
## Getting Started
davebshow's avatar
davebshow committed
30
31

```python
davebshow's avatar
davebshow committed
32
33
import asyncio
from aiogremlin import DriverRemoteConnection, Graph
davebshow's avatar
davebshow committed
34

35

davebshow's avatar
davebshow committed
36
loop = asyncio.get_event_loop()
37
38


davebshow's avatar
davebshow committed
39
40
41
42
43
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()
davebshow's avatar
davebshow committed
44
  await remote_connection.close()
davebshow's avatar
davebshow committed
45
  return vertices
davebshow's avatar
davebshow committed
46

47

davebshow's avatar
davebshow committed
48
49
50
vertices = loop.run_until_complete(go(loop))
print(vertices)
# [v[1], v[2], v[3], v[4], v[5], v[6]]
51
```
52
53
## Donating

54
[![Librepay](http://img.shields.io/liberapay/receives/goblin-ogm.svg?logo=liberapay)](https://liberapay.com/goblin-ogm/donate)
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78

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

This project is officially hosted on [QOTO GitLab here](https://git.qoto.org/goblin-ogm/aiogremlin) however an up-to-date mirror is also maintained on [Github here](https://github.com/goblin-ogm/aiogremlin).

Aparapi Javadocs: [latest](https://aiogremlin.readthedocs.io/en/latest/)

For detailed documentation see [Goblin-OGM.com](http://gblin-ogm.com).

For support please use [Gitter](https://gitter.im/goblin-ogm/aiogremlin) or the [official Goblin mailing list and Discourse forum](https://discourse.qoto.org/c/PROJ/GOB).

Please file bugs and feature requests on [QOTO GitLab](https://git.qoto.org/goblin-ogm/aiogremlin/issues) our old archived issues can still be viewed on [Github](https://github.com/davebshow/aiogremlin/issues) as well.

Aparapi conforms to the [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html) 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](http://semver.org/spec/v2.0.0.html).

## Related Projects

This particular repository only represents the one component in a suite of libraries. There are several other related repositories worth taking a look at.

* [Goblin](https://git.qoto.org/goblin-ogm/goblin) - The main library, the Goblin OGM
* [Goblin Buildchain](https://git.qoto.org/goblin-ogm/goblin-buildchain) - Docker image containing all the needed tools to build and test Goblin.
* [Python Gremlin Server](https://git.qoto.org/goblin-ogm/gremlin-server-python) - Vanilla Gremlin-server with Python Script Engine loaded, used for integration testing.
79
80
81
82
83
84
85
86
87
88
89
90

## Developers

### Testing

In order to perform tests identical in nature to the integration tests we run then simply ensure you gave gitlab-runner installed then run the following command.

```bash
gitlab-runner exec docker test
```

Keep in mind this will run the tests on your local copy of the master branch so any changes not committed locally will be missed when testing.