> built 2026-09-22 16:17 UTC from ee40eda (master) · arangodol 0.0.3. Details: build_info.json

# index.html.md

<!-- generated by epythet -->

# arangodol

ArangoDB with a simple (dict-like or list-like) interface

To install:	`pip install arangodol`

A basic ArangoDB persister.

```python
>>> from arangodol import ArangoDbPersister
>>> s = ArangoDbPersister()
>>> k = {'key': '777'} # Each collection will happily accept user-defined _key values.
>>> v = {'val': 'bar'}
>>> for _key in s:
...     del s[_key]
...
>>> k in s
False
>>> len(s)
0
>>> s[k] = v
>>> len(s)
1
>>> s[k]
{'val': 'bar'}
>>> s.get(k)
{'val': 'bar'}
>>> s.get({'not': 'a key'}, {'default': 'val'})  # testing s.get with default
{'default': 'val'}
>>> list(s.values())
[{'val': 'bar'}]
>>> k in s  # testing __contains__ again
True
>>> del s[k]
>>> len(s)
0
>>> s = ArangoDbPersister(db_name='py2store', key_fields=('name',))
>>> for _key in s:
...     del s[_key]
...
>>> s[{'name': 'guido'}] = {'yob': 1956, 'proj': 'python', 'bdfl': False}
>>> s[{'name': 'guido'}]
{'yob': 1956, 'proj': 'python', 'bdfl': False}
>>> s[{'name': 'vitalik'}] = {'yob': 1994, 'proj': 'ethereum', 'bdfl': True}
>>> s[{'name': 'vitalik'}]
{'yob': 1994, 'proj': 'ethereum', 'bdfl': True}
>>> for key, val in s.items():
...     print(f"{key}: {val}")
{'name': 'guido'}: {'yob': 1956, 'proj': 'python', 'bdfl': False}
{'name': 'vitalik'}: {'yob': 1994, 'proj': 'ethereum', 'bdfl': True}

```

ArangoDbStore using tuple keys.

```python
>>> from arangodol import ArangoDbTupleKeyStore
>>> s = ArangoDbTupleKeyStore(collection_name='test', key_fields=('key', 'user'))
>>> k = (1234, 'user')
>>> v = {'name': 'bob', 'age': 42}
>>> if k in s:  # deleting all docs in tmp
...     del s[k]
>>> assert (k in s) == False  # see that key is not in store (and testing __contains__)
>>> orig_length = len(s)
>>> s[k] = v
>>> assert len(s) == orig_length + 1
>>> assert k in list(s)
>>> assert s[k] == v
>>> assert s.get(k) == v
>>> assert v in list(s.values())
>>> assert (k in s) == True # testing __contains__ again
>>> del s[k]
>>> assert len(s) == orig_length
```

<p class="epythet-aggregates">This documentation as a single file: <a href="arangodol.md">arangodol.md</a> (Markdown, for agents).</p>


# _autosummary/arangodol.html.md

# arangodol

arango with a simple (dict-like or list-like) interface

### Functions

| [`validate_document_key`](_autosummary/arangodol.html.md#arangodol.validate_document_key)(key)   | Return `key` if it is a safe ArangoDB document key, else raise `KeyError`.   |
|-------------------------------------------------------------------------------|------------------------------------------------------------------------------|

### Classes

| [`ArangoDbPersister`](_autosummary/arangodol.html.md#arangodol.ArangoDbPersister)([user, password, url, ...])     | A basic ArangoDB persister.     |
|----------------------------------------------------------------------------------------------------|---------------------------------|
| [`ArangoDbStore`](_autosummary/arangodol.html.md#arangodol.ArangoDbStore)([user, password, url, ...])         |                                 |
| [`ArangoDbTupleKeyStore`](_autosummary/arangodol.html.md#arangodol.ArangoDbTupleKeyStore)([user, password, url, ...]) | ArangoDbStore using tuple keys. |

### *class* arangodol.ArangoDbPersister(user='root', password='root', url='http://127.0.0.1:8529', db_name='py2store', collection_name='test', key_fields=('key',), key_fields_separator='::')

Bases: `KvPersister`

A basic ArangoDB persister.

```pycon
>>> from py2store.persisters.arangodb_w_pyarango import ArangoDbPersister
>>> s = ArangoDbPersister()
>>> k = {'key': '777'} # Each collection will happily accept user-defined _key values.
>>> v = {'val': 'bar'}
>>> for _key in s:
...     del s[_key]
...
>>> k in s
False
>>> len(s)
0
>>> s[k] = v
>>> len(s)
1
>>> s[k]
{'val': 'bar'}
>>> s.get(k)
{'val': 'bar'}
>>> s.get({'not': 'a key'}, {'default': 'val'})  # testing s.get with default
{'default': 'val'}
>>> list(s.values())
[{'val': 'bar'}]
>>> k in s  # testing __contains__ again
True
>>> del s[k]
>>> len(s)
0
>>> s = ArangoDbPersister(db_name='py2store', key_fields=('name',))
>>> for _key in s:
...     del s[_key]
...
>>> s[{'name': 'guido'}] = {'yob': 1956, 'proj': 'python', 'bdfl': False}
>>> s[{'name': 'guido'}]
{'yob': 1956, 'proj': 'python', 'bdfl': False}
>>> s[{'name': 'vitalik'}] = {'yob': 1994, 'proj': 'ethereum', 'bdfl': True}
>>> s[{'name': 'vitalik'}]
{'yob': 1994, 'proj': 'ethereum', 'bdfl': True}
>>> for key, val in s.items():
...     print(f"{key}: {val}")
{'name': 'guido'}: {'yob': 1956, 'proj': 'python', 'bdfl': False}
{'name': 'vitalik'}: {'yob': 1994, 'proj': 'ethereum', 'bdfl': True}
```

### *class* arangodol.ArangoDbStore(user='root', password='root', url='http://127.0.0.1:8529', db_name='py2store', collection_name='test', key_fields=('key',), key_fields_separator='::')

Bases: `Store`

### *class* arangodol.ArangoDbTupleKeyStore(user='root', password='root', url='http://127.0.0.1:8529', db_name='py2store', collection_name='test', key_fields=('key',), key_fields_separator='::')

Bases: [`ArangoDbStore`](_autosummary/arangodol.html.md#arangodol.ArangoDbStore)

ArangoDbStore using tuple keys.

```pycon
>>> from py2store.stores.arangodb_store import ArangoDbTupleKeyStore
>>> s = ArangoDbTupleKeyStore(collection_name='test', key_fields=('key', 'user'))
>>> k = (1234, 'user')
>>> v = {'name': 'bob', 'age': 42}
>>> if k in s:  # deleting all docs in tmp
...     del s[k]
>>> assert (k in s) == False  # see that key is not in store (and testing __contains__)
>>> orig_length = len(s)
>>> s[k] = v
>>> assert len(s) == orig_length + 1
>>> assert k in list(s)
>>> assert s[k] == v
>>> assert s.get(k) == v
>>> assert v in list(s.values())
>>> assert (k in s) == True # testing __contains__ again
>>> del s[k]
>>> assert len(s) == orig_length
```

### arangodol.validate_document_key(key)

Return `key` if it is a safe ArangoDB document key, else raise `KeyError`.

Keys end up in request URLs, so anything outside ArangoDB’s key alphabet (such
as `/`) or a dot segment could address a different collection or database.

```pycon
>>> validate_document_key('Robot::0a1b')
'Robot::0a1b'
>>> validate_document_key('a/b')
Traceback (most recent call last):
  ...
KeyError: "Invalid ArangoDB document key: 'a/b'"
>>> validate_document_key('..')
Traceback (most recent call last):
  ...
KeyError: "Invalid ArangoDB document key: '..'"
```


# about-this-build.html.md

<!-- generated by epythet -->

# About this build

This documentation was built on **2026-09-22 16:17 UTC** from commit <a href="https://github.com/i2mint/arangodol/commit/ee40edaa53fbf991e3465516acdff615773d4381"><code>ee40eda</code></a> on branch <code>master</code>, for **arangodol 0.0.3** (from <code>pyproject.toml</code>).

#### NOTE
Nothing suggests a mismatch: the tree was clean at the commit above, and the documented version is the one on PyPI.

## Source

|                     |                                                                                                                                                         |
|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|
| Commit              | <a href="https://github.com/i2mint/arangodol/commit/ee40edaa53fbf991e3465516acdff615773d4381"><code>ee40edaa53fbf991e3465516acdff615773d4381</code></a> |
| Branch              | <code>master</code>                                                                                                                                     |
| Tags at this commit | <code>0.0.3</code>                                                                                                                                      |
| Working tree        | clean                                                                                                                                                   |
| Remote              | <code>https://github.com/i2mint/arangodol</code>                                                                                                        |

## Continuous integration

|              |                                                                                            |
|--------------|--------------------------------------------------------------------------------------------|
| Repository   | <code>i2mint/arangodol</code>                                                              |
| Run          | <a href="https://github.com/i2mint/arangodol/actions/runs/35752936674">35752936674</a>     |
| Ref          | <code>refs/heads/master</code>                                                             |
| Event commit | <code>51dbbcce4de671968fee343f70ed21cda26f7329</code> (in the history of the built commit) |

## Tools

|          |         |
|----------|---------|
| epythet  | 0.2.12  |
| Sphinx   | 9.1.0   |
| docutils | 0.22.4  |
| Python   | 3.12.14 |

## Configuration as resolved

|               |                                                                  |
|---------------|------------------------------------------------------------------|
| theme         | <code>auto</code> (Sphinx theme <code>shibuya</code>)            |
| accent        | <code>#864600</code>                                             |
| api_generator | <code>autosummary</code>                                         |
| ignore        | <code>tests/</code>, <code>scrap/</code>, <code>examples/</code> |
| agent_outputs | <code>true</code>                                                |
| aggregates    | <code>md</code>                                                  |
| ai_artifacts  | <code>true</code>                                                |

## Package on PyPI

Latest release: <a href="https://pypi.org/project/arangodol/0.0.3/">0.0.3</a>, the same as the documented version.

## Reproduce

```bash
git clone https://github.com/i2mint/arangodol && cd arangodol
git checkout ee40edaa53fbf991e3465516acdff615773d4381
pip install "epythet==0.2.12"
epythet quickstart . --ignore tests/ scrap/ examples/
```

The same data, for machines: <a href="build_info.json"><code>build_info.json</code></a> (schema version 1).


# api.html.md

# API reference

| [`arangodol`](_autosummary/arangodol.html.md#module-arangodol)   | arango with a simple (dict-like or list-like) interface   |
|-------------------------------------------------------------------------------|-----------------------------------------------------------|


