log output lengths adjustment
frdel committed
Nov 17, 2025 at 11:44 UTC
964faad00653d389ea35c17e21f96b8379427a1d
1 file changed
+28
-23
python/helpers/log.py
+28
-23
@@ -36,9 +36,10 @@ ProgressUpdate = Literal["persistent", "temporary", "none"]
36
37
38
HEADING_MAX_LEN: int = 120
39
-CONTENT_MAX_LEN: int = 10000
39
+CONTENT_MAX_LEN: int = 15_000
40
+RESPONSE_CONTENT_MAX_LEN: int = 250_000
41
KEY_MAX_LEN: int = 60
41
-VALUE_MAX_LEN: int = 3000
42
+VALUE_MAX_LEN: int = 5000
43
PROGRESS_MAX_LEN: int = 120
44
45
@@ -93,18 +94,21 @@ def _truncate_value(val: T) -> T:
94
return truncated
95
96
96
-def _truncate_content(text: str | None) -> str:
97
+def _truncate_content(text: str | None, type: Type) -> str:
98
+
99
+ max_len = CONTENT_MAX_LEN if type != "response" else RESPONSE_CONTENT_MAX_LEN
100
+
101
if text is None:
102
return ""
103
raw = str(text)
100
- if len(raw) <= CONTENT_MAX_LEN:
104
+ if len(raw) <= max_len:
105
return raw
106
107
# Same dynamic replacement logic as value truncation
104
- removed = len(raw) - CONTENT_MAX_LEN
108
+ removed = len(raw) - max_len
109
while True:
110
replacement = f"\n\n<< {removed} Characters hidden >>\n\n"
107
- truncated = truncate_text_by_ratio(raw, CONTENT_MAX_LEN, replacement, ratio=0.3)
111
+ truncated = truncate_text_by_ratio(raw, max_len, replacement, ratio=0.3)
112
new_removed = len(raw) - (len(truncated) - len(replacement))
113
if new_removed == removed:
114
break
@@ -119,7 +123,7 @@ def _truncate_content(text: str | None) -> str:
123
class LogItem:
124
log: "Log"
125
no: int
122
- type: str
126
+ type: Type
127
heading: str = ""
128
content: str = ""
129
temp: bool = False
@@ -197,7 +201,7 @@ class Log:
201
kvps: dict | None = None,
202
temp: bool | None = None,
203
update_progress: ProgressUpdate | None = None,
200
- id: Optional[str] = None, # Add id parameter
204
+ id: Optional[str] = None,
205
**kwargs,
206
) -> LogItem:
207
@@ -226,17 +230,30 @@ class Log:
230
def _update_item(
231
self,
232
no: int,
229
- type: str | None = None,
233
+ type: Type | None = None,
234
heading: str | None = None,
235
content: str | None = None,
236
kvps: dict | None = None,
237
temp: bool | None = None,
238
update_progress: ProgressUpdate | None = None,
235
- id: Optional[str] = None, # Add id parameter
239
+ id: Optional[str] = None,
240
**kwargs,
241
):
242
item = self.logs[no]
243
244
+ if id is not None:
245
+ item.id = id
246
+
247
+ if type is not None:
248
+ item.type = type
249
+
250
+ if temp is not None:
251
+ item.temp = temp
252
+
253
+ if update_progress is not None:
254
+ item.update_progress = update_progress
255
+
256
+
257
# adjust all content before processing
258
if heading is not None:
259
heading = self._mask_recursive(heading)
@@ -244,7 +261,7 @@ class Log:
261
item.heading = heading
262
if content is not None:
263
content = self._mask_recursive(content)
247
- content = _truncate_content(content)
264
+ content = _truncate_content(content, item.type)
265
item.content = content
266
if kvps is not None:
267
kvps = OrderedDict(copy.deepcopy(kvps))
@@ -258,18 +275,6 @@ class Log:
275
kwargs = self._mask_recursive(kwargs)
276
item.kvps.update(kwargs)
277
261
- if type is not None:
262
- item.type = type
263
-
264
- if update_progress is not None:
265
- item.update_progress = update_progress
266
-
267
- if temp is not None:
268
- item.temp = temp
269
-
270
- if id is not None:
271
- item.id = id
272
-
278
self.updates += [item.no]
279
self._update_progress_from_item(item)
280