apache-airflow-providers-cncf-kubernetes 10.3.0rc1__py3-none-any.whl → 10.3.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of apache-airflow-providers-cncf-kubernetes might be problematic. Click here for more details.

Files changed (27) hide show
  1. airflow/providers/cncf/kubernetes/__init__.py +1 -1
  2. airflow/providers/cncf/kubernetes/backcompat/backwards_compat_converters.py +2 -1
  3. airflow/providers/cncf/kubernetes/callbacks.py +1 -2
  4. airflow/providers/cncf/kubernetes/cli/kubernetes_command.py +4 -3
  5. airflow/providers/cncf/kubernetes/decorators/kubernetes.py +1 -1
  6. airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py +11 -8
  7. airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py +7 -4
  8. airflow/providers/cncf/kubernetes/get_provider_info.py +3 -2
  9. airflow/providers/cncf/kubernetes/hooks/kubernetes.py +3 -3
  10. airflow/providers/cncf/kubernetes/kubernetes_helper_functions.py +1 -1
  11. airflow/providers/cncf/kubernetes/operators/custom_object_launcher.py +2 -2
  12. airflow/providers/cncf/kubernetes/operators/job.py +4 -3
  13. airflow/providers/cncf/kubernetes/operators/kueue.py +2 -1
  14. airflow/providers/cncf/kubernetes/operators/pod.py +15 -15
  15. airflow/providers/cncf/kubernetes/operators/resource.py +1 -1
  16. airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py +2 -1
  17. airflow/providers/cncf/kubernetes/pod_generator.py +4 -4
  18. airflow/providers/cncf/kubernetes/resource_convert/env_variable.py +2 -1
  19. airflow/providers/cncf/kubernetes/secret.py +2 -1
  20. airflow/providers/cncf/kubernetes/sensors/spark_kubernetes.py +2 -1
  21. airflow/providers/cncf/kubernetes/template_rendering.py +1 -1
  22. airflow/providers/cncf/kubernetes/utils/k8s_resource_iterator.py +2 -1
  23. airflow/providers/cncf/kubernetes/utils/pod_manager.py +4 -5
  24. {apache_airflow_providers_cncf_kubernetes-10.3.0rc1.dist-info → apache_airflow_providers_cncf_kubernetes-10.3.1.dist-info}/METADATA +25 -28
  25. {apache_airflow_providers_cncf_kubernetes-10.3.0rc1.dist-info → apache_airflow_providers_cncf_kubernetes-10.3.1.dist-info}/RECORD +27 -27
  26. {apache_airflow_providers_cncf_kubernetes-10.3.0rc1.dist-info → apache_airflow_providers_cncf_kubernetes-10.3.1.dist-info}/WHEEL +1 -1
  27. {apache_airflow_providers_cncf_kubernetes-10.3.0rc1.dist-info → apache_airflow_providers_cncf_kubernetes-10.3.1.dist-info}/entry_points.txt +0 -0
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "10.3.0"
32
+ __version__ = "10.3.1"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "2.9.0"
@@ -18,9 +18,10 @@
18
18
 
19
19
  from __future__ import annotations
20
20
 
21
- from airflow.exceptions import AirflowException
22
21
  from kubernetes.client import ApiClient, models as k8s
23
22
 
23
+ from airflow.exceptions import AirflowException
24
+
24
25
 
25
26
  def _convert_kube_model_object(obj, new_class):
26
27
  convert_op = getattr(obj, "to_k8s_client_obj", None)
@@ -19,9 +19,8 @@ from __future__ import annotations
19
19
  from enum import Enum
20
20
  from typing import TYPE_CHECKING, Union
21
21
 
22
- import kubernetes_asyncio.client as async_k8s
23
-
24
22
  import kubernetes.client as k8s
23
+ import kubernetes_asyncio.client as async_k8s
25
24
 
26
25
  if TYPE_CHECKING:
27
26
  from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator
@@ -22,6 +22,10 @@ import os
22
22
  import sys
23
23
  from datetime import datetime, timedelta
24
24
 
25
+ from kubernetes import client
26
+ from kubernetes.client.api_client import ApiClient
27
+ from kubernetes.client.rest import ApiException
28
+
25
29
  from airflow.models import DagRun, TaskInstance
26
30
  from airflow.providers.cncf.kubernetes import pod_generator
27
31
  from airflow.providers.cncf.kubernetes.executors.kubernetes_executor import KubeConfig
@@ -32,9 +36,6 @@ from airflow.providers.cncf.kubernetes.version_compat import AIRFLOW_V_3_0_PLUS
32
36
  from airflow.utils import cli as cli_utils, yaml
33
37
  from airflow.utils.cli import get_dag
34
38
  from airflow.utils.providers_configuration_loader import providers_configuration_loaded
35
- from kubernetes import client
36
- from kubernetes.client.api_client import ApiClient
37
- from kubernetes.client.rest import ApiException
38
39
 
39
40
 
40
41
  @cli_utils.action_cli
@@ -25,13 +25,13 @@ from tempfile import TemporaryDirectory
25
25
  from typing import TYPE_CHECKING, Callable
26
26
 
27
27
  import dill
28
+ from kubernetes.client import models as k8s
28
29
 
29
30
  from airflow.decorators.base import DecoratedOperator, TaskDecorator, task_decorator_factory
30
31
  from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator
31
32
  from airflow.providers.cncf.kubernetes.python_kubernetes_script import (
32
33
  write_python_script,
33
34
  )
34
- from kubernetes.client import models as k8s
35
35
 
36
36
  if TYPE_CHECKING:
37
37
  from airflow.utils.context import Context
@@ -37,11 +37,11 @@ from queue import Empty, Queue
37
37
  from typing import TYPE_CHECKING, Any
38
38
 
39
39
  from deprecated import deprecated
40
+ from kubernetes.dynamic import DynamicClient
40
41
  from sqlalchemy import select
41
42
 
42
43
  from airflow.providers.cncf.kubernetes.pod_generator import PodGenerator
43
44
  from airflow.providers.cncf.kubernetes.version_compat import AIRFLOW_V_3_0_PLUS
44
- from kubernetes.dynamic import DynamicClient
45
45
 
46
46
  try:
47
47
  from airflow.cli.cli_config import ARG_LOGICAL_DATE
@@ -78,6 +78,8 @@ from airflow.utils.state import TaskInstanceState
78
78
  if TYPE_CHECKING:
79
79
  import argparse
80
80
 
81
+ from kubernetes import client
82
+ from kubernetes.client import models as k8s
81
83
  from sqlalchemy.orm import Session
82
84
 
83
85
  from airflow.executors import workloads
@@ -91,8 +93,6 @@ if TYPE_CHECKING:
91
93
  from airflow.providers.cncf.kubernetes.executors.kubernetes_executor_utils import (
92
94
  AirflowKubernetesScheduler,
93
95
  )
94
- from kubernetes import client
95
- from kubernetes.client import models as k8s
96
96
 
97
97
  # CLI Args
98
98
  ARG_NAMESPACE = Arg(
@@ -284,15 +284,18 @@ class KubernetesExecutor(BaseExecutor):
284
284
  self.queued_tasks[ti.key] = workload
285
285
 
286
286
  def _process_workloads(self, workloads: list[workloads.All]) -> None:
287
+ from airflow.executors.workloads import ExecuteTask
288
+
287
289
  # Airflow V3 version
288
290
  for w in workloads:
291
+ if not isinstance(w, ExecuteTask):
292
+ raise RuntimeError(f"{type(self)} cannot handle workloads of type {type(w)}")
293
+
289
294
  # TODO: AIP-72 handle populating tokens once https://github.com/apache/airflow/issues/45107 is handled.
290
295
  command = [w]
291
- key = w.ti.key # type: ignore[union-attr]
292
- queue = w.ti.queue # type: ignore[union-attr]
293
-
294
- # TODO: will be handled by https://github.com/apache/airflow/issues/46892
295
- executor_config = {} # type: ignore[var-annotated]
296
+ key = w.ti.key
297
+ queue = w.ti.queue
298
+ executor_config = w.ti.executor_config or {}
296
299
 
297
300
  del self.queued_tasks[key]
298
301
  self.execute_async(key=key, command=command, queue=queue, executor_config=executor_config) # type: ignore[arg-type]
@@ -23,6 +23,8 @@ import time
23
23
  from queue import Empty, Queue
24
24
  from typing import TYPE_CHECKING, Any
25
25
 
26
+ from kubernetes import client, watch
27
+ from kubernetes.client.rest import ApiException
26
28
  from urllib3.exceptions import ReadTimeoutError
27
29
 
28
30
  from airflow.exceptions import AirflowException
@@ -43,16 +45,15 @@ from airflow.providers.cncf.kubernetes.pod_generator import PodGenerator
43
45
  from airflow.utils.log.logging_mixin import LoggingMixin
44
46
  from airflow.utils.singleton import Singleton
45
47
  from airflow.utils.state import TaskInstanceState
46
- from kubernetes import client, watch
47
- from kubernetes.client.rest import ApiException
48
48
 
49
49
  if TYPE_CHECKING:
50
+ from kubernetes.client import Configuration, models as k8s
51
+
50
52
  from airflow.providers.cncf.kubernetes.executors.kubernetes_executor_types import (
51
53
  KubernetesJobType,
52
54
  KubernetesResultsType,
53
55
  KubernetesWatchType,
54
56
  )
55
- from kubernetes.client import Configuration, models as k8s
56
57
 
57
58
 
58
59
  class ResourceVersion(metaclass=Singleton):
@@ -394,7 +395,9 @@ class AirflowKubernetesScheduler(LoggingMixin):
394
395
 
395
396
  if isinstance(command[0], ExecuteTask):
396
397
  workload = command[0]
397
- ser_input = workload.model_dump_json()
398
+ # `executor_config` is a k8s.V1Pod object and we do not need to pass it to the
399
+ # execute_workload module. So, we exclude it from the serialisation process.
400
+ ser_input = workload.model_dump_json(exclude={"ti": {"executor_config"}})
398
401
  command = [
399
402
  "python",
400
403
  "-m",
@@ -27,8 +27,9 @@ def get_provider_info():
27
27
  "name": "Kubernetes",
28
28
  "description": "`Kubernetes <https://kubernetes.io/>`__\n",
29
29
  "state": "ready",
30
- "source-date-epoch": 1739959070,
30
+ "source-date-epoch": 1741508564,
31
31
  "versions": [
32
+ "10.3.1",
32
33
  "10.3.0",
33
34
  "10.1.0",
34
35
  "10.0.1",
@@ -357,6 +358,6 @@ def get_provider_info():
357
358
  "cryptography>=41.0.0",
358
359
  "kubernetes>=29.0.0,<=31.0.0",
359
360
  "kubernetes_asyncio>=29.0.0,<=31.0.0",
360
- "google-re2>=1.0",
361
361
  ],
362
+ "devel-dependencies": [],
362
363
  }
@@ -29,6 +29,9 @@ import aiofiles
29
29
  import requests
30
30
  import tenacity
31
31
  from asgiref.sync import sync_to_async
32
+ from kubernetes import client, config, utils, watch
33
+ from kubernetes.client.models import V1Deployment
34
+ from kubernetes.config import ConfigException
32
35
  from kubernetes_asyncio import client as async_client, config as async_config
33
36
  from urllib3.exceptions import HTTPError
34
37
 
@@ -43,9 +46,6 @@ from airflow.providers.cncf.kubernetes.utils.pod_manager import (
43
46
  container_is_running,
44
47
  )
45
48
  from airflow.utils import yaml
46
- from kubernetes import client, config, utils, watch
47
- from kubernetes.client.models import V1Deployment
48
- from kubernetes.config import ConfigException
49
49
 
50
50
  if TYPE_CHECKING:
51
51
  from kubernetes.client import V1JobList
@@ -23,11 +23,11 @@ from functools import cache
23
23
  from typing import TYPE_CHECKING
24
24
 
25
25
  import pendulum
26
+ from kubernetes.client.rest import ApiException
26
27
  from slugify import slugify
27
28
 
28
29
  from airflow.configuration import conf
29
30
  from airflow.providers.cncf.kubernetes.backcompat import get_logical_date_key
30
- from kubernetes.client.rest import ApiException
31
31
 
32
32
  if TYPE_CHECKING:
33
33
  from airflow.models.taskinstancekey import TaskInstanceKey
@@ -24,6 +24,8 @@ from datetime import datetime as dt
24
24
  from functools import cached_property
25
25
 
26
26
  import tenacity
27
+ from kubernetes.client import CoreV1Api, CustomObjectsApi, models as k8s
28
+ from kubernetes.client.rest import ApiException
27
29
 
28
30
  from airflow.exceptions import AirflowException
29
31
  from airflow.providers.cncf.kubernetes.resource_convert.configmap import (
@@ -37,8 +39,6 @@ from airflow.providers.cncf.kubernetes.resource_convert.secret import (
37
39
  )
38
40
  from airflow.providers.cncf.kubernetes.utils.pod_manager import PodManager
39
41
  from airflow.utils.log.logging_mixin import LoggingMixin
40
- from kubernetes.client import CoreV1Api, CustomObjectsApi, models as k8s
41
- from kubernetes.client.rest import ApiException
42
42
 
43
43
 
44
44
  def should_retry_start_spark_job(exception: BaseException) -> bool:
@@ -26,6 +26,10 @@ from collections.abc import Sequence
26
26
  from functools import cached_property
27
27
  from typing import TYPE_CHECKING
28
28
 
29
+ from kubernetes.client import BatchV1Api, models as k8s
30
+ from kubernetes.client.api_client import ApiClient
31
+ from kubernetes.client.rest import ApiException
32
+
29
33
  from airflow.configuration import conf
30
34
  from airflow.exceptions import AirflowException
31
35
  from airflow.models import BaseOperator
@@ -40,9 +44,6 @@ from airflow.providers.cncf.kubernetes.triggers.job import KubernetesJobTrigger
40
44
  from airflow.providers.cncf.kubernetes.utils.pod_manager import EMPTY_XCOM_RESULT, PodNotFoundException
41
45
  from airflow.utils import yaml
42
46
  from airflow.utils.context import Context
43
- from kubernetes.client import BatchV1Api, models as k8s
44
- from kubernetes.client.api_client import ApiClient
45
- from kubernetes.client.rest import ApiException
46
47
 
47
48
  if TYPE_CHECKING:
48
49
  from airflow.utils.context import Context
@@ -22,11 +22,12 @@ import json
22
22
  from collections.abc import Sequence
23
23
  from functools import cached_property
24
24
 
25
+ from kubernetes.utils import FailToCreateError
26
+
25
27
  from airflow.exceptions import AirflowException
26
28
  from airflow.models import BaseOperator
27
29
  from airflow.providers.cncf.kubernetes.hooks.kubernetes import KubernetesHook
28
30
  from airflow.providers.cncf.kubernetes.operators.job import KubernetesJobOperator
29
- from kubernetes.utils import FailToCreateError
30
31
 
31
32
 
32
33
  class KubernetesInstallKueueOperator(BaseOperator):
@@ -32,10 +32,13 @@ from enum import Enum
32
32
  from functools import cached_property
33
33
  from typing import TYPE_CHECKING, Any, Callable, Literal
34
34
 
35
+ import kubernetes
35
36
  import tenacity
37
+ from kubernetes.client import CoreV1Api, V1Pod, models as k8s
38
+ from kubernetes.client.exceptions import ApiException
39
+ from kubernetes.stream import stream
36
40
  from urllib3.exceptions import HTTPError
37
41
 
38
- import kubernetes
39
42
  from airflow.configuration import conf
40
43
  from airflow.exceptions import (
41
44
  AirflowException,
@@ -81,9 +84,6 @@ from airflow.settings import pod_mutation_hook
81
84
  from airflow.utils import yaml
82
85
  from airflow.utils.helpers import prune_dict, validate_key
83
86
  from airflow.version import version as airflow_version
84
- from kubernetes.client import CoreV1Api, V1Pod, models as k8s
85
- from kubernetes.client.exceptions import ApiException
86
- from kubernetes.stream import stream
87
87
 
88
88
  if TYPE_CHECKING:
89
89
  import jinja2
@@ -132,23 +132,23 @@ class KubernetesPodOperator(BaseOperator):
132
132
  simplifies the authorization process.
133
133
 
134
134
  :param kubernetes_conn_id: The :ref:`kubernetes connection id <howto/connection:kubernetes>`
135
- for the Kubernetes cluster.
135
+ for the Kubernetes cluster. (templated)
136
136
  :param namespace: the namespace to run within kubernetes.
137
- :param image: Docker image you wish to launch. Defaults to hub.docker.com,
137
+ :param image: Container image you wish to launch. Defaults to hub.docker.com,
138
138
  but fully qualified URLS will point to custom repositories. (templated)
139
139
  :param name: name of the pod in which the task will run, will be used (plus a random
140
140
  suffix if random_name_suffix is True) to generate a pod id (DNS-1123 subdomain,
141
- containing only [a-z0-9.-]).
141
+ containing only [a-z0-9.-]). (templated)
142
142
  :param random_name_suffix: if True, will generate a random suffix.
143
- :param cmds: entrypoint of the container. (templated)
144
- The docker images's entrypoint is used if this is not provided.
145
- :param arguments: arguments of the entrypoint. (templated)
146
- The docker image's CMD is used if this is not provided.
143
+ :param cmds: entrypoint of the container.
144
+ The container images's entrypoint is used if this is not provided. (templated)
145
+ :param arguments: arguments of the entrypoint.
146
+ The container image's CMD is used if this is not provided. (templated)
147
147
  :param ports: ports for the launched pod.
148
- :param volume_mounts: volumeMounts for the launched pod.
149
- :param volumes: volumes for the launched pod. Includes ConfigMaps and PersistentVolumes.
148
+ :param volume_mounts: volumeMounts for the launched pod. (templated)
149
+ :param volumes: volumes for the launched pod. Includes ConfigMaps and PersistentVolumes. (templated)
150
150
  :param env_vars: Environment variables initialized in the container. (templated)
151
- :param env_from: (Optional) List of sources to populate environment variables in the container.
151
+ :param env_from: (Optional) List of sources to populate environment variables in the container. (templated)
152
152
  :param secrets: Kubernetes secrets to inject in the container.
153
153
  They can be exposed as environment vars or files in a volume.
154
154
  :param in_cluster: run kubernetes client with in_cluster configuration.
@@ -187,7 +187,7 @@ class KubernetesPodOperator(BaseOperator):
187
187
  :param container_security_context: security options the container should run with.
188
188
  :param dnspolicy: dnspolicy for the pod.
189
189
  :param dns_config: dns configuration (ip addresses, searches, options) for the pod.
190
- :param hostname: hostname for the pod.
190
+ :param hostname: hostname for the pod. (templated)
191
191
  :param subdomain: subdomain for the pod.
192
192
  :param schedulername: Specify a schedulername for the pod
193
193
  :param full_pod_spec: The complete podSpec
@@ -25,6 +25,7 @@ from typing import TYPE_CHECKING
25
25
 
26
26
  import tenacity
27
27
  import yaml
28
+ from kubernetes.utils import create_from_yaml
28
29
 
29
30
  from airflow.exceptions import AirflowException
30
31
  from airflow.models import BaseOperator
@@ -32,7 +33,6 @@ from airflow.providers.cncf.kubernetes.hooks.kubernetes import KubernetesHook
32
33
  from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import should_retry_creation
33
34
  from airflow.providers.cncf.kubernetes.utils.delete_from import delete_from_yaml
34
35
  from airflow.providers.cncf.kubernetes.utils.k8s_resource_iterator import k8s_resource_iterator
35
- from kubernetes.utils import create_from_yaml
36
36
 
37
37
  if TYPE_CHECKING:
38
38
  from kubernetes.client import ApiClient, CustomObjectsApi
@@ -21,6 +21,8 @@ from functools import cached_property
21
21
  from pathlib import Path
22
22
  from typing import TYPE_CHECKING, Any, cast
23
23
 
24
+ from kubernetes.client import CoreV1Api, CustomObjectsApi, models as k8s
25
+
24
26
  from airflow.exceptions import AirflowException
25
27
  from airflow.providers.cncf.kubernetes import pod_generator
26
28
  from airflow.providers.cncf.kubernetes.hooks.kubernetes import KubernetesHook, _load_body_to_dict
@@ -30,7 +32,6 @@ from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperato
30
32
  from airflow.providers.cncf.kubernetes.pod_generator import MAX_LABEL_LEN, PodGenerator
31
33
  from airflow.providers.cncf.kubernetes.utils.pod_manager import PodManager
32
34
  from airflow.utils.helpers import prune_dict
33
- from kubernetes.client import CoreV1Api, CustomObjectsApi, models as k8s
34
35
 
35
36
  if TYPE_CHECKING:
36
37
  import jinja2
@@ -28,12 +28,14 @@ from __future__ import annotations
28
28
  import copy
29
29
  import logging
30
30
  import os
31
+ import re
31
32
  import warnings
32
33
  from functools import reduce
33
34
  from typing import TYPE_CHECKING
34
35
 
35
- import re2
36
36
  from dateutil import parser
37
+ from kubernetes.client import V1EmptyDirVolumeSource, V1Volume, V1VolumeMount, models as k8s
38
+ from kubernetes.client.api_client import ApiClient
37
39
 
38
40
  from airflow.exceptions import (
39
41
  AirflowConfigException,
@@ -47,8 +49,6 @@ from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import (
47
49
  from airflow.utils import yaml
48
50
  from airflow.utils.hashlib_wrapper import md5
49
51
  from airflow.version import version as airflow_version
50
- from kubernetes.client import V1EmptyDirVolumeSource, V1Volume, V1VolumeMount, models as k8s
51
- from kubernetes.client.api_client import ApiClient
52
52
 
53
53
  if TYPE_CHECKING:
54
54
  import datetime
@@ -70,7 +70,7 @@ def make_safe_label_value(string: str) -> str:
70
70
  way from the original value sent to this function, then we need to truncate to
71
71
  53 chars, and append it with a unique hash.
72
72
  """
73
- safe_label = re2.sub(r"^[^a-z0-9A-Z]*|[^a-zA-Z0-9_\-\.]|[^a-z0-9A-Z]*$", "", string)
73
+ safe_label = re.sub(r"^[^a-z0-9A-Z]*|[^a-zA-Z0-9_\-\.]|[^a-z0-9A-Z]*$", "", string)
74
74
 
75
75
  if len(safe_label) > MAX_LABEL_LEN or string != safe_label:
76
76
  safe_hash = md5(string.encode()).hexdigest()[:9]
@@ -16,9 +16,10 @@
16
16
  # under the License.
17
17
  from __future__ import annotations
18
18
 
19
- from airflow.exceptions import AirflowException
20
19
  from kubernetes.client import models as k8s
21
20
 
21
+ from airflow.exceptions import AirflowException
22
+
22
23
 
23
24
  def convert_env_vars(env_vars) -> list[k8s.V1EnvVar]:
24
25
  """
@@ -21,9 +21,10 @@ from __future__ import annotations
21
21
  import copy
22
22
  import uuid
23
23
 
24
+ from kubernetes.client import models as k8s
25
+
24
26
  from airflow.exceptions import AirflowConfigException
25
27
  from airflow.providers.cncf.kubernetes.k8s_model import K8SModel
26
- from kubernetes.client import models as k8s
27
28
 
28
29
 
29
30
  class Secret(K8SModel):
@@ -21,10 +21,11 @@ from collections.abc import Sequence
21
21
  from functools import cached_property
22
22
  from typing import TYPE_CHECKING
23
23
 
24
+ from kubernetes import client
25
+
24
26
  from airflow.exceptions import AirflowException
25
27
  from airflow.providers.cncf.kubernetes.hooks.kubernetes import KubernetesHook
26
28
  from airflow.sensors.base import BaseSensorOperator
27
- from kubernetes import client
28
29
 
29
30
  if TYPE_CHECKING:
30
31
  from airflow.utils.context import Context
@@ -20,13 +20,13 @@ from __future__ import annotations
20
20
  from typing import TYPE_CHECKING
21
21
 
22
22
  from jinja2 import TemplateAssertionError, UndefinedError
23
+ from kubernetes.client.api_client import ApiClient
23
24
 
24
25
  from airflow.exceptions import AirflowException
25
26
  from airflow.providers.cncf.kubernetes.kube_config import KubeConfig
26
27
  from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import create_unique_id
27
28
  from airflow.providers.cncf.kubernetes.pod_generator import PodGenerator
28
29
  from airflow.utils.session import NEW_SESSION, provide_session
29
- from kubernetes.client.api_client import ApiClient
30
30
 
31
31
  if TYPE_CHECKING:
32
32
  from airflow.models.taskinstance import TaskInstance
@@ -19,9 +19,10 @@ from __future__ import annotations
19
19
  from collections.abc import Iterator
20
20
  from typing import Callable
21
21
 
22
- from airflow.providers.cncf.kubernetes.utils.delete_from import FailToDeleteError
23
22
  from kubernetes.utils import FailToCreateError
24
23
 
24
+ from airflow.providers.cncf.kubernetes.utils.delete_from import FailToDeleteError
25
+
25
26
 
26
27
  def k8s_resource_iterator(callback: Callable[[dict], None], resources: Iterator) -> None:
27
28
  failures: list = []
@@ -31,6 +31,9 @@ from typing import TYPE_CHECKING, Protocol, cast
31
31
 
32
32
  import pendulum
33
33
  import tenacity
34
+ from kubernetes import client, watch
35
+ from kubernetes.client.rest import ApiException
36
+ from kubernetes.stream import stream as kubernetes_stream
34
37
  from pendulum import DateTime
35
38
  from pendulum.parsing.exceptions import ParserError
36
39
  from typing_extensions import Literal
@@ -41,16 +44,12 @@ from airflow.providers.cncf.kubernetes.callbacks import ExecutionMode, Kubernete
41
44
  from airflow.providers.cncf.kubernetes.utils.xcom_sidecar import PodDefaults
42
45
  from airflow.utils.log.logging_mixin import LoggingMixin
43
46
  from airflow.utils.timezone import utcnow
44
- from kubernetes import client, watch
45
- from kubernetes.client.rest import ApiException
46
- from kubernetes.stream import stream as kubernetes_stream
47
47
 
48
48
  if TYPE_CHECKING:
49
- from urllib3.response import HTTPResponse
50
-
51
49
  from kubernetes.client.models.core_v1_event_list import CoreV1EventList
52
50
  from kubernetes.client.models.v1_container_status import V1ContainerStatus
53
51
  from kubernetes.client.models.v1_pod import V1Pod
52
+ from urllib3.response import HTTPResponse
54
53
 
55
54
 
56
55
  EMPTY_XCOM_RESULT = "__airflow_xcom_result_empty__"
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-cncf-kubernetes
3
- Version: 10.3.0rc1
3
+ Version: 10.3.1
4
4
  Summary: Provider package apache-airflow-providers-cncf-kubernetes for Apache Airflow
5
5
  Keywords: airflow-provider,cncf.kubernetes,airflow,integration
6
6
  Author-email: Apache Software Foundation <dev@airflow.apache.org>
@@ -21,47 +21,45 @@ Classifier: Programming Language :: Python :: 3.11
21
21
  Classifier: Programming Language :: Python :: 3.12
22
22
  Classifier: Topic :: System :: Monitoring
23
23
  Requires-Dist: aiofiles>=23.2.0
24
- Requires-Dist: apache-airflow>=2.9.0rc0
24
+ Requires-Dist: apache-airflow>=2.9.0
25
25
  Requires-Dist: asgiref>=3.5.2
26
26
  Requires-Dist: cryptography>=41.0.0
27
27
  Requires-Dist: kubernetes>=29.0.0,<=31.0.0
28
28
  Requires-Dist: kubernetes_asyncio>=29.0.0,<=31.0.0
29
- Requires-Dist: google-re2>=1.0
30
29
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
31
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.3.0/changelog.html
32
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.3.0
30
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.3.1/changelog.html
31
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.3.1
33
32
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
34
33
  Project-URL: Source Code, https://github.com/apache/airflow
35
34
  Project-URL: Twitter, https://x.com/ApacheAirflow
36
35
  Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
37
36
 
38
37
 
39
- .. Licensed to the Apache Software Foundation (ASF) under one
40
- or more contributor license agreements. See the NOTICE file
41
- distributed with this work for additional information
42
- regarding copyright ownership. The ASF licenses this file
43
- to you under the Apache License, Version 2.0 (the
44
- "License"); you may not use this file except in compliance
45
- with the License. You may obtain a copy of the License at
38
+ .. Licensed to the Apache Software Foundation (ASF) under one
39
+ or more contributor license agreements. See the NOTICE file
40
+ distributed with this work for additional information
41
+ regarding copyright ownership. The ASF licenses this file
42
+ to you under the Apache License, Version 2.0 (the
43
+ "License"); you may not use this file except in compliance
44
+ with the License. You may obtain a copy of the License at
46
45
 
47
- .. http://www.apache.org/licenses/LICENSE-2.0
46
+ .. http://www.apache.org/licenses/LICENSE-2.0
48
47
 
49
- .. Unless required by applicable law or agreed to in writing,
50
- software distributed under the License is distributed on an
51
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
52
- KIND, either express or implied. See the License for the
53
- specific language governing permissions and limitations
54
- under the License.
48
+ .. Unless required by applicable law or agreed to in writing,
49
+ software distributed under the License is distributed on an
50
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
51
+ KIND, either express or implied. See the License for the
52
+ specific language governing permissions and limitations
53
+ under the License.
55
54
 
56
- .. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
57
-
58
- .. IF YOU WANT TO MODIFY TEMPLATE FOR THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
59
- `PROVIDER_README_TEMPLATE.rst.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY
55
+ .. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
60
56
 
57
+ .. IF YOU WANT TO MODIFY TEMPLATE FOR THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
58
+ ``PROVIDER_README_TEMPLATE.rst.jinja2`` IN the ``dev/breeze/src/airflow_breeze/templates`` DIRECTORY
61
59
 
62
60
  Package ``apache-airflow-providers-cncf-kubernetes``
63
61
 
64
- Release: ``10.3.0``
62
+ Release: ``10.3.1``
65
63
 
66
64
 
67
65
  `Kubernetes <https://kubernetes.io/>`__
@@ -74,7 +72,7 @@ This is a provider package for ``cncf.kubernetes`` provider. All classes for thi
74
72
  are in ``airflow.providers.cncf.kubernetes`` python package.
75
73
 
76
74
  You can find package information and changelog for the provider
77
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.3.0/>`_.
75
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.3.1/>`_.
78
76
 
79
77
  Installation
80
78
  ------------
@@ -97,9 +95,8 @@ PIP package Version required
97
95
  ``cryptography`` ``>=41.0.0``
98
96
  ``kubernetes`` ``>=29.0.0,<=31.0.0``
99
97
  ``kubernetes_asyncio`` ``>=29.0.0,<=31.0.0``
100
- ``google-re2`` ``>=1.0``
101
98
  ====================== =====================
102
99
 
103
100
  The changelog for the provider package can be found in the
104
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.3.0/changelog.html>`_.
101
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.3.1/changelog.html>`_.
105
102
 
@@ -1,59 +1,59 @@
1
1
  airflow/providers/cncf/kubernetes/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
2
- airflow/providers/cncf/kubernetes/__init__.py,sha256=kPtM2GCtzpUb4DtQUS_SPWEozXTGN2zwGyn-lueQw6M,1503
3
- airflow/providers/cncf/kubernetes/callbacks.py,sha256=7sZx4eujOJs82TxAxNS8Pu6dfAlBSnHqUu5inwdYnjQ,6077
2
+ airflow/providers/cncf/kubernetes/__init__.py,sha256=dh4Bxuix8J3KKJlqsC94wTE9mXFj35O10tZtnu_B-nI,1503
3
+ airflow/providers/cncf/kubernetes/callbacks.py,sha256=5zGmQthojdT9iBEV3LIyBq-oKzjv2D4dOYCjYRbb61c,6076
4
4
  airflow/providers/cncf/kubernetes/exceptions.py,sha256=3cNEZTnrltBsqwzHiLfckwYYc_IWY1g4PcRs6zuMWWA,1137
5
- airflow/providers/cncf/kubernetes/get_provider_info.py,sha256=YOuI2-CWl9aYJKglLZd-s6VLhMITWkSJi3yXYsZa4Ms,17723
5
+ airflow/providers/cncf/kubernetes/get_provider_info.py,sha256=z5ETfTSpSYyt8ZQJrRSGYrWU8-gSfNx_K-fiMSH6Bl0,17748
6
6
  airflow/providers/cncf/kubernetes/k8s_model.py,sha256=xmdFhX29DjegoZ-cq8-KDL9soVYXf4OpU6fAGr3cPTU,2101
7
7
  airflow/providers/cncf/kubernetes/kube_client.py,sha256=yflZxLousXA9d7t67KrEy55qzb1cUhEyy6yCPkEem28,5329
8
8
  airflow/providers/cncf/kubernetes/kube_config.py,sha256=3qWdCp2z4g8gX_sIOProgwp52UxM5kAIYabkxaX297g,5079
9
- airflow/providers/cncf/kubernetes/kubernetes_helper_functions.py,sha256=DyBxDNltnBG2txljnih7nrOxeQo4OyX1SOaKPJiX0PA,5524
10
- airflow/providers/cncf/kubernetes/pod_generator.py,sha256=9329jtwCY0k_l2HiP4ApPyeNOdE2UW5L8q-G9sfZSG4,20889
9
+ airflow/providers/cncf/kubernetes/kubernetes_helper_functions.py,sha256=Zf7RyNt9BkUHY7Sjm_6CimTmb2H1bv5lrO3T0pni_r0,5524
10
+ airflow/providers/cncf/kubernetes/pod_generator.py,sha256=KuzcWs35gS4avuHF1xBPkvG4VPA47jqU4MF1cYHWhwo,20887
11
11
  airflow/providers/cncf/kubernetes/python_kubernetes_script.jinja2,sha256=I0EHRGwLHjSiX85e51HBIoddRDnC8TJPFrDBqQq_NJg,1776
12
12
  airflow/providers/cncf/kubernetes/python_kubernetes_script.py,sha256=KnTlZSWCZhwvj89fSc2kgIRTaI4iLNKPquHc2wXnluo,3460
13
- airflow/providers/cncf/kubernetes/secret.py,sha256=TZoCxV7d3r2avpRs3zzqB4Az_nGeM2B7LweMzYwA-6s,5208
14
- airflow/providers/cncf/kubernetes/template_rendering.py,sha256=ae00DroxxXEtkaSux49sCYCT_aR_d56y77HsSFzeFrQ,3490
13
+ airflow/providers/cncf/kubernetes/secret.py,sha256=wj-T9gouqau_X14slAstGmnSxqXJQzdLwUdURzHna0I,5209
14
+ airflow/providers/cncf/kubernetes/template_rendering.py,sha256=pV6lX8DW3dLNB945mxwM8E0Vynis2-chMCwHlnHeIVY,3490
15
15
  airflow/providers/cncf/kubernetes/version_compat.py,sha256=aHg90_DtgoSnQvILFICexMyNlHlALBdaeWqkX3dFDug,1605
16
16
  airflow/providers/cncf/kubernetes/backcompat/__init__.py,sha256=KXF76f3v1jIFUBNz8kwxVMvm7i4mNo35LbIG9IijBNc,1299
17
- airflow/providers/cncf/kubernetes/backcompat/backwards_compat_converters.py,sha256=bJV-Itf_RcN8_eJw2LkZU_edhlqElmbeOB7OP09MPrk,4348
17
+ airflow/providers/cncf/kubernetes/backcompat/backwards_compat_converters.py,sha256=pwkCHlUoP7boRNC27xYk8lSRMSggtsRnlUcoat9PbVw,4349
18
18
  airflow/providers/cncf/kubernetes/cli/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
19
- airflow/providers/cncf/kubernetes/cli/kubernetes_command.py,sha256=5hVT18pCu0kGStQ5sJYO4pd8rRTmCZWedBBvxe5rSMY,7251
19
+ airflow/providers/cncf/kubernetes/cli/kubernetes_command.py,sha256=0n1Tj7w6jWfeRtf_VTn1dA5XN1MlOziXFDBA51nHquM,7252
20
20
  airflow/providers/cncf/kubernetes/decorators/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
21
- airflow/providers/cncf/kubernetes/decorators/kubernetes.py,sha256=Tfxn0FiAoUJUQlvYAoxdDYbwYXfLV1XzzrPJsxN9XY8,6174
21
+ airflow/providers/cncf/kubernetes/decorators/kubernetes.py,sha256=5DaSEgl2YLFntPPaLfUw-efwq4IBnqwFgeBb3IE6SHw,6174
22
22
  airflow/providers/cncf/kubernetes/executors/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
23
- airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py,sha256=715AIfLanGjmK_Qm1lNzfa7A6rurTmLxyz2m1RS4KSQ,31712
23
+ airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py,sha256=t6nOCpR9VZRcPG5tel_lgQ1AJaEDoJch2jDBn2acu18,31765
24
24
  airflow/providers/cncf/kubernetes/executors/kubernetes_executor_types.py,sha256=L8_8HOHd_4O8WW6xT2tp49-yOj0EMKCYK5YqMOOx_bI,1973
25
- airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py,sha256=PLb7S2Ra0bQfydst23efxp5wmu67L_LPNsMWiOZjvgo,24772
25
+ airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py,sha256=uxGUgOcZ4J4lQb2QqRdWd7zVwW8Eu1ihruVebfqjRR4,24996
26
26
  airflow/providers/cncf/kubernetes/executors/local_kubernetes_executor.py,sha256=kx6pHAfSnKiDgT6iDOS4fJRq49DodFnyxUyd-iJsuI8,11512
27
27
  airflow/providers/cncf/kubernetes/hooks/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
28
- airflow/providers/cncf/kubernetes/hooks/kubernetes.py,sha256=i7l7q4DK9c7CFF1KTf_Qtjk_H1tyXoOhwDFwVnq-pBU,36784
28
+ airflow/providers/cncf/kubernetes/hooks/kubernetes.py,sha256=Iyn_kXNYj3sVpjCBqxTnu8Ob7SNTLsQva80IZpKpYWg,36784
29
29
  airflow/providers/cncf/kubernetes/kubernetes_executor_templates/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
30
30
  airflow/providers/cncf/kubernetes/kubernetes_executor_templates/basic_template.yaml,sha256=yzJmXN4ZyB4aDwI_GIugpL9-f1YMVy__X-LQSbeU95A,2567
31
31
  airflow/providers/cncf/kubernetes/operators/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
32
- airflow/providers/cncf/kubernetes/operators/custom_object_launcher.py,sha256=wSFpJ1s0dmmpBCL6_qhhbc50Bk6Ya23Mm5Jy_RKG_vE,15315
33
- airflow/providers/cncf/kubernetes/operators/job.py,sha256=UUkw_5Y8HQ92GyihzOIK_iFWmcajISoc5NZS48AHJo8,23772
34
- airflow/providers/cncf/kubernetes/operators/kueue.py,sha256=hY-tHjpeVnRyoTNEdxanb8kI8Na_oTWNzlX2m5TUWIM,4564
35
- airflow/providers/cncf/kubernetes/operators/pod.py,sha256=BeZt2OTKB7THZyw-_MC0Le_q69KwOE3sMtwlTOvBIh0,57027
36
- airflow/providers/cncf/kubernetes/operators/resource.py,sha256=graV9wcvhtbRnUuxXQP_oJBCSx1SYt_08JGwQ0GFVVw,7597
37
- airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py,sha256=GPsKBKT0YM4DYfehLjBGjkiEsNsqZ3ccaZ8YUjSGzKU,13846
32
+ airflow/providers/cncf/kubernetes/operators/custom_object_launcher.py,sha256=CS8VNDq0ZBvq25AkLn90Au1L75PrWM6sdz81PNIYG0U,15315
33
+ airflow/providers/cncf/kubernetes/operators/job.py,sha256=GXtTHoK2y7mG7rvGdHt0KIp_0V8d0wKzZ2rUV1zg56g,23773
34
+ airflow/providers/cncf/kubernetes/operators/kueue.py,sha256=kBKw3R2IDMNOaAQ3oMNaerPBxWhCW_xJT4WxVVDhBGo,4565
35
+ airflow/providers/cncf/kubernetes/operators/pod.py,sha256=OEyrFOc61yeoGD4AH6K6dyRM6u5gbK914bbrB8xt2W8,57108
36
+ airflow/providers/cncf/kubernetes/operators/resource.py,sha256=4nS-eiVEGlotp-gCkHlwRuenj3pnKhZ4khh9s2cjZms,7597
37
+ airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py,sha256=z1CF8jRNVwUWBAWhP7Qgl_Wly24hBA14ONu2N9zEdFg,13847
38
38
  airflow/providers/cncf/kubernetes/pod_template_file_examples/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
39
39
  airflow/providers/cncf/kubernetes/pod_template_file_examples/dags_in_image_template.yaml,sha256=7JdppZ-XDBpv2Bnde2SthhcME8w3b8xQdPAK1fJGW60,2256
40
40
  airflow/providers/cncf/kubernetes/pod_template_file_examples/dags_in_volume_template.yaml,sha256=-Pk_EwKpyWRYZKOnumUxVrDeAfFJ0nr3WZ7JNnvppzg,2442
41
41
  airflow/providers/cncf/kubernetes/pod_template_file_examples/git_sync_template.yaml,sha256=Pxpa1AiBlf4H8aIc7tUTmH2XNOz84cO0ttMQdlfMJ2c,3020
42
42
  airflow/providers/cncf/kubernetes/resource_convert/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
43
43
  airflow/providers/cncf/kubernetes/resource_convert/configmap.py,sha256=gf7DdVeD0yKRNCTVCM-SywJDxwEJTYx3ogykAqbxRoU,1873
44
- airflow/providers/cncf/kubernetes/resource_convert/env_variable.py,sha256=sCjpD8AbVqhq5hDDnKwn-Qo3mNHLWpY152S3JWpEpEk,1463
44
+ airflow/providers/cncf/kubernetes/resource_convert/env_variable.py,sha256=CsVgLPXjI5pSDCBwcN3WCyyWPbiNRZc_OJCPK_C_298,1464
45
45
  airflow/providers/cncf/kubernetes/resource_convert/secret.py,sha256=ElZCMbTWeTKoPeIJ1fTvlqRXM8nGkWj2MrIlVckX6Ag,1494
46
46
  airflow/providers/cncf/kubernetes/sensors/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
47
- airflow/providers/cncf/kubernetes/sensors/spark_kubernetes.py,sha256=qsU1mAEnHXKNaI6DaGnTzcXR17aGzPGnT3eWOZICnl0,5379
47
+ airflow/providers/cncf/kubernetes/sensors/spark_kubernetes.py,sha256=q5VZPf037pbsunFUjUrtz7M5oJW7waZ1q8snNAugCIk,5380
48
48
  airflow/providers/cncf/kubernetes/triggers/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
49
49
  airflow/providers/cncf/kubernetes/triggers/job.py,sha256=DGbC1FZktBF-00Lb0pU9iIKQnmdW8HWklp5Wwq54OEY,6754
50
50
  airflow/providers/cncf/kubernetes/triggers/pod.py,sha256=7vLj9SvOOwh9p5XSZIr7mj47YWe_aPQgtN7uEZhma68,12653
51
51
  airflow/providers/cncf/kubernetes/utils/__init__.py,sha256=ClZN0VPjWySdVwS_ktH7rrgL9VLAcs3OSJSB9s3zaYw,863
52
52
  airflow/providers/cncf/kubernetes/utils/delete_from.py,sha256=poObZSoEJwQyaYWilEURs8f4CDY2sn_pfwS31Lf579A,5195
53
- airflow/providers/cncf/kubernetes/utils/k8s_resource_iterator.py,sha256=wiqkHS8WbSZGEtSCO8ENMtKbAVpboODKb29wU96Ffk0,1954
54
- airflow/providers/cncf/kubernetes/utils/pod_manager.py,sha256=_76aQ2BkY1XK2mtHpW_g8jj1n7vuR9iX0rQIqI7IVek,36475
53
+ airflow/providers/cncf/kubernetes/utils/k8s_resource_iterator.py,sha256=DLypjkD_3YDixRTcsxEjgvHZNbbG9qamlz05eBqaWzU,1955
54
+ airflow/providers/cncf/kubernetes/utils/pod_manager.py,sha256=JGyp9PbJZW6hgdbioodBzwTsu_jue2A0cFKYn5yWwo4,36474
55
55
  airflow/providers/cncf/kubernetes/utils/xcom_sidecar.py,sha256=k6bdmVJ21OrAwGmWwledRrAmaty9ZrmbuM-IbaI4mqo,2519
56
- apache_airflow_providers_cncf_kubernetes-10.3.0rc1.dist-info/entry_points.txt,sha256=ByD3QJJyP9CfmTYtpNI1953akD38RUDgpGXLaq9vpOw,111
57
- apache_airflow_providers_cncf_kubernetes-10.3.0rc1.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
58
- apache_airflow_providers_cncf_kubernetes-10.3.0rc1.dist-info/METADATA,sha256=Ixgtwqfodvqa4HIz2lJAc2DunXJlsx1MoXDxf0rxBbg,4387
59
- apache_airflow_providers_cncf_kubernetes-10.3.0rc1.dist-info/RECORD,,
56
+ apache_airflow_providers_cncf_kubernetes-10.3.1.dist-info/entry_points.txt,sha256=ByD3QJJyP9CfmTYtpNI1953akD38RUDgpGXLaq9vpOw,111
57
+ apache_airflow_providers_cncf_kubernetes-10.3.1.dist-info/WHEEL,sha256=_2ozNFCLWc93bK4WKHCO-eDUENDlo-dgc9cU3qokYO4,82
58
+ apache_airflow_providers_cncf_kubernetes-10.3.1.dist-info/METADATA,sha256=wbimAjMyGrDFPh2kh9FIjSg78cabEBAqphZnVp6Spks,4302
59
+ apache_airflow_providers_cncf_kubernetes-10.3.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: flit 3.10.1
2
+ Generator: flit 3.11.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any