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