Add YAPF style + ignore, and format tracked Python files
This commit is contained in:
@@ -11,11 +11,19 @@ from cmdlet import register
|
||||
from cmdlet._shared import Cmdlet, CmdletArg
|
||||
import pipeline as ctx
|
||||
from SYS.logger import log
|
||||
from config import get_local_storage_path
|
||||
from SYS.config import get_local_storage_path
|
||||
|
||||
DEFAULT_LIMIT = 100
|
||||
WORKER_STATUS_FILTERS = {"running", "completed", "error", "cancelled"}
|
||||
HELP_FLAGS = {"-?", "/?", "--help", "-h", "help", "--cmdlet"}
|
||||
WORKER_STATUS_FILTERS = {"running",
|
||||
"completed",
|
||||
"error",
|
||||
"cancelled"}
|
||||
HELP_FLAGS = {"-?",
|
||||
"/?",
|
||||
"--help",
|
||||
"-h",
|
||||
"help",
|
||||
"--cmdlet"}
|
||||
|
||||
CMDLET = Cmdlet(
|
||||
name=".worker",
|
||||
@@ -28,14 +36,21 @@ CMDLET = Cmdlet(
|
||||
requires_db=True,
|
||||
),
|
||||
CmdletArg(
|
||||
"limit", type="integer", description="Limit results (default: 100)", requires_db=True
|
||||
"limit",
|
||||
type="integer",
|
||||
description="Limit results (default: 100)",
|
||||
requires_db=True
|
||||
),
|
||||
CmdletArg(
|
||||
"@N",
|
||||
description="Select worker by index (1-based) and display full logs",
|
||||
requires_db=True,
|
||||
),
|
||||
CmdletArg("-id", description="Show full logs for a specific worker", requires_db=True),
|
||||
CmdletArg(
|
||||
"-id",
|
||||
description="Show full logs for a specific worker",
|
||||
requires_db=True
|
||||
),
|
||||
CmdletArg(
|
||||
"-clear",
|
||||
type="flag",
|
||||
@@ -75,7 +90,9 @@ def _run(result: Any, args: Sequence[str], config: Dict[str, Any]) -> int:
|
||||
"""Display workers table or show detailed logs for a specific worker."""
|
||||
args_list = [str(arg) for arg in (args or [])]
|
||||
selection_indices = ctx.get_last_selection()
|
||||
selection_requested = bool(selection_indices) and isinstance(result, list) and len(result) > 0
|
||||
selection_requested = bool(selection_indices) and isinstance(result,
|
||||
list
|
||||
) and len(result) > 0
|
||||
|
||||
if _has_help_flag(args_list):
|
||||
ctx.emit(CMDLET.__dict__)
|
||||
@@ -130,16 +147,20 @@ def _parse_worker_args(args_list: Sequence[str]) -> WorkerCommandOptions:
|
||||
while i < len(args_list):
|
||||
arg = args_list[i]
|
||||
low = arg.lower()
|
||||
if low in {"-limit", "--limit"} and i + 1 < len(args_list):
|
||||
if low in {"-limit",
|
||||
"--limit"} and i + 1 < len(args_list):
|
||||
options.limit = _normalize_limit(args_list[i + 1])
|
||||
i += 2
|
||||
elif low in {"-id", "--id"} and i + 1 < len(args_list):
|
||||
elif low in {"-id",
|
||||
"--id"} and i + 1 < len(args_list):
|
||||
options.worker_id = args_list[i + 1]
|
||||
i += 2
|
||||
elif low in {"-clear", "--clear"}:
|
||||
elif low in {"-clear",
|
||||
"--clear"}:
|
||||
options.clear = True
|
||||
i += 1
|
||||
elif low in {"-status", "--status"} and i + 1 < len(args_list):
|
||||
elif low in {"-status",
|
||||
"--status"} and i + 1 < len(args_list):
|
||||
options.status = args_list[i + 1].lower()
|
||||
i += 2
|
||||
elif low in WORKER_STATUS_FILTERS:
|
||||
@@ -163,7 +184,9 @@ def _normalize_limit(value: Any) -> int:
|
||||
def _render_worker_list(db, status_filter: str | None, limit: int) -> int:
|
||||
workers = db.get_all_workers(limit=limit)
|
||||
if status_filter:
|
||||
workers = [w for w in workers if str(w.get("status", "")).lower() == status_filter]
|
||||
workers = [
|
||||
w for w in workers if str(w.get("status", "")).lower() == status_filter
|
||||
]
|
||||
|
||||
if not workers:
|
||||
log("No workers found", file=sys.stderr)
|
||||
@@ -179,14 +202,22 @@ def _render_worker_list(db, status_filter: str | None, limit: int) -> int:
|
||||
|
||||
item = {
|
||||
"columns": [
|
||||
("Status", worker.get("status", "")),
|
||||
("Pipe", _summarize_pipe(worker.get("pipe"))),
|
||||
("Date", date_str),
|
||||
("Start Time", start_time),
|
||||
("End Time", end_time),
|
||||
("Status",
|
||||
worker.get("status",
|
||||
"")),
|
||||
("Pipe",
|
||||
_summarize_pipe(worker.get("pipe"))),
|
||||
("Date",
|
||||
date_str),
|
||||
("Start Time",
|
||||
start_time),
|
||||
("End Time",
|
||||
end_time),
|
||||
],
|
||||
"__worker_metadata": worker,
|
||||
"_selection_args": ["-id", worker.get("worker_id")],
|
||||
"__worker_metadata":
|
||||
worker,
|
||||
"_selection_args": ["-id",
|
||||
worker.get("worker_id")],
|
||||
}
|
||||
ctx.emit(item)
|
||||
return 0
|
||||
@@ -206,8 +237,8 @@ def _render_worker_selection(db, selected_items: Any) -> int:
|
||||
try:
|
||||
events = (
|
||||
db.get_worker_events(worker.get("worker_id"))
|
||||
if hasattr(db, "get_worker_events")
|
||||
else []
|
||||
if hasattr(db,
|
||||
"get_worker_events") else []
|
||||
)
|
||||
except Exception:
|
||||
events = []
|
||||
@@ -267,9 +298,12 @@ def _emit_worker_detail(worker: Dict[str, Any], events: List[Dict[str, Any]]) ->
|
||||
|
||||
item = {
|
||||
"columns": [
|
||||
("Time", timestamp),
|
||||
("Level", level),
|
||||
("Message", message),
|
||||
("Time",
|
||||
timestamp),
|
||||
("Level",
|
||||
level),
|
||||
("Message",
|
||||
message),
|
||||
]
|
||||
}
|
||||
ctx.emit(item)
|
||||
@@ -281,7 +315,7 @@ def _summarize_pipe(pipe_value: Any, limit: int = 60) -> str:
|
||||
text = str(pipe_value or "").strip()
|
||||
if not text:
|
||||
return "(none)"
|
||||
return text if len(text) <= limit else text[: limit - 3] + "..."
|
||||
return text if len(text) <= limit else text[:limit - 3] + "..."
|
||||
|
||||
|
||||
def _format_event_timestamp(raw_timestamp: Any) -> str:
|
||||
|
||||
Reference in New Issue
Block a user