python-arango-async 1.2.5__tar.gz → 1.2.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_async-1.2.5 → python_arango_async-1.2.6}/.circleci/config.yml +17 -10
- python_arango_async-1.2.6/.github/workflows/pypi.yaml +66 -0
- python_arango_async-1.2.6/AGENTS.md +91 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/PKG-INFO +1 -1
- python_arango_async-1.2.6/arangoasync/version.py +1 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/indexes.rst +6 -3
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/python_arango_async.egg-info/PKG-INFO +1 -1
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/python_arango_async.egg-info/SOURCES.txt +1 -1
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/python_arango_async.egg-info/scm_file_list.json +1 -1
- python_arango_async-1.2.6/python_arango_async.egg-info/scm_version.json +8 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/starter.sh +3 -2
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_collection.py +24 -18
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_user.py +9 -0
- python_arango_async-1.2.5/.github/workflows/pypi.yaml +0 -40
- python_arango_async-1.2.5/CONTRIBUTING.md +0 -28
- python_arango_async-1.2.5/arangoasync/version.py +0 -1
- python_arango_async-1.2.5/python_arango_async.egg-info/scm_version.json +0 -8
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/.github/workflows/codeql.yaml +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/.github/workflows/docs.yaml +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/.gitignore +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/.pre-commit-config.yaml +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/.readthedocs.yaml +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/LICENSE +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/README.md +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/__init__.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/aql.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/auth.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/backup.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/client.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/cluster.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/collection.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/compression.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/connection.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/cursor.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/database.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/errno.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/exceptions.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/executor.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/foxx.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/graph.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/http.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/job.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/logger.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/replication.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/request.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/resolver.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/response.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/result.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/serialization.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/arangoasync/typings.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/admin.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/analyzer.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/aql.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/async.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/authentication.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/backup.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/certificates.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/cluster.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/collection.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/compression.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/conf.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/cursor.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/database.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/document.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/errno.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/errors.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/foxx.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/graph.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/helpers.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/http.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/index.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/logging.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/migration.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/overview.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/serialization.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/specs.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/static/logo.png +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/task.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/transaction.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/user.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/docs/view.rst +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/pyproject.toml +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/python_arango_async.egg-info/dependency_links.txt +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/python_arango_async.egg-info/requires.txt +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/python_arango_async.egg-info/top_level.txt +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/setup.cfg +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/setup.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/__init__.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/conftest.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/helpers.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/static/cluster-3.12.conf +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/static/cluster-4.0.conf +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/static/keyfile +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/static/service.zip +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/static/single-3.12.conf +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/static/single-4.0.conf +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_analyzer.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_aql.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_async.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_backup.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_client.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_cluster.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_compression.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_connection.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_cursor.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_database.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_document.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_foxx.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_graph.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_http.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_imports.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_resolver.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_task.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_transaction.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_typings.py +0 -0
- {python_arango_async-1.2.5 → python_arango_async-1.2.6}/tests/test_view.py +0 -0
|
@@ -30,11 +30,18 @@ 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
|
+
arangodb_conf_version: ["3.12"]
|
|
39
|
+
- integration-test:
|
|
40
|
+
name: ArangoDB (enterprise, 3.12.9 << matrix.arangodb_config >>)
|
|
41
|
+
matrix:
|
|
42
|
+
parameters:
|
|
43
|
+
arangodb_config: ["single", "cluster"]
|
|
44
|
+
arangodb_image: ["arangodb/enterprise:3.12.9"]
|
|
38
45
|
arangodb_conf_version: ["3.12"]
|
|
39
46
|
- integration-test:
|
|
40
47
|
name: ArangoDB (core-preview, 4.0-nightly << matrix.arangodb_config >>)
|
|
@@ -60,8 +67,8 @@ jobs:
|
|
|
60
67
|
name: Install Dependencies
|
|
61
68
|
command: python -m pip install .[dev]
|
|
62
69
|
- run:
|
|
63
|
-
|
|
64
|
-
|
|
70
|
+
name: Run black
|
|
71
|
+
command: black --check --verbose --diff --color --config=pyproject.toml ./arangoasync ./tests/
|
|
65
72
|
- run:
|
|
66
73
|
name: Run flake8
|
|
67
74
|
command: flake8 ./arangoasync ./tests
|
|
@@ -90,12 +97,12 @@ jobs:
|
|
|
90
97
|
command: python -m pytest tests/test_imports.py --skip-arango-setup --color=yes --code-highlight=yes
|
|
91
98
|
integration-test:
|
|
92
99
|
parameters:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
100
|
+
arangodb_config:
|
|
101
|
+
type: string
|
|
102
|
+
arangodb_image:
|
|
103
|
+
type: string
|
|
104
|
+
arangodb_conf_version:
|
|
105
|
+
type: string
|
|
99
106
|
executor:
|
|
100
107
|
name: arangodb-container
|
|
101
108
|
arangodb_image: << parameters.arangodb_image >>
|
|
@@ -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,91 @@
|
|
|
1
|
+
# Quickstart
|
|
2
|
+
|
|
3
|
+
python-arango-async is an async Python driver for ArangoDB. Run the commands below from the
|
|
4
|
+
repository root.
|
|
5
|
+
|
|
6
|
+
## Repository layout
|
|
7
|
+
|
|
8
|
+
- `arangoasync/`: 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. In this workspace, use
|
|
28
|
+
`/home/apetenchea/programs/pyenv/ida/bin/python` and run tests from
|
|
29
|
+
`/home/apetenchea/arangodb/python-arango-async`, so they exercise this driver.
|
|
30
|
+
|
|
31
|
+
## Local cluster and tests
|
|
32
|
+
|
|
33
|
+
The starter requires Docker, Bash, `wget`, and `jq`. To replace an existing test
|
|
34
|
+
container, run `docker stop arango` and `docker rm arango` first.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
version="latest" # Or pin a supported version, such as 3.12.10.
|
|
38
|
+
./starter.sh cluster enterprise "$version" # Start a local test cluster.
|
|
39
|
+
python -m pytest --cluster # Run the full suite against the cluster.
|
|
40
|
+
# Run one test while developing a document change.
|
|
41
|
+
python -m pytest --cluster tests/test_document.py::test_document_insert
|
|
42
|
+
# Generate an HTML coverage report.
|
|
43
|
+
python -m pytest --cluster --cov=arangoasync --cov-report=html
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Defaults are `127.0.0.1:8529`, user `root`, password `passwd`, and JWT secret
|
|
47
|
+
`secret`, matching the starter configuration. Override them with `--host`,
|
|
48
|
+
`--port`, `--root`, `--password`, and `--secret`. Use a disposable development
|
|
49
|
+
database: tests create and delete databases, users, jobs, and backups. If a
|
|
50
|
+
sandbox blocks localhost access, rerun with the required sandbox permission.
|
|
51
|
+
|
|
52
|
+
For a single server, use `./starter.sh single enterprise "$version"` and omit
|
|
53
|
+
`--cluster`. Import tests can run without ArangoDB:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
python -m pytest tests/test_imports.py --skip-arango-setup # Check imports offline.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Style and documentation
|
|
60
|
+
|
|
61
|
+
Run the configured hooks for formatting, import ordering, linting, and type
|
|
62
|
+
checks. Build and test documentation separately:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
pre-commit run --all-files # Run hooks; formatters may modify files.
|
|
66
|
+
python -m sphinx -b html docs docs/_build # Build the HTML documentation.
|
|
67
|
+
python -m sphinx -b doctest docs docs/_build # Test documentation examples.
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The Sphinx doctests require a running ArangoDB server. Open
|
|
71
|
+
`docs/_build/index.html` for the HTML documentation or `htmlcov/index.html` for
|
|
72
|
+
the coverage report.
|
|
73
|
+
|
|
74
|
+
## Changes and pull requests
|
|
75
|
+
|
|
76
|
+
- Agents must work on a branch other than `main`; never commit directly to `main`.
|
|
77
|
+
Check the current branch before editing or committing. If on `main` or a
|
|
78
|
+
detached HEAD, create a branch first:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
git branch --show-current # Check the current branch.
|
|
82
|
+
git switch -c fix/describe-change # Choose a descriptive branch name.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
- Preserve public API compatibility unless a breaking change is intentional.
|
|
86
|
+
- Follow existing code patterns, type annotations, and Sphinx docstrings.
|
|
87
|
+
- Add regression tests for fixes and tests for new behavior; update user documentation.
|
|
88
|
+
- Run relevant tests and checks; report anything skipped and why.
|
|
89
|
+
- Keep test coverage up and squash changes into one commit for submission.
|
|
90
|
+
- Use present-tense commit messages, such as `Fix cursor retry`.
|
|
91
|
+
- 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-async
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.6
|
|
4
4
|
Summary: Async Python Driver for ArangoDB
|
|
5
5
|
Author-email: Alexandru Petenchea <alexandru.petenchea@arangodb.com>, Anthony Mahanna <anthony.mahanna@arangodb.com>
|
|
6
6
|
Maintainer-email: Alexandru Petenchea <alexandru.petenchea@arangodb.com>, Anthony Mahanna <anthony.mahanna@arangodb.com>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.2.6"
|
|
@@ -76,7 +76,7 @@ on fields ``_from`` and ``_to``. For more information on indexes, refer to
|
|
|
76
76
|
},
|
|
77
77
|
)
|
|
78
78
|
|
|
79
|
-
# Index creation may succeed even if
|
|
79
|
+
# Index creation may succeed even if there is insufficient training data.
|
|
80
80
|
if vector_index.training_state != "ready":
|
|
81
81
|
raise RuntimeError(
|
|
82
82
|
vector_index.error_message or "Vector index is not ready"
|
|
@@ -86,7 +86,10 @@ Omitted or scaling-object ``nLists``, ``numberOfDocsPerCentroid``, factory
|
|
|
86
86
|
placeholders such as ``IVF{},Flat``, and successful-but-unusable creation
|
|
87
87
|
behavior require ArangoDB 3.12.10 or later. A successful creation response
|
|
88
88
|
means that the index exists, but callers should check ``training_state`` before
|
|
89
|
-
using it. If
|
|
90
|
-
``error_message`` describes the failure.
|
|
89
|
+
using it. If there is insufficient data to train the index, the state is
|
|
90
|
+
``"unusable"`` and ``error_message`` describes the failure. Invalid index
|
|
91
|
+
definitions, such as an ``nLists`` value that disagrees with the number of
|
|
92
|
+
centroids in the factory string, are rejected during creation with
|
|
93
|
+
``IndexCreateError`` and no index is created.
|
|
91
94
|
|
|
92
95
|
See :class:`arangoasync.collection.StandardCollection` for API specification.
|
{python_arango_async-1.2.5 → python_arango_async-1.2.6}/python_arango_async.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-arango-async
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.6
|
|
4
4
|
Summary: Async Python Driver for ArangoDB
|
|
5
5
|
Author-email: Alexandru Petenchea <alexandru.petenchea@arangodb.com>, Anthony Mahanna <anthony.mahanna@arangodb.com>
|
|
6
6
|
Maintainer-email: Alexandru Petenchea <alexandru.petenchea@arangodb.com>, Anthony Mahanna <anthony.mahanna@arangodb.com>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
|
|
3
3
|
# Starts a local ArangoDB server or cluster (community or enterprise).
|
|
4
|
-
# Useful for testing the python-arango driver against a local ArangoDB setup.
|
|
4
|
+
# Useful for testing the python-arango-async driver against a local ArangoDB setup.
|
|
5
5
|
|
|
6
6
|
# Usage:
|
|
7
7
|
# ./starter.sh [single|cluster] [community|enterprise|enterprise-preview] [version]
|
|
@@ -10,9 +10,10 @@
|
|
|
10
10
|
# ./starter.sh cluster enterprise 3.12.4
|
|
11
11
|
# ./starter.sh single enterprise-preview 4.0-nightly
|
|
12
12
|
# ./starter.sh single arangodb/enterprise-preview:4.0-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=""
|
|
@@ -337,24 +337,6 @@ async def test_collection_index(doc_col, bad_col, cluster, db_version):
|
|
|
337
337
|
await doc_col.delete_index(default_index.id)
|
|
338
338
|
await doc_col.delete_index(scaling_index.id)
|
|
339
339
|
|
|
340
|
-
# A permanent training failure still creates an unusable index.
|
|
341
|
-
unusable_index = await doc_col.add_index(
|
|
342
|
-
"vector",
|
|
343
|
-
["embedding1"],
|
|
344
|
-
{
|
|
345
|
-
"name": "vector_index_unusable",
|
|
346
|
-
"params": {
|
|
347
|
-
"metric": "cosine",
|
|
348
|
-
"dimension": 128,
|
|
349
|
-
"nLists": 2,
|
|
350
|
-
"factory": "IVF3,Flat",
|
|
351
|
-
},
|
|
352
|
-
},
|
|
353
|
-
)
|
|
354
|
-
assert unusable_index.training_state == "unusable"
|
|
355
|
-
assert unusable_index.error_message
|
|
356
|
-
await doc_col.delete_index(unusable_index.id)
|
|
357
|
-
|
|
358
340
|
# Invalid requests continue to fail at the HTTP layer.
|
|
359
341
|
with pytest.raises(IndexCreateError) as err:
|
|
360
342
|
await doc_col.add_index(
|
|
@@ -378,6 +360,30 @@ async def test_collection_index(doc_col, bad_col, cluster, db_version):
|
|
|
378
360
|
assert await doc_col.delete_index(idx2.id, ignore_missing=True) is False
|
|
379
361
|
|
|
380
362
|
|
|
363
|
+
@pytest.mark.asyncio
|
|
364
|
+
async def test_unusable_vector_index(doc_col, db_version):
|
|
365
|
+
if db_version < version.parse("3.12.10"):
|
|
366
|
+
pytest.skip("Unusable vector index test requires ArangoDB 3.12.10+")
|
|
367
|
+
|
|
368
|
+
# One training vector is insufficient for two centroids.
|
|
369
|
+
await doc_col.insert({"embedding": [1.0, 1.0]})
|
|
370
|
+
index = await doc_col.add_index(
|
|
371
|
+
"vector",
|
|
372
|
+
["embedding"],
|
|
373
|
+
{
|
|
374
|
+
"name": "vector_index_unusable",
|
|
375
|
+
"params": {
|
|
376
|
+
"metric": "cosine",
|
|
377
|
+
"dimension": 2,
|
|
378
|
+
"nLists": 2,
|
|
379
|
+
},
|
|
380
|
+
},
|
|
381
|
+
)
|
|
382
|
+
assert index.training_state == "unusable"
|
|
383
|
+
assert index.error_message
|
|
384
|
+
await doc_col.delete_index(index.id)
|
|
385
|
+
|
|
386
|
+
|
|
381
387
|
@pytest.mark.asyncio
|
|
382
388
|
async def test_collection_truncate_count(docs, doc_col, bad_col):
|
|
383
389
|
# Test errors
|
|
@@ -4,6 +4,7 @@ from arangoasync.auth import Auth
|
|
|
4
4
|
from arangoasync.errno import USER_NOT_FOUND
|
|
5
5
|
from arangoasync.exceptions import (
|
|
6
6
|
CollectionCreateError,
|
|
7
|
+
CollectionListError,
|
|
7
8
|
DocumentInsertError,
|
|
8
9
|
PermissionResetError,
|
|
9
10
|
PermissionUpdateError,
|
|
@@ -176,6 +177,14 @@ async def test_user_change_permissions(sys_db, arango_client, db):
|
|
|
176
177
|
with pytest.raises(PermissionResetError):
|
|
177
178
|
await db.reset_permission(username, db.name)
|
|
178
179
|
await sys_db.reset_permission(username, db.name)
|
|
180
|
+
assert await sys_db.permission(username, db.name) == "none"
|
|
181
|
+
# ArangoDB 4.0 returns 403 where earlier versions returned 401.
|
|
182
|
+
with pytest.raises(CollectionCreateError) as err:
|
|
183
|
+
await db2.create_collection(generate_col_name())
|
|
184
|
+
assert err.value.http_code in {401, 403}
|
|
185
|
+
with pytest.raises(CollectionListError) as err:
|
|
186
|
+
await db2.collections()
|
|
187
|
+
assert err.value.http_code in {401, 403}
|
|
179
188
|
with pytest.raises(DocumentInsertError):
|
|
180
189
|
await col.insert({"_key": "test"})
|
|
181
190
|
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
name: Upload to PyPI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
release:
|
|
5
|
-
types: [published]
|
|
6
|
-
|
|
7
|
-
jobs:
|
|
8
|
-
upload:
|
|
9
|
-
runs-on: ubuntu-latest
|
|
10
|
-
|
|
11
|
-
steps:
|
|
12
|
-
- name: Checkout repository
|
|
13
|
-
uses: actions/checkout@v7
|
|
14
|
-
with:
|
|
15
|
-
fetch-depth: 0
|
|
16
|
-
fetch-tags: true
|
|
17
|
-
|
|
18
|
-
- uses: actions/setup-python@v7
|
|
19
|
-
with:
|
|
20
|
-
python-version: "3.12"
|
|
21
|
-
|
|
22
|
-
- name: Install build dependencies
|
|
23
|
-
run: |
|
|
24
|
-
python -m pip install --upgrade pip
|
|
25
|
-
pip install build twine
|
|
26
|
-
|
|
27
|
-
- name: Build package
|
|
28
|
-
run: python -m build
|
|
29
|
-
|
|
30
|
-
- name: Publish to PyPI Test
|
|
31
|
-
env:
|
|
32
|
-
TWINE_USERNAME: __token__
|
|
33
|
-
TWINE_PASSWORD: ${{ secrets.PYPI_TEST_TOKEN }}
|
|
34
|
-
run: twine upload --verbose --repository testpypi dist/*
|
|
35
|
-
|
|
36
|
-
- name: Publish to PyPI
|
|
37
|
-
env:
|
|
38
|
-
TWINE_USERNAME: __token__
|
|
39
|
-
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
|
|
40
|
-
run: twine upload --verbose --repository pypi dist/*
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# Contributing
|
|
2
|
-
|
|
3
|
-
Set up dev environment:
|
|
4
|
-
```shell
|
|
5
|
-
cd ~/your/repository/fork # Activate venv if you have one (recommended)
|
|
6
|
-
pip install -e .[dev] # Install dev dependencies (e.g. black, mypy, pre-commit)
|
|
7
|
-
pre-commit install # Install git pre-commit hooks
|
|
8
|
-
```
|
|
9
|
-
|
|
10
|
-
Run unit tests with coverage:
|
|
11
|
-
|
|
12
|
-
```shell
|
|
13
|
-
pytest --cluster --cov=arango --cov-report=html # Open htmlcov/index.html in your browser
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
To start and ArangoDB instance locally, run:
|
|
17
|
-
|
|
18
|
-
```shell
|
|
19
|
-
./starter.sh # Requires docker
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
Build and test documentation:
|
|
23
|
-
|
|
24
|
-
```shell
|
|
25
|
-
python -m sphinx docs docs/_build # Open docs/_build/index.html in your browser
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Thank you for your contribution!
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.2.5"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_arango_async-1.2.5 → python_arango_async-1.2.6}/python_arango_async.egg-info/requires.txt
RENAMED
|
File without changes
|
{python_arango_async-1.2.5 → python_arango_async-1.2.6}/python_arango_async.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|