Umbrella CLI for PNFL tools. Dispatches to subcommands provided by individual packages.
pip install -e ".[dev]"pnfl <command> [args...]
pnfl --helpExport a WinLogStats .pdb to an Excel workbook. Optionally annotates with one or two offensive and defensive game plans.
Provided by pnfl-pdbtoexcel.
pnfl convert-pdb --help
pnfl convert-pdb stats.pdb output.xlsm
pnfl convert-pdb stats.pdb output.xlsm -o offense.pln -d defense.pln
pnfl convert-pdb stats.pdb output.xlsm -o offense1.pln -o2 offense2.pln -d defense1.pln -d2 defense2.plnExtract the play list from a .pln game plan file. Outputs to console or text file.
Provided by pnfl-gameplanreader.
pnfl read-gameplan --help
pnfl read-gameplan offense.pln
pnfl read-gameplan offense.pln --sort name --normal-out plays.txtUpdate the 64 normal-play slots of a .pln game plan file from a text file of play names.
Provided by pnfl-gameplanwriter.
pnfl write-gameplan --help
pnfl write-gameplan offense.pln plays.txt
pnfl write-gameplan offense.pln plays.txt --play-path E:\SIERRA\FbPro98\PNFLValidate one or more .pln files against the PNFL rule set.
Provided by pnfl-gameplanreader.
pnfl check-gameplan --help
pnfl check-gameplan Off1.pln Off2.pln Def1.pln Def2.pln
pnfl check-gameplan path\to\gameplans
pnfl check-gameplan path\to\gameplans -rValidate one or more .prf coaching profile files against the PNFL rule set.
Provided by pnfl-profilereader.
pnfl check-profile --help
pnfl check-profile OFF1.prf DEF1.prf
pnfl check-profile path\to\profiles
pnfl check-profile path\to\profiles -rBuild an Excel catalog of every play in a PNFL play tree.
Provided by pnfl-playcatalog.
pnfl catalog-plays --help
pnfl catalog-plays catalog.xlsm
pnfl catalog-plays catalog.xlsm --play-path E:\SIERRA\FbPro98\PNFLGenerate a PNFL season schedule with OR-Tools.
Provided by pnfl-scheduler.
pnfl generate-schedule --help
pnfl generate-schedule --output season.html --season 2026
pnfl generate-schedule --output season.html --season 2026 --scheduler two-phase-rankUmbrella ships these artifacts in PNFL-v{version}.zip:
release/README.txt— user-facing tool overviewrelease/install.bat— installerLICENSE- Python wheel for the
pnflpackage (provides thepnflconsole command) - Wheels and release artifacts from every subproject in
COACH_SUBCOMMANDS - Wheels for every project in
SHARED_DEPENDENCY_PROJECTS - Third-party PyPI dependency wheels (resolved from
release-requirements.txt)
py -3.13 scripts/build_release.pyProduces PNFL-v{version}.zip in dist/ — the coach release. Admin and commissioner releases are built from the private pnfl-admin orchestration repo (sibling of this one) and are not produced by this script.
Edit the lists in scripts/build_release.py:
COACH_SUBCOMMANDS— subcommand projects shipped in the coach releaseSHARED_DEPENDENCY_PROJECTS— private library projects built as wheels for the release
The CLI auto-discovers available commands at runtime, so no code changes are needed when adding or removing subcommands from a release.
This file is a pinned-version manifest of every third-party PyPI package shipped in the release zip. The build script feeds it to pip download, which resolves transitive dependencies automatically and downloads every required wheel into the release packages/ folder.
Format is standard pip requirements syntax:
xlsxwriter==3.2.9
Rules:
- Only list top-level deps. Transitive deps (what xlsxwriter itself depends on) are pulled automatically — do not list them.
- Pin exact versions (
==) for reproducible builds. Without a pin, every release rebuild could grab a different version. - Add a line when a subcommand gains a new third-party dep. To bump a pin, install the new version locally and update the version number here.
pytestEnd users install via the release zip:
- Extract
PNFL-v{version}.zip(orPNFL-Admin-v{version}.zip) to a folder. - Open a command prompt in that folder.
- Run
install.bat.
This installs the bundled wheels into the user's Python environment. After install, pnfl <command> is available from any terminal — that is the actual interface to every tool.
Requires Python 3.13 or later with "Add Python to PATH" enabled.
py -m pip uninstall pnfl pnfl-pdbtoexcel pnfl-playcatalog pnfl-gameplanreader pnfl-gameplanwriter pnfl-gameplan fbpro98-gameplan fbpro98-play pnfl-playpoolCoach releases won't have pnfl-playcatalog — pip will warn and skip it.