Repository navigation
Tracking: porting the rest of the humemai bindings work #19
Description
Tracking the rest of the work that lives in humemai/arcadedb-embedded-python bindings/python and not yet here. The repo moved at ArcadeData/arcadedb ee04bd202a plus the c0f9647 port, and we compared both trees. A wholesale patch does not apply (138 rejected hunks in 39 files, mostly from the black/isort pass and the jar-derived version), so each group is ported by hand as its own PR, smallest first.
Status as of 2026-10-26, after #80. Everything ticked is merged.
- Studio jar out of the wheels, ApexCharts licence: fix: licence guard for the wheels: fail on ApexCharts, ship Studio from 26.11.1 (ECharts) #20 (licence guard that fails on ApexCharts; Studio ships again from 26.11.1 with ECharts), for Studio jar in the wheels: ApexCharts is no longer open source #17
- JRE module trim, Jackson/snappy/commons-math3 handling, jar closure and payload tests: Port the JRE module trim, Jackson/snappy/commons-math3 jars and the jar closure test (#19) #28
- Python runtime fixes in
src/: fix: give SIGINT and SIGTERM back to Python after the JVM starts #26 (SIGINT and SIGTERM), Python runtime fixes in src: serialized start_jvm(), heap default, log directory, XML limits, read-only open, async docs #27 (serializedstart_jvm(), heap default, log directory, XML limits, read-only open, async executor), JVM: opt-in JDK 25 AOT cache (ARCADEDB_AOT=1 / start_jvm(aot=True)) (#19) #31 (opt-in AOT cache) - Features: Python functions in SQL and openCypher, record events, Document.save()/delete() errors (#19) #29 (Python functions in SQL/Cypher, record events), DataFrame/Arrow ingest, to_polars(), PRODUCT quantization, vector SQL options, example 27 (#19) #30 (DataFrame/Arrow ingest,
to_polars(), PRODUCT quantization, vector SQL options), Bridge: float vectors cross as one binary buffer, not as JSON text or one JPype call per element (stacked on #29) #33 (float vectors as one binary buffer), examples 27 to 29 (DataFrame/Arrow ingest, to_polars(), PRODUCT quantization, vector SQL options, example 27 (#19) #30, Python functions in SQL and openCypher, record events, Document.save()/delete() errors (#19) #29, Example 29: hybrid agent-memory retrieval in one SQL statement (tenant pre-filter + full-text + graph) #32). Their documentation pages are part of the docs item below. - Remaining tests and their test dependencies: Tests: six more ported from humemai, test extra for duckdb, ladybug, networkx; antora.yml formatting #44 (six more tests, test extra with duckdb, ladybug and networkx), tests: start every server test on a free port #36 and tests: start the served fixture on a free port #40 (servers on a free port), Example 21: query the graph analytical view once after a reopen, then wait for its counts #37; the Python floor is 3.11 (Drop Python 3.10: support 3.11 to 3.14 #48)
- Small build and test fixes: build.sh: follow a symlinked JAR_LIB_DIR #35 (
build.shfollows a symlinkedJAR_LIB_DIR), tests: start every server test on a free port #36, Example 21: query the graph analytical view once after a reopen, then wait for its counts #37 - Release workflow, jar-derived version, tag check, wheel count and size policy, after-tag verification: Add release workflow publishing to PyPI by trusted publishing #22, Release scripts: check_version.py before publish, after_tag_verify.sh, Release page #43, ci: small matrix on pull requests, full matrix on main, nightly and releases #45. The first real release is tracked in Releasing to PyPI from this repo #18.
- Native-image wheel: Build two distributions: arcadedb (native) and arcadedb-jvm (JVM) #66 (two distributions,
arcadedbnative andarcadedb-jvm) and the native parity work in Native: Python functions in SQL and openCypher, record events, Ctrl-C, and the async writer crash #67 to Native: release the callback ids of every async executor call #80. The readiness bar is met on main (5df565c); the release waits for upstream 26.11.1 (Releasing to PyPI from this repo #18). - Docs and docs workflows. The Antora component is in (docs: Antora component arcadedb-python with the first slice of pages #23, docs: 'Which package for which mode' page; link the main docs instead of re-explaining #25, docs: concurrency, processes and crashes (measured), stacked on #25 #34; 11 AsciiDoc pages so far). Still to write: guide (12 pages), API reference (14), examples (30), development (12), getting-started (2), the pages for the features above, and the vector docs of humemai#499. The proposal for moving the user-facing pages into ArcadeData/arcadedb-docs is Add the embedded Python bindings (arcadedb, arcadedb-jvm) to the docs arcadedb-docs#502, first PR docs(python): embedded bindings page and quickstart connection options arcadedb-docs#503.
mkdocs.ymland its workflows are not ported, since the Antora component replaces them. - Small dev scripts, port or drop file by file:
scripts/build_and_install_locally.sh,scripts/list_image_jars_by_size.sh,scripts/fix_markdown.py,scripts/profile-python/(4 files),AGENTS.md. None is on main yet.
Not planned: our benchmark tooling and what depends on it (examples/bench_exec.py, examples/scripts/, tests/test_bench_exec.py, tests/test_render_ab_tables.py, tests/test_jvm_payload.py, scripts/render_ab_tables.py, docs/benchmarks, docs/brand) stays in humemai.
Each open box becomes its own issue or PR; questions on any of them are welcome here.
Activity
tae898 commentedon Oct 23, 2026
Docs item: proposal for moving the user-facing pages into ArcadeData/arcadedb-docs (Antora/AsciiDoc) is ArcadeData/arcadedb-docs#502, first PR ArcadeData/arcadedb-docs#503.
tae898 commentedon Oct 23, 2026
Python runtime fixes item, Ctrl-C part: #26 (SIGINT and SIGTERM given back to Python after the JVM starts; ported from humemai/arcadedb-embedded-python#494). The item stays open for the other fixes in that group.
tae898 commentedon Oct 24, 2026
Python runtime fixes item, the rest of the group: #27 (serialized
start_jvm(), heap default, log directory, XML limits, read-only open, async executor docs, with their tests). With #26 that covers every fix in the group except the opt-in Leyden AOT cache (humemai#490, not merged there yet), which follows as its own PR. The box stays unticked until then.tae898 commentedon Oct 24, 2026
JRE module trim, Jackson/snappy/commons-math3 handling, jar closure and server payload tests: #28 (ported from humemai/arcadedb-embedded-python#409 and #452). Wheel linux/amd64, measured: 73,973,014 to 67,547,260 bytes. The polyglot-default test moves with the runtime-fixes PR.
tae898 commentedon Oct 24, 2026
Features item: #29 (Python functions in SQL and openCypher, record events,
Document.save()/delete()raisingArcadeDBError, example 28; ported from humemai/arcadedb-embedded-python#391; adds two Java glue classes to the existing bridge jar, no build change) and #30 (DataFrame/Arrow ingest,to_polars(), PRODUCT quantization, vector SQL options, example 27, thepolarsextra; ported from humemai#390, #384, #446, #395; no new Java). Both are based on #27 (port/runtime-fixes). Documentation pages for these features are not in them; they go with the Antora component.tae898 commentedon Oct 24, 2026
AOT cache port (humemai/arcadedb-embedded-python#490): #31 (based on #27; docs part left out until the Antora component #23 is in).
tae898 commentedon Oct 24, 2026
Status as of 2026-10-24 14:46 UTC, from
ghandgit. Every open PR below has 46 of 46 checks green.CLAUDE.mddocs/antora-componentbranch)start_jvm(), heap default, log dir, XML limits, read-only open, async docsto_polars(), PRODUCT quantization, vector SQL options, example 27Remaining, in the order I suggest. Paths are compared with
bindings/pythoninhumemai/arcadedb-embedded-pythonat origin/main and with the files of the PRs above; files present on both sides can still differ in content.scripts/build.shfollows a symlinkedJAR_LIB_DIR:find -H,cp -aL), humemai#466 (server tests start on a free port:tests/conftest.pyand four server test files), humemai#469 (example 21 runs one query through the view after a reopen, then polls the counts). None is in a PR here.scripts/after_tag_verify.sh(humemai#479) andscripts/check_version.pywithtests/test_check_version.py(humemai#501, the devN/postN counting rule). No wheel-content change.test_sql_constraints_and_maintenance.py,test_collection_equality_known_issues.py(humemai#445),test_guide_graph_analytics.py,test_guide_timeseries.py, andtest_equivalence.pywithtest_equivalence_ladybug.py. The last two need a test extra withduckdb,ladybugandnetworkx. That is 6 files, down from the "about 30" in the issue, because Python runtime fixes in src: serialized start_jvm(), heap default, log directory, XML limits, read-only open, async docs #27 to Bridge: float vectors cross as one binary buffer, not as JSON text or one JPype call per element (stacked on #29) #33 carry the others.core.pyandvector.py, plusguide/vectors.md).mkdocs.yml,docs-build.ymlanddeploy-python-docs.ymlare not ported, since the Antora component replaces them.native-wheel/,src/arcadedb_embedded/_native/,native-preview.yml,native-alias.yml, together with humemai#495, #500, #504 and #505 (the JVM wheel ships_native). It lives on the humemai branchnative-preview(77 commits not on main; main has 204 not on it), so we rebase that branch on main first. Thearcadedb-nativejob for Add release workflow publishing to PyPI by trusted publishing #22 comes with it.scripts/build_and_install_locally.sh,scripts/list_image_jars_by_size.sh,scripts/fix_markdown.py,scripts/profile-python/(4 files),AGENTS.md.Not planned, as before: benchmark tooling and what depends on it (
examples/bench_exec.py,examples/scripts/, thebench_execchanges in examples 07 to 12 including humemai#502,tests/test_bench_exec.py,tests/test_render_ab_tables.py,tests/test_jvm_payload.py,scripts/render_ab_tables.py,docs/benchmarks,docs/brand).Merge pull request #28 from ArcadeData/port/jre-trim-jar-closure
Merge pull request #30 from ArcadeData/port/ingest-vector
Merge pull request #31 from ArcadeData/port/aot-cache
Merge pull request #29 from ArcadeData/port/functions-events