diff --git a/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/pod.py b/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/pod.py index 420ebddb7256c..8a94e1fe1174d 100644 --- a/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/pod.py +++ b/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/pod.py @@ -1135,7 +1135,11 @@ def _build_find_pod_label_selector(self, context: Context | None = None, *, excl **self.labels, **self._get_ti_pod_labels(context, include_try_number=False), } - label_strings = [f"{label_id}={label}" for label_id, label in sorted(labels.items())] + labels = normalize_labels_dict(labels) + label_strings = [ + f"{label_id}={label}" + for label_id, label in sorted(labels.items()) + ] labels_value = ",".join(label_strings) if exclude_checked: labels_value = f"{labels_value},{self.POD_CHECKED_KEY}!=True" @@ -1363,3 +1367,10 @@ def __exit__(self, exctype, excinst, exctb) -> bool: logger = logging.getLogger(__name__) logger.exception(excinst) return True + +# --- Helper functions --- +def normalize_labels_dict(labels: dict) -> dict: + """ + Return a copy of the labels dict with all None values replaced by empty strings. + """ + return {k: ('' if v is None else v) for k, v in labels.items()} \ No newline at end of file