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.
Files changed (101) hide show
  1. {python_arango-8.3.4 → python_arango-8.3.6}/.circleci/config.yml +19 -5
  2. {python_arango-8.3.4 → python_arango-8.3.6}/.github/workflows/codeql.yaml +3 -5
  3. python_arango-8.3.6/.github/workflows/docs.yaml +47 -0
  4. python_arango-8.3.6/.github/workflows/pypi.yaml +66 -0
  5. python_arango-8.3.6/AGENTS.md +89 -0
  6. {python_arango-8.3.4/python_arango.egg-info → python_arango-8.3.6}/PKG-INFO +3 -4
  7. {python_arango-8.3.4 → python_arango-8.3.6}/README.md +1 -1
  8. {python_arango-8.3.4 → python_arango-8.3.6}/arango/collection.py +14 -2
  9. {python_arango-8.3.4 → python_arango-8.3.6}/arango/connection.py +1 -2
  10. {python_arango-8.3.4 → python_arango-8.3.6}/arango/formatter.py +4 -0
  11. python_arango-8.3.6/arango/version.py +1 -0
  12. {python_arango-8.3.4 → python_arango-8.3.6}/docs/foxx.rst +1 -1
  13. {python_arango-8.3.4 → python_arango-8.3.6}/docs/index.rst +1 -2
  14. {python_arango-8.3.4 → python_arango-8.3.6}/docs/indexes.rst +42 -0
  15. {python_arango-8.3.4 → python_arango-8.3.6}/pyproject.toml +1 -2
  16. {python_arango-8.3.4 → python_arango-8.3.6/python_arango.egg-info}/PKG-INFO +3 -4
  17. {python_arango-8.3.4 → python_arango-8.3.6}/python_arango.egg-info/SOURCES.txt +2 -3
  18. {python_arango-8.3.4 → python_arango-8.3.6}/python_arango.egg-info/requires.txt +1 -1
  19. {python_arango-8.3.4 → python_arango-8.3.6}/python_arango.egg-info/scm_file_list.json +3 -4
  20. python_arango-8.3.6/python_arango.egg-info/scm_version.json +8 -0
  21. {python_arango-8.3.4 → python_arango-8.3.6}/starter.sh +8 -7
  22. python_arango-8.3.6/todo.md +397 -0
  23. python_arango-8.3.4/.github/workflows/docs.yaml +0 -103
  24. python_arango-8.3.4/.github/workflows/pypi.yaml +0 -52
  25. python_arango-8.3.4/CONTRIBUTING.md +0 -28
  26. python_arango-8.3.4/arango/version.py +0 -1
  27. python_arango-8.3.4/ci/conftest.py +0 -1
  28. python_arango-8.3.4/docs/contributing.rst +0 -99
  29. python_arango-8.3.4/python_arango.egg-info/scm_version.json +0 -8
  30. {python_arango-8.3.4 → python_arango-8.3.6}/.gitignore +0 -0
  31. {python_arango-8.3.4 → python_arango-8.3.6}/.pre-commit-config.yaml +0 -0
  32. {python_arango-8.3.4 → python_arango-8.3.6}/.readthedocs.yaml +0 -0
  33. {python_arango-8.3.4 → python_arango-8.3.6}/LICENSE +0 -0
  34. {python_arango-8.3.4 → python_arango-8.3.6}/MANIFEST.in +0 -0
  35. {python_arango-8.3.4 → python_arango-8.3.6}/arango/__init__.py +0 -0
  36. {python_arango-8.3.4 → python_arango-8.3.6}/arango/api.py +0 -0
  37. {python_arango-8.3.4 → python_arango-8.3.6}/arango/aql.py +0 -0
  38. {python_arango-8.3.4 → python_arango-8.3.6}/arango/backup.py +0 -0
  39. {python_arango-8.3.4 → python_arango-8.3.6}/arango/client.py +0 -0
  40. {python_arango-8.3.4 → python_arango-8.3.6}/arango/cluster.py +0 -0
  41. {python_arango-8.3.4 → python_arango-8.3.6}/arango/cursor.py +0 -0
  42. {python_arango-8.3.4 → python_arango-8.3.6}/arango/database.py +0 -0
  43. {python_arango-8.3.4 → python_arango-8.3.6}/arango/errno.py +0 -0
  44. {python_arango-8.3.4 → python_arango-8.3.6}/arango/exceptions.py +0 -0
  45. {python_arango-8.3.4 → python_arango-8.3.6}/arango/executor.py +0 -0
  46. {python_arango-8.3.4 → python_arango-8.3.6}/arango/foxx.py +0 -0
  47. {python_arango-8.3.4 → python_arango-8.3.6}/arango/graph.py +0 -0
  48. {python_arango-8.3.4 → python_arango-8.3.6}/arango/http.py +0 -0
  49. {python_arango-8.3.4 → python_arango-8.3.6}/arango/job.py +0 -0
  50. {python_arango-8.3.4 → python_arango-8.3.6}/arango/pregel.py +0 -0
  51. {python_arango-8.3.4 → python_arango-8.3.6}/arango/py.typed +0 -0
  52. {python_arango-8.3.4 → python_arango-8.3.6}/arango/replication.py +0 -0
  53. {python_arango-8.3.4 → python_arango-8.3.6}/arango/request.py +0 -0
  54. {python_arango-8.3.4 → python_arango-8.3.6}/arango/resolver.py +0 -0
  55. {python_arango-8.3.4 → python_arango-8.3.6}/arango/response.py +0 -0
  56. {python_arango-8.3.4 → python_arango-8.3.6}/arango/result.py +0 -0
  57. {python_arango-8.3.4 → python_arango-8.3.6}/arango/typings.py +0 -0
  58. {python_arango-8.3.4 → python_arango-8.3.6}/arango/utils.py +0 -0
  59. {python_arango-8.3.4 → python_arango-8.3.6}/arango/wal.py +0 -0
  60. {python_arango-8.3.4 → python_arango-8.3.6}/docs/Makefile +0 -0
  61. {python_arango-8.3.4 → python_arango-8.3.6}/docs/admin.rst +0 -0
  62. {python_arango-8.3.4 → python_arango-8.3.6}/docs/analyzer.rst +0 -0
  63. {python_arango-8.3.4 → python_arango-8.3.6}/docs/aql.rst +0 -0
  64. {python_arango-8.3.4 → python_arango-8.3.6}/docs/async.rst +0 -0
  65. {python_arango-8.3.4 → python_arango-8.3.6}/docs/auth.rst +0 -0
  66. {python_arango-8.3.4 → python_arango-8.3.6}/docs/backup.rst +0 -0
  67. {python_arango-8.3.4 → python_arango-8.3.6}/docs/batch.rst +0 -0
  68. {python_arango-8.3.4 → python_arango-8.3.6}/docs/certificates.rst +0 -0
  69. {python_arango-8.3.4 → python_arango-8.3.6}/docs/cluster.rst +0 -0
  70. {python_arango-8.3.4 → python_arango-8.3.6}/docs/collection.rst +0 -0
  71. {python_arango-8.3.4 → python_arango-8.3.6}/docs/compression.rst +0 -0
  72. {python_arango-8.3.4 → python_arango-8.3.6}/docs/conf.py +0 -0
  73. {python_arango-8.3.4 → python_arango-8.3.6}/docs/cursor.rst +0 -0
  74. {python_arango-8.3.4 → python_arango-8.3.6}/docs/database.rst +0 -0
  75. {python_arango-8.3.4 → python_arango-8.3.6}/docs/document.rst +0 -0
  76. {python_arango-8.3.4 → python_arango-8.3.6}/docs/errno.rst +0 -0
  77. {python_arango-8.3.4 → python_arango-8.3.6}/docs/errors.rst +0 -0
  78. {python_arango-8.3.4 → python_arango-8.3.6}/docs/graph.rst +0 -0
  79. {python_arango-8.3.4 → python_arango-8.3.6}/docs/http.rst +0 -0
  80. {python_arango-8.3.4 → python_arango-8.3.6}/docs/logging.rst +0 -0
  81. {python_arango-8.3.4 → python_arango-8.3.6}/docs/make.bat +0 -0
  82. {python_arango-8.3.4 → python_arango-8.3.6}/docs/overload.rst +0 -0
  83. {python_arango-8.3.4 → python_arango-8.3.6}/docs/overview.rst +0 -0
  84. {python_arango-8.3.4 → python_arango-8.3.6}/docs/pregel.rst +0 -0
  85. {python_arango-8.3.4 → python_arango-8.3.6}/docs/replication.rst +0 -0
  86. {python_arango-8.3.4 → python_arango-8.3.6}/docs/requirements.txt +0 -0
  87. {python_arango-8.3.4 → python_arango-8.3.6}/docs/schema.rst +0 -0
  88. {python_arango-8.3.4 → python_arango-8.3.6}/docs/serializer.rst +0 -0
  89. {python_arango-8.3.4 → python_arango-8.3.6}/docs/simple.rst +0 -0
  90. {python_arango-8.3.4 → python_arango-8.3.6}/docs/specs.rst +0 -0
  91. {python_arango-8.3.4 → python_arango-8.3.6}/docs/static/logo.png +0 -0
  92. {python_arango-8.3.4 → python_arango-8.3.6}/docs/task.rst +0 -0
  93. {python_arango-8.3.4 → python_arango-8.3.6}/docs/threading.rst +0 -0
  94. {python_arango-8.3.4 → python_arango-8.3.6}/docs/transaction.rst +0 -0
  95. {python_arango-8.3.4 → python_arango-8.3.6}/docs/user.rst +0 -0
  96. {python_arango-8.3.4 → python_arango-8.3.6}/docs/view.rst +0 -0
  97. {python_arango-8.3.4 → python_arango-8.3.6}/docs/wal.rst +0 -0
  98. {python_arango-8.3.4 → python_arango-8.3.6}/python_arango.egg-info/dependency_links.txt +0 -0
  99. {python_arango-8.3.4 → python_arango-8.3.6}/python_arango.egg-info/top_level.txt +0 -0
  100. {python_arango-8.3.4 → python_arango-8.3.6}/setup.cfg +0 -0
  101. {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-preview, 4.0-nightly << matrix.arangodb_config >>)
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-preview:4.0-nightly"]
45
- arangodb_conf_version: ["4.0"]
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@v3
17
+ uses: actions/checkout@v7
20
18
 
21
19
  - name: Initialize CodeQL
22
- uses: github/codeql-action/init@v2
20
+ uses: github/codeql-action/init@v4
23
21
 
24
22
  - name: Perform CodeQL Analysis
25
- uses: github/codeql-action/analyze@v2
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.4
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.0; extra == "dev"
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.9+
91
+ - Python version 3.10+
93
92
 
94
93
  ## Installation
95
94
 
@@ -24,7 +24,7 @@ If you're interested in using asyncio, please check [python-arango-async](https:
24
24
  ## Requirements
25
25
 
26
26
  - ArangoDB version 3.11+
27
- - Python version 3.9+
27
+ - Python version 3.10+
28
28
 
29
29
  ## Installation
30
30
 
@@ -1274,17 +1274,29 @@ class Collection(ApiGroup):
1274
1274
  # Index Management #
1275
1275
  ####################
1276
1276
 
1277
- def indexes(self) -> Result[Jsons]:
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={"collection": self.name},
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
- http_ok = 200 <= resp.status_code < 300
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 @@ information, refer to `ArangoDB manual`_.
13
13
 
14
14
  **Example:**
15
15
 
16
- .. testcode::
16
+ .. code-block:: python
17
17
 
18
18
  from arango import ArangoClient
19
19
 
@@ -13,7 +13,7 @@ Requirements
13
13
  =============
14
14
 
15
15
  - ArangoDB version 3.11+
16
- - Python version 3.9+
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.0",
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.4
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.0; extra == "dev"
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.9+
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
- CONTRIBUTING.md
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
@@ -5,7 +5,7 @@ PyJWT>=2.10.0
5
5
  packaging>=23.1
6
6
 
7
7
  [dev]
8
- black==26.1.0
8
+ black==26.5.1
9
9
  flake8==7.3.0
10
10
  isort==5.10.1
11
11
  mypy==1.15.0
@@ -7,7 +7,7 @@
7
7
  ".gitignore",
8
8
  ".pre-commit-config.yaml",
9
9
  ".readthedocs.yaml",
10
- "CONTRIBUTING.md",
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
  }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "8.3.6",
3
+ "distance": 0,
4
+ "node": "gc019d8643272db4621ffd7d20795a387618705a8",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-10-04"
8
+ }
@@ -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] [community|enterprise|enterprise-preview] [version]
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 enterprise-preview 4.0-nightly
12
- # ./starter.sh single arangodb/enterprise-preview:4.0-nightly
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:-community}"
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" == "community" ]; then
39
- image_ref="arangodb/arangodb:$version"
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 'community', 'enterprise', 'enterprise-preview', or a full image reference."
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