Skip to content

Development

nParse+ is GPL-3.0, written in Python 3.12 with PySide6, and developed at github.com/prokopto-dev/nparse-plus.

Running from source

Requires uv (which installs Python 3.12+ for you):

git clone https://github.com/prokopto-dev/nparse-plus.git nparseplus && cd nparseplus
uv sync
uv run python -m nparseplus

Development commands

uv run pytest                             # ~770 tests, a few seconds
uv run pytest --cov=nparseplus --cov-branch --cov-report=term-missing
uv run ruff check . && uv run ruff format .
QT_QPA_PLATFORM=offscreen uv run pytest   # headless (CI does this)
uv run mkdocs serve                       # preview this documentation

Architecture in one paragraph

A log driver tails the newest eqlog_*.txt, a parser chain (one module per EQTool parser, 1:1 ports) turns lines into typed events on an event bus, handlers mutate services (timers, fights, triggers), and the Qt UI reads snapshots on timers. The rule that matters: the core engine never imports Qt — a test enforces it. The full guide lives in CLAUDE.md in the repo; EQTool's C# (pinned commit in CREDITS.md) is the source of truth for ported behavior, and its EQtoolsTests corpus is the golden spec.

Contributing

  • Commits follow Conventional Commitsfeat: / fix: determine release versions (see Release flow).
  • Ported parser/handler behavior should match EQTool exactly; port the C# test first when in doubt. Deliberate divergences get a comment.
  • Data files under data/ are generated by tools/convert_*.py — regenerate, don't hand-edit.

Roadmap

Planned features and the distribution parking lot live on the Roadmap page; shipped history is in the changelog.