jscheffl commented on code in PR #59999:
URL: https://github.com/apache/airflow/pull/59999#discussion_r2659844170
##########
airflow-core/src/airflow/serialization/helpers.py:
##########
@@ -29,6 +30,33 @@
from airflow.timetables.base import Timetable as CoreTimetable
+def truncate_rendered_value(rendered: Union[str, bytes, Sequence], max_length:
int) -> str:
+ """
+ Truncate rendered value with a reasonable minimum length to avoid edge
cases.
+
+ Args:
+ rendered: The rendered value to truncate
+ max_length: The maximum allowed length for the output
+
+ Returns:
+ Truncated string that respects the max_length constraint
+ """
+ # Set a reasonable minimum to avoid complex edge cases with very small
values
+ if max_length < 100:
+ max_length = 100
+
+ prefix = "Truncated. You can change this behaviour in
[core]max_templated_field_length. "
+ suffix = "... "
+
+ available_length = max_length - len(prefix) - len(suffix)
+ if available_length <= 0:
+ return (prefix + suffix)[:max_length]
+
+ content_length = max(0, available_length)
+ content_part = rendered[:content_length]
Review Comment:
I assume this is a bit over-complicated. Frmot he prefix and suffix we know
that available length can not be negative.
```suggestion
content_part = repr(rendered)[:available_length]
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]