graintrace.doctor#

Report which parts of the graintrace stack are installed on this machine.

pip install graintrace ships the Python code only. NEPER, CUBIT/SCULPT, MOOSE/PUMA and NEML2 are built separately, and which of them you have decides which workflows can run at all. This module turns the probes that the MCP server already uses into a plain command, so that checking an install does not require an MCP client:

python -m graintrace.doctor            # human-readable table
python -m graintrace.doctor --json     # machine-readable, for scripts
python -m graintrace.doctor --require neper,cubit   # exit 1 if either is missing

Every missing entry prints the remedy for that specific dependency. A missing tool is not an error by itself – the command exits 0 unless --require names something that is absent – because almost every external tool is optional for some subset of the workflows.

graintrace.doctor.report()[source]#

Run every dependency probe and return one dict per dependency.

Each dict has name, ok, detail (where it was found, or why it is missing) and build_hint (how to get it).

Return type:

List[dict]

graintrace.doctor.format_report(rows)[source]#

Render report() output as an aligned table plus remedies.

Parameters:

rows (Sequence[dict])

Return type:

str

graintrace.doctor.main(argv=None)[source]#

Entry point for python -m graintrace.doctor. Returns the exit code.

Parameters:

argv (Sequence[str] | None)

Return type:

int