124 lines
4.1 KiB
Python
124 lines
4.1 KiB
Python
from typing import Any, Dict, Sequence
|
|
|
|
from cmdlet._shared import Cmdlet, CmdletArg
|
|
from SYS.logger import log
|
|
|
|
|
|
def _run(piped_result: Any, args: Sequence[str], config: Dict[str, Any]) -> int:
|
|
# Debug utility: dump current pipeline table state (display/current/last + buffers)
|
|
try:
|
|
from SYS import pipeline as ctx
|
|
except Exception as exc:
|
|
log(f"Failed to import pipeline context: {exc}")
|
|
return 1
|
|
|
|
state = None
|
|
try:
|
|
state = ctx.get_pipeline_state() if hasattr(ctx, "get_pipeline_state") else None
|
|
except Exception:
|
|
state = None
|
|
|
|
def _summarize_table(name: str, t: Any) -> None:
|
|
if t is None:
|
|
print(f"{name}: None")
|
|
return
|
|
try:
|
|
table_type = getattr(t, "table", None)
|
|
except Exception:
|
|
table_type = None
|
|
try:
|
|
title = getattr(t, "title", None)
|
|
except Exception:
|
|
title = None
|
|
try:
|
|
src_cmd = getattr(t, "source_command", None)
|
|
except Exception:
|
|
src_cmd = None
|
|
try:
|
|
src_args = getattr(t, "source_args", None)
|
|
except Exception:
|
|
src_args = None
|
|
try:
|
|
no_choice = bool(getattr(t, "no_choice", False))
|
|
except Exception:
|
|
no_choice = False
|
|
try:
|
|
preserve_order = bool(getattr(t, "preserve_order", False))
|
|
except Exception:
|
|
preserve_order = False
|
|
try:
|
|
row_count = len(getattr(t, "rows", []) or [])
|
|
except Exception:
|
|
row_count = 0
|
|
try:
|
|
meta = (
|
|
t.get_table_metadata() if hasattr(t, "get_table_metadata") else getattr(t, "table_metadata", None)
|
|
)
|
|
except Exception:
|
|
meta = None
|
|
meta_keys = list(meta.keys()) if isinstance(meta, dict) else []
|
|
|
|
print(
|
|
f"{name}: id={id(t)} class={type(t).__name__} title={repr(title)} table={repr(table_type)} rows={row_count} "
|
|
f"source={repr(src_cmd)} source_args={repr(src_args)} no_choice={no_choice} preserve_order={preserve_order} meta_keys={meta_keys}"
|
|
)
|
|
|
|
label = ""
|
|
try:
|
|
label = str(args[0]) if args else ""
|
|
if label:
|
|
print(f"Table State: {label}")
|
|
else:
|
|
print("Table State")
|
|
except Exception:
|
|
print("Table State")
|
|
|
|
try:
|
|
_summarize_table("display_table", getattr(state, "display_table", None) if state is not None else None)
|
|
_summarize_table("current_stage_table", getattr(state, "current_stage_table", None) if state is not None else None)
|
|
_summarize_table("last_result_table", getattr(state, "last_result_table", None) if state is not None else None)
|
|
|
|
display_items = getattr(state, "display_items", None) if state is not None else None
|
|
last_result_items = getattr(state, "last_result_items", None) if state is not None else None
|
|
hist = getattr(state, "result_table_history", None) if state is not None else None
|
|
fwd = getattr(state, "result_table_forward", None) if state is not None else None
|
|
last_sel = getattr(state, "last_selection", None) if state is not None else None
|
|
|
|
print(
|
|
"buffers: "
|
|
f"display_items={len(display_items or [])} "
|
|
f"last_result_items={len(last_result_items or [])} "
|
|
f"history={len(hist or [])} "
|
|
f"forward={len(fwd or [])} "
|
|
f"last_selection={list(last_sel or [])}"
|
|
)
|
|
except Exception as exc:
|
|
log(f"Failed to summarize table state: {exc}")
|
|
return 1
|
|
|
|
# If debug logging is enabled, also emit the richer debug dump.
|
|
try:
|
|
if hasattr(ctx, "debug_table_state"):
|
|
ctx.debug_table_state(label or ".table")
|
|
except Exception:
|
|
pass
|
|
|
|
return 0
|
|
|
|
|
|
CMDLET = Cmdlet(
|
|
name=".table",
|
|
summary="Dump pipeline table state for debugging",
|
|
usage=".table [label]",
|
|
arg=[
|
|
CmdletArg(
|
|
name="label",
|
|
type="string",
|
|
description="Optional label to include in the dump",
|
|
required=False,
|
|
),
|
|
],
|
|
)
|
|
|
|
CMDLET.exec = _run
|