purebible (Python) — for people who live in nvim, btop & the terminal
Zero-dependency Python remake of the purebible terminal client.
Vim keys. btop-style bars. Pipes like a good Unix citizen. No Qt, no build.
Stateless by design: no daemon, no server, no background state. Every invocation reads the KJV text fresh and exits; the TUI keeps results in memory only and writes nothing.
purebible "God | Jesus" # OR search
purebible "God Jesus" # exact phrase
purebible "James* & John*" # AND in same verse (new: old CLI gave 0 rows)
purebible "John 3:16" # smart-dispatch → lookup
purebible lookup "Rom 12:1-2" # ranges + whole chapters ("John 3")
purebible tui "love*" # fullscreen: j/k, /, :, n/N, y, q
Install (PyPI)
sudo pacman -S python-pipx # isolated CLI installs, the Arch-friendly way
pipx install purebible
purebible "John 3:16" # verify
purebible tui # full-screen mode
The KJV text (9 MB, public domain) ships bundled inside the package —
no setup needed. To use a different transcription instead, point at it
explicitly (--text, PUREBIBLE_TEXT) or drop it in
~/.local/share/purebible/SW1769Bible_both.txt, which takes precedence
over the bundled copy. Bundled transcription from the
KingJamesPureBibleSearch
project.
pipx keeps it off system python — Arch is
externally-managed, so plain pip would need --break-system-packages.
Zero runtime dependencies either way (curses ships with Arch's python).
From GitHub instead: pipx install git+https://github.com/ripekern/purebible-py.git.
No AUR package yet — new AUR registrations are currently paused for spam, so it can't be submitted right now. Planned once they reopen.
Install for development
cd ~/Work/purebible-py
pip install -e . --break-system-packages # gives `purebible` + short alias `pb`
# or without install:
python3 -m purebible "John 3:16"
The KJV text ships bundled (purebible/data/), so a checkout works out
of the box — to use a different copy instead, one-time setup:
mkdir -p ~/.local/share/purebible
ln -s ~/Work/purebiblesearch/text/complete/SW1769Bible_both.txt \
~/.local/share/purebible/SW1769Bible_both.txt
# alternatives: export PUREBIBLE_TEXT=/path/to/SW1769Bible_both.txt,
# or copy it to ./data/ or ~/.config/purebible/
Why this exists
purebible-cli (C++/Qt) is exact but heavy: CMake, Qt6, daemon
sockets, 30 MB servers. This is the same terminal client rewritten in
pure Python for terminal-first users:
- nvim:
purebibleprintsref: text, one per line —:r !pb "Rom 12:1-2", quickfix-friendly,--refs-only+fzfready,--no-colorfor pipes. - btop:
purebible tuiis a live dashboard — header stats bar, reverse-video statusline, instant ms timings. - terminal: nvim-style NORMAL/INSERT/COMMAND modes (
/fresh search,icaret before current query,acaret after it, arrows +C-u/C-wediting,:for commands,Escdrops back to NORMAL and never quits — quitting isq,ZZ/ZQor:q, NORMAL mode only),:opens a centered noice-style popup in the upper third, and the bar stays minimal — mode tag + current search only (confirmations flash briefly). Jumplist (Enteropens a chapter,C-ojumps back),↑/↓prompt history,C-u/C-wline editing, even:wpolitely refuses. Lualine-style mode tags and refs colored for your system theme (auto-detected,PUREBIBLE_THEME=dark|lightto override),:helpopens a scrollable screen with the key list + every search and lookup pattern,:clearto clear results,NO_COLORrespected, works over SSH with zero deps.
Query language
| syntax | meaning | example |
|---|---|---|
a b |
phrase (consecutive) | "God said" → 9 hits |
a | b |
OR (union) | "God | Jesus" |
a & b |
AND (same verse) | "James* & John*" |
a & -b |
NOT (verse must lack b) |
"love & -loved" |
love* ?eth [a-z] |
wildcards per word | "four*" |
\c / \C |
vim case override (\C sensitive) |
"Amen\C" → 77 |
bare * |
any single word gap | "God * heaven" |
Flags mirror the old client: -c/--case, -A/--abbrev,
-w/--no-wordindex, -d/--no-dup, --comma, --refs-only,
--book/--chapter/--verse (scope for &), plus --count, --limit N.
License
Open source. Code is GPL-3.0-or-later (same as the project it was ported from) — see LICENSE; the King James Bible text itself is public domain.
Notes / differences
- Native build ships KJV 1769 only (
bibles→1). Asking for another id prints a note and maps to 1 (the old Qt backend had 40+). - Search runs on the whole-Bible word stream like KJPBS (phrases may span
verse boundaries);
*inside a phrase is a single-word skip. Hyphenated compounds (Bar-jesus), ligatures (Cæsar→Caesar), psalm superscriptions and Pauline colophons all match the C++ concordance — verified identical counts and word indexes on a battery of queries (Jesus973,God4444,David930 deduped, …).-yenables hyphen-sensitive mode. &is new (old CLI treated it as a literal word → always 0).|and phrase/wildcard semantics match the original.
Release files for purebible 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| purebible-0.1.2.tar.gz | 1.8 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| purebible-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.6 MB
Release files / purebible-0.1.2.tar.gz
| Download URL | purebible-0.1.2.tar.gz |
|---|---|
| Size | 1.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b8975450d58404ac64a58c488350af6a5d3c922d00c7c70e511eb46dc97e1db2
|
|
BLAKE2b-256 checksum How to use checksums |
d8acac4246ca4111e47fd58b09dbc0cc4ca595b73984175959d862e866209460
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / purebible-0.1.2-py3-none-any.whl
| Download URL | purebible-0.1.2-py3-none-any.whl |
|---|---|
| Size | 1.8 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7be9ee1b4c21dc8c981a90146b2e41674db2a56f067da939a87f45b5842f22a4
|
|
BLAKE2b-256 checksum How to use checksums |
313cfad1f5217913aa3b5d32fc2995512e6438eae0f5553f1f6e4c69be397b0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|