Update Python bindings: bulk-transport performance, embedded-only packaging, engine-sync fixes#5010
Conversation
|
Tick the box to add this pull request to the merge queue (same as
|
Not up to standards ⛔🔴 Issues
|
| Category | Results |
|---|---|
| Documentation | 44 minor |
| Security | 14 high |
| CodeStyle | 1 minor |
| Complexity | 2 medium |
🟢 Metrics 175 complexity
Metric Results Complexity 175
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
There was a problem hiding this comment.
Code Review
This pull request introduces a comprehensive benchmark suite and extensive API documentation for the ArcadeDB embedded Python bindings. The benchmark suite compares Python bindings performance and memory usage against a Java-native baseline, while the documentation covers key APIs such as AsyncExecutor, Database, Schema, and Vector. Feedback on these changes highlights platform-compatibility issues in the benchmark scripts due to Linux-specific /proc/self/status file access, as well as minor indentation syntax errors in the exceptions documentation examples.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
42b3f72 to
f025217
Compare
… upstream PR branch Encodes the rule proven on ArcadeData#5010: the PR surface is upstream's existing bindings/python tree with contents from our main; fork-only tooling/docs/benchmarks are pruned. Branch is never edited directly. Validated: reproduces the pushed PR head byte-identically. Registered in sync-upstream.sh FORK_OWNED_PATHS. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…-06) Regenerated by make-upstream-pr-branch.sh: bindings/python brought to the fork's main state. Scope: the minimum needed to reproduce the wheel build and run the tests and examples.
Periodic update of
bindings/pythonfrom humemai/arcadedb-embedded-python, where the Python bindings are developed. Scope is the minimum needed to reproduce the wheel build and run the tests and examples:src/,scripts/,tests/,examples/,pyproject.toml,README.md.What's new
Java helper sources now live inside the Python bindings. The biggest difference from previous updates:
bindings/python/src/java/com/arcadedb/python/adds four small Java classes (RowBatcher,ColumnBatcher,EdgeBatcher,VertexBatcher, ~450 lines total) that the existing build scripts compile into anarcadedb-python-bridge.jarshipped inside the wheel. They batch result serialization and record creation on the Java side so bulk operations cost one JPype crossing per batch instead of several per row. They use only public engine APIs, and every Python code path falls back to pure JPype when the jar is absent.New bulk APIs built on the bridge:
ResultSet.to_json_list()/iter_json_batches()/to_columns()(typed numpy columns), a fastto_dataframe()path, andGraphBatch.new_edges()bulk edge ingest. Measured against a pure-Java baseline on identical JARs/JRE/flags: vector SQL search went from ~15x the Java time to ~1.1x, 100k-row scans from ~30x to ~1.6x, and bulk edge ingest to parity.Embedded-only packaging. The wheel no longer bundles server mode (
ArcadeDBServer/create_server, Studio); client-server users are pointed at the official server distribution. Together with JAR pruning and a fix to the jlink module detection in the build scripts, wheels went from ~74 MB to ~62 MB.Suite: 352 passed, 4 skipped; full examples run green; 4-platform x 5-Python release matrix green on the fork.