Skip to main content

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.

GemStone Database Explorer

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 Attributes for 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_gemstone_database_explorer-1.0.0.tar.gz (250.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file python_gemstone_database_explorer-1.0.0.tar.gz.

File metadata

File hashes

Hashes for python_gemstone_database_explorer-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c1b9bf28f5b3bb786476d28ba5654f1efde9e36f7beb3f4eeb74e9dd381ee668
MD5 d4e691cc2b9999232fa5f856065a8fda
BLAKE2b-256 f649b8194b28f2ed606a116e67d39fac1113987a8af657ec874ca2d0197773fc

See more details on using hashes here.

File details

Details for the file python_gemstone_database_explorer-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for python_gemstone_database_explorer-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1b580693c11111f01990cd16f535c8e2c38d193f198cfac83145f1413eeec2a1
MD5 61529f3b02234fc438e37ef26963cb65
BLAKE2b-256 7b820a4603426695c57a8b7e0191fd667ceac5a15a5e526a6bfdf5ded2be7c4f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page