apache-airflow-providers-cncf-kubernetes 10.6.0__py3-none-any.whl → 10.6.1rc1__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 (21) hide show
  1. airflow/providers/cncf/kubernetes/__init__.py +1 -1
  2. airflow/providers/cncf/kubernetes/callbacks.py +2 -2
  3. airflow/providers/cncf/kubernetes/decorators/kubernetes.py +7 -13
  4. airflow/providers/cncf/kubernetes/decorators/kubernetes_cmd.py +8 -13
  5. airflow/providers/cncf/kubernetes/executors/kubernetes_executor_types.py +4 -4
  6. airflow/providers/cncf/kubernetes/executors/local_kubernetes_executor.py +18 -10
  7. airflow/providers/cncf/kubernetes/hooks/kubernetes.py +6 -2
  8. airflow/providers/cncf/kubernetes/kube_client.py +11 -2
  9. airflow/providers/cncf/kubernetes/operators/job.py +1 -1
  10. airflow/providers/cncf/kubernetes/operators/kueue.py +1 -1
  11. airflow/providers/cncf/kubernetes/operators/pod.py +11 -9
  12. airflow/providers/cncf/kubernetes/operators/resource.py +1 -1
  13. airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py +15 -10
  14. airflow/providers/cncf/kubernetes/sensors/spark_kubernetes.py +1 -1
  15. airflow/providers/cncf/kubernetes/utils/k8s_resource_iterator.py +1 -2
  16. airflow/providers/cncf/kubernetes/utils/pod_manager.py +1 -2
  17. airflow/providers/cncf/kubernetes/version_compat.py +27 -0
  18. {apache_airflow_providers_cncf_kubernetes-10.6.0.dist-info → apache_airflow_providers_cncf_kubernetes-10.6.1rc1.dist-info}/METADATA +9 -10
  19. {apache_airflow_providers_cncf_kubernetes-10.6.0.dist-info → apache_airflow_providers_cncf_kubernetes-10.6.1rc1.dist-info}/RECORD +21 -21
  20. {apache_airflow_providers_cncf_kubernetes-10.6.0.dist-info → apache_airflow_providers_cncf_kubernetes-10.6.1rc1.dist-info}/WHEEL +0 -0
  21. {apache_airflow_providers_cncf_kubernetes-10.6.0.dist-info → apache_airflow_providers_cncf_kubernetes-10.6.1rc1.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.6.0"
32
+ __version__ = "10.6.1"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "2.10.0"
@@ -17,7 +17,7 @@
17
17
  from __future__ import annotations
18
18
 
19
19
  from enum import Enum
20
- from typing import TYPE_CHECKING, Union
20
+ from typing import TYPE_CHECKING, TypeAlias
21
21
 
22
22
  import kubernetes.client as k8s
23
23
  import kubernetes_asyncio.client as async_k8s
@@ -26,7 +26,7 @@ if TYPE_CHECKING:
26
26
  from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator
27
27
  from airflow.utils.context import Context
28
28
 
29
- client_type = Union[k8s.CoreV1Api, async_k8s.CoreV1Api]
29
+ client_type: TypeAlias = k8s.CoreV1Api | async_k8s.CoreV1Api
30
30
 
31
31
 
32
32
  class ExecutionMode(str, Enum):
@@ -19,29 +19,23 @@ from __future__ import annotations
19
19
  import base64
20
20
  import os
21
21
  import pickle
22
- from collections.abc import Sequence
22
+ from collections.abc import Callable, Sequence
23
23
  from shlex import quote
24
24
  from tempfile import TemporaryDirectory
25
- from typing import TYPE_CHECKING, Callable
25
+ from typing import TYPE_CHECKING
26
26
 
27
27
  import dill
28
28
  from kubernetes.client import models as k8s
29
29
 
30
- from airflow.providers.cncf.kubernetes.version_compat import AIRFLOW_V_3_0_PLUS
31
-
32
- if AIRFLOW_V_3_0_PLUS:
33
- from airflow.sdk.bases.decorator import DecoratedOperator, TaskDecorator, task_decorator_factory
34
- else:
35
- from airflow.decorators.base import ( # type: ignore[no-redef]
36
- DecoratedOperator,
37
- TaskDecorator,
38
- task_decorator_factory,
39
- )
40
-
41
30
  from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator
42
31
  from airflow.providers.cncf.kubernetes.python_kubernetes_script import (
43
32
  write_python_script,
44
33
  )
34
+ from airflow.providers.cncf.kubernetes.version_compat import (
35
+ DecoratedOperator,
36
+ TaskDecorator,
37
+ task_decorator_factory,
38
+ )
45
39
 
46
40
  if TYPE_CHECKING:
47
41
  from airflow.utils.context import Context
@@ -17,20 +17,15 @@
17
17
  from __future__ import annotations
18
18
 
19
19
  import warnings
20
- from collections.abc import Sequence
21
- from typing import TYPE_CHECKING, Callable
22
-
23
- from airflow.providers.cncf.kubernetes.version_compat import AIRFLOW_V_3_0_PLUS
24
-
25
- if AIRFLOW_V_3_0_PLUS:
26
- from airflow.sdk.bases.decorator import DecoratedOperator, TaskDecorator, task_decorator_factory
27
- else:
28
- from airflow.decorators.base import ( # type: ignore[no-redef]
29
- DecoratedOperator,
30
- TaskDecorator,
31
- task_decorator_factory,
32
- )
20
+ from collections.abc import Callable, Sequence
21
+ from typing import TYPE_CHECKING
22
+
33
23
  from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator
24
+ from airflow.providers.cncf.kubernetes.version_compat import (
25
+ DecoratedOperator,
26
+ TaskDecorator,
27
+ task_decorator_factory,
28
+ )
34
29
  from airflow.utils.context import context_merge
35
30
  from airflow.utils.operator_helpers import determine_kwargs
36
31
 
@@ -16,7 +16,7 @@
16
16
  # under the License.
17
17
  from __future__ import annotations
18
18
 
19
- from typing import TYPE_CHECKING, Any, Optional, Union
19
+ from typing import TYPE_CHECKING, Any
20
20
 
21
21
  ADOPTED = "adopted"
22
22
  if TYPE_CHECKING:
@@ -29,13 +29,13 @@ if TYPE_CHECKING:
29
29
  CommandType = Sequence[str]
30
30
 
31
31
  # TaskInstance key, command, configuration, pod_template_file
32
- KubernetesJobType = tuple[TaskInstanceKey, CommandType, Any, Optional[str]]
32
+ KubernetesJobType = tuple[TaskInstanceKey, CommandType, Any, str | None]
33
33
 
34
34
  # key, pod state, pod_name, namespace, resource_version
35
- KubernetesResultsType = tuple[TaskInstanceKey, Optional[Union[TaskInstanceState, str]], str, str, str]
35
+ KubernetesResultsType = tuple[TaskInstanceKey, TaskInstanceState | str | None, str, str, str]
36
36
 
37
37
  # pod_name, namespace, pod state, annotations, resource_version
38
- KubernetesWatchType = tuple[str, str, Optional[Union[TaskInstanceState, str]], dict[str, str], str]
38
+ KubernetesWatchType = tuple[str, str, TaskInstanceState | str | None, dict[str, str], str]
39
39
 
40
40
  ALL_NAMESPACES = "ALL_NAMESPACES"
41
41
  POD_EXECUTOR_DONE_KEY = "airflow_executor_done"
@@ -33,7 +33,11 @@ if TYPE_CHECKING:
33
33
  from airflow.callbacks.callback_requests import CallbackRequest
34
34
  from airflow.executors.base_executor import EventBufferValueType
35
35
  from airflow.executors.local_executor import LocalExecutor
36
- from airflow.models.taskinstance import SimpleTaskInstance, TaskInstance, TaskInstanceKey
36
+ from airflow.models.taskinstance import ( # type: ignore[attr-defined]
37
+ SimpleTaskInstance,
38
+ TaskInstance,
39
+ TaskInstanceKey,
40
+ )
37
41
 
38
42
  CommandType = Sequence[str]
39
43
 
@@ -62,7 +66,18 @@ class LocalKubernetesExecutor(BaseExecutor):
62
66
 
63
67
  KUBERNETES_QUEUE = conf.get("local_kubernetes_executor", "kubernetes_queue")
64
68
 
65
- def __init__(self, local_executor: LocalExecutor, kubernetes_executor: KubernetesExecutor):
69
+ def __init__(
70
+ self,
71
+ local_executor: LocalExecutor | None = None,
72
+ kubernetes_executor: KubernetesExecutor | None = None,
73
+ ):
74
+ if AIRFLOW_V_3_0_PLUS or not local_executor or not kubernetes_executor:
75
+ raise RuntimeError(
76
+ f"{self.__class__.__name__} does not support Airflow 3.0+. See "
77
+ "https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/executor/index.html#using-multiple-executors-concurrently"
78
+ " how to use multiple executors concurrently."
79
+ )
80
+
66
81
  super().__init__()
67
82
  self._job_id: int | str | None = None
68
83
  self.local_executor = local_executor
@@ -120,13 +135,6 @@ class LocalKubernetesExecutor(BaseExecutor):
120
135
 
121
136
  def start(self) -> None:
122
137
  """Start local and kubernetes executor."""
123
- if AIRFLOW_V_3_0_PLUS:
124
- raise RuntimeError(
125
- f"{self.__class__.__name__} does not support Airflow 3.0+. See "
126
- "https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/executor/index.html#using-multiple-executors-concurrently"
127
- " how to use multiple executors concurrently."
128
- )
129
-
130
138
  self.log.info("Starting local and Kubernetes Executor")
131
139
  self.local_executor.start()
132
140
  self.kubernetes_executor.start()
@@ -167,7 +175,7 @@ class LocalKubernetesExecutor(BaseExecutor):
167
175
  **kwargs,
168
176
  ) -> None:
169
177
  """Queues task instance via local or kubernetes executor."""
170
- from airflow.models.taskinstance import SimpleTaskInstance
178
+ from airflow.models.taskinstance import SimpleTaskInstance # type: ignore[attr-defined]
171
179
 
172
180
  executor = self._router(SimpleTaskInstance.from_ti(task_instance))
173
181
  self.log.debug(
@@ -36,7 +36,6 @@ from kubernetes_asyncio import client as async_client, config as async_config
36
36
  from urllib3.exceptions import HTTPError
37
37
 
38
38
  from airflow.exceptions import AirflowException, AirflowNotFoundException
39
- from airflow.hooks.base import BaseHook
40
39
  from airflow.models import Connection
41
40
  from airflow.providers.cncf.kubernetes.kube_client import _disable_verify_ssl, _enable_tcp_keepalive
42
41
  from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import should_retry_creation
@@ -45,6 +44,11 @@ from airflow.providers.cncf.kubernetes.utils.pod_manager import (
45
44
  container_is_completed,
46
45
  container_is_running,
47
46
  )
47
+
48
+ try:
49
+ from airflow.sdk import BaseHook
50
+ except ImportError:
51
+ from airflow.hooks.base import BaseHook # type: ignore[attr-defined,no-redef]
48
52
  from airflow.utils import yaml
49
53
 
50
54
  if TYPE_CHECKING:
@@ -174,7 +178,7 @@ class KubernetesHook(BaseHook, PodOperatorHookProtocol):
174
178
  default to cluster-derived credentials.
175
179
  """
176
180
  try:
177
- return super().get_connection(conn_id)
181
+ return super().get_connection(conn_id) # type: ignore[return-value]
178
182
  except AirflowNotFoundException:
179
183
  if conn_id == cls.default_conn_name:
180
184
  return Connection(conn_id=cls.default_conn_name)
@@ -87,8 +87,17 @@ def _enable_tcp_keepalive() -> None:
87
87
  else:
88
88
  log.debug("Unable to set TCP_KEEPCNT on this platform")
89
89
 
90
- HTTPSConnection.default_socket_options = HTTPSConnection.default_socket_options + socket_options
91
- HTTPConnection.default_socket_options = HTTPConnection.default_socket_options + socket_options
90
+ # Cast both the default options and our socket options
91
+ socket_options_cast: list[tuple[int, int, int | bytes]] = [
92
+ (level, opt, val) for level, opt, val in socket_options
93
+ ]
94
+ default_options_cast: list[tuple[int, int, int | bytes]] = [
95
+ (level, opt, val) for level, opt, val in HTTPSConnection.default_socket_options
96
+ ]
97
+
98
+ # Then use the cast versions for both HTTPS and HTTP
99
+ HTTPSConnection.default_socket_options = default_options_cast + socket_options_cast
100
+ HTTPConnection.default_socket_options = default_options_cast + socket_options_cast
92
101
 
93
102
 
94
103
  def get_kube_client(
@@ -32,7 +32,6 @@ from kubernetes.client.rest import ApiException
32
32
 
33
33
  from airflow.configuration import conf
34
34
  from airflow.exceptions import AirflowException
35
- from airflow.models import BaseOperator
36
35
  from airflow.providers.cncf.kubernetes.hooks.kubernetes import KubernetesHook
37
36
  from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import (
38
37
  add_unique_suffix,
@@ -42,6 +41,7 @@ from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperato
42
41
  from airflow.providers.cncf.kubernetes.pod_generator import PodGenerator, merge_objects
43
42
  from airflow.providers.cncf.kubernetes.triggers.job import KubernetesJobTrigger
44
43
  from airflow.providers.cncf.kubernetes.utils.pod_manager import EMPTY_XCOM_RESULT, PodNotFoundException
44
+ from airflow.providers.cncf.kubernetes.version_compat import BaseOperator
45
45
  from airflow.utils import yaml
46
46
  from airflow.utils.context import Context
47
47
 
@@ -25,9 +25,9 @@ from functools import cached_property
25
25
  from kubernetes.utils import FailToCreateError
26
26
 
27
27
  from airflow.exceptions import AirflowException
28
- from airflow.models import BaseOperator
29
28
  from airflow.providers.cncf.kubernetes.hooks.kubernetes import KubernetesHook
30
29
  from airflow.providers.cncf.kubernetes.operators.job import KubernetesJobOperator
30
+ from airflow.providers.cncf.kubernetes.version_compat import BaseOperator
31
31
 
32
32
 
33
33
  class KubernetesInstallKueueOperator(BaseOperator):
@@ -27,11 +27,11 @@ import os
27
27
  import re
28
28
  import shlex
29
29
  import string
30
- from collections.abc import Container, Iterable, Sequence
30
+ from collections.abc import Callable, Container, Iterable, Sequence
31
31
  from contextlib import AbstractContextManager
32
32
  from enum import Enum
33
33
  from functools import cached_property
34
- from typing import TYPE_CHECKING, Any, Callable, Literal
34
+ from typing import TYPE_CHECKING, Any, Literal
35
35
 
36
36
  import kubernetes
37
37
  import tenacity
@@ -46,7 +46,6 @@ from airflow.exceptions import (
46
46
  AirflowSkipException,
47
47
  TaskDeferred,
48
48
  )
49
- from airflow.models import BaseOperator
50
49
  from airflow.providers.cncf.kubernetes import pod_generator
51
50
  from airflow.providers.cncf.kubernetes.backcompat.backwards_compat_converters import (
52
51
  convert_affinity,
@@ -81,6 +80,7 @@ from airflow.providers.cncf.kubernetes.utils.pod_manager import (
81
80
  container_is_succeeded,
82
81
  get_container_termination_message,
83
82
  )
83
+ from airflow.providers.cncf.kubernetes.version_compat import BaseOperator
84
84
  from airflow.settings import pod_mutation_hook
85
85
  from airflow.utils import yaml
86
86
  from airflow.utils.helpers import prune_dict, validate_key
@@ -630,7 +630,7 @@ class KubernetesPodOperator(BaseOperator):
630
630
  self.log.info("xcom result file is empty.")
631
631
  return None
632
632
 
633
- self.log.info("xcom result: \n%s", result)
633
+ self.log.debug("xcom result: \n%s", result)
634
634
  return json.loads(result)
635
635
 
636
636
  def execute(self, context: Context):
@@ -796,11 +796,13 @@ class KubernetesPodOperator(BaseOperator):
796
796
  del self.pod_manager
797
797
 
798
798
  def execute_async(self, context: Context) -> None:
799
- self.pod_request_obj = self.build_pod_request_obj(context)
800
- self.pod = self.get_or_create_pod( # must set `self.pod` for `on_kill`
801
- pod_request_obj=self.pod_request_obj,
802
- context=context,
803
- )
799
+ if self.pod_request_obj is None:
800
+ self.pod_request_obj = self.build_pod_request_obj(context)
801
+ if self.pod is None:
802
+ self.pod = self.get_or_create_pod( # must set `self.pod` for `on_kill`
803
+ pod_request_obj=self.pod_request_obj,
804
+ context=context,
805
+ )
804
806
  if self.callbacks:
805
807
  pod = self.find_pod(self.pod.metadata.namespace, context=context)
806
808
  for callback in self.callbacks:
@@ -28,11 +28,11 @@ import yaml
28
28
  from kubernetes.utils import create_from_yaml
29
29
 
30
30
  from airflow.exceptions import AirflowException
31
- from airflow.models import BaseOperator
32
31
  from airflow.providers.cncf.kubernetes.hooks.kubernetes import KubernetesHook
33
32
  from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import should_retry_creation
34
33
  from airflow.providers.cncf.kubernetes.utils.delete_from import delete_from_yaml
35
34
  from airflow.providers.cncf.kubernetes.utils.k8s_resource_iterator import k8s_resource_iterator
35
+ from airflow.providers.cncf.kubernetes.version_compat import BaseOperator
36
36
 
37
37
  if TYPE_CHECKING:
38
38
  from kubernetes.client import ApiClient, CustomObjectsApi
@@ -254,13 +254,13 @@ class SparkKubernetesOperator(KubernetesPodOperator):
254
254
  self.log.info("`try_number` of pod: %s", pod.metadata.labels["try_number"])
255
255
  return pod
256
256
 
257
- def get_or_create_spark_crd(self, launcher: CustomObjectLauncher, context) -> k8s.V1Pod:
257
+ def get_or_create_spark_crd(self, context) -> k8s.V1Pod:
258
258
  if self.reattach_on_restart:
259
259
  driver_pod = self.find_spark_job(context)
260
260
  if driver_pod:
261
261
  return driver_pod
262
262
 
263
- driver_pod, spark_obj_spec = launcher.start_spark_job(
263
+ driver_pod, spark_obj_spec = self.launcher.start_spark_job(
264
264
  image=self.image, code_path=self.code_path, startup_timeout=self.startup_timeout_seconds
265
265
  )
266
266
  return driver_pod
@@ -268,8 +268,9 @@ class SparkKubernetesOperator(KubernetesPodOperator):
268
268
  def process_pod_deletion(self, pod, *, reraise=True):
269
269
  if pod is not None:
270
270
  if self.delete_on_termination:
271
- self.log.info("Deleting spark job: %s", pod.metadata.name.replace("-driver", ""))
272
- self.launcher.delete_spark_job(pod.metadata.name.replace("-driver", ""))
271
+ pod_name = pod.metadata.name.replace("-driver", "")
272
+ self.log.info("Deleting spark job: %s", pod_name)
273
+ self.launcher.delete_spark_job(pod_name)
273
274
  else:
274
275
  self.log.info("skipping deleting spark job: %s", pod.metadata.name)
275
276
 
@@ -293,18 +294,22 @@ class SparkKubernetesOperator(KubernetesPodOperator):
293
294
  def custom_obj_api(self) -> CustomObjectsApi:
294
295
  return CustomObjectsApi()
295
296
 
296
- def execute(self, context: Context):
297
- self.name = self.create_job_name()
298
-
299
- self.log.info("Creating sparkApplication.")
300
- self.launcher = CustomObjectLauncher(
297
+ @cached_property
298
+ def launcher(self) -> CustomObjectLauncher:
299
+ launcher = CustomObjectLauncher(
301
300
  name=self.name,
302
301
  namespace=self.namespace,
303
302
  kube_client=self.client,
304
303
  custom_obj_api=self.custom_obj_api,
305
304
  template_body=self.template_body,
306
305
  )
307
- self.pod = self.get_or_create_spark_crd(self.launcher, context)
306
+ return launcher
307
+
308
+ def execute(self, context: Context):
309
+ self.name = self.create_job_name()
310
+
311
+ self.log.info("Creating sparkApplication.")
312
+ self.pod = self.get_or_create_spark_crd(context)
308
313
  self.pod_request_obj = self.launcher.pod_spec
309
314
 
310
315
  return super().execute(context=context)
@@ -25,7 +25,7 @@ from kubernetes import client
25
25
 
26
26
  from airflow.exceptions import AirflowException
27
27
  from airflow.providers.cncf.kubernetes.hooks.kubernetes import KubernetesHook
28
- from airflow.sensors.base import BaseSensorOperator
28
+ from airflow.providers.cncf.kubernetes.version_compat import BaseSensorOperator
29
29
 
30
30
  if TYPE_CHECKING:
31
31
  from airflow.utils.context import Context
@@ -16,8 +16,7 @@
16
16
  # under the License.
17
17
  from __future__ import annotations
18
18
 
19
- from collections.abc import Iterator
20
- from typing import Callable
19
+ from collections.abc import Callable, Iterator
21
20
 
22
21
  from kubernetes.utils import FailToCreateError
23
22
 
@@ -27,7 +27,7 @@ from collections.abc import Generator, Iterable
27
27
  from contextlib import closing, suppress
28
28
  from dataclasses import dataclass
29
29
  from datetime import timedelta
30
- from typing import TYPE_CHECKING, Protocol, cast
30
+ from typing import TYPE_CHECKING, Literal, Protocol, cast
31
31
 
32
32
  import pendulum
33
33
  import tenacity
@@ -36,7 +36,6 @@ from kubernetes.client.rest import ApiException
36
36
  from kubernetes.stream import stream as kubernetes_stream
37
37
  from pendulum import DateTime
38
38
  from pendulum.parsing.exceptions import ParserError
39
- from typing_extensions import Literal
40
39
  from urllib3.exceptions import HTTPError, TimeoutError
41
40
 
42
41
  from airflow.exceptions import AirflowException
@@ -33,3 +33,30 @@ def get_base_airflow_version_tuple() -> tuple[int, int, int]:
33
33
 
34
34
 
35
35
  AIRFLOW_V_3_0_PLUS = get_base_airflow_version_tuple() >= (3, 0, 0)
36
+ AIRFLOW_V_3_1_PLUS = get_base_airflow_version_tuple() >= (3, 1, 0)
37
+
38
+ if AIRFLOW_V_3_1_PLUS:
39
+ from airflow.sdk import BaseOperator
40
+ else:
41
+ from airflow.models import BaseOperator # type: ignore[no-redef]
42
+
43
+ if AIRFLOW_V_3_0_PLUS:
44
+ from airflow.sdk import BaseSensorOperator
45
+ from airflow.sdk.bases.decorator import DecoratedOperator, TaskDecorator, task_decorator_factory
46
+ else:
47
+ from airflow.decorators.base import ( # type: ignore[no-redef]
48
+ DecoratedOperator,
49
+ TaskDecorator,
50
+ task_decorator_factory,
51
+ )
52
+ from airflow.sensors.base import BaseSensorOperator # type: ignore[no-redef]
53
+
54
+ __all__ = [
55
+ "AIRFLOW_V_3_0_PLUS",
56
+ "AIRFLOW_V_3_1_PLUS",
57
+ "BaseOperator",
58
+ "BaseSensorOperator",
59
+ "DecoratedOperator",
60
+ "TaskDecorator",
61
+ "task_decorator_factory",
62
+ ]
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-cncf-kubernetes
3
- Version: 10.6.0
3
+ Version: 10.6.1rc1
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>
7
7
  Maintainer-email: Apache Software Foundation <dev@airflow.apache.org>
8
- Requires-Python: ~=3.9
8
+ Requires-Python: ~=3.10
9
9
  Description-Content-Type: text/x-rst
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Environment :: Console
@@ -15,20 +15,19 @@ Classifier: Intended Audience :: System Administrators
15
15
  Classifier: Framework :: Apache Airflow
16
16
  Classifier: Framework :: Apache Airflow :: Provider
17
17
  Classifier: License :: OSI Approved :: Apache Software License
18
- Classifier: Programming Language :: Python :: 3.9
19
18
  Classifier: Programming Language :: Python :: 3.10
20
19
  Classifier: Programming Language :: Python :: 3.11
21
20
  Classifier: Programming Language :: Python :: 3.12
22
21
  Classifier: Topic :: System :: Monitoring
23
22
  Requires-Dist: aiofiles>=23.2.0
24
- Requires-Dist: apache-airflow>=2.10.0
23
+ Requires-Dist: apache-airflow>=2.10.0rc1
25
24
  Requires-Dist: asgiref>=3.5.2
26
25
  Requires-Dist: cryptography>=41.0.0
27
26
  Requires-Dist: kubernetes>=32.0.0,<33.0.0
28
27
  Requires-Dist: kubernetes_asyncio>=32.0.0,<33.0.0
29
28
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
30
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.6.0/changelog.html
31
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.6.0
29
+ Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.6.1/changelog.html
30
+ Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.6.1
32
31
  Project-URL: Mastodon, https://fosstodon.org/@airflow
33
32
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
34
33
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -59,7 +58,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
59
58
 
60
59
  Package ``apache-airflow-providers-cncf-kubernetes``
61
60
 
62
- Release: ``10.6.0``
61
+ Release: ``10.6.1``
63
62
 
64
63
 
65
64
  `Kubernetes <https://kubernetes.io/>`__
@@ -72,7 +71,7 @@ This is a provider package for ``cncf.kubernetes`` provider. All classes for thi
72
71
  are in ``airflow.providers.cncf.kubernetes`` python package.
73
72
 
74
73
  You can find package information and changelog for the provider
75
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.6.0/>`_.
74
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.6.1/>`_.
76
75
 
77
76
  Installation
78
77
  ------------
@@ -81,7 +80,7 @@ You can install this package on top of an existing Airflow 2 installation (see `
81
80
  for the minimum Airflow version supported) via
82
81
  ``pip install apache-airflow-providers-cncf-kubernetes``
83
82
 
84
- The package supports the following python versions: 3.9,3.10,3.11,3.12
83
+ The package supports the following python versions: 3.10,3.11,3.12
85
84
 
86
85
  Requirements
87
86
  ------------
@@ -98,5 +97,5 @@ PIP package Version required
98
97
  ====================== ====================
99
98
 
100
99
  The changelog for the provider package can be found in the
101
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.6.0/changelog.html>`_.
100
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.6.1/changelog.html>`_.
102
101
 
@@ -1,10 +1,10 @@
1
1
  airflow/providers/cncf/kubernetes/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
2
- airflow/providers/cncf/kubernetes/__init__.py,sha256=3zCSE5o2NsRNwIL9r5ir0zlepR293afTmqi8EUI-9Yo,1505
3
- airflow/providers/cncf/kubernetes/callbacks.py,sha256=5zGmQthojdT9iBEV3LIyBq-oKzjv2D4dOYCjYRbb61c,6076
2
+ airflow/providers/cncf/kubernetes/__init__.py,sha256=AQ6Q8rLaXzQMcoW9BfUmJ16gyXwo5AfHF6jIzoMta7U,1505
3
+ airflow/providers/cncf/kubernetes/callbacks.py,sha256=1nCLXFJKtr5FM9ApB8Drw5VAGSC3TDFsPSTMtRnAR3Q,6085
4
4
  airflow/providers/cncf/kubernetes/exceptions.py,sha256=3cNEZTnrltBsqwzHiLfckwYYc_IWY1g4PcRs6zuMWWA,1137
5
5
  airflow/providers/cncf/kubernetes/get_provider_info.py,sha256=Git4HycOcHrb4zD9W7ZYsqNDkQSQ4uipSJO_GaPiroE,16041
6
6
  airflow/providers/cncf/kubernetes/k8s_model.py,sha256=xmdFhX29DjegoZ-cq8-KDL9soVYXf4OpU6fAGr3cPTU,2101
7
- airflow/providers/cncf/kubernetes/kube_client.py,sha256=yflZxLousXA9d7t67KrEy55qzb1cUhEyy6yCPkEem28,5329
7
+ airflow/providers/cncf/kubernetes/kube_client.py,sha256=AaTY2UhhKVa-qrhMvpiQjdUJhrQyndwQ_5PoRmWJy3k,5714
8
8
  airflow/providers/cncf/kubernetes/kube_config.py,sha256=RX-ilybMXAcXg4gGyKfh6IYRWEf7llPycp9LqbYEe6s,5154
9
9
  airflow/providers/cncf/kubernetes/kubernetes_helper_functions.py,sha256=opxof6wxHEAHwa_zRB47QJBBrV5St4rIZzAiptA9Rek,5510
10
10
  airflow/providers/cncf/kubernetes/pod_generator.py,sha256=0VEcAtT2SzAFwSDsQWe2QdrY2mDV8s4hBw0qLcmIMGw,21038
@@ -12,30 +12,30 @@ airflow/providers/cncf/kubernetes/python_kubernetes_script.jinja2,sha256=I0EHRGw
12
12
  airflow/providers/cncf/kubernetes/python_kubernetes_script.py,sha256=KnTlZSWCZhwvj89fSc2kgIRTaI4iLNKPquHc2wXnluo,3460
13
13
  airflow/providers/cncf/kubernetes/secret.py,sha256=wj-T9gouqau_X14slAstGmnSxqXJQzdLwUdURzHna0I,5209
14
14
  airflow/providers/cncf/kubernetes/template_rendering.py,sha256=WSUBhjGSDhjNtA4IFlbYyX50rvYN6UA4dMk0cPqgOjo,3618
15
- airflow/providers/cncf/kubernetes/version_compat.py,sha256=j5PCtXvZ71aBjixu-EFTNtVDPsngzzs7os0ZQDgFVDk,1536
15
+ airflow/providers/cncf/kubernetes/version_compat.py,sha256=UYay_aaghzMUY2canTQ26qMfsv2vvzb4nPAfhX8mXm4,2349
16
16
  airflow/providers/cncf/kubernetes/backcompat/__init__.py,sha256=KXF76f3v1jIFUBNz8kwxVMvm7i4mNo35LbIG9IijBNc,1299
17
17
  airflow/providers/cncf/kubernetes/backcompat/backwards_compat_converters.py,sha256=FkRRtIEucp2hYrecGVYVgyPI6-b7hE7X7L17Z3r459Y,4303
18
18
  airflow/providers/cncf/kubernetes/cli/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
19
19
  airflow/providers/cncf/kubernetes/cli/kubernetes_command.py,sha256=lvs9RJ-fjrCdisE2rnRJkxUxpn6rdtFX4j7D94ASO9c,7943
20
20
  airflow/providers/cncf/kubernetes/decorators/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
21
- airflow/providers/cncf/kubernetes/decorators/kubernetes.py,sha256=_OnebMazgYTJoCnkaMsRxwF6f2slKU_-ucrml8z8cq0,6449
22
- airflow/providers/cncf/kubernetes/decorators/kubernetes_cmd.py,sha256=Rsak_cPl_-yNv7SKh0PI7r2UgqZF-Li7zIxwX5cedc0,4951
21
+ airflow/providers/cncf/kubernetes/decorators/kubernetes.py,sha256=d27TR2k-NbpwQSwHd7L265ZZYXiRBlPg7na7RsrH1Ik,6216
22
+ airflow/providers/cncf/kubernetes/decorators/kubernetes_cmd.py,sha256=C-G6_Ye42mfRTegOE0riO8NuWh2AaBuXCF3j6LPRKOI,4719
23
23
  airflow/providers/cncf/kubernetes/executors/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
24
24
  airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py,sha256=dpy1d0BU-pID_t9wPmi7h9PULbk9sQBIWqKxy9PNSB8,31953
25
- airflow/providers/cncf/kubernetes/executors/kubernetes_executor_types.py,sha256=drjK3ZGVJ8pETX0uwT4s6zqWPMegXumMQDgwBipx_xc,2042
25
+ airflow/providers/cncf/kubernetes/executors/kubernetes_executor_types.py,sha256=9EpTm3u0R6FgX7L41PFLUT2FRunpt7AFfbHvcA2pXmA,2004
26
26
  airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py,sha256=1aoIOoL9-ufnvZxHOau-ZJtt14Xl2zxlah2SuSmNnp0,24461
27
- airflow/providers/cncf/kubernetes/executors/local_kubernetes_executor.py,sha256=icUEyhfHZYI4GvacTrYdS_nSohLk5tLzR5ZNUAYlhQY,12042
27
+ airflow/providers/cncf/kubernetes/executors/local_kubernetes_executor.py,sha256=CWCN4b6Ircs-3tCxJjBsrjl4Q0ABBJIwqlZr7a5lW6k,12243
28
28
  airflow/providers/cncf/kubernetes/hooks/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
29
- airflow/providers/cncf/kubernetes/hooks/kubernetes.py,sha256=KPv5t7Xpvx9Nw9uampf1VCMdnq_ySqRzFbt07NKIjZY,37107
29
+ airflow/providers/cncf/kubernetes/hooks/kubernetes.py,sha256=33RZ1wlcuxDaVEu8z59cggbnKGluoTyTzAdkwBtMUZI,37243
30
30
  airflow/providers/cncf/kubernetes/kubernetes_executor_templates/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
31
31
  airflow/providers/cncf/kubernetes/kubernetes_executor_templates/basic_template.yaml,sha256=yzJmXN4ZyB4aDwI_GIugpL9-f1YMVy__X-LQSbeU95A,2567
32
32
  airflow/providers/cncf/kubernetes/operators/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
33
33
  airflow/providers/cncf/kubernetes/operators/custom_object_launcher.py,sha256=jTVHQt1vp5gELrLNyM-DrZ1ywgmTy3Hh1i6wyl7AGS0,15314
34
- airflow/providers/cncf/kubernetes/operators/job.py,sha256=aK2MogooZ6K7uVC0hWRYhCGgzwHOERrgPyknWu5mp7c,23771
35
- airflow/providers/cncf/kubernetes/operators/kueue.py,sha256=eEfl__06k15-21Y86qHOLAsY2zR1OWM4QgQhDteDBP0,4563
36
- airflow/providers/cncf/kubernetes/operators/pod.py,sha256=hF3M93zB-gEvdKaGV0gMkMzDJF0URnpXSbcoKWR99_g,60607
37
- airflow/providers/cncf/kubernetes/operators/resource.py,sha256=Q5WssuDyjtzo1Op1pzUmYG4JZZdzCKTe-vTZEy8HSNA,7579
38
- airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py,sha256=0TO86G-gbWAkQvaWBfhCp6ZJwoQzciH-UGR5kgw9fmg,13847
34
+ airflow/providers/cncf/kubernetes/operators/job.py,sha256=pJUBp831gJmo4ppJS1Fc85uzTa4dKh-5r4LSn0crVGU,23805
35
+ airflow/providers/cncf/kubernetes/operators/kueue.py,sha256=Xr-G4uvgSzmqm72LmUsRlTbuZ4hFG6GTI8lvdLoya9Y,4597
36
+ airflow/providers/cncf/kubernetes/operators/pod.py,sha256=PDYTONjck2hQnWsK6P3pU4NgobCQ_gDpbXxqxivIn6Y,60732
37
+ airflow/providers/cncf/kubernetes/operators/resource.py,sha256=9tfoxEyOTZ3d0PqejKW3aRxEyWTOjbjDnwQgMK3Ln6g,7613
38
+ airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py,sha256=lqZqehu-YUMDxFTwSlQm0e10pdoU5njus5TtMLOdEUI,13898
39
39
  airflow/providers/cncf/kubernetes/pod_template_file_examples/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
40
40
  airflow/providers/cncf/kubernetes/pod_template_file_examples/dags_in_image_template.yaml,sha256=7JdppZ-XDBpv2Bnde2SthhcME8w3b8xQdPAK1fJGW60,2256
41
41
  airflow/providers/cncf/kubernetes/pod_template_file_examples/dags_in_volume_template.yaml,sha256=-Pk_EwKpyWRYZKOnumUxVrDeAfFJ0nr3WZ7JNnvppzg,2442
@@ -45,16 +45,16 @@ airflow/providers/cncf/kubernetes/resource_convert/configmap.py,sha256=gf7DdVeD0
45
45
  airflow/providers/cncf/kubernetes/resource_convert/env_variable.py,sha256=vBeR__dLHsG619rxHTmY1SSefSTdUhnD4HRKzzQJutM,1462
46
46
  airflow/providers/cncf/kubernetes/resource_convert/secret.py,sha256=ElZCMbTWeTKoPeIJ1fTvlqRXM8nGkWj2MrIlVckX6Ag,1494
47
47
  airflow/providers/cncf/kubernetes/sensors/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
48
- airflow/providers/cncf/kubernetes/sensors/spark_kubernetes.py,sha256=sMSuE4bziqPYzBNIZ2y1ab00kGO2tlS3Z7AmePBFA3w,5356
48
+ airflow/providers/cncf/kubernetes/sensors/spark_kubernetes.py,sha256=NrrUUXK1ctldF9j-pjEjJEvPQafH6b4rpLtSrJJVNEU,5384
49
49
  airflow/providers/cncf/kubernetes/triggers/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
50
50
  airflow/providers/cncf/kubernetes/triggers/job.py,sha256=DGbC1FZktBF-00Lb0pU9iIKQnmdW8HWklp5Wwq54OEY,6754
51
51
  airflow/providers/cncf/kubernetes/triggers/pod.py,sha256=YEyYTQONZu66uHGp_38N_A56txZNamA0Kc4UA0I3sJk,13414
52
52
  airflow/providers/cncf/kubernetes/utils/__init__.py,sha256=ClZN0VPjWySdVwS_ktH7rrgL9VLAcs3OSJSB9s3zaYw,863
53
53
  airflow/providers/cncf/kubernetes/utils/delete_from.py,sha256=poObZSoEJwQyaYWilEURs8f4CDY2sn_pfwS31Lf579A,5195
54
- airflow/providers/cncf/kubernetes/utils/k8s_resource_iterator.py,sha256=DLypjkD_3YDixRTcsxEjgvHZNbbG9qamlz05eBqaWzU,1955
55
- airflow/providers/cncf/kubernetes/utils/pod_manager.py,sha256=Vpww3vAHX48QtApI-j1cI1jNiozQ6YMA7wfKFV1ELI0,40471
54
+ airflow/providers/cncf/kubernetes/utils/k8s_resource_iterator.py,sha256=pl-G-2WhZVbewKkwmL9AxPo1hAQWHHEPK43b-ruF4-w,1937
55
+ airflow/providers/cncf/kubernetes/utils/pod_manager.py,sha256=TljcFQBXNHraXfoZ0UDT3iMSv7VlAJZwW-f6prJUmxA,40442
56
56
  airflow/providers/cncf/kubernetes/utils/xcom_sidecar.py,sha256=k6bdmVJ21OrAwGmWwledRrAmaty9ZrmbuM-IbaI4mqo,2519
57
- apache_airflow_providers_cncf_kubernetes-10.6.0.dist-info/entry_points.txt,sha256=ByD3QJJyP9CfmTYtpNI1953akD38RUDgpGXLaq9vpOw,111
58
- apache_airflow_providers_cncf_kubernetes-10.6.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
59
- apache_airflow_providers_cncf_kubernetes-10.6.0.dist-info/METADATA,sha256=XcssbzlyLneSRizD-X23OPUu_FB59-o13Z3T6aIQElc,4301
60
- apache_airflow_providers_cncf_kubernetes-10.6.0.dist-info/RECORD,,
57
+ apache_airflow_providers_cncf_kubernetes-10.6.1rc1.dist-info/entry_points.txt,sha256=ByD3QJJyP9CfmTYtpNI1953akD38RUDgpGXLaq9vpOw,111
58
+ apache_airflow_providers_cncf_kubernetes-10.6.1rc1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
59
+ apache_airflow_providers_cncf_kubernetes-10.6.1rc1.dist-info/METADATA,sha256=wSxW0B-Vh3wa5ECcu2L4RxEvRl8hWgQ43UUE-B8cgII,4268
60
+ apache_airflow_providers_cncf_kubernetes-10.6.1rc1.dist-info/RECORD,,