From 71285e0552c4f446ecdaa1ec3cffb50e15a96429 Mon Sep 17 00:00:00 2001 From: Joohwan Oh Date: Fri, 19 Feb 2021 00:06:15 -0800 Subject: [PATCH] Update documentation and add new logo --- README.md | 35 +++++++++++++++++++++++------------ docs/async.rst | 6 +++--- docs/batch.rst | 6 +++--- docs/conf.py | 2 ++ docs/index.rst | 10 +++++++++- docs/static/logo.png | Bin 0 -> 10608 bytes 6 files changed, 40 insertions(+), 19 deletions(-) create mode 100644 docs/static/logo.png diff --git a/README.md b/README.md index 75398813..d3968c45 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,21 @@ -# python-arango +![Logo](https://user-images.githubusercontent.com/2701938/108583516-c3576680-72ee-11eb-883f-2d9b52e74e45.png) -Python driver for [ArangoDB](https://www.arangodb.com). +[![Build](https://github.com/joowani/python-arango/actions/workflows/build.yaml/badge.svg)](https://github.com/joowani/python-arango/actions/workflows/build.yaml) +[![CodeQL](https://github.com/joowani/python-arango/actions/workflows/codeql.yaml/badge.svg)](https://github.com/joowani/python-arango/actions/workflows/codeql.yaml) +[![CodeCov](https://codecov.io/gh/joowani/python-arango/branch/main/graph/badge.svg?token=DXg0O4hxnx)](https://codecov.io/gh/joowani/python-arango) +[![PyPI version](https://badge.fury.io/py/python-arango.svg)](https://badge.fury.io/py/python-arango) +[![GitHub license](https://img.shields.io/badge/license-MIT-brightgreen)](https://github.com/joowani/python-arango/blob/main/LICENSE) +![Python version](https://img.shields.io/badge/python-3.6%2B-blue) + +# Python-Arango + +Python driver for [ArangoDB](https://www.arangodb.com), a scalable multi-model +database natively supporting documents, graphs and search. ## Requirements -Python 3.6+ and ArangoDB 3.7+ +- ArangoDB version 3.7+ +- Python version 3.6+ ## Installation @@ -47,7 +58,7 @@ cursor = db.aql.execute("FOR doc IN students RETURN doc") student_names = [document["name"] for document in cursor] ``` -Here is another example with graphs: +Another example with [graphs](https://www.arangodb.com/docs/stable/graphs.html): ```python from arango import ArangoClient @@ -66,7 +77,7 @@ students = graph.create_vertex_collection("students") lectures = graph.create_vertex_collection("lectures") # Create an edge definition (relation) for the graph. -register = graph.create_edge_definition( +edges = graph.create_edge_definition( edge_collection="register", from_vertex_collections=["students"], to_vertex_collections=["lectures"] @@ -83,12 +94,12 @@ lectures.insert({"_key": "STA101", "title": "Statistics"}) lectures.insert({"_key": "CSC101", "title": "Algorithms"}) # Insert edge documents into "register" edge collection. -register.insert({"_from": "students/01", "_to": "lectures/MAT101"}) -register.insert({"_from": "students/01", "_to": "lectures/STA101"}) -register.insert({"_from": "students/01", "_to": "lectures/CSC101"}) -register.insert({"_from": "students/02", "_to": "lectures/MAT101"}) -register.insert({"_from": "students/02", "_to": "lectures/STA101"}) -register.insert({"_from": "students/03", "_to": "lectures/CSC101"}) +edges.insert({"_from": "students/01", "_to": "lectures/MAT101"}) +edges.insert({"_from": "students/01", "_to": "lectures/STA101"}) +edges.insert({"_from": "students/01", "_to": "lectures/CSC101"}) +edges.insert({"_from": "students/02", "_to": "lectures/MAT101"}) +edges.insert({"_from": "students/02", "_to": "lectures/STA101"}) +edges.insert({"_from": "students/03", "_to": "lectures/CSC101"}) # Traverse the graph in outbound direction, breadth-first. result = graph.traverse( @@ -98,5 +109,5 @@ result = graph.traverse( ) ``` -Please see [documentation](http://python-driver-for-arangodb.readthedocs.io/en/master/index.html) +Please see the [documentation](http://python-driver-for-arangodb.readthedocs.io/en/master/index.html) for more details. diff --git a/docs/async.rst b/docs/async.rst index 808741c6..82690b29 100644 --- a/docs/async.rst +++ b/docs/async.rst @@ -1,7 +1,7 @@ -Asynchronous Execution ----------------------- +Async API Execution +------------------- -In **asynchronous execution**, python-arango sends API requests to ArangoDB in +In **asynchronous API executions**, python-arango sends API requests to ArangoDB in fire-and-forget style. The server processes the requests in the background, and the results can be retrieved once available via :ref:`AsyncJob` objects. diff --git a/docs/batch.rst b/docs/batch.rst index ec932d9a..a4e3a047 100644 --- a/docs/batch.rst +++ b/docs/batch.rst @@ -1,7 +1,7 @@ -Batch Execution ---------------- +Batch API Execution +------------------- -In **batch execution**, requests to ArangoDB server are stored in client-side +In **batch API executions**, requests to ArangoDB server are stored in client-side in-memory queue, and committed together in a single HTTP call. After the commit, results can be retrieved later from :ref:`BatchJob` objects. diff --git a/docs/conf.py b/docs/conf.py index 0fec9395..cd9bea82 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -8,7 +8,9 @@ "sphinx.ext.viewcode", ] exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] +html_static_path = ["static"] html_theme = "sphinx_rtd_theme" +master_doc = "index" autodoc_member_order = "bysource" diff --git a/docs/index.rst b/docs/index.rst index 9ee2e0f8..8566733d 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,9 +1,17 @@ +.. image:: /static/logo.png + +| + +Python-Arango +------------- + Welcome to the documentation for **python-arango**, a Python driver for ArangoDB_. Requirements ============= -Python 3.6+ and ArangoDB 3.7+ +- ArangoDB version 3.7+ +- Python version 3.6+ Installation ============ diff --git a/docs/static/logo.png b/docs/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..41d807ef714da523b7e1ccf9f2790ec39159fb06 GIT binary patch literal 10608 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 literal 0 HcmV?d00001