Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
1eff9c6
Add vector indexing and searching support to namespaced store
zhangfengcdt May 19, 2026
0e628c8
limit proximity storage backedn only supports file-based and rocksdb-…
zhangfengcdt May 19, 2026
1348be1
implement the api surface
zhangfengcdt May 19, 2026
bdf92ec
wip
zhangfengcdt May 19, 2026
24978b8
implement texindex api and namespaced lifecycle
zhangfengcdt May 20, 2026
896b75b
pr4b wire embeddin model
zhangfengcdt May 20, 2026
8fa5d4c
added chunker functions
zhangfengcdt May 20, 2026
6ffe98c
implement blob-storage extension
zhangfengcdt May 20, 2026
a72ad59
wip
zhangfengcdt May 20, 2026
30d68a7
add deletion to external storage blob
zhangfengcdt May 20, 2026
1eb1d46
add auto-cascase and central embedder ownership
zhangfengcdt May 20, 2026
1d608f1
add set_value_transformer
zhangfengcdt May 20, 2026
c94fd70
add support for multi-chuncking
zhangfengcdt May 20, 2026
95a3b4d
add python bindings into the default packaging
zhangfengcdt May 20, 2026
27fde50
add new python examples
zhangfengcdt May 20, 2026
20e72e4
fix a readme bug
zhangfengcdt May 20, 2026
05f00fb
add python and rust examples
zhangfengcdt May 20, 2026
fa910a6
fix rust examples
zhangfengcdt May 20, 2026
6c66085
clean up examples
zhangfengcdt May 20, 2026
0dd7875
fix pre-commit lint error
zhangfengcdt May 20, 2026
4370cf5
update documents
zhangfengcdt May 20, 2026
b4d9242
fix lint errors
zhangfengcdt May 20, 2026
3a4e091
fix rust sql example
zhangfengcdt May 20, 2026
3f864a6
Merge branch 'main' of github.com:zhangfengcdt/prollytree into featur…
zhangfengcdt May 20, 2026
2d4112f
revamp readme
zhangfengcdt May 20, 2026
e379033
address copilot comments
zhangfengcdt May 20, 2026
ddcbfab
rephase readme files
zhangfengcdt May 20, 2026
8149e9e
clean up
zhangfengcdt May 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ jobs:
PYO3_CROSS_PYTHON_VERSION: "3.11"
with:
target: ${{ matrix.target }}
args: --release --out dist --features python,git,sql,rocksdb_storage --interpreter python3.11
args: --release --out dist --features python,git,sql,rocksdb_storage,proximity,proximity_text --interpreter python3.11
sccache: 'true'
manylinux: ${{ matrix.manylinux }}
rust-toolchain: stable
Expand Down
94 changes: 94 additions & 0 deletions .github/workflows/python_examples.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
name: Python Examples

# Builds the wheel with the full feature set (matching what PyPI ships) and
# runs every example under `python/examples/`. No path filter — examples are
# a user-facing contract and any PR that breaks them should fail this gate.

on:
pull_request:
types: [opened, ready_for_review, synchronize]
push:
branches:
- main

jobs:
examples:
name: Run Python examples
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

# Cache the MiniLM-L6-v2 model weights between runs so the text_index
# example doesn't pay the ~90 MB download on every PR. The cache key is
# stable (model id + revision); restore-keys lets future schema bumps fall
# back to an older cache if needed.
- name: Cache MiniLM embedder weights
uses: actions/cache@v4
with:
path: ~/.cache/prollytree/embedders
key: minilm-l6-v2-main-v1
restore-keys: |
minilm-l6-v2-

- name: Build wheel (with all features)
uses: PyO3/maturin-action@v1
env:
PYO3_CROSS_PYTHON_VERSION: "3.11"
with:
target: x86_64
args: --release --out dist --features python,git,sql,rocksdb_storage,proximity,proximity_text --interpreter python3.11
sccache: 'true'
manylinux: 2_28
rust-toolchain: stable
before-script-linux: |
# librocksdb-sys needs clang for bindgen + a C++ toolchain. Mirrors
# the install in python.yml.
if command -v yum >/dev/null 2>&1; then
yum install -y clang gcc gcc-c++ glibc-devel
elif command -v apt-get >/dev/null 2>&1; then
apt-get update && apt-get install -y --no-install-recommends clang g++ libc6-dev
fi

- name: Configure git identity
run: |
git config --global user.name "CI Examples"
git config --global user.email "ci-examples@example.com"
git config --global init.defaultBranch main

- name: Install wheel
run: |
python -m pip install --upgrade pip
WHEEL=$(ls dist/prollytree-*-cp38-abi3-manylinux*_x86_64.whl | head -1)
echo "Installing $WHEEL"
python -m pip install --force-reinstall "$WHEEL"

- name: Verify install + feature flags
run: |
python -c "import prollytree as p; \
print('proximity_available =', p.proximity_available); \
print('proximity_text_available=', p.proximity_text_available); \
print('sql_available =', p.sql_available); \
print('git_available =', p.git_available); \
print('namespaced_available =', p.namespaced_available)"

# Run each example by file. Fail fast (`set -e`) so the first failure
# surfaces immediately in the PR check. text_index_example.py downloads
# MiniLM weights into ~/.cache/prollytree/embedders on first run; the
# cache step above persists them between PR runs.
- name: Run examples
run: |
set -e
# Run from /tmp so examples don't pollute the workspace and don't pick
# up the repo's pyproject.toml as their CWD (matches local convention).
cd /tmp
python "$GITHUB_WORKSPACE/python/examples/basic_usage.py"
python "$GITHUB_WORKSPACE/python/examples/sql_example.py"
python "$GITHUB_WORKSPACE/python/examples/merge_example.py"
python "$GITHUB_WORKSPACE/python/examples/namespaced_example.py"
python "$GITHUB_WORKSPACE/python/examples/text_index_example.py"
8 changes: 4 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ jobs:
- os: ubuntu-latest
target: x86_64
manylinux: 2_28
features: python,git,sql,rocksdb_storage
features: python,git,sql,rocksdb_storage,proximity,proximity_text
# Linux aarch64 — cross-compile via rust-cross/manylinux_2_28-cross.
# rocksdb_storage is OFF here: librocksdb-sys's bindgen invokes clang
# targeting aarch64-unknown-linux-gnu and can't resolve the aarch64
Expand All @@ -126,17 +126,17 @@ jobs:
- os: ubuntu-latest
target: aarch64
manylinux: 2_28
features: python,git,sql
features: python,git,sql,proximity,proximity_text
# Windows x86_64
- os: windows-latest
target: x64
manylinux: false
features: python,git,sql,rocksdb_storage
features: python,git,sql,rocksdb_storage,proximity,proximity_text
# macOS ARM64 (Apple Silicon) — arm64 wheel works on Intel Macs via Rosetta
- os: macos-14
target: aarch64
manylinux: false
features: python,git,sql,rocksdb_storage
features: python,git,sql,rocksdb_storage,proximity,proximity_text

steps:
- uses: actions/checkout@v4
Expand Down
60 changes: 60 additions & 0 deletions .github/workflows/rust_examples.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Rust Examples

# Runs every example under `examples/` to catch regressions that the unit/
# integration test suite doesn't surface (CLI plumbing, demo dual-write
# patterns, multi-backend storage paths). No path filter — examples are a
# user-facing contract and any PR that breaks them should fail this gate.

on:
pull_request:
types: [opened, ready_for_review, synchronize]
push:
branches:
- main

jobs:
examples:
name: Run examples
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Check Cargo.lock is up to date
run: cargo check --locked

# librocksdb-sys (pulled in by the `rocksdb_storage` feature, which the
# `storage` example needs) requires clang for bindgen and a C++ toolchain
# to compile RocksDB itself.
- name: Install clang + C++ toolchain for librocksdb-sys
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends clang g++ libc6-dev

# Examples that touch GitVersionedKvStore / GitNamespacedKvStore run
# `git init` against temp dirs and need a configured identity.
- name: Configure git identity
run: |
git config --global user.name "CI Examples"
git config --global user.email "ci-examples@example.com"
git config --global init.defaultBranch main

# Build every example once with the union feature set; each example's
# `required-features` is satisfied as long as it is a subset.
- name: Build all examples
run: |
cargo build --locked --examples \
--features "git sql proximity rocksdb_storage" --verbose

# Run each example by name. Fail fast (`set -e`) so the first failure
# surfaces immediately in the PR check.
- name: Run examples
run: |
set -e
cargo run --locked --example proof
cargo run --locked --example sql --features sql
cargo run --locked --example versioning
cargo run --locked --example worktree --features "git sql"
cargo run --locked --example storage --features rocksdb_storage
cargo run --locked --example namespaced --features git
cargo run --locked --example text_index --features "git proximity"
Loading
Loading