Zealpy 🚀
Zealpy is a lightweight, zero-dependency offline documentation browser and CLI for Dash and Zeal docsets.
Written in pure standard library Python, it runs anywhere without compiling C++ code, launches in milliseconds, and provides both a lightning-fast terminal CLI and a modern Dark Mode Web UI.
✨ Features
- ⚡ Zero External Dependencies: Runs entirely on Python's standard library (
sqlite3,http.server,urllib,tarfile,plistlib). No heavy frameworks or compiler issues. - 🔍 Instant Terminal Search: Query functions, methods, and classes right from your shell with colorized output.
- 🎨 Modern Dark Mode Web UI: Built-in responsive SPA interface with live search autocomplete, type filter pills, and embedded HTML documentation reader.
- 📦 Official Docset Downloader: Download and unpack documentation sets for Python, Qt, PyQt, Pandas, NumPy, Flask, Django, PostgreSQL, and 20+ other popular stacks directly from official mirrors.
- 🔄 Auto-detection of Existing Zeal Docsets: Automatically discovers docsets already installed by desktop Zeal (
%LOCALAPPDATA%/Zeal/Zeal/docsetson Windows,~/.local/share/Zeal/Zeal/docsetson Linux). - 🛡️ Clean & Exam Safe: Perfect for offline environments, coding competitions, and exams where external GUI binaries might raise questions, but Python packages are fully permitted.
🚀 Quick Start
Installation
pip install zealpy
Or install locally in editable mode:
git clone https://github.com/RuttiTuttii/zealpy.git
cd zealpy
pip install -e .
💻 CLI Usage
1. Launch Documentation Server & Browser
zealpy serve
Starts the local documentation server at http://127.0.0.1:8080 and opens your browser.
Custom port or no browser popup:
zealpy serve --port 9090 --no-browser
2. Search Symbols Directly in Terminal
# Search across all installed docsets
zealpy search QComboBox
# Filter by docset
zealpy search groupby -d Pandas
# Filter by symbol type (Class, Method, Function, Module)
zealpy search connect -t Method
3. List Installed Docsets
zealpy list
4. Download Official Docsets
Check available docsets:
zealpy available
Download and install:
zealpy download Python
zealpy download Qt
zealpy download Pandas
zealpy download Flask
5. Import Local Docset Archive
zealpy add path/to/MyDocset.docset
# Or archives:
zealpy add path/to/Python.tgz
🐍 Python Library API
Zealpy can also be imported directly inside your Python scripts:
import zealpy
# Quick symbol search
results = zealpy.search("DataFrame.groupby")
for r in results:
print(f"[{r.type}] {r.name} -> {r.url}")
# Manage docsets programmatically
manager = zealpy.DocsetManager()
python_docs = manager.get("Python_3")
if python_docs:
print(f"Total symbols: {python_docs.count_entries()}")
entries = python_docs.search("os.path.join")
print(entries[0].path)
# Start web server programmatically
zealpy.serve(port=8080)
⌨️ Web UI Keyboard Shortcuts
| Shortcut | Action |
|---|---|
/ or Ctrl + K |
Focus search bar |
↓ / ↑ |
Navigate search results |
Enter |
Open selected documentation page |
Escape |
Clear search / close dialogs |
📜 License
This project is licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later), preserving the license and open-source heritage of the original Zeal project created by Oleg Shparber.
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 zealpy-0.1.0.tar.gz.
File metadata
- Download URL: zealpy-0.1.0.tar.gz
- Upload date:
- Size: 34.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ff811f6964727f29e95c0dbafd36b5b132f054c66f7cae770e45f0ba3897fa3
|
|
| MD5 |
52f5897f8a73988d33ff7632ebb9e51d
|
|
| BLAKE2b-256 |
9f9c2befc913f4e2da99a1c7c98036f4217a1679e32ddc2f5deef5a0955c6476
|
Provenance
The following attestation bundles were made for zealpy-0.1.0.tar.gz:
Publisher:
publish.yml on RuttiTuttii/zealpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zealpy-0.1.0.tar.gz -
Subject digest:
9ff811f6964727f29e95c0dbafd36b5b132f054c66f7cae770e45f0ba3897fa3 - Sigstore transparency entry: 2769676920
- Sigstore integration time:
-
Permalink:
RuttiTuttii/zealpy@a35eeaad39ef445b5f7961a606396d1a72c99fe8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/RuttiTuttii
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a35eeaad39ef445b5f7961a606396d1a72c99fe8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file zealpy-0.1.0-py3-none-any.whl.
File metadata
- Download URL: zealpy-0.1.0-py3-none-any.whl
- Upload date:
- Size: 33.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
298b88938448f712302ba10980981ab1b4561792878de5ab9ba19793b521e03c
|
|
| MD5 |
d7d02bcd19ebbea8ff890869098245a3
|
|
| BLAKE2b-256 |
52a710602c49f7e0b64e594a98d2f3cdd0fe9f3fd3406269d27b3c15fd487a9b
|
Provenance
The following attestation bundles were made for zealpy-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on RuttiTuttii/zealpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zealpy-0.1.0-py3-none-any.whl -
Subject digest:
298b88938448f712302ba10980981ab1b4561792878de5ab9ba19793b521e03c - Sigstore transparency entry: 2769677033
- Sigstore integration time:
-
Permalink:
RuttiTuttii/zealpy@a35eeaad39ef445b5f7961a606396d1a72c99fe8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/RuttiTuttii
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a35eeaad39ef445b5f7961a606396d1a72c99fe8 -
Trigger Event:
workflow_dispatch
-
Statement type: