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

weilee pushed a commit to branch v3-0-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v3-0-test by this push:
     new 644aa7caff8 [v3-0-test] fix: task-sdk AssetEventOperations.get to use 
alias_name when specified (#52303) (#52324)
644aa7caff8 is described below

commit 644aa7caff84c1d859a05774c95f47173d9fd4b7
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Jun 27 17:11:40 2025 +0800

    [v3-0-test] fix: task-sdk AssetEventOperations.get to use alias_name when 
specified (#52303) (#52324)
    
    * Fix AssetEventOperations.get to use alias_name when specified
    
    * Use syntax compatible with python 3.9
    (cherry picked from commit ac9e968fe85cf43717d280f303470eb5268ca9ca)
    
    Co-authored-by: Justyn Harriman <jharri...@openai.com>
---
 task-sdk/src/airflow/sdk/api/client.py     |  2 +-
 task-sdk/tests/task_sdk/api/test_client.py | 47 ++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 1 deletion(-)

diff --git a/task-sdk/src/airflow/sdk/api/client.py 
b/task-sdk/src/airflow/sdk/api/client.py
index 89bee9807e1..36489d3d79d 100644
--- a/task-sdk/src/airflow/sdk/api/client.py
+++ b/task-sdk/src/airflow/sdk/api/client.py
@@ -546,7 +546,7 @@ class AssetEventOperations:
         if name or uri:
             resp = self.client.get("asset-events/by-asset", params={"name": 
name, "uri": uri})
         elif alias_name:
-            resp = self.client.get("asset-events/by-asset-alias", 
params={"name": name})
+            resp = self.client.get("asset-events/by-asset-alias", 
params={"name": alias_name})
         else:
             raise ValueError("Either `name`, `uri` or `alias_name` must be 
provided")
 
diff --git a/task-sdk/tests/task_sdk/api/test_client.py 
b/task-sdk/tests/task_sdk/api/test_client.py
index ce532919749..7fa17ba1c4d 100644
--- a/task-sdk/tests/task_sdk/api/test_client.py
+++ b/task-sdk/tests/task_sdk/api/test_client.py
@@ -28,6 +28,7 @@ from task_sdk import make_client, make_client_w_dry_run, 
make_client_w_responses
 
 from airflow.sdk.api.client import RemoteValidationError, ServerResponseError
 from airflow.sdk.api.datamodels._generated import (
+    AssetEventsResponse,
     AssetResponse,
     ConnectionResponse,
     DagRunState,
@@ -875,6 +876,52 @@ class TestConnectionOperations:
         assert result.error == ErrorType.CONNECTION_NOT_FOUND
 
 
+class TestAssetEventOperations:
+    @pytest.mark.parametrize(
+        "request_params",
+        [
+            ({"name": "this_asset", "uri": "s3://bucket/key"}),
+            ({"alias_name": "this_asset_alias"}),
+        ],
+    )
+    def test_by_name_get_success(self, request_params):
+        def handle_request(request: httpx.Request) -> httpx.Response:
+            params = request.url.params
+            if request.url.path == "/asset-events/by-asset":
+                assert params.get("name") == request_params.get("name")
+                assert params.get("uri") == request_params.get("uri")
+            elif request.url.path == "/asset-events/by-asset-alias":
+                assert params.get("name") == request_params.get("alias_name")
+            else:
+                return httpx.Response(status_code=400, json={"detail": "Bad 
Request"})
+
+            return httpx.Response(
+                status_code=200,
+                json={
+                    "asset_events": [
+                        {
+                            "id": 1,
+                            "asset": {
+                                "name": "this_asset",
+                                "uri": "s3://bucket/key",
+                                "group": "asset",
+                            },
+                            "created_dagruns": [],
+                            "timestamp": "2023-01-01T00:00:00Z",
+                        }
+                    ]
+                },
+            )
+
+        client = make_client(transport=httpx.MockTransport(handle_request))
+        result = client.asset_events.get(**request_params)
+
+        assert isinstance(result, AssetEventsResponse)
+        assert len(result.asset_events) == 1
+        assert result.asset_events[0].asset.name == "this_asset"
+        assert result.asset_events[0].asset.uri == "s3://bucket/key"
+
+
 class TestAssetOperations:
     @pytest.mark.parametrize(
         "request_params",

Reply via email to