python-arango 8.3.4__tar.gz → 8.3.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_arango-8.3.4 → python_arango-8.3.6}/.circleci/config.yml +19 -5
- {python_arango-8.3.4 → python_arango-8.3.6}/.github/workflows/codeql.yaml +3 -5
- python_arango-8.3.6/.github/workflows/docs.yaml +47 -0
- python_arango-8.3.6/.github/workflows/pypi.yaml +66 -0
- python_arango-8.3.6/AGENTS.md +89 -0
- {python_arango-8.3.4/python_arango.egg-info → python_arango-8.3.6}/PKG-INFO +3 -4
- {python_arango-8.3.4 → python_arango-8.3.6}/README.md +1 -1
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/collection.py +14 -2
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/connection.py +1 -2
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/formatter.py +4 -0
- python_arango-8.3.6/arango/version.py +1 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/foxx.rst +1 -1
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/index.rst +1 -2
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/indexes.rst +42 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/pyproject.toml +1 -2
- {python_arango-8.3.4 → python_arango-8.3.6/python_arango.egg-info}/PKG-INFO +3 -4
- {python_arango-8.3.4 → python_arango-8.3.6}/python_arango.egg-info/SOURCES.txt +2 -3
- {python_arango-8.3.4 → python_arango-8.3.6}/python_arango.egg-info/requires.txt +1 -1
- {python_arango-8.3.4 → python_arango-8.3.6}/python_arango.egg-info/scm_file_list.json +3 -4
- python_arango-8.3.6/python_arango.egg-info/scm_version.json +8 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/starter.sh +8 -7
- python_arango-8.3.6/todo.md +397 -0
- python_arango-8.3.4/.github/workflows/docs.yaml +0 -103
- python_arango-8.3.4/.github/workflows/pypi.yaml +0 -52
- python_arango-8.3.4/CONTRIBUTING.md +0 -28
- python_arango-8.3.4/arango/version.py +0 -1
- python_arango-8.3.4/ci/conftest.py +0 -1
- python_arango-8.3.4/docs/contributing.rst +0 -99
- python_arango-8.3.4/python_arango.egg-info/scm_version.json +0 -8
- {python_arango-8.3.4 → python_arango-8.3.6}/.gitignore +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/.pre-commit-config.yaml +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/.readthedocs.yaml +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/LICENSE +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/MANIFEST.in +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/__init__.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/api.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/aql.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/backup.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/client.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/cluster.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/cursor.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/database.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/errno.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/exceptions.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/executor.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/foxx.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/graph.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/http.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/job.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/pregel.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/py.typed +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/replication.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/request.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/resolver.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/response.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/result.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/typings.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/utils.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/arango/wal.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/Makefile +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/admin.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/analyzer.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/aql.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/async.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/auth.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/backup.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/batch.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/certificates.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/cluster.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/collection.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/compression.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/conf.py +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/cursor.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/database.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/document.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/errno.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/errors.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/graph.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/http.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/logging.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/make.bat +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/overload.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/overview.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/pregel.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/replication.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/requirements.txt +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/schema.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/serializer.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/simple.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/specs.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/static/logo.png +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/task.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/threading.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/transaction.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/user.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/view.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/docs/wal.rst +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/python_arango.egg-info/dependency_links.txt +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/python_arango.egg-info/top_level.txt +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/setup.cfg +0 -0
- {python_arango-8.3.4 → python_arango-8.3.6}/setup.py +0 -0
|
@@ -30,19 +30,33 @@ workflows:
|
|
|
30
30
|
parameters:
|
|
31
31
|
python_version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
32
32
|
- integration-test:
|
|
33
|
-
name: ArangoDB (enterprise, 3.12 << matrix.arangodb_config >>)
|
|
33
|
+
name: ArangoDB (enterprise, 3.12.10 << matrix.arangodb_config >>)
|
|
34
34
|
matrix:
|
|
35
35
|
parameters:
|
|
36
36
|
arangodb_config: ["single", "cluster"]
|
|
37
|
-
arangodb_image: ["arangodb/enterprise:3.12"]
|
|
37
|
+
arangodb_image: ["arangodb/enterprise:3.12.10"]
|
|
38
38
|
arangodb_conf_version: ["3.12"]
|
|
39
39
|
- integration-test:
|
|
40
|
-
name: ArangoDB (enterprise
|
|
40
|
+
name: ArangoDB (enterprise, 3.12.9 << matrix.arangodb_config >>)
|
|
41
41
|
matrix:
|
|
42
42
|
parameters:
|
|
43
43
|
arangodb_config: ["single", "cluster"]
|
|
44
|
-
arangodb_image: ["arangodb/enterprise
|
|
45
|
-
arangodb_conf_version: ["
|
|
44
|
+
arangodb_image: ["arangodb/enterprise:3.12.9"]
|
|
45
|
+
arangodb_conf_version: ["3.12"]
|
|
46
|
+
- integration-test:
|
|
47
|
+
name: ArangoDB (core-preview, 4.0-nightly << matrix.arangodb_config >>)
|
|
48
|
+
matrix:
|
|
49
|
+
parameters:
|
|
50
|
+
arangodb_config: [ "single", "cluster" ]
|
|
51
|
+
arangodb_image: [ "arangodb/core-preview:4.0-nightly" ]
|
|
52
|
+
arangodb_conf_version: [ "4.0" ]
|
|
53
|
+
- integration-test:
|
|
54
|
+
name: ArangoDB (enterprise-preview, 3.12-nightly << matrix.arangodb_config >>)
|
|
55
|
+
matrix:
|
|
56
|
+
parameters:
|
|
57
|
+
arangodb_config: ["single", "cluster"]
|
|
58
|
+
arangodb_image: ["arangodb/enterprise-preview:3.12-nightly"]
|
|
59
|
+
arangodb_conf_version: ["3.12"]
|
|
46
60
|
|
|
47
61
|
jobs:
|
|
48
62
|
lint:
|
|
@@ -3,8 +3,6 @@ name: CodeQL
|
|
|
3
3
|
on:
|
|
4
4
|
pull_request:
|
|
5
5
|
branches: [main]
|
|
6
|
-
schedule:
|
|
7
|
-
- cron: '21 2 * * 3'
|
|
8
6
|
|
|
9
7
|
jobs:
|
|
10
8
|
analyze:
|
|
@@ -16,10 +14,10 @@ jobs:
|
|
|
16
14
|
|
|
17
15
|
steps:
|
|
18
16
|
- name: Checkout repository
|
|
19
|
-
uses: actions/checkout@
|
|
17
|
+
uses: actions/checkout@v7
|
|
20
18
|
|
|
21
19
|
- name: Initialize CodeQL
|
|
22
|
-
uses: github/codeql-action/init@
|
|
20
|
+
uses: github/codeql-action/init@v4
|
|
23
21
|
|
|
24
22
|
- name: Perform CodeQL Analysis
|
|
25
|
-
uses: github/codeql-action/analyze@
|
|
23
|
+
uses: github/codeql-action/analyze@v4
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
workflow_dispatch:
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
docs:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
name: Docs
|
|
11
|
+
|
|
12
|
+
steps:
|
|
13
|
+
- name: Checkout repository
|
|
14
|
+
uses: actions/checkout@v7
|
|
15
|
+
|
|
16
|
+
- name: Fetch all tags and branches
|
|
17
|
+
run: git fetch --prune --unshallow
|
|
18
|
+
|
|
19
|
+
- name: Create ArangoDB Docker container
|
|
20
|
+
run: >
|
|
21
|
+
docker create --name arango -p 8529:8529 -e ARANGO_ROOT_PASSWORD=passwd -v "$(pwd)/tests/static/":/tests/static
|
|
22
|
+
arangodb/enterprise:latest --server.jwt-secret-keyfile=/tests/static/keyfile --vector-index=true
|
|
23
|
+
|
|
24
|
+
- name: Start ArangoDB Docker container
|
|
25
|
+
run: docker start arango
|
|
26
|
+
|
|
27
|
+
- name: Wait for ArangoDB
|
|
28
|
+
run: |
|
|
29
|
+
for _ in {1..30}; do
|
|
30
|
+
if curl --fail --silent --user root:passwd http://localhost:8529/_api/version > /dev/null; then
|
|
31
|
+
exit 0
|
|
32
|
+
fi
|
|
33
|
+
sleep 1
|
|
34
|
+
done
|
|
35
|
+
docker logs arango
|
|
36
|
+
exit 1
|
|
37
|
+
|
|
38
|
+
- name: Set up Python
|
|
39
|
+
uses: actions/setup-python@v7
|
|
40
|
+
with:
|
|
41
|
+
python-version: '3.12'
|
|
42
|
+
|
|
43
|
+
- name: Install dependencies
|
|
44
|
+
run: pip install .[dev]
|
|
45
|
+
|
|
46
|
+
- name: Run Sphinx doctest
|
|
47
|
+
run: python -m sphinx -b doctest docs docs/_build
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
name: Publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- name: Checkout repository
|
|
16
|
+
uses: actions/checkout@v7
|
|
17
|
+
with:
|
|
18
|
+
fetch-depth: 0
|
|
19
|
+
fetch-tags: true
|
|
20
|
+
persist-credentials: false
|
|
21
|
+
|
|
22
|
+
- uses: actions/setup-python@v7
|
|
23
|
+
with:
|
|
24
|
+
python-version: "3.12"
|
|
25
|
+
|
|
26
|
+
- name: Install dependencies
|
|
27
|
+
run: python -m pip install build
|
|
28
|
+
|
|
29
|
+
- name: Build distribution
|
|
30
|
+
run: python -m build
|
|
31
|
+
|
|
32
|
+
- uses: actions/upload-artifact@v5
|
|
33
|
+
with:
|
|
34
|
+
name: dist
|
|
35
|
+
path: dist/
|
|
36
|
+
if-no-files-found: error
|
|
37
|
+
|
|
38
|
+
testpypi:
|
|
39
|
+
needs: build
|
|
40
|
+
runs-on: ubuntu-latest
|
|
41
|
+
environment: testpypi
|
|
42
|
+
permissions:
|
|
43
|
+
id-token: write
|
|
44
|
+
steps:
|
|
45
|
+
- uses: actions/download-artifact@v6
|
|
46
|
+
with:
|
|
47
|
+
name: dist
|
|
48
|
+
path: dist/
|
|
49
|
+
- name: Publish to TestPyPI
|
|
50
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
51
|
+
with:
|
|
52
|
+
repository-url: https://test.pypi.org/legacy/
|
|
53
|
+
|
|
54
|
+
pypi:
|
|
55
|
+
needs: testpypi
|
|
56
|
+
runs-on: ubuntu-latest
|
|
57
|
+
environment: pypi
|
|
58
|
+
permissions:
|
|
59
|
+
id-token: write
|
|
60
|
+
steps:
|
|
61
|
+
- uses: actions/download-artifact@v6
|
|
62
|
+
with:
|
|
63
|
+
name: dist
|
|
64
|
+
path: dist/
|
|
65
|
+
- name: Publish to PyPI
|
|
66
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Quickstart
|
|
2
|
+
|
|
3
|
+
python-arango is a Python driver for ArangoDB. Run the commands below from the
|
|
4
|
+
repository root.
|
|
5
|
+
|
|
6
|
+
## Repository layout
|
|
7
|
+
|
|
8
|
+
- `arango/`: driver implementation, public APIs, and type annotations.
|
|
9
|
+
- `tests/`: pytest tests; `conftest.py` defines database fixtures and CLI options.
|
|
10
|
+
- `tests/static/`: server configurations and test data used by `starter.sh`.
|
|
11
|
+
- `docs/`: Sphinx documentation in reStructuredText.
|
|
12
|
+
- `pyproject.toml`, `setup.cfg`, `.pre-commit-config.yaml`: packaging and tooling.
|
|
13
|
+
- `.circleci/`, `.github/workflows/`: CI checks, documentation, and publishing.
|
|
14
|
+
|
|
15
|
+
## Development setup
|
|
16
|
+
|
|
17
|
+
Use Python 3.10 or newer. Create a virtual environment, or use an existing one:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
python3 -m venv .venv # Create an isolated Python environment.
|
|
21
|
+
source .venv/bin/activate # Use its interpreter and tools.
|
|
22
|
+
python -m pip install -e '.[dev]' # Install the editable driver and dev tools.
|
|
23
|
+
pre-commit install # Enable checks before each commit.
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Examples use `python` from the activated environment. If it is unavailable on
|
|
27
|
+
PATH, invoke your environment's interpreter directly.
|
|
28
|
+
|
|
29
|
+
## Local cluster and tests
|
|
30
|
+
|
|
31
|
+
The starter requires Docker, Bash, `wget`, and `jq`. To replace an existing test
|
|
32
|
+
container, run `docker stop arango` and `docker rm arango` first.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
version="latest" # Or pin a supported version, such as 3.12.10.
|
|
36
|
+
./starter.sh cluster enterprise "$version" # Start a local test cluster.
|
|
37
|
+
python -m pytest --cluster # Run the full suite against the cluster.
|
|
38
|
+
# Run one test while developing a document change.
|
|
39
|
+
python -m pytest --cluster tests/test_document.py::test_document_insert
|
|
40
|
+
# Generate an HTML coverage report.
|
|
41
|
+
python -m pytest --cluster --cov=arango --cov-report=html
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Defaults are `127.0.0.1:8529`, user `root`, password `passwd`, and JWT secret
|
|
45
|
+
`secret`, matching the starter configuration. Override them with `--host`,
|
|
46
|
+
`--port`, `--root`, `--password`, and `--secret`. Use a disposable development
|
|
47
|
+
database: tests create and delete databases, users, jobs, and backups. If a
|
|
48
|
+
sandbox blocks localhost access, rerun with the required sandbox permission.
|
|
49
|
+
|
|
50
|
+
For a single server, use `./starter.sh single enterprise "$version"` and omit
|
|
51
|
+
`--cluster`. Import tests can run without ArangoDB:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
python -m pytest tests/test_imports.py --skip-arango-setup # Check imports offline.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Style and documentation
|
|
58
|
+
|
|
59
|
+
Run the configured hooks for formatting, import ordering, linting, and type
|
|
60
|
+
checks. Build and test documentation separately:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
pre-commit run --all-files # Run hooks; formatters may modify files.
|
|
64
|
+
python -m sphinx -b html docs docs/_build # Build the HTML documentation.
|
|
65
|
+
python -m sphinx -b doctest docs docs/_build # Test documentation examples.
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
The Sphinx doctests require a running ArangoDB server. Open
|
|
69
|
+
`docs/_build/index.html` for the HTML documentation or `htmlcov/index.html` for
|
|
70
|
+
the coverage report.
|
|
71
|
+
|
|
72
|
+
## Changes and pull requests
|
|
73
|
+
|
|
74
|
+
- Agents must work on a branch other than `main`; never commit directly to `main`.
|
|
75
|
+
Check the current branch before editing or committing. If on `main` or a
|
|
76
|
+
detached HEAD, create a branch first:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
git branch --show-current # Check the current branch.
|
|
80
|
+
git switch -c fix/describe-change # Choose a descriptive branch name.
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
- Preserve public API compatibility unless a breaking change is intentional.
|
|
84
|
+
- Follow existing code patterns, type annotations, and Sphinx docstrings.
|
|
85
|
+
- Add regression tests for fixes and tests for new behavior; update user documentation.
|
|
86
|
+
- Run relevant tests and checks; report anything skipped and why.
|
|
87
|
+
- Keep test coverage up and squash changes into one commit for submission.
|
|
88
|
+
- Use present-tense commit messages, such as `Fix cursor retry`.
|
|
89
|
+
- Explain what changed, why, and any compatibility impact in the pull request.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-arango
|
|
3
|
-
Version: 8.3.
|
|
3
|
+
Version: 8.3.6
|
|
4
4
|
Summary: Python Driver for ArangoDB
|
|
5
5
|
Author-email: Joohwan Oh <joohwan.oh@outlook.com>
|
|
6
6
|
Maintainer-email: Joohwan Oh <joohwan.oh@outlook.com>, Alexandru Petenchea <alex.petenchea@gmail.com>, Anthony Mahanna <anthony.mahanna@arangodb.com>
|
|
@@ -33,7 +33,6 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
33
33
|
Classifier: Natural Language :: English
|
|
34
34
|
Classifier: Operating System :: OS Independent
|
|
35
35
|
Classifier: Programming Language :: Python :: 3
|
|
36
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
37
36
|
Classifier: Programming Language :: Python :: 3.10
|
|
38
37
|
Classifier: Programming Language :: Python :: 3.11
|
|
39
38
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -48,7 +47,7 @@ Requires-Dist: requests_toolbelt
|
|
|
48
47
|
Requires-Dist: PyJWT>=2.10.0
|
|
49
48
|
Requires-Dist: packaging>=23.1
|
|
50
49
|
Provides-Extra: dev
|
|
51
|
-
Requires-Dist: black==26.1
|
|
50
|
+
Requires-Dist: black==26.5.1; extra == "dev"
|
|
52
51
|
Requires-Dist: flake8==7.3.0; extra == "dev"
|
|
53
52
|
Requires-Dist: isort==5.10.1; extra == "dev"
|
|
54
53
|
Requires-Dist: mypy==1.15.0; extra == "dev"
|
|
@@ -89,7 +88,7 @@ If you're interested in using asyncio, please check [python-arango-async](https:
|
|
|
89
88
|
## Requirements
|
|
90
89
|
|
|
91
90
|
- ArangoDB version 3.11+
|
|
92
|
-
- Python version 3.
|
|
91
|
+
- Python version 3.10+
|
|
93
92
|
|
|
94
93
|
## Installation
|
|
95
94
|
|
|
@@ -1274,17 +1274,29 @@ class Collection(ApiGroup):
|
|
|
1274
1274
|
# Index Management #
|
|
1275
1275
|
####################
|
|
1276
1276
|
|
|
1277
|
-
def indexes(
|
|
1277
|
+
def indexes(
|
|
1278
|
+
self, with_stats: bool = False, with_hidden: bool = False
|
|
1279
|
+
) -> Result[Jsons]:
|
|
1278
1280
|
"""Return the collection indexes.
|
|
1279
1281
|
|
|
1282
|
+
:param with_stats: Whether to include figures and estimates in the result.
|
|
1283
|
+
:type with_stats: bool
|
|
1284
|
+
:param with_hidden: Whether to include hidden indexes in the result.
|
|
1285
|
+
:type with_hidden: bool
|
|
1280
1286
|
:return: Collection indexes.
|
|
1281
1287
|
:rtype: [dict]
|
|
1282
1288
|
:raise arango.exceptions.IndexListError: If retrieval fails.
|
|
1283
1289
|
"""
|
|
1290
|
+
params: Params = {"collection": self.name}
|
|
1291
|
+
if with_stats:
|
|
1292
|
+
params["withStats"] = True
|
|
1293
|
+
if with_hidden:
|
|
1294
|
+
params["withHidden"] = True
|
|
1295
|
+
|
|
1284
1296
|
request = Request(
|
|
1285
1297
|
method="get",
|
|
1286
1298
|
endpoint="/_api/index",
|
|
1287
|
-
params=
|
|
1299
|
+
params=params,
|
|
1288
1300
|
)
|
|
1289
1301
|
|
|
1290
1302
|
def response_handler(resp: Response) -> Jsons:
|
|
@@ -120,8 +120,7 @@ class BaseConnection:
|
|
|
120
120
|
else:
|
|
121
121
|
resp.body = resp.raw_body
|
|
122
122
|
|
|
123
|
-
|
|
124
|
-
resp.is_success = http_ok and resp.error_code is None
|
|
123
|
+
resp.is_success = 200 <= resp.status_code < 300
|
|
125
124
|
return resp
|
|
126
125
|
|
|
127
126
|
def process_request(
|
|
@@ -73,6 +73,8 @@ def format_index(body: Json, formatter: bool = True) -> Json:
|
|
|
73
73
|
result["cacheEnabled"] = body["cacheEnabled"]
|
|
74
74
|
if "legacyPolygons" in body:
|
|
75
75
|
result["legacyPolygons"] = body["legacyPolygons"]
|
|
76
|
+
if "figures" in body:
|
|
77
|
+
result["figures"] = body["figures"]
|
|
76
78
|
if "estimates" in body:
|
|
77
79
|
result["estimates"] = body["estimates"]
|
|
78
80
|
if "analyzer" in body:
|
|
@@ -123,6 +125,8 @@ def format_index(body: Json, formatter: bool = True) -> Json:
|
|
|
123
125
|
result["error_message"] = body["errorMessage"]
|
|
124
126
|
if "trainingState" in body:
|
|
125
127
|
result["training_state"] = body["trainingState"]
|
|
128
|
+
if "shards" in body:
|
|
129
|
+
result["shards"] = body["shards"]
|
|
126
130
|
|
|
127
131
|
return verify_format(body, result)
|
|
128
132
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "8.3.6"
|
|
@@ -13,7 +13,7 @@ Requirements
|
|
|
13
13
|
=============
|
|
14
14
|
|
|
15
15
|
- ArangoDB version 3.11+
|
|
16
|
-
- Python version 3.
|
|
16
|
+
- Python version 3.10+
|
|
17
17
|
|
|
18
18
|
Installation
|
|
19
19
|
============
|
|
@@ -94,7 +94,6 @@ Development
|
|
|
94
94
|
.. toctree::
|
|
95
95
|
:maxdepth: 1
|
|
96
96
|
|
|
97
|
-
contributing
|
|
98
97
|
specs
|
|
99
98
|
|
|
100
99
|
.. _ArangoDB: https://www.arangodb.com
|
|
@@ -62,4 +62,46 @@ on fields ``_from`` and ``_to``. For more information on indexes, refer to
|
|
|
62
62
|
# Delete the last index from the collection.
|
|
63
63
|
cities.delete_index(index['id'])
|
|
64
64
|
|
|
65
|
+
# Insert documents with vector embeddings.
|
|
66
|
+
cities.insert_many([
|
|
67
|
+
{
|
|
68
|
+
'_key': f'city{i}',
|
|
69
|
+
'continent': f'continent{i}',
|
|
70
|
+
'country': f'country{i}',
|
|
71
|
+
'population': i,
|
|
72
|
+
'coordinates': [float(i % 180), float(i % 90)],
|
|
73
|
+
'x': float(i),
|
|
74
|
+
'y': float(i),
|
|
75
|
+
'embedding': [float(i), float(i % 7), float(i % 11), 1.0],
|
|
76
|
+
}
|
|
77
|
+
for i in range(100)
|
|
78
|
+
])
|
|
79
|
+
|
|
80
|
+
# Let ArangoDB determine the number of vector-index centroids.
|
|
81
|
+
vector_index = cities.add_index({
|
|
82
|
+
'type': 'vector',
|
|
83
|
+
'fields': ['embedding'],
|
|
84
|
+
'name': 'vector_index',
|
|
85
|
+
'params': {
|
|
86
|
+
'metric': 'cosine',
|
|
87
|
+
'dimension': 4,
|
|
88
|
+
},
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
# Index creation may succeed even if there is insufficient training data.
|
|
92
|
+
if vector_index.get('trainingState') != 'ready':
|
|
93
|
+
raise RuntimeError(
|
|
94
|
+
vector_index.get('errorMessage', 'Vector index is not ready')
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
Omitted or scaling-object ``nLists``, ``numberOfDocsPerCentroid``, factory
|
|
98
|
+
placeholders such as ``IVF{},Flat``, and successful-but-unusable creation
|
|
99
|
+
behavior require ArangoDB 3.12.10 or later. A successful creation response
|
|
100
|
+
means that the index exists, but callers should check ``trainingState`` before
|
|
101
|
+
using it. If there is insufficient data to train the index, the state is
|
|
102
|
+
``"unusable"`` and ``errorMessage`` describes the failure. Invalid index
|
|
103
|
+
definitions, such as an ``nLists`` value that disagrees with the number of
|
|
104
|
+
centroids in the factory string, are rejected during creation with
|
|
105
|
+
``IndexCreateError`` and no index is created.
|
|
106
|
+
|
|
65
107
|
See :ref:`StandardCollection` for API specification.
|
|
@@ -26,7 +26,6 @@ classifiers = [
|
|
|
26
26
|
"Natural Language :: English",
|
|
27
27
|
"Operating System :: OS Independent",
|
|
28
28
|
"Programming Language :: Python :: 3",
|
|
29
|
-
"Programming Language :: Python :: 3.9",
|
|
30
29
|
"Programming Language :: Python :: 3.10",
|
|
31
30
|
"Programming Language :: Python :: 3.11",
|
|
32
31
|
"Programming Language :: Python :: 3.12",
|
|
@@ -47,7 +46,7 @@ version = { attr = "arango.version.__version__" }
|
|
|
47
46
|
|
|
48
47
|
[project.optional-dependencies]
|
|
49
48
|
dev = [
|
|
50
|
-
"black==26.1
|
|
49
|
+
"black==26.5.1",
|
|
51
50
|
"flake8==7.3.0",
|
|
52
51
|
"isort==5.10.1",
|
|
53
52
|
"mypy==1.15.0",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-arango
|
|
3
|
-
Version: 8.3.
|
|
3
|
+
Version: 8.3.6
|
|
4
4
|
Summary: Python Driver for ArangoDB
|
|
5
5
|
Author-email: Joohwan Oh <joohwan.oh@outlook.com>
|
|
6
6
|
Maintainer-email: Joohwan Oh <joohwan.oh@outlook.com>, Alexandru Petenchea <alex.petenchea@gmail.com>, Anthony Mahanna <anthony.mahanna@arangodb.com>
|
|
@@ -33,7 +33,6 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
33
33
|
Classifier: Natural Language :: English
|
|
34
34
|
Classifier: Operating System :: OS Independent
|
|
35
35
|
Classifier: Programming Language :: Python :: 3
|
|
36
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
37
36
|
Classifier: Programming Language :: Python :: 3.10
|
|
38
37
|
Classifier: Programming Language :: Python :: 3.11
|
|
39
38
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -48,7 +47,7 @@ Requires-Dist: requests_toolbelt
|
|
|
48
47
|
Requires-Dist: PyJWT>=2.10.0
|
|
49
48
|
Requires-Dist: packaging>=23.1
|
|
50
49
|
Provides-Extra: dev
|
|
51
|
-
Requires-Dist: black==26.1
|
|
50
|
+
Requires-Dist: black==26.5.1; extra == "dev"
|
|
52
51
|
Requires-Dist: flake8==7.3.0; extra == "dev"
|
|
53
52
|
Requires-Dist: isort==5.10.1; extra == "dev"
|
|
54
53
|
Requires-Dist: mypy==1.15.0; extra == "dev"
|
|
@@ -89,7 +88,7 @@ If you're interested in using asyncio, please check [python-arango-async](https:
|
|
|
89
88
|
## Requirements
|
|
90
89
|
|
|
91
90
|
- ArangoDB version 3.11+
|
|
92
|
-
- Python version 3.
|
|
91
|
+
- Python version 3.10+
|
|
93
92
|
|
|
94
93
|
## Installation
|
|
95
94
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.gitignore
|
|
2
2
|
.pre-commit-config.yaml
|
|
3
3
|
.readthedocs.yaml
|
|
4
|
-
|
|
4
|
+
AGENTS.md
|
|
5
5
|
LICENSE
|
|
6
6
|
MANIFEST.in
|
|
7
7
|
README.md
|
|
@@ -9,6 +9,7 @@ pyproject.toml
|
|
|
9
9
|
setup.cfg
|
|
10
10
|
setup.py
|
|
11
11
|
starter.sh
|
|
12
|
+
todo.md
|
|
12
13
|
.circleci/config.yml
|
|
13
14
|
.github/workflows/codeql.yaml
|
|
14
15
|
.github/workflows/docs.yaml
|
|
@@ -42,7 +43,6 @@ arango/typings.py
|
|
|
42
43
|
arango/utils.py
|
|
43
44
|
arango/version.py
|
|
44
45
|
arango/wal.py
|
|
45
|
-
ci/conftest.py
|
|
46
46
|
docs/Makefile
|
|
47
47
|
docs/admin.rst
|
|
48
48
|
docs/analyzer.rst
|
|
@@ -56,7 +56,6 @@ docs/cluster.rst
|
|
|
56
56
|
docs/collection.rst
|
|
57
57
|
docs/compression.rst
|
|
58
58
|
docs/conf.py
|
|
59
|
-
docs/contributing.rst
|
|
60
59
|
docs/cursor.rst
|
|
61
60
|
docs/database.rst
|
|
62
61
|
docs/document.rst
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
".gitignore",
|
|
8
8
|
".pre-commit-config.yaml",
|
|
9
9
|
".readthedocs.yaml",
|
|
10
|
-
"
|
|
10
|
+
"AGENTS.md",
|
|
11
11
|
"LICENSE",
|
|
12
12
|
"MANIFEST.in",
|
|
13
13
|
"README.md",
|
|
@@ -40,7 +40,6 @@
|
|
|
40
40
|
"arango/utils.py",
|
|
41
41
|
"arango/version.py",
|
|
42
42
|
"arango/wal.py",
|
|
43
|
-
"ci/conftest.py",
|
|
44
43
|
"docs/Makefile",
|
|
45
44
|
"docs/admin.rst",
|
|
46
45
|
"docs/analyzer.rst",
|
|
@@ -54,7 +53,6 @@
|
|
|
54
53
|
"docs/collection.rst",
|
|
55
54
|
"docs/compression.rst",
|
|
56
55
|
"docs/conf.py",
|
|
57
|
-
"docs/contributing.rst",
|
|
58
56
|
"docs/cursor.rst",
|
|
59
57
|
"docs/database.rst",
|
|
60
58
|
"docs/document.rst",
|
|
@@ -125,6 +123,7 @@
|
|
|
125
123
|
"tests/test_transaction.py",
|
|
126
124
|
"tests/test_user.py",
|
|
127
125
|
"tests/test_view.py",
|
|
128
|
-
"tests/test_wal.py"
|
|
126
|
+
"tests/test_wal.py",
|
|
127
|
+
"todo.md"
|
|
129
128
|
]
|
|
130
129
|
}
|
|
@@ -4,15 +4,16 @@
|
|
|
4
4
|
# Useful for testing the python-arango driver against a local ArangoDB setup.
|
|
5
5
|
|
|
6
6
|
# Usage:
|
|
7
|
-
# ./starter.sh [single|cluster] [
|
|
7
|
+
# ./starter.sh [single|cluster] [core-preview|enterprise|enterprise-preview] [version]
|
|
8
8
|
# ./starter.sh [single|cluster] [image[:tag]]
|
|
9
9
|
# Example:
|
|
10
10
|
# ./starter.sh cluster enterprise 3.12.4
|
|
11
|
-
# ./starter.sh single
|
|
12
|
-
# ./starter.sh single arangodb/enterprise-preview:
|
|
11
|
+
# ./starter.sh single core-preview 4.0-nightly
|
|
12
|
+
# ./starter.sh single arangodb/enterprise-preview:3.12-nightly
|
|
13
|
+
# Defaults: single server, enterprise image, latest version.
|
|
13
14
|
|
|
14
15
|
setup="${1:-single}"
|
|
15
|
-
image="${2:-
|
|
16
|
+
image="${2:-enterprise}"
|
|
16
17
|
version="${3:-latest}"
|
|
17
18
|
|
|
18
19
|
extra_ports=""
|
|
@@ -35,14 +36,14 @@ if [[ "$image" == */* ]]; then
|
|
|
35
36
|
else
|
|
36
37
|
image_ref="$image:$version"
|
|
37
38
|
fi
|
|
38
|
-
elif [ "$image" == "
|
|
39
|
-
image_ref="arangodb/
|
|
39
|
+
elif [ "$image" == "core-preview" ]; then
|
|
40
|
+
image_ref="arangodb/core-preview:$version"
|
|
40
41
|
elif [ "$image" == "enterprise" ]; then
|
|
41
42
|
image_ref="arangodb/enterprise:$version"
|
|
42
43
|
elif [ "$image" == "enterprise-preview" ]; then
|
|
43
44
|
image_ref="arangodb/enterprise-preview:$version"
|
|
44
45
|
else
|
|
45
|
-
echo "Invalid argument. Please provide '
|
|
46
|
+
echo "Invalid argument. Please provide 'core-preview', 'enterprise', 'enterprise-preview', or a full image reference."
|
|
46
47
|
exit 1
|
|
47
48
|
fi
|
|
48
49
|
|