From e7f5a7f6de0e807c4db6775b073f0606e41ec0f7 Mon Sep 17 00:00:00 2001 From: Taewoon Kim Date: Thu, 5 Nov 2026 10:29:55 +0900 Subject: [PATCH 1/3] docs: point the READMEs to ArcadeData/arcadedb-python, use uv add, fix stale 26.11.1 text (#564) Root README: describe what the repository holds now (benchmarks, the bindings source kept for history, the Java fork), send installs and bindings issues to the new repository, swap the deprecated PyPI badges, and put the license paragraph back in order. Banner: uv add --pre instead of pip install --pre. bindings/python/README.md: docs.humem.ai/arcadedb/latest now redirects every path to one landing page, so link docs.arcadedb.com/arcadedb-python/ directly. known-issues.md: ArcadeDB 26.11.1 is released. Co-Authored-By: Claude Opus 5.5 --- README.md | 94 ++++++---------------- bindings/python/README.md | 12 +-- bindings/python/docs/guide/known-issues.md | 4 +- bindings/python/docs/index.md | 2 +- 4 files changed, 33 insertions(+), 79 deletions(-) diff --git a/README.md b/README.md index 142980f9061..db2d8a1dcfa 100644 --- a/README.md +++ b/README.md @@ -1,92 +1,46 @@ # ArcadeDB Embedded for Python -> **Moved: the Python bindings now live in [ArcadeData/arcadedb-python](https://github.com/ArcadeData/arcadedb-python).** Install `arcadedb` (the native build, the default) or `arcadedb-jvm` (the JVM build); both use `import arcadedb`. [Which package?](https://github.com/ArcadeData/arcadedb-python/blob/main/docs/modules/ROOT/pages/which-package.adoc) explains the choice. The first releases of the new packages are 26.11.1, starting as pre-releases (`pip install --pre arcadedb`). `arcadedb-embedded` and `import arcadedb_embedded` are deprecated: `arcadedb-embedded` will get a last release that installs `arcadedb`. Report bindings issues and send bindings pull requests to the new repository. This repository will be archived; the benchmark tooling stays here for now. +> **Moved: the Python bindings now live in [ArcadeData/arcadedb-python](https://github.com/ArcadeData/arcadedb-python).** Install `arcadedb` (the native build, the default) or `arcadedb-jvm` (the JVM build); both use `import arcadedb`. [Which package?](https://github.com/ArcadeData/arcadedb-python/blob/main/docs/modules/ROOT/pages/which-package.adoc) explains the choice. The first releases of the new packages are 26.11.1, starting as pre-releases (`uv add --pre arcadedb`). `arcadedb-embedded` and `import arcadedb_embedded` are deprecated: `arcadedb-embedded` will get a last release that installs `arcadedb`. Report bindings issues and send bindings pull requests to the new repository. This repository will be archived; the benchmark tooling stays here for now. -Native Python bindings for ArcadeDB (forked from the official Java project). - -[![PyPI](https://img.shields.io/pypi/v/arcadedb-embedded)](https://pypi.org/project/arcadedb-embedded/) -[![PyPI - Python -Version](https://img.shields.io/pypi/pyversions/arcadedb-embedded)](https://pypi.org/project/arcadedb-embedded/) +[![PyPI](https://img.shields.io/pypi/v/arcadedb?include_prereleases)](https://pypi.org/project/arcadedb/) [![Docs](https://img.shields.io/badge/docs-arcadedb.com-892122)](https://docs.arcadedb.com/arcadedb-python/) -[![Test Python -Bindings](https://github.com/humemai/arcadedb-embedded-python/actions/workflows/test-python-bindings.yml/badge.svg)](https://github.com/humemai/arcadedb-embedded-python/actions/workflows/test-python-bindings.yml) -[![Test Python -Examples](https://github.com/humemai/arcadedb-embedded-python/actions/workflows/test-python-examples.yml/badge.svg)](https://github.com/humemai/arcadedb-embedded-python/actions/workflows/test-python-examples.yml) -[![Release to -PyPI](https://github.com/humemai/arcadedb-embedded-python/actions/workflows/release-python-packages.yml/badge.svg)](https://github.com/humemai/arcadedb-embedded-python/actions/workflows/release-python-packages.yml) --- -## ✨ What this repo provides - -- Native Python bindings for ArcadeDB with a bundled JRE (no local Java required). -- **Wheels for 4 platforms: Linux x86_64, Linux ARM64, macOS Apple Silicon, and Windows x86_64.** -- Embedded usage (in-process) with optional in-process server mode (HTTP API; Studio is not bundled, see [ArcadeData/arcadedb#10579](https://github.com/ArcadeData/arcadedb/issues/10579)). -- Tests and examples validated in CI across supported platforms. - -The Python bindings and packaging live under bindings/python. The upstream Java project -remains the source of the core database. - -## 🧱 What’s inside - -- bindings/python: Python package source, build scripts, tests, and examples. -- docs site: [https://docs.arcadedb.com/arcadedb-python/](https://docs.arcadedb.com/arcadedb-python/) -- CI: Build/test workflows for bindings and examples (badges above). - -## βœ… Typical use cases - -- Local embedded analytics without a separate server process. -- Vector search and graph workloads from Python. -- Running ArcadeDB in-process for testing or tooling. +## What is in this repository -## 🧠 ArcadeDB at a glance +- `benchmarks/`: the benchmark harness for ArcadeDB and its comparators, and the published results. Start with [benchmarks/README.md](benchmarks/README.md). +- `bindings/python/`: the source of the `arcadedb-embedded` releases up to 26.10.2.post1. It is kept for history and for the benchmark harness, and new work on the bindings goes to [ArcadeData/arcadedb-python](https://github.com/ArcadeData/arcadedb-python). +- The rest is a fork of the ArcadeDB Java project, which this repository does not change. -- Multi-model database built for performance. -- Document + Graph + Key/Value + Vector + Time Series in one engine. -- Supports SQL and OpenCypher query languages. +## Use the Python bindings -## πŸ“¦ What the wheel includes - -- Approximate size: ~65 MiB download, ~86 MiB installed. -- Lightweight Java 25 runtime (jlink) bundled per platform. -- ArcadeDB JARs required for the embedded engine. -- Python bindings and source modules. - -## ✨ ArcadeDB capabilities (via Python) - -- Multi-model: Graph, Document, Key/Value, Vector, Time Series. -- Query languages: SQL, OpenCypher. -- ACID transactions and high performance. - -## πŸš€ Quick start (Python) +Install the package and read the documentation from the new repository: ```bash -uv add arcadedb-embedded # or: pip install arcadedb-embedded +uv add --pre arcadedb # native build; until 26.11.1 is a final release +uv add --pre arcadedb-jvm # JVM build, only if you need it ``` -## πŸ”— Quick Links +- Documentation: [https://docs.arcadedb.com/arcadedb-python/](https://docs.arcadedb.com/arcadedb-python/) +- Repository, issues and pull requests: [ArcadeData/arcadedb-python](https://github.com/ArcadeData/arcadedb-python) +- PyPI: [arcadedb](https://pypi.org/project/arcadedb/) and [arcadedb-jvm](https://pypi.org/project/arcadedb-jvm/) -- Python README: [bindings/python/README.md](bindings/python/README.md) -- PyPI: - [https://pypi.org/project/arcadedb-embedded/](https://pypi.org/project/arcadedb-embedded/) +## Upstream ArcadeDB (Java) -## 🧭 Upstream ArcadeDB (Java) +This repository is a fork of ArcadeDB Java. For the server, the Java API, and the core database documentation: -This repo is a fork of ArcadeDB Java. For the server, Java API, and core database docs: - -- Upstream repo: - [https://github.com/ArcadeData/arcadedb](https://github.com/ArcadeData/arcadedb) -- Docs: [https://docs.arcadedb.com](https://docs.arcadedb.com) +- Upstream repository: [https://github.com/ArcadeData/arcadedb](https://github.com/ArcadeData/arcadedb) +- Documentation: [https://docs.arcadedb.com](https://docs.arcadedb.com) +- ArcadeDB Discord: [https://discord.gg/w2Npx2B7hZ](https://discord.gg/w2Npx2B7hZ) -## πŸ’¬ Support & community +## Support -- Issues (Python bindings): - [https://github.com/humemai/arcadedb-embedded-python/issues](https://github.com/humemai/arcadedb-embedded-python/issues) -- ArcadeDB Discord: [https://discord.gg/w2Npx2B7hZ](https://discord.gg/w2Npx2B7hZ) +- Benchmark issues: [https://github.com/humemai/arcadedb-embedded-python/issues](https://github.com/humemai/arcadedb-embedded-python/issues) +- Bindings issues: [https://github.com/ArcadeData/arcadedb-python/issues](https://github.com/ArcadeData/arcadedb-python/issues) -## πŸ“„ License +## License -Both upstream ArcadeDB (Java) and this ArcadeDB Embedded Python project are licensed +Both upstream ArcadeDB (Java) and the Python bindings are licensed under Apache 2.0, fully open and free for everyone, including commercial use. -Arcade Data, the company behind ArcadeDB, has [committed in writing](https://arcadedb.com/blog/open-source-forever-why-arcadedb-will-never-change-its-license/) to keeping the engine Apache 2.0, and HumemAI, the company behind this package, makes the same commitment for the Python bindings. -under Apache 2.0, fully open and free for everyone, including commercial use. +Arcade Data, the company behind ArcadeDB, has [committed in writing](https://arcadedb.com/blog/open-source-forever-why-arcadedb-will-never-change-its-license/) to keeping the engine Apache 2.0, and HumemAI makes the same commitment for the Python bindings. diff --git a/bindings/python/README.md b/bindings/python/README.md index ec3d849edfa..5464a9c3635 100644 --- a/bindings/python/README.md +++ b/bindings/python/README.md @@ -1,6 +1,6 @@ # ArcadeDB Python Bindings -> **Moved: the Python bindings now live in [ArcadeData/arcadedb-python](https://github.com/ArcadeData/arcadedb-python).** Install `arcadedb` (the native build, the default) or `arcadedb-jvm` (the JVM build); both use `import arcadedb`. [Which package?](https://github.com/ArcadeData/arcadedb-python/blob/main/docs/modules/ROOT/pages/which-package.adoc) explains the choice. The first releases of the new packages are 26.11.1, starting as pre-releases (`pip install --pre arcadedb`). `arcadedb-embedded` and `import arcadedb_embedded` are deprecated: `arcadedb-embedded` will get a last release that installs `arcadedb`. Report bindings issues and send bindings pull requests to the new repository. This repository will be archived; the benchmark tooling stays here for now. +> **Moved: the Python bindings now live in [ArcadeData/arcadedb-python](https://github.com/ArcadeData/arcadedb-python).** Install `arcadedb` (the native build, the default) or `arcadedb-jvm` (the JVM build); both use `import arcadedb`. [Which package?](https://github.com/ArcadeData/arcadedb-python/blob/main/docs/modules/ROOT/pages/which-package.adoc) explains the choice. The first releases of the new packages are 26.11.1, starting as pre-releases (`uv add --pre arcadedb`). `arcadedb-embedded` and `import arcadedb_embedded` are deprecated: `arcadedb-embedded` will get a last release that installs `arcadedb`. Report bindings issues and send bindings pull requests to the new repository. This repository will be archived; the benchmark tooling stays here for now. Native Python bindings for ArcadeDB - the multi-model database that supports Graph, Document, Key/Value, Search Engine, Time Series, and Vector models. @@ -10,7 +10,7 @@ Native Python bindings for ArcadeDB - the multi-model database that supports Gra ## πŸ“š Documentation -**[πŸ“– Read the Full Documentation β†’](https://docs.humem.ai/arcadedb/latest)** +**[πŸ“– Read the Full Documentation β†’](https://docs.arcadedb.com/arcadedb-python/)** --- @@ -19,7 +19,7 @@ Native Python bindings for ArcadeDB - the multi-model database that supports Gra ### Installation ```bash -uv add arcadedb-embedded # or: pip install arcadedb-embedded +uv add arcadedb-embedded # deprecated; new projects use: uv add --pre arcadedb ``` **Requirements:** @@ -52,7 +52,7 @@ with arcadedb.create_database("./mydb") as db: print(f"Name: {record.get('name')}") ``` -**[πŸ‘‰ See full tutorial](https://docs.humem.ai/arcadedb/latest/getting-started/quickstart/)** +**[πŸ‘‰ See full tutorial](https://docs.arcadedb.com/arcadedb-python/quickstart)** --- @@ -179,8 +179,8 @@ Both upstream ArcadeDB (Java) and this ArcadeDB Embedded Python project are lice ## πŸ”— Links -- **Documentation**: -- **PyPI**: +- **Documentation**: +- **PyPI**: (`arcadedb-embedded` is deprecated) - **GitHub**: - **ArcadeDB Main Docs**: - **Issues**: diff --git a/bindings/python/docs/guide/known-issues.md b/bindings/python/docs/guide/known-issues.md index c7bf4adb2a6..672e4aa0c7c 100644 --- a/bindings/python/docs/guide/known-issues.md +++ b/bindings/python/docs/guide/known-issues.md @@ -14,7 +14,7 @@ An entry with a `Tests:` line has a test of its workaround. An entry for a bug t ArcadeDB 26.10.2 (the wheel) and earlier. Reported as [ArcadeData/arcadedb#10448](https://github.com/ArcadeData/arcadedb/issues/10448), fixed by [#10457](https://github.com/ArcadeData/arcadedb/pull/10457) on upstream's main on 2026-10-20 and -in 26.11.1, which is not released yet. On 26.11.1 (and on a snapshot built after that change) the +in ArcadeDB 26.11.1 (released 2026-11-04). On 26.11.1 (and on a snapshot built after that change) the query below is right and you need none of the workarounds; on 26.10.2 and earlier it is not. `Document.set`, `Vertex.set` and `GraphBatch.create_vertices` store a Python `int` as a Java @@ -105,7 +105,7 @@ Tests: `tests/test_free_threading.py` covers the two fixes, the start race and t ## Fixed in 26.10.2 -These entries left the page when 26.10.2 shipped. On 26.10.1, upgrade: `pip install -U arcadedb-embedded`. +These entries left the page when 26.10.2 shipped. On 26.10.1, upgrade: `uv lock --upgrade-package arcadedb-embedded`. - An openCypher one-hop `count(*)` answered 0 for edges loaded with `light_edges=True` into a type that is not `LIGHTWEIGHT`: [#9378](https://github.com/ArcadeData/arcadedb/issues/9378), fixed by [#9383](https://github.com/ArcadeData/arcadedb/pull/9383). The batch now refuses that load. - An openCypher count with a pattern predicate over an edge type that a Graph Analytical View does not list was wrong: [#9377](https://github.com/ArcadeData/arcadedb/issues/9377), fixed by [#9383](https://github.com/ArcadeData/arcadedb/pull/9383). diff --git a/bindings/python/docs/index.md b/bindings/python/docs/index.md index 1f21b217d6e..c670ce10b6e 100644 --- a/bindings/python/docs/index.md +++ b/bindings/python/docs/index.md @@ -2,7 +2,7 @@ !!! warning "Moved to ArcadeData/arcadedb-python" - The Python bindings now live in [ArcadeData/arcadedb-python](https://github.com/ArcadeData/arcadedb-python). Install `arcadedb` (the native build, the default) or `arcadedb-jvm` (the JVM build); both use `import arcadedb`. [Which package?](https://github.com/ArcadeData/arcadedb-python/blob/main/docs/modules/ROOT/pages/which-package.adoc) explains the choice. The first releases of the new packages are 26.11.1, starting as pre-releases (`pip install --pre arcadedb`). `arcadedb-embedded` and `import arcadedb_embedded` are deprecated: `arcadedb-embedded` will get a last release that installs `arcadedb`. Report bindings issues and send bindings pull requests to the new repository. This repository will be archived; the benchmark tooling stays here for now. + The Python bindings now live in [ArcadeData/arcadedb-python](https://github.com/ArcadeData/arcadedb-python). Install `arcadedb` (the native build, the default) or `arcadedb-jvm` (the JVM build); both use `import arcadedb`. [Which package?](https://github.com/ArcadeData/arcadedb-python/blob/main/docs/modules/ROOT/pages/which-package.adoc) explains the choice. The first releases of the new packages are 26.11.1, starting as pre-releases (`uv add --pre arcadedb`). `arcadedb-embedded` and `import arcadedb_embedded` are deprecated: `arcadedb-embedded` will get a last release that installs `arcadedb`. Report bindings issues and send bindings pull requests to the new repository. This repository will be archived; the benchmark tooling stays here for now.
From 6b8d324f1a583df4f91aec0646baab190a458945 Mon Sep 17 00:00:00 2001 From: Taewoon Kim Date: Thu, 5 Nov 2026 10:36:45 +0900 Subject: [PATCH 2/3] docs: no pip install in user-facing text under bindings/python (#564) Install lines for the bindings become uv add arcadedb (arcadedb-embedded stays only where a page documents the old release routine), optional-dependency hints become uv add or uv add 'arcadedb[extra]', the troubleshooting page uses uv tree, uv remove, uv cache clean and uv sync --reinstall-package, and the getting-started pages say the module is import arcadedb in the new packages. Python files change message strings and comments only; test_dataframe_ingest.py matches the new hint text. Co-Authored-By: Claude Opus 5.5 --- bindings/python/docs/api-access-methods.md | 2 +- bindings/python/docs/api/database.md | 2 +- bindings/python/docs/api/results.md | 2 +- bindings/python/docs/benchmarks/running.md | 2 +- bindings/python/docs/development/architecture.md | 2 +- bindings/python/docs/development/ci-setup.md | 2 +- bindings/python/docs/development/release.md | 6 +++--- .../python/docs/development/troubleshooting.md | 11 +++++------ .../docs/examples/04_csv_import_documents.md | 2 +- .../python/docs/examples/05_csv_import_graph.md | 2 +- .../examples/06_vector_search_recommendations.md | 2 +- bindings/python/docs/examples/22_numpy_bulk_io.md | 2 +- .../docs/examples/27_dataframe_arrow_ingest.md | 2 +- .../python/docs/getting-started/installation.md | 7 +++++-- bindings/python/docs/getting-started/quickstart.md | 5 ++++- bindings/python/docs/guide/import.md | 4 ++-- bindings/python/docs/guide/performance.md | 2 +- bindings/python/docs/guide/vectors.md | 2 +- .../examples/06_vector_search_recommendations.py | 2 +- .../examples/07_stackoverflow_tables_oltp.py | 2 +- .../examples/08_stackoverflow_tables_olap.py | 2 +- .../python/examples/09_stackoverflow_graph_oltp.py | 2 +- .../python/examples/10_stackoverflow_graph_olap.py | 2 +- .../examples/13_stackoverflow_hybrid_queries.py | 6 +++--- bindings/python/examples/22_numpy_bulk_io.py | 9 +++------ .../python/examples/27_dataframe_arrow_ingest.py | 2 +- bindings/python/examples/README.md | 2 +- bindings/python/examples/download_data.py | 14 +++++++------- bindings/python/pyproject.toml | 2 +- bindings/python/src/arcadedb_embedded/dataframe.py | 4 ++-- bindings/python/src/arcadedb_embedded/results.py | 9 ++++----- bindings/python/tests/test_dataframe_ingest.py | 2 +- 32 files changed, 60 insertions(+), 59 deletions(-) diff --git a/bindings/python/docs/api-access-methods.md b/bindings/python/docs/api-access-methods.md index 39cea735afb..34f5c20c474 100644 --- a/bindings/python/docs/api-access-methods.md +++ b/bindings/python/docs/api-access-methods.md @@ -31,7 +31,7 @@ Direct JVM method calls via JPype for embedded/local runtime access. - **Transport**: Direct JVM method calls (no network) - **Performance**: Fastest (no serialization/network overhead) - **Use Cases**: Single-process applications, high-performance scenarios -- **Setup**: Nothing beyond `pip install arcadedb-embedded`: no server, no Java installation +- **Setup**: Nothing beyond `uv add arcadedb`: no server, no Java installation ### Example diff --git a/bindings/python/docs/api/database.md b/bindings/python/docs/api/database.md index 58df498b4c1..ad3383f09fc 100644 --- a/bindings/python/docs/api/database.md +++ b/bindings/python/docs/api/database.md @@ -694,7 +694,7 @@ vertices and no column convention for them is fixed here. **Raises:** -- `ImportError`: pyarrow is not installed (`pip install 'arcadedb-embedded[arrow]'`) +- `ImportError`: pyarrow is not installed (`uv add 'arcadedb[arrow]'`) - `ValueError`: no columns, duplicate or non-string column names, a `batch_size` that is not a positive integer, or `parallel` with a vertex type - `TypeError`: a column type with no mapping (time of day, duration, map), a type that diff --git a/bindings/python/docs/api/results.md b/bindings/python/docs/api/results.md index fa507323099..5ea9bd71ef4 100644 --- a/bindings/python/docs/api/results.md +++ b/bindings/python/docs/api/results.md @@ -259,7 +259,7 @@ sims = emb @ query_vector # immediately usable ### `to_polars(batch_size: int = 25_000, columns: Optional[Sequence[str]] = None)` Bulk-materialize all rows as a `polars.DataFrame`, through `to_arrow()`. Requires polars -and pyarrow (`pip install 'arcadedb-embedded[polars]'`). Everything said for `to_arrow()` +and pyarrow (`uv add 'arcadedb[polars]'`). Everything said for `to_arrow()` holds: nulls keep their column type, a `DECIMAL` column is a Polars `Decimal`, and a `DATE` or `DATETIME` column is `Datetime("ms")`, the precision the columnar bridge carries. diff --git a/bindings/python/docs/benchmarks/running.md b/bindings/python/docs/benchmarks/running.md index af356f40db0..4cecdd8228a 100644 --- a/bindings/python/docs/benchmarks/running.md +++ b/bindings/python/docs/benchmarks/running.md @@ -5,7 +5,7 @@ scripts, every adapter, the image pins, the corpus recipes, and the gates. This one lane end to end and says what to expect if you run it somewhere other than the bench host. -!!! warning "This is not a `pip install` benchmark" +!!! warning "This is not an install-and-run benchmark" The harness drives Docker directly. It starts a client container and, for a served engine, a sibling server container on a cell network, gives both the same CPU set, reads their cgroups back, and sizes their disks from the daemon. It needs Docker, a diff --git a/bindings/python/docs/development/architecture.md b/bindings/python/docs/development/architecture.md index 97a1e6234cc..6d8c9931cd3 100644 --- a/bindings/python/docs/development/architecture.md +++ b/bindings/python/docs/development/architecture.md @@ -543,7 +543,7 @@ The Python binding is distributed as a **single, self-contained package** (`arca - **Zero Configuration**: No external Java installation required. ```python -# pip install arcadedb-embedded +# uv add arcadedb import arcadedb_embedded as arcadedb db = arcadedb.create_database("./mydb") diff --git a/bindings/python/docs/development/ci-setup.md b/bindings/python/docs/development/ci-setup.md index 74f7695ede6..ab66d9cd16f 100644 --- a/bindings/python/docs/development/ci-setup.md +++ b/bindings/python/docs/development/ci-setup.md @@ -112,7 +112,7 @@ Every `uses:` is pinned to a full commit SHA with a `# vX.Y.Z` comment (enforced ### Python tooling in the workflows -The workflows follow the project rule for Python tooling: no `pip install` and no `uv pip` anywhere. The Docker wrappers of the benchmark examples `07` to `12` follow it too: they run the example with `uv run --no-project --python --with ... python bench_exec.py