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

eladkal 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 fba15d6f04a fix(mypy): Pass parameters to Kubernetes methods 
conditionally (#64242)
fba15d6f04a is described below

commit fba15d6f04a13b4e9f53b2b7edb2811764fcc42a
Author: Amogh Desai <[email protected]>
AuthorDate: Thu Mar 26 15:45:14 2026 +0530

    fix(mypy): Pass parameters to Kubernetes methods conditionally (#64242)
    
    * Pass parameters to k8s methods conditionally to fix mypy
---
 .../providers/cncf/kubernetes/hooks/kubernetes.py  | 37 +++++++++++++---------
 .../unit/cncf/kubernetes/hooks/test_kubernetes.py  |  2 --
 .../google/cloud/hooks/test_kubernetes_engine.py   |  4 +--
 3 files changed, 23 insertions(+), 20 deletions(-)

diff --git 
a/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/hooks/kubernetes.py
 
b/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/hooks/kubernetes.py
index 1c608a8f93c..13926d0d386 100644
--- 
a/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/hooks/kubernetes.py
+++ 
b/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/hooks/kubernetes.py
@@ -1040,15 +1040,19 @@ class AsyncKubernetesHook(KubernetesHook):
                 # (e.g. binary data, truncated multi-byte sequences).
                 # kubernetes_asyncio's default decoding uses strict UTF-8 which
                 # crashes the task in those cases.
-                raw_resp: ClientResponse = await 
v1_api.read_namespaced_pod_log(
-                    name=name,
-                    namespace=namespace,
-                    container=container_name,
-                    follow=False,
-                    timestamps=True,
-                    since_seconds=since_seconds,
-                    _preload_content=False,
-                )  # type: ignore  # _preload_content=False makes returning 
ClientResponse instead of str!
+                kwargs = {
+                    "name": name,
+                    "namespace": namespace,
+                    "follow": False,
+                    "timestamps": True,
+                    "_preload_content": False,
+                }
+                if container_name is not None:
+                    kwargs["container"] = container_name
+                if since_seconds is not None:
+                    kwargs["since_seconds"] = since_seconds
+
+                raw_resp: ClientResponse = await 
v1_api.read_namespaced_pod_log(**kwargs)  # type: ignore  # 
_preload_content=False makes returning ClientResponse instead of str!
                 raw_bytes = await raw_resp.read()
                 logs = raw_bytes.decode("utf-8", errors="replace")
                 logs_list: list[str] = logs.splitlines()
@@ -1070,12 +1074,15 @@ class AsyncKubernetesHook(KubernetesHook):
         async with self.get_conn() as connection:
             try:
                 v1_api = async_client.CoreV1Api(connection)
-                events: CoreV1EventList = await v1_api.list_namespaced_event(
-                    field_selector=f"involvedObject.name={name}",
-                    namespace=namespace,
-                    resource_version=resource_version,
-                    resource_version_match="NotOlderThan" if resource_version 
else None,
-                )
+                kwargs = {
+                    "field_selector": f"involvedObject.name={name}",
+                    "namespace": namespace,
+                }
+                if resource_version is not None:
+                    kwargs["resource_version"] = resource_version
+                    kwargs["resource_version_match"] = "NotOlderThan"
+
+                events: CoreV1EventList = await 
v1_api.list_namespaced_event(**kwargs)
                 return events
             except HTTPError as e:
                 if hasattr(e, "status") and e.status == 403:
diff --git 
a/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/hooks/test_kubernetes.py 
b/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/hooks/test_kubernetes.py
index 1290eaa2d53..850610ace27 100644
--- 
a/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/hooks/test_kubernetes.py
+++ 
b/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/hooks/test_kubernetes.py
@@ -1186,8 +1186,6 @@ class TestAsyncKubernetesHook:
         mock_list_namespaced_event.assert_called_once_with(
             field_selector=f"involvedObject.name={POD_NAME}",
             namespace=NAMESPACE,
-            resource_version=None,
-            resource_version_match=None,
         )
         assert result == mock_events
 
diff --git 
a/providers/google/tests/unit/google/cloud/hooks/test_kubernetes_engine.py 
b/providers/google/tests/unit/google/cloud/hooks/test_kubernetes_engine.py
index 6497bd7ceb4..8e6a747966d 100644
--- a/providers/google/tests/unit/google/cloud/hooks/test_kubernetes_engine.py
+++ b/providers/google/tests/unit/google/cloud/hooks/test_kubernetes_engine.py
@@ -538,13 +538,11 @@ class TestGKEKubernetesAsyncHook:
 
         get_conn_mock.assert_called_once_with()
         read_namespaced_pod_log.assert_called_with(
-            _preload_content=False,
             name=POD_NAME,
             namespace=POD_NAMESPACE,
             follow=False,
             timestamps=True,
-            container=None,
-            since_seconds=None,
+            _preload_content=False,
         )
         assert "Test string #1" in logs
         assert "Test string #2" in logs

Reply via email to