Metadata-Version: 2.4
Name: arcadedb-embedded-native
Version: 26.10.2.dev0
Summary: PREVIEW: ArcadeDB embedded as a GraalVM native-image library. No JVM, no JPype. Installs beside arcadedb-embedded.
Author-email: Taewoon Kim <taewoon@humem.ai>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/humemai/arcadedb-embedded-python
Project-URL: Repository, https://github.com/humemai/arcadedb-embedded-python
Project-URL: Bug Tracker, https://github.com/humemai/arcadedb-embedded-python/issues
Project-URL: ArcadeDB Upstream, https://github.com/ArcadeData/arcadedb
Keywords: database,graph,document,multi-model,arcadedb,embedded,native-image,graalvm,preview
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Database
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
License-File: THIRD_PARTY_NOTICES.md
License-File: licenses/Apache-2.0.txt
License-File: licenses/GraalVM-CE-LICENSE.txt
License-File: licenses/GraalVM-THIRD_PARTY_LICENSE.txt
License-File: licenses/GraalVM-native-image-LICENSE.txt
Provides-Extra: numpy
Requires-Dist: numpy>=1.26.4; extra == "numpy"
Provides-Extra: arrow
Requires-Dist: pyarrow>=23.0.1; extra == "arrow"
Requires-Dist: numpy>=1.26.4; extra == "arrow"
Provides-Extra: pandas
Requires-Dist: pandas>=2.2.0; extra == "pandas"
Requires-Dist: numpy>=1.26.4; extra == "pandas"
Provides-Extra: polars
Requires-Dist: polars>=1.0; extra == "polars"
Requires-Dist: pyarrow>=23.0.1; extra == "polars"
Requires-Dist: numpy>=1.26.4; extra == "polars"
Dynamic: license-file

# arcadedb-embedded-native (PREVIEW)

> **Preview, alpha quality.** This is an experiment, not a release. The API follows `arcadedb-embedded`, but the engine runs as a
> GraalVM native-image shared library, a different runtime with its own bugs. Do not use it for data you cannot lose. Versions are
> pre-releases (`26.10.2.dev0`): `pip install --pre arcadedb-embedded-native`. Report problems at
> <https://github.com/humemai/arcadedb-embedded-python/issues> and say that you use the native wheel.

ArcadeDB (SQL, openCypher, document, graph, vector, time series) embedded in your Python process **without a JVM and without JPype**.
The engine is compiled ahead of time with GraalVM Community Edition to `libarcadedb.so`; Python loads it with `ctypes`.

## Install

```bash
pip install --pre arcadedb-embedded-native        # or: uv add --prerelease allow arcadedb-embedded-native
```

It installs **beside** `arcadedb-embedded` (distinct distribution name, distinct import name `arcadedb_native`, no shared files).
Extras for the columnar helpers: `[numpy]`, `[arrow]`, `[pandas]`, `[polars]`.

## Use

The public API is the one of `arcadedb_embedded`. Switch with one line:

```python
import arcadedb_native as arcadedb      # was: import arcadedb_embedded as arcadedb

with arcadedb.create_database("/tmp/demo") as db:
    db.schema.create_vertex_type("Person")   # schema objects work; see "Not supported yet" for the Java-object corners
    with db.transaction():
        db.command("sql", "CREATE VERTEX Person SET name = ?", "Ada")
    print(db.query("sql", "SELECT FROM Person").to_list())
```

`arcadedb_native.ENGINE_VERSION`, `.NATIVE_IMAGE` and `.SOURCE_COMMIT` tell which engine and which build you have.

## Platforms

Linux x86-64 only, CPython 3.11 to 3.14, glibc 2.34 or newer (wheel tag `py3-none-manylinux_2_34_x86_64`; one wheel serves every
Python version because the library is loaded with `ctypes`, not compiled against CPython). The image is built for baseline x86-64
(`-march=compatibility`), so it runs on any x86-64 CPU. macOS, Windows and Linux arm64 wheels do not exist yet.

## Not supported yet

Each of these raises `NotOnNativeYet` (a `NotImplementedError`) instead of misbehaving:

- **JVM-only APIs**: `get_java_database()`, `start_jvm()`, `jvm_kwargs`, JVM settings, `jar_fingerprint()`, direct Java class access.
- **Java-object returns of schema methods** (for example `getClass`, `newLightEdge`), `VectorIndex.get_stats`, and
  `VectorIndex.find_nearest_approximate` over PRODUCT quantization (PQ accessors).
- **Async `transaction()`** helpers that depend on Java threads.
- Engine modules left out of the image: gRPC, MongoDB wire, Raft/HA, Gremlin (the in-process server, the
  HTTP API, Postgres, Redis and Bolt wire protocols are in).
- Free-threaded Python builds are untested.

The parity suite (the bindings' own tests run against the installed wheel) passes with 0 failures; the remaining tests are the
"not yet" items above or JVM-only by nature. Numbers are in the project notes, not here.

## Licence

Apache-2.0 for ArcadeDB and these bindings. The library also contains the GraalVM Community Edition runtime and JDK class
library code, licensed GPLv2 **with the Classpath Exception**, plus the Apache/BSD/MIT/UPL/EDL third-party Java libraries
listed in `THIRD_PARTY_NOTICES.md`. All texts and the source locations are in the wheel's `*.dist-info/licenses/`.
