plm-dgraham is a Python terminal application for managing player lineup scheduling. It is primarily an interactive CLI app rather than a stateless command-only tool.
plm/__main__.py— main entry point for the installedplmcommandplm/plm.py— main interactive application logicplm/__version__.py— package versionstart_plm.py— convenience launcher for local usepyproject.toml— package metadata and dependenciessetup.py— legacy packaging file; preferpyproject.toml
Preferred ways to run the app:
- Installed command:
plm - Module entry point:
python3 -m plm - Local launcher:
python3 start_plm.py
Use an isolated virtual environment for development.
Typical setup:
- Create a venv:
python3 -m venv .venv - Activate it:
. .venv/bin/activate - Upgrade pip:
python3 -m pip install --upgrade pip - Install the project:
python3 -m pip install -e .
Notes:
- Use
python3 -m pip ...instead of barepip. - Python package install names may use hyphens while import names use underscores.
- Example: install
prompt-toolkit, importprompt_toolkit.
If using uv, preferred workflow is:
uv venvuv syncuv run plm
For quick validation after edits, use small checks first:
python3 -m compileall plm start_plm.py- then run the app locally if needed
Prefer minimal, behavior-preserving changes unless the task explicitly requests refactoring.
- Treat
plm/plm.pyas legacy but active code. - Preserve the current interactive
prompt_toolkitworkflow unless asked to redesign it. - Avoid introducing
clickor changing the UI model unless explicitly requested. - Separate business logic from terminal interaction when making larger improvements.
The README may contain older installation or startup examples. When changing docs, keep them aligned with current behavior in plm/__main__.py and packaging in pyproject.toml.
These are typically generated artifacts or local/editor state:
build/dist/plm_dgraham.egg-info/.mypy_cache/.vscode/
- Prefer modern packaging via
pyproject.toml. - Do not add new packaging metadata only to
setup.py. - Keep the console script entry point as
plm = plm.__main__:mainunless there is a clear reason to change it.
Good tasks:
- small bug fixes
- README updates
- packaging modernization
- light refactoring with no behavior change
- adding tests around isolated logic
Be cautious with:
- large rewrites of
plm/plm.py - changing home-directory behavior
- changing project file format
- changing the interactive command flow