This is an automated email from the ASF dual-hosted git repository.

kaxil 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 1c40bfb27ec Access AgentRunResult.usage as a property in common.ai 
logging (#68405)
1c40bfb27ec is described below

commit 1c40bfb27eca87e4a9b939db5de3c254dd32ec95
Author: Kaxil Naik <[email protected]>
AuthorDate: Fri Jun 12 20:45:19 2026 +0100

    Access AgentRunResult.usage as a property in common.ai logging (#68405)
    
    pydantic-ai deprecated calling AgentRunResult.usage() as a method
    (PydanticAIDeprecationWarning); it is a property since the version range
    already covered by the provider floor (pydantic-ai-slim>=1.99.0 exposes
    both forms). Drop the parentheses at the call site and update the test
    mocks to set .usage as an attribute instead of a return_value.
---
 .../common/ai/src/airflow/providers/common/ai/utils/logging.py      | 2 +-
 providers/common/ai/tests/unit/common/ai/conftest.py                | 6 ++----
 providers/common/ai/tests/unit/common/ai/decorators/test_agent.py   | 4 +---
 providers/common/ai/tests/unit/common/ai/decorators/test_llm.py     | 4 +---
 .../common/ai/tests/unit/common/ai/decorators/test_llm_branch.py    | 4 +---
 .../ai/tests/unit/common/ai/decorators/test_llm_file_analysis.py    | 2 +-
 .../ai/tests/unit/common/ai/decorators/test_llm_schema_compare.py   | 4 +---
 providers/common/ai/tests/unit/common/ai/decorators/test_llm_sql.py | 4 +---
 providers/common/ai/tests/unit/common/ai/operators/test_agent.py    | 4 +---
 providers/common/ai/tests/unit/common/ai/operators/test_llm.py      | 4 +---
 .../common/ai/tests/unit/common/ai/operators/test_llm_branch.py     | 4 +---
 .../ai/tests/unit/common/ai/operators/test_llm_file_analysis.py     | 2 +-
 .../ai/tests/unit/common/ai/operators/test_llm_schema_compare.py    | 4 +---
 providers/common/ai/tests/unit/common/ai/operators/test_llm_sql.py  | 4 +---
 providers/common/ai/tests/unit/common/ai/utils/test_logging.py      | 2 +-
 15 files changed, 16 insertions(+), 38 deletions(-)

diff --git 
a/providers/common/ai/src/airflow/providers/common/ai/utils/logging.py 
b/providers/common/ai/src/airflow/providers/common/ai/utils/logging.py
index 47cabf7ce6c..52dcf1d9ea0 100644
--- a/providers/common/ai/src/airflow/providers/common/ai/utils/logging.py
+++ b/providers/common/ai/src/airflow/providers/common/ai/utils/logging.py
@@ -36,7 +36,7 @@ _MAX_OUTPUT_LEN = 500
 
 def log_run_summary(logger: Logger | logging.Logger, result: 
AgentRunResult[Any]) -> None:
     """Log model name, token usage, and tool call sequence from an agent 
run."""
-    usage = result.usage()
+    usage = result.usage
     model_name = getattr(result.response, "model_name", "unknown")
     logger.info(
         "::group::LLM run complete: model=%s, requests=%s, tool_calls=%s, "
diff --git a/providers/common/ai/tests/unit/common/ai/conftest.py 
b/providers/common/ai/tests/unit/common/ai/conftest.py
index 5a0f141a761..e01654f9075 100644
--- a/providers/common/ai/tests/unit/common/ai/conftest.py
+++ b/providers/common/ai/tests/unit/common/ai/conftest.py
@@ -34,14 +34,12 @@ def isolate_hook_lineage_collector(hook_lineage_collector):
 def make_mock_run_result(output):
     """Create a mock AgentRunResult compatible with log_run_summary.
 
-    Returns a MagicMock with .output, .usage(), .response, and .all_messages()
+    Returns a MagicMock with .output, .usage, .response, and .all_messages()
     configured so that log_run_summary can read them without error.
     """
     mock_result = MagicMock()
     mock_result.output = output
-    mock_result.usage.return_value = MagicMock(
-        requests=1, tool_calls=0, input_tokens=0, output_tokens=0, 
total_tokens=0
-    )
+    mock_result.usage = MagicMock(requests=1, tool_calls=0, input_tokens=0, 
output_tokens=0, total_tokens=0)
     mock_result.response = MagicMock(model_name="test-model")
     mock_result.all_messages.return_value = []
     return mock_result
diff --git a/providers/common/ai/tests/unit/common/ai/decorators/test_agent.py 
b/providers/common/ai/tests/unit/common/ai/decorators/test_agent.py
index 25a176e3297..1a9d82bd065 100644
--- a/providers/common/ai/tests/unit/common/ai/decorators/test_agent.py
+++ b/providers/common/ai/tests/unit/common/ai/decorators/test_agent.py
@@ -44,9 +44,7 @@ def _make_mock_run_result(output):
     """Create a mock AgentRunResult compatible with log_run_summary."""
     mock_result = MagicMock()
     mock_result.output = output
-    mock_result.usage.return_value = MagicMock(
-        requests=1, tool_calls=0, input_tokens=0, output_tokens=0, 
total_tokens=0
-    )
+    mock_result.usage = MagicMock(requests=1, tool_calls=0, input_tokens=0, 
output_tokens=0, total_tokens=0)
     mock_result.response = MagicMock(model_name="test-model")
     mock_result.all_messages.return_value = []
     return mock_result
diff --git a/providers/common/ai/tests/unit/common/ai/decorators/test_llm.py 
b/providers/common/ai/tests/unit/common/ai/decorators/test_llm.py
index 67ea067d160..9a1c389fef5 100644
--- a/providers/common/ai/tests/unit/common/ai/decorators/test_llm.py
+++ b/providers/common/ai/tests/unit/common/ai/decorators/test_llm.py
@@ -28,9 +28,7 @@ def _make_mock_run_result(output):
     """Create a mock AgentRunResult compatible with log_run_summary."""
     mock_result = MagicMock()
     mock_result.output = output
-    mock_result.usage.return_value = MagicMock(
-        requests=1, tool_calls=0, input_tokens=0, output_tokens=0, 
total_tokens=0
-    )
+    mock_result.usage = MagicMock(requests=1, tool_calls=0, input_tokens=0, 
output_tokens=0, total_tokens=0)
     mock_result.response = MagicMock(model_name="test-model")
     mock_result.all_messages.return_value = []
     return mock_result
diff --git 
a/providers/common/ai/tests/unit/common/ai/decorators/test_llm_branch.py 
b/providers/common/ai/tests/unit/common/ai/decorators/test_llm_branch.py
index 023af790d36..37238bff00b 100644
--- a/providers/common/ai/tests/unit/common/ai/decorators/test_llm_branch.py
+++ b/providers/common/ai/tests/unit/common/ai/decorators/test_llm_branch.py
@@ -30,9 +30,7 @@ def _make_mock_run_result(output):
     """Create a mock AgentRunResult compatible with log_run_summary."""
     mock_result = MagicMock()
     mock_result.output = output
-    mock_result.usage.return_value = MagicMock(
-        requests=1, tool_calls=0, input_tokens=0, output_tokens=0, 
total_tokens=0
-    )
+    mock_result.usage = MagicMock(requests=1, tool_calls=0, input_tokens=0, 
output_tokens=0, total_tokens=0)
     mock_result.response = MagicMock(model_name="test-model")
     mock_result.all_messages.return_value = []
     return mock_result
diff --git 
a/providers/common/ai/tests/unit/common/ai/decorators/test_llm_file_analysis.py 
b/providers/common/ai/tests/unit/common/ai/decorators/test_llm_file_analysis.py
index 41fc750d505..cac472b7657 100644
--- 
a/providers/common/ai/tests/unit/common/ai/decorators/test_llm_file_analysis.py
+++ 
b/providers/common/ai/tests/unit/common/ai/decorators/test_llm_file_analysis.py
@@ -27,7 +27,7 @@ from airflow.providers.common.ai.utils.file_analysis import 
FileAnalysisRequest
 def _make_mock_run_result(output):
     mock_result = MagicMock(spec=["output", "usage", "response", 
"all_messages"])
     mock_result.output = output
-    mock_result.usage.return_value = MagicMock(
+    mock_result.usage = MagicMock(
         spec=["requests", "tool_calls", "input_tokens", "output_tokens", 
"total_tokens"],
         requests=1,
         tool_calls=0,
diff --git 
a/providers/common/ai/tests/unit/common/ai/decorators/test_llm_schema_compare.py
 
b/providers/common/ai/tests/unit/common/ai/decorators/test_llm_schema_compare.py
index df3c3f571c2..0664b6c52b1 100644
--- 
a/providers/common/ai/tests/unit/common/ai/decorators/test_llm_schema_compare.py
+++ 
b/providers/common/ai/tests/unit/common/ai/decorators/test_llm_schema_compare.py
@@ -32,9 +32,7 @@ def _make_mock_run_result(output):
     """Create a mock AgentRunResult compatible with log_run_summary."""
     mock_result = MagicMock()
     mock_result.output = output
-    mock_result.usage.return_value = MagicMock(
-        requests=1, tool_calls=0, input_tokens=0, output_tokens=0, 
total_tokens=0
-    )
+    mock_result.usage = MagicMock(requests=1, tool_calls=0, input_tokens=0, 
output_tokens=0, total_tokens=0)
     mock_result.response = MagicMock(model_name="test-model")
     mock_result.all_messages.return_value = []
     return mock_result
diff --git 
a/providers/common/ai/tests/unit/common/ai/decorators/test_llm_sql.py 
b/providers/common/ai/tests/unit/common/ai/decorators/test_llm_sql.py
index 5b2e4b6e6e3..d44b5d016f5 100644
--- a/providers/common/ai/tests/unit/common/ai/decorators/test_llm_sql.py
+++ b/providers/common/ai/tests/unit/common/ai/decorators/test_llm_sql.py
@@ -28,9 +28,7 @@ def _make_mock_run_result(output):
     """Create a mock AgentRunResult compatible with log_run_summary."""
     mock_result = MagicMock()
     mock_result.output = output
-    mock_result.usage.return_value = MagicMock(
-        requests=1, tool_calls=0, input_tokens=0, output_tokens=0, 
total_tokens=0
-    )
+    mock_result.usage = MagicMock(requests=1, tool_calls=0, input_tokens=0, 
output_tokens=0, total_tokens=0)
     mock_result.response = MagicMock(model_name="test-model")
     mock_result.all_messages.return_value = []
     return mock_result
diff --git a/providers/common/ai/tests/unit/common/ai/operators/test_agent.py 
b/providers/common/ai/tests/unit/common/ai/operators/test_agent.py
index 4a0b08cf148..57eaa552238 100644
--- a/providers/common/ai/tests/unit/common/ai/operators/test_agent.py
+++ b/providers/common/ai/tests/unit/common/ai/operators/test_agent.py
@@ -48,9 +48,7 @@ def _make_mock_run_result(output):
     """Create a mock AgentRunResult compatible with log_run_summary."""
     mock_result = MagicMock()
     mock_result.output = output
-    mock_result.usage.return_value = MagicMock(
-        requests=1, tool_calls=0, input_tokens=0, output_tokens=0, 
total_tokens=0
-    )
+    mock_result.usage = MagicMock(requests=1, tool_calls=0, input_tokens=0, 
output_tokens=0, total_tokens=0)
     mock_result.response = MagicMock(model_name="test-model")
     mock_result.all_messages.return_value = []
     return mock_result
diff --git a/providers/common/ai/tests/unit/common/ai/operators/test_llm.py 
b/providers/common/ai/tests/unit/common/ai/operators/test_llm.py
index 2a707752fdf..d5ef8228d35 100644
--- a/providers/common/ai/tests/unit/common/ai/operators/test_llm.py
+++ b/providers/common/ai/tests/unit/common/ai/operators/test_llm.py
@@ -57,9 +57,7 @@ def _make_mock_run_result(output):
     """Create a mock AgentRunResult compatible with log_run_summary."""
     mock_result = MagicMock()
     mock_result.output = output
-    mock_result.usage.return_value = MagicMock(
-        requests=1, tool_calls=0, input_tokens=0, output_tokens=0, 
total_tokens=0
-    )
+    mock_result.usage = MagicMock(requests=1, tool_calls=0, input_tokens=0, 
output_tokens=0, total_tokens=0)
     mock_result.response = MagicMock(model_name="test-model")
     mock_result.all_messages.return_value = []
     return mock_result
diff --git 
a/providers/common/ai/tests/unit/common/ai/operators/test_llm_branch.py 
b/providers/common/ai/tests/unit/common/ai/operators/test_llm_branch.py
index 82f710cc10a..390137e9fc9 100644
--- a/providers/common/ai/tests/unit/common/ai/operators/test_llm_branch.py
+++ b/providers/common/ai/tests/unit/common/ai/operators/test_llm_branch.py
@@ -29,9 +29,7 @@ def _make_mock_run_result(output):
     """Create a mock AgentRunResult compatible with log_run_summary."""
     mock_result = MagicMock()
     mock_result.output = output
-    mock_result.usage.return_value = MagicMock(
-        requests=1, tool_calls=0, input_tokens=0, output_tokens=0, 
total_tokens=0
-    )
+    mock_result.usage = MagicMock(requests=1, tool_calls=0, input_tokens=0, 
output_tokens=0, total_tokens=0)
     mock_result.response = MagicMock(model_name="test-model")
     mock_result.all_messages.return_value = []
     return mock_result
diff --git 
a/providers/common/ai/tests/unit/common/ai/operators/test_llm_file_analysis.py 
b/providers/common/ai/tests/unit/common/ai/operators/test_llm_file_analysis.py
index 6c970e43263..7c955a160b4 100644
--- 
a/providers/common/ai/tests/unit/common/ai/operators/test_llm_file_analysis.py
+++ 
b/providers/common/ai/tests/unit/common/ai/operators/test_llm_file_analysis.py
@@ -46,7 +46,7 @@ class Summary(BaseModel):
 def _make_mock_run_result(output):
     mock_result = MagicMock(spec=["output", "usage", "response", 
"all_messages"])
     mock_result.output = output
-    mock_result.usage.return_value = MagicMock(
+    mock_result.usage = MagicMock(
         spec=["requests", "tool_calls", "input_tokens", "output_tokens", 
"total_tokens"],
         requests=1,
         tool_calls=0,
diff --git 
a/providers/common/ai/tests/unit/common/ai/operators/test_llm_schema_compare.py 
b/providers/common/ai/tests/unit/common/ai/operators/test_llm_schema_compare.py
index d719162bc00..c7a23de5838 100644
--- 
a/providers/common/ai/tests/unit/common/ai/operators/test_llm_schema_compare.py
+++ 
b/providers/common/ai/tests/unit/common/ai/operators/test_llm_schema_compare.py
@@ -35,9 +35,7 @@ def _make_mock_run_result(output):
     """Create a mock AgentRunResult compatible with log_run_summary."""
     mock_result = MagicMock()
     mock_result.output = output
-    mock_result.usage.return_value = MagicMock(
-        requests=1, tool_calls=0, input_tokens=0, output_tokens=0, 
total_tokens=0
-    )
+    mock_result.usage = MagicMock(requests=1, tool_calls=0, input_tokens=0, 
output_tokens=0, total_tokens=0)
     mock_result.response = MagicMock(model_name="test-model")
     mock_result.all_messages.return_value = []
     return mock_result
diff --git a/providers/common/ai/tests/unit/common/ai/operators/test_llm_sql.py 
b/providers/common/ai/tests/unit/common/ai/operators/test_llm_sql.py
index e8e31c6f5de..a994ae3d1cd 100644
--- a/providers/common/ai/tests/unit/common/ai/operators/test_llm_sql.py
+++ b/providers/common/ai/tests/unit/common/ai/operators/test_llm_sql.py
@@ -37,9 +37,7 @@ def _make_mock_run_result(output):
     """Create a mock AgentRunResult compatible with log_run_summary."""
     mock_result = MagicMock()
     mock_result.output = output
-    mock_result.usage.return_value = MagicMock(
-        requests=1, tool_calls=0, input_tokens=0, output_tokens=0, 
total_tokens=0
-    )
+    mock_result.usage = MagicMock(requests=1, tool_calls=0, input_tokens=0, 
output_tokens=0, total_tokens=0)
     mock_result.response = MagicMock(model_name="test-model")
     mock_result.all_messages.return_value = []
     return mock_result
diff --git a/providers/common/ai/tests/unit/common/ai/utils/test_logging.py 
b/providers/common/ai/tests/unit/common/ai/utils/test_logging.py
index 230335a0e02..bbc91df0850 100644
--- a/providers/common/ai/tests/unit/common/ai/utils/test_logging.py
+++ b/providers/common/ai/tests/unit/common/ai/utils/test_logging.py
@@ -44,7 +44,7 @@ def _make_mock_result(model_name="gpt-5", tool_names=None, 
usage_kwargs=None):
         "total_tokens": 3359,
     }
     result = MagicMock()
-    result.usage.return_value = MagicMock(**usage_kwargs)
+    result.usage = MagicMock(**usage_kwargs)
     result.response = MagicMock(model_name=model_name)
 
     messages: list = []

Reply via email to