Bringing EDMC plugin development out of the dark ages. 😜
The library has four components.
- Demo plugin
- A unit testing tool
- A library of useful utility classes and functions
- Some handy github workflows
Created as a platform to test and exercise the library functionality it also acts as a simple plugin template and displays a journal event list and a lightweight status mode/pips/alert-badge summary.
A unit and regression testing tool for EDMC that mocks EDMC functionality enabling pytest, python debugger, and pycov test coverage analyses.
- Development is much faster when you can use the python debugger; replay sequences of events; and run regression tests.
- AI tools such as Claude Code are far more effective when they can write and run regression tests.
- Debugging user issues is much easier when you can replay their journal in your environment to reproduce problems.
- Journal event replay, with customization
- Mock state handling
- Mock EDMC config
- Mock ED logging
- Mock i10n translation
- Mock CAPI event handling
- Mock EDMC Overlay
- Mock HotKeys
- Mock (or live) HTTPS requests
- Mock dashboard event replay
A Library of utilities for EDMC plugins. Some utilities are drop-in ready to go, some may require some configuration, and others may need adapting to your plugin. They have comments or README's describing their functionality.
- An EDMC-theme aware library of UI objects for use in the main EDMC window (Frame, LabelFrame, ScrollableFrame, Label, Entry, Text, RichLabel, RichText, RichScrolledText, Button, Radiobutton, ComboBox, Listbox, Checkbutton, Scale, Spinbox, Tooltip, Autocompleter, Placeholder)
- Richtext tk objects (easily display HTML and Markdown)
- Enhanced Treeview
- Scrollable notebook
- Debug
- Plugin updater
- Notifications capability
- Overlay handler
- Miscellaneous functions (Date utilities, Cross-platform clipboard copy, Nested object retrieval, Singleton decorator)
GitHub workflow scripts for EDMC plugins.
Removes development artifacts and creates a release .zip asset, puts it through VirusTotal, and adds the result to the release notes.
Runs flake8 and pytest when code is pushed to the main branch or a PR is created for the main branch.

