Persistent storage, dedup, metadata queries, and semantic search for acatome bundles
Project description
acatome-store
Persistent storage, deduplication, metadata queries, and semantic search for scientific paper bundles.
Features
- SQLAlchemy ORM — portable across SQLite, Postgres, MySQL
- Refs + Papers split — identity table (refs) separate from ingested content (papers)
- Citation graph — directed
citing → citededges, works for ingested + stub papers - Supplements — ingest supplementary PDFs with scoped block retrieval
- Retractions — flag papers as retracted with notes
- Vector search — ChromaDB (default) or pgvector (zero text duplication)
- CLI —
acatome-storecommand for ingest, reingest, query, retract, and stats - Schema management —
reset_schema()andreingest --dropfor clean rebuilds
Installation
uv pip install -e .
With Postgres support:
uv pip install -e ".[postgres]"
Usage
from acatome_store import Store
store = Store()
ref_id = store.ingest(bundle_path)
paper = store.get(ref_id)
results = store.search_text("transformer attention", top_k=5)
# hits include paper info, block summaries, and text
CLI
acatome-store ingest /path/to/bundle.acatome # single bundle
acatome-store ingest /path/to/dir/ # directory of bundles
acatome-store reingest # re-ingest all from ~/.acatome/papers/
acatome-store reingest --drop # drop schema + re-ingest (confirm prompt)
acatome-store reingest --path /other/dir # custom bundle directory
acatome-store stats
acatome-store search "CO2 capture"
acatome-store list
acatome-store info doi:10.1234/example
acatome-store retract doi:10.1234/fake --note "Fabricated data"
Schema Reset
If the database schema drifts from the model (e.g. after upgrading acatome-store),
use reingest --drop to drop all tables, recreate from the current SQLAlchemy model,
and re-ingest all .acatome bundles. No data is lost since bundles are the source of truth.
acatome-store reingest --drop
# prompts for confirmation, then:
# 1. Drops all tables (refs, blocks, papers, links, etc.)
# 2. Recreates schema from current model
# 3. Re-ingests all bundles from ~/.acatome/papers/
Programmatically:
store = Store()
store.reset_schema() # drop + recreate tables
Testing
uv run python -m pytest tests/ -v
License
LGPL-3.0-or-later — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file acatome_store-0.7.5.tar.gz.
File metadata
- Download URL: acatome_store-0.7.5.tar.gz
- Upload date:
- Size: 39.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80e5bfb8ff7c7af516b29ffd95cc76ae46d6c2f9dd0ab5c73d917e552d8891bd
|
|
| MD5 |
24116cd48f533b756e77617fa2fde130
|
|
| BLAKE2b-256 |
02b356375e030e560fbef159d1fff68dc719a6e1deb397b39b479e28f0d0fa2d
|
Provenance
The following attestation bundles were made for acatome_store-0.7.5.tar.gz:
Publisher:
publish.yml on retospect/acatome-store
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
acatome_store-0.7.5.tar.gz -
Subject digest:
80e5bfb8ff7c7af516b29ffd95cc76ae46d6c2f9dd0ab5c73d917e552d8891bd - Sigstore transparency entry: 1272119152
- Sigstore integration time:
-
Permalink:
retospect/acatome-store@439016c8701c174107327a41778ddbba58b27e0a -
Branch / Tag:
refs/tags/v0.7.5 - Owner: https://github.com/retospect
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@439016c8701c174107327a41778ddbba58b27e0a -
Trigger Event:
push
-
Statement type:
File details
Details for the file acatome_store-0.7.5-py3-none-any.whl.
File metadata
- Download URL: acatome_store-0.7.5-py3-none-any.whl
- Upload date:
- Size: 30.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5eb7e428fa75506f235606482c0e072c9902541167e342d1e71e79a45e48a62
|
|
| MD5 |
f9392ae4fa22cf1aadc7804d51f3d895
|
|
| BLAKE2b-256 |
8a194d86e65e582d7c17c083de7e3c061fc09722cd03092f910a5b7c43bb15e2
|
Provenance
The following attestation bundles were made for acatome_store-0.7.5-py3-none-any.whl:
Publisher:
publish.yml on retospect/acatome-store
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
acatome_store-0.7.5-py3-none-any.whl -
Subject digest:
b5eb7e428fa75506f235606482c0e072c9902541167e342d1e71e79a45e48a62 - Sigstore transparency entry: 1272119243
- Sigstore integration time:
-
Permalink:
retospect/acatome-store@439016c8701c174107327a41778ddbba58b27e0a -
Branch / Tag:
refs/tags/v0.7.5 - Owner: https://github.com/retospect
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@439016c8701c174107327a41778ddbba58b27e0a -
Trigger Event:
push
-
Statement type: