This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 1.2.4 instead.
MooFile
A lightweight, embedded, single-file document store with a developer-friendly query API.
No server. No infrastructure. Just a file and a library.
🦀 Rust core available — 2-24× faster than pure Python.
from moofile import Collection, count, mean
with Collection("mydata.bson",
indexes=["email", "age"],
vector_indexes={"embedding": 384},
text_indexes=["content"]) as db:
db.insert({
"name": "Alice",
"email": "alice@example.com",
"age": 30,
"content": "Machine learning and data science expert",
"embedding": [0.1, 0.2, ...]
})
# Traditional query
results = db.find({"age": {"$gt": 25}}).sort("age").to_list()
# Vector similarity search
similar = db.find({}).vector_search("embedding", query_vector, limit=5).to_list()
# BM25 text search
text = db.find({}).text_search("content", "machine learning", limit=10).to_list()
Why MooFile?
| SQLite | JSON file | MongoDB | MooFile | |
|---|---|---|---|---|
| No server | ✓ | ✓ | ✗ | ✓ |
| Document-oriented | ✗ | ✓ | ✓ | ✓ |
| Indexes | ✓ | ✗ | ✓ | ✓ |
| Vector search | ✗ | ✗ | ✓ (Atlas) | ✓ |
| Text search | ✓ (FTS) | ✗ | ✓ | ✓ |
| Developer API | ✗ (SQL) | ✓ (raw) | ✓ | ✓ |
| Single-file portable | ✓ | ✓ | ✗ | ✓ |
| Rust core available | ✗ | ✗ | ✗ | ✓ (v0.3+) |
Target dataset size: megabytes to single-digit gigabytes.
Installation
pip install moofile
This installs the pure-Python version which works everywhere. See Native install below for the Rust-powered version.
Quick Start
from moofile import Collection
db = Collection("users.bson",
indexes=["email", "status"],
text_indexes=["bio"],
vector_indexes={"profile_vec": 128})
# Insert
alice = db.insert({"name": "Alice", "email": "a@ex.com", "age": 30, "status": "active"})
db.insert_many([...])
# Query
active = db.find({"status": "active"}).to_list()
young = db.find({"age": {"$lt": 30}}).sort("age").to_list()
one = db.find_one({"email": "alice@example.com"})
# Vector search
similar = db.find({}).vector_search("profile_vec", query_vector, limit=3).to_list()
for doc, score in similar:
print(f"{doc['name']}: {score:.3f}")
# Text search
results = db.find({}).text_search("bio", "machine learning", limit=5).to_list()
# Update & Delete
db.update_one({"email": "a@ex.com"}, set={"age": 31})
db.update_many({"status": "trial"}, set={"status": "expired"})
db.delete_one({"email": "c@ex.com"})
db.delete_many({"status": "expired"})
Native Install (Rust Core)
When the Rust native extension is installed, import moofile transparently uses it — same API, 2-24× faster.
From source (requires Rust)
# Install Rust: https://rustup.rs
curl --proto '=https' --tls v1.2 -sSf https://sh.rustup.rs | sh
# Build and install with native extension
pip install maturin
cd moofile
maturin develop --release
Prebuilt wheels
Coming soon — GitHub Actions CI will build platform wheels for:
| Platform | Architectures |
|---|---|
| Linux | x86_64 (manylinux) |
| macOS | x86_64, ARM64 (Apple Silicon) |
| Windows | x86_64 |
In the meantime, pip install moofile always works (pure Python fallback).
CLI Tools
| Tool | Description |
|---|---|
moosh |
Interactive Python shell with db pre-bound |
moo2json |
Export/import to/from JSON |
moo2mongo |
Export/import to/from MongoDB |
moo2sqlite |
Export/import to/from SQLite |
moosh users.bson --indexes email,age
moo2json users.bson users.json
moo2json --import users.json users.bson --indexes email
moo2mongo users.bson --uri mongodb://localhost/mydb --collection users
moo2sqlite users.bson users.db --table people
Full Documentation
- Specification — file format, architecture, design decisions
- API Reference — complete Python API, filter operators, aggregation
- bench_native.py — Python vs Rust head-to-head benchmark
Development
# Pure-Python tests (always run)
pytest tests/ -v
# Cross-implementation tests
pytest tests-cross/ -v
# Rust core tests
cd core && cargo test
# Rust benchmark
cd core && cargo run --example bench --release
# Python vs Rust benchmark
PYTHONPATH=. python bench_native.py
Project layout
moofile/
├── core/ # Rust engine (cargo build)
│ ├── src/{lib,storage,index,query,text,errors}.rs
│ └── examples/bench.rs # Pure-Rust benchmark
├── bindings/python/ # PyO3 binding (maturin build)
│ └── src/lib.rs
├── moofile/ # Python package
│ ├── __init__.py # Auto-detects Rust, falls back to Python
│ ├── _rust_adapter.py # Adapts NativeCollection → Collection API
│ ├── collection.py # Pure-Python reference implementation
│ ├── query.py, index.py, storage.py, ...
│ └── cli/ # moosh, moo2json, moo2mongo, moo2sqlite
├── tests/ # Python test suite
├── tests-cross/ # Cross-implementation validation
└── pyproject.toml
License
MIT — see LICENSE.
Release files for moofile 0.3.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| moofile-0.3.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.17+ x86-64 | Details |
| moofile-0.3.5-cp314-cp314-macosx_11_0_arm64.whl | CPython 3.14 | CPython 3.14 | macOS 11.0+ ARM64 | Details |
| moofile-0.3.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.17+ x86-64 | Details |
| moofile-0.3.5-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| moofile-0.3.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.17+ x86-64 | Details |
Total release size: 4.0 MB
Release files / moofile-0.3.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | moofile-0.3.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 853.8 kB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
12e0235671ea63209d381092e239c90bba74f27ca29be18e3f290c2c3736a969
|
|
BLAKE2b-256 checksum How to use checksums |
c324f60fab90a45907d57b9155fc59c1b5cb92a2007d47b6a1e03ef152d94236
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.
Transparency logRelease files / moofile-0.3.5-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | moofile-0.3.5-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 743.5 kB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7309554a38d667921a02335981910a19d6a697e26bdfce8a2c06c55b47add496
|
|
BLAKE2b-256 checksum How to use checksums |
6d429b1b7132a63516094f711869d46a69453742979daa0a3b4273f512e4c3ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.
Transparency logRelease files / moofile-0.3.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | moofile-0.3.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 853.9 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
2304dec7effb91b795dee8674774fee0edfb69d8875c685424d618ced5692719
|
|
BLAKE2b-256 checksum How to use checksums |
6fc6b5b3dff33a81e809bdcad74120c8fee2ad1993eab7bcbf0c54d607dc13cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.
Transparency logRelease files / moofile-0.3.5-cp312-cp312-win_amd64.whl
| Download URL | moofile-0.3.5-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 670.4 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
43b26439df6b41253437fe2485859240dd2bbfd46c1c42648c4851b36b50c4be
|
|
BLAKE2b-256 checksum How to use checksums |
5b54eb245df80929479080e6949ebb15ff7ed60dd6be48d9d1dc5d33679caa39
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.
Transparency logRelease files / moofile-0.3.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | moofile-0.3.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 858.1 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
5e99a8163a5c1feaad8158314dc9556628d5ef7bab188d044cb67e8617fae542
|
|
BLAKE2b-256 checksum How to use checksums |
3739cbe13457ef68a134c851928b5746d78a74510f3a11243e8d9aa0c4a3555d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.
Transparency log