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