Python/Flask web explorer and debugger for GemStone/S databases.
Project description
GemStone Database Explorer
A Python/Flask web application for browsing and inspecting objects in a GemStone/S object database. It started as a port of maglev-database-explorer-gem, but the current app now includes a fuller browser/debugger toolset on top of gemstone-py.
Features
- Object inspectors with draggable object chips, linking arrows, eval, transaction controls, and backend-driven tabs
- Workspace windows that can evaluate code, open linked inspectors, and auto-open the debugger on halts
- Full Class Browser with dictionary/class/protocol/method panes, compile, file-out, structure editing, helper windows, and inspect actions
- Helper windows for method queries, hierarchy, and versions, including load/open/inspect flows
- Debugger windows with halted-thread summaries, stack frames, locals, thread-local storage, step/proceed/trim, and execution-point highlighting
- Symbol List Browser for users, dictionaries, entries, and value inspection
- MagLev-style custom object tabs such as
Attributesfor record-like objects - Layout persistence, taskbar/task grouping, related-window actions, splitters, filters, and keyboard navigation
- About, Status Log, and Connection windows plus
/healthz,/diagnostics,/connection/preflight, and support-bundle export for build/runtime visibility and diagnostics capture - Mock and live Playwright UI suites in addition to Python route/object/session tests
Requirements
- GemStone/S 64 3.x with accessible GCI libraries
- Python 3.11+
- gemstone-py
Installation
git clone https://github.com/unicompute/python-gemstone-database-explorer
cd python-gemstone-database-explorer
python3 -m venv .venv
.venv/bin/pip install -e .
Configuration
Set the GemStone connection environment before starting the app:
| Variable | Description | Example |
|---|---|---|
GEMSTONE |
Path to the GemStone installation | /opt/gemstone/GemStone64Bit3.7.5-arm64.Darwin |
GS_USERNAME |
GemStone login username | DataCurator |
GS_PASSWORD |
GemStone login password | swordfish |
GS_STONE |
Stone name | seaside |
GS_HOST |
Host running the Stone/NetLDI | localhost |
GS_NETLDI |
NetLDI service name or port | 50377 |
Depending on your platform/install, you may also need the native library path exported, for example:
export GS_LIB=/opt/gemstone/product/lib
If your Stone is named seaside, set GS_STONE=seaside before starting the app. The app also accepts GS_STONE_NAME=seaside as a compatibility alias, but the underlying client library reads GS_STONE.
See docs/configuration.md for the complete environment details.
Usage
.venv/bin/python-gemstone-database-explorer
Options:
--host HOST Bind host (default: 127.0.0.1)
--port PORT Port (default: 9292)
--debug Enable Flask debug mode
Then open http://127.0.0.1:9292/ in a browser.
If startup fails because the wrong Stone name or local monitor target is configured, use the taskbar Connection window. It shows the effective target, the local gslist -lcv probe when available, and a copyable shell fix such as export GS_STONE=seaside.
Testing
Python
.venv/bin/python -m pytest -q
UI
Install the Playwright dependency once:
npm install
Run the browser suite:
npm run test:ui
That always runs the deterministic mock-backed suite first. If GEMSTONE, GS_USERNAME, and GS_PASSWORD are present, it then runs the live GemStone suite automatically; otherwise it prints a skip message after the mock suite.
Run only the live UI suite:
export GEMSTONE=/opt/gemstone/GemStone64Bit3.7.5-arm64.Darwin
export GS_USERNAME=DataCurator
export GS_PASSWORD=swordfish
npm run test:ui:live
The live suite starts the real Flask app on 127.0.0.1:4192 and covers startup browsing, debugger flow, and a transactional Class Browser write flow that aborts its changes before the test ends.
Session Soak
For longer operational pressure against the shared session broker, run:
.venv/bin/python -m gemstone_p.session_soak --workers 8 --iterations 100 --channels 4
This is not a throughput benchmark. It is a maintenance tool for exercising channel reuse, login/logout churn, write-channel cleanup, and broken-session recovery against a real Stone.
Documentation
License
MIT
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 python_gemstone_database_explorer-1.0.0.tar.gz.
File metadata
- Download URL: python_gemstone_database_explorer-1.0.0.tar.gz
- Upload date:
- Size: 250.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1b9bf28f5b3bb786476d28ba5654f1efde9e36f7beb3f4eeb74e9dd381ee668
|
|
| MD5 |
d4e691cc2b9999232fa5f856065a8fda
|
|
| BLAKE2b-256 |
f649b8194b28f2ed606a116e67d39fac1113987a8af657ec874ca2d0197773fc
|
File details
Details for the file python_gemstone_database_explorer-1.0.0-py3-none-any.whl.
File metadata
- Download URL: python_gemstone_database_explorer-1.0.0-py3-none-any.whl
- Upload date:
- Size: 308.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b580693c11111f01990cd16f535c8e2c38d193f198cfac83145f1413eeec2a1
|
|
| MD5 |
61529f3b02234fc438e37ef26963cb65
|
|
| BLAKE2b-256 |
7b820a4603426695c57a8b7e0191fd667ceac5a15a5e526a6bfdf5ded2be7c4f
|