This is an automated email from the ASF dual-hosted git repository.
jasonliu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new ff03c74542f Fix Triggerer crashing if Trigger uses builtin print
function (#60258)
ff03c74542f is described below
commit ff03c74542f4e8f99b3329eb169ba990255d6e81
Author: Henry Chen <[email protected]>
AuthorDate: Tue Feb 10 14:12:05 2026 +0800
Fix Triggerer crashing if Trigger uses builtin print function (#60258)
* fix typeerror when call the print func
* add unit test
---
.../logging/src/airflow_shared/logging/percent_formatter.py | 9 ++++-----
shared/logging/tests/logging/test_percent_formatter.py | 11 +++++++++++
2 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/shared/logging/src/airflow_shared/logging/percent_formatter.py
b/shared/logging/src/airflow_shared/logging/percent_formatter.py
index 78e4b82a810..ee9195e59b5 100644
--- a/shared/logging/src/airflow_shared/logging/percent_formatter.py
+++ b/shared/logging/src/airflow_shared/logging/percent_formatter.py
@@ -54,16 +54,15 @@ class _LazyLogRecordDict(collections.abc.Mapping):
# logging would
#
https://github.com/python/cpython/blob/d3c888b4ec15dbd7d6b6ef4f15b558af77c228af/Lib/logging/__init__.py#L1652C34-L1652C48
if key == "lineno":
- return self.event.get("lineno", 0)
+ return self.event.get("lineno") or 0
if key == "filename":
return self.event.get("filename", "(unknown file)")
if key == "funcName":
return self.event.get("funcName", "(unknown function)")
-
if key in PercentFormatRender.callsite_parameters:
- return
self.event.get(PercentFormatRender.callsite_parameters[key].value)
+ return
self.event.get(PercentFormatRender.callsite_parameters[key].value, "(unknown)")
if key == "name":
- return self.event.get("logger") or self.event.get("logger_name")
+ return self.event.get("logger") or self.event.get("logger_name",
"(unknown)")
if key == "levelname":
return self.event.get("level", self.method_name).upper()
if key == "asctime" or key == "created":
@@ -85,7 +84,7 @@ class _LazyLogRecordDict(collections.abc.Mapping):
return ""
return self.level_styles.get(self.event.get("level",
self.method_name), "")
- return self.event[key]
+ return self.event.get(key)
def __iter__(self):
return self.event.__iter__()
diff --git a/shared/logging/tests/logging/test_percent_formatter.py
b/shared/logging/tests/logging/test_percent_formatter.py
index c2ce9c50ee3..3a3ae84f562 100644
--- a/shared/logging/tests/logging/test_percent_formatter.py
+++ b/shared/logging/tests/logging/test_percent_formatter.py
@@ -29,3 +29,14 @@ class TestPercentFormatRender:
formatted = fmter(mock.Mock(name="Logger"), "info", {"event": "our
msg"})
assert formatted == "(unknown file):0 our msg"
+
+ def test_lineno_is_none(self):
+ fmter = PercentFormatRender("%(filename)s:%(lineno)d %(message)s")
+
+ formatted = fmter(
+ mock.Mock(name="Logger"),
+ "info",
+ {"event": "our msg", "filename": "test.py", "lineno": None},
+ )
+
+ assert formatted == "test.py:0 our msg"