fix: migrate legacy usage column prefs
This commit is contained in:
+32
-23
@@ -257,16 +257,24 @@ def request_table_column_key(value: Any) -> str:
|
|||||||
return REQUEST_TABLE_COLUMN_TOKEN_MAP.get(token, "")
|
return REQUEST_TABLE_COLUMN_TOKEN_MAP.get(token, "")
|
||||||
|
|
||||||
|
|
||||||
|
def request_table_column_keys(value: Any) -> list[str]:
|
||||||
|
token = request_table_column_token(value)
|
||||||
|
if token == "usage":
|
||||||
|
return ["in", "out", "cache"]
|
||||||
|
column_key = REQUEST_TABLE_COLUMN_TOKEN_MAP.get(token, "")
|
||||||
|
return [column_key] if column_key else []
|
||||||
|
|
||||||
|
|
||||||
def request_table_column_order(value: Any) -> list[str]:
|
def request_table_column_order(value: Any) -> list[str]:
|
||||||
requested = value if isinstance(value, (list, tuple, set)) else []
|
requested = value if isinstance(value, (list, tuple, set)) else []
|
||||||
columns = []
|
columns = []
|
||||||
seen: set[str] = set()
|
seen: set[str] = set()
|
||||||
for item in requested:
|
for item in requested:
|
||||||
column_key = request_table_column_key(item)
|
for column_key in request_table_column_keys(item):
|
||||||
if not column_key or column_key in seen:
|
if not column_key or column_key in seen:
|
||||||
continue
|
continue
|
||||||
columns.append(column_key)
|
columns.append(column_key)
|
||||||
seen.add(column_key)
|
seen.add(column_key)
|
||||||
for column_key in REQUEST_TABLE_COLUMN_KEYS:
|
for column_key in REQUEST_TABLE_COLUMN_KEYS:
|
||||||
if column_key not in seen:
|
if column_key not in seen:
|
||||||
columns.append(column_key)
|
columns.append(column_key)
|
||||||
@@ -279,11 +287,11 @@ def request_table_hidden_columns(value: Any, columns: list[str]) -> list[str]:
|
|||||||
hidden = []
|
hidden = []
|
||||||
seen: set[str] = set()
|
seen: set[str] = set()
|
||||||
for item in requested:
|
for item in requested:
|
||||||
column_key = request_table_column_key(item)
|
for column_key in request_table_column_keys(item):
|
||||||
if not column_key or column_key not in allowed or column_key in seen:
|
if not column_key or column_key not in allowed or column_key in seen:
|
||||||
continue
|
continue
|
||||||
hidden.append(column_key)
|
hidden.append(column_key)
|
||||||
seen.add(column_key)
|
seen.add(column_key)
|
||||||
return hidden
|
return hidden
|
||||||
|
|
||||||
|
|
||||||
@@ -300,11 +308,11 @@ def normalize_request_table_preferences(data: Any) -> dict[str, Any]:
|
|||||||
legacy_visible = []
|
legacy_visible = []
|
||||||
seen: set[str] = set()
|
seen: set[str] = set()
|
||||||
for item in source.get("visible_columns") or []:
|
for item in source.get("visible_columns") or []:
|
||||||
column_key = request_table_column_key(item)
|
for column_key in request_table_column_keys(item):
|
||||||
if not column_key or column_key in seen:
|
if not column_key or column_key in seen:
|
||||||
continue
|
continue
|
||||||
legacy_visible.append(column_key)
|
legacy_visible.append(column_key)
|
||||||
seen.add(column_key)
|
seen.add(column_key)
|
||||||
columns = request_table_column_order(legacy_visible)
|
columns = request_table_column_order(legacy_visible)
|
||||||
hidden_columns = [column_key for column_key in columns if column_key not in seen]
|
hidden_columns = [column_key for column_key in columns if column_key not in seen]
|
||||||
else:
|
else:
|
||||||
@@ -342,17 +350,18 @@ def request_table_preferences_from_text(text: str) -> dict[str, Any]:
|
|||||||
token = token[1:].strip()
|
token = token[1:].strip()
|
||||||
if not token:
|
if not token:
|
||||||
continue
|
continue
|
||||||
column_key = request_table_column_key(token)
|
column_keys = request_table_column_keys(token)
|
||||||
if not column_key:
|
if not column_keys:
|
||||||
if hidden:
|
if hidden:
|
||||||
continue
|
continue
|
||||||
raise ValueError(f"line {line_number}: unknown request column {token!r}")
|
raise ValueError(f"line {line_number}: unknown request column {token!r}")
|
||||||
if column_key in seen:
|
for column_key in column_keys:
|
||||||
continue
|
if column_key in seen:
|
||||||
seen.add(column_key)
|
continue
|
||||||
columns.append(column_key)
|
seen.add(column_key)
|
||||||
if hidden:
|
columns.append(column_key)
|
||||||
hidden_columns.append(column_key)
|
if hidden:
|
||||||
|
hidden_columns.append(column_key)
|
||||||
if not columns:
|
if not columns:
|
||||||
raise ValueError("no request columns found in editor document")
|
raise ValueError("no request columns found in editor document")
|
||||||
missing = [column_key for column_key in REQUEST_TABLE_COLUMN_KEYS if column_key not in seen]
|
missing = [column_key for column_key in REQUEST_TABLE_COLUMN_KEYS if column_key not in seen]
|
||||||
|
|||||||
@@ -298,6 +298,12 @@ class CodexRetryGatewayTUITests(unittest.TestCase):
|
|||||||
self.assertEqual(prefs["columns"][:6], ["thread", "seq", "cache", "in", "out", "req_id"])
|
self.assertEqual(prefs["columns"][:6], ["thread", "seq", "cache", "in", "out", "req_id"])
|
||||||
self.assertIn("cache", prefs["hidden_columns"])
|
self.assertIn("cache", prefs["hidden_columns"])
|
||||||
|
|
||||||
|
def test_request_table_preferences_expand_legacy_usage_column(self) -> None:
|
||||||
|
mod = load_module()
|
||||||
|
prefs = mod.normalize_request_table_preferences({"visible_columns": ["seq", "usage", "status"]})
|
||||||
|
self.assertEqual(prefs["columns"][:5], ["seq", "in", "out", "cache", "status"])
|
||||||
|
self.assertEqual(prefs["hidden_columns"][:3], ["req_id", "resp_id", "thread"])
|
||||||
|
|
||||||
def test_sort_request_rows_supports_custom_column_and_missing_values(self) -> None:
|
def test_sort_request_rows_supports_custom_column_and_missing_values(self) -> None:
|
||||||
mod = load_module()
|
mod = load_module()
|
||||||
rows = [
|
rows = [
|
||||||
|
|||||||
Reference in New Issue
Block a user