apache-airflow-providers-cncf-kubernetes 10.8.2rc1__tar.gz → 10.9.0rc1__tar.gz

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 (158) hide show
  1. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/PKG-INFO +37 -16
  2. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/README.rst +33 -13
  3. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/changelog.rst +30 -4
  4. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/index.rst +40 -11
  5. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/kubernetes_executor.rst +2 -2
  6. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/provider.yaml +2 -1
  7. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/pyproject.toml +5 -3
  8. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/__init__.py +1 -1
  9. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/decorators/kubernetes.py +1 -1
  10. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/decorators/kubernetes_cmd.py +1 -1
  11. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/hooks/kubernetes.py +36 -6
  12. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/operators/custom_object_launcher.py +3 -1
  13. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/operators/pod.py +58 -42
  14. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/sensors/spark_kubernetes.py +1 -6
  15. apache_airflow_providers_cncf_kubernetes-10.9.0rc1/src/airflow/providers/cncf/kubernetes/utils/container.py +118 -0
  16. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/utils/pod_manager.py +9 -128
  17. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/version_compat.py +1 -31
  18. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/hooks/test_kubernetes.py +1 -1
  19. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/operators/test_custom_object_launcher.py +21 -0
  20. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/operators/test_pod.py +95 -0
  21. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/test_pod_generator.py +2 -2
  22. apache_airflow_providers_cncf_kubernetes-10.9.0rc1/tests/unit/cncf/kubernetes/utils/test_container.py +172 -0
  23. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/utils/test_pod_manager.py +0 -147
  24. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/.latest-doc-only-change.txt +0 -0
  25. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/cli-ref.rst +0 -0
  26. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/commits.rst +0 -0
  27. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/conf.py +0 -0
  28. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/configurations-ref.rst +0 -0
  29. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/connections/kubernetes.rst +0 -0
  30. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/img/arch-diag-kubernetes.png +0 -0
  31. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/img/arch-diag-kubernetes2.png +0 -0
  32. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/img/k8s-failed-pod.png +0 -0
  33. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/img/k8s-happy-path.png +0 -0
  34. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/installing-providers-from-sources.rst +0 -0
  35. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/integration-logos/Kubernetes.png +0 -0
  36. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/integration-logos/Spark-On-Kubernetes.png +0 -0
  37. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/local_kubernetes_executor.rst +0 -0
  38. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/operators.rst +0 -0
  39. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/redirects.txt +0 -0
  40. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/docs/security.rst +0 -0
  41. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/__init__.py +0 -0
  42. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/__init__.py +0 -0
  43. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/__init__.py +0 -0
  44. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/LICENSE +0 -0
  45. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/backcompat/__init__.py +0 -0
  46. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/backcompat/backwards_compat_converters.py +0 -0
  47. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/callbacks.py +0 -0
  48. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/cli/__init__.py +0 -0
  49. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/cli/kubernetes_command.py +0 -0
  50. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/decorators/__init__.py +0 -0
  51. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/exceptions.py +0 -0
  52. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/executors/__init__.py +0 -0
  53. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py +0 -0
  54. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/executors/kubernetes_executor_types.py +0 -0
  55. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py +0 -0
  56. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/executors/local_kubernetes_executor.py +0 -0
  57. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/get_provider_info.py +0 -0
  58. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/hooks/__init__.py +0 -0
  59. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/k8s_model.py +0 -0
  60. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/kube_client.py +0 -0
  61. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/kube_config.py +0 -0
  62. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/kubernetes_executor_templates/__init__.py +0 -0
  63. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/kubernetes_executor_templates/basic_template.yaml +0 -0
  64. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/kubernetes_helper_functions.py +0 -0
  65. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/operators/__init__.py +0 -0
  66. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/operators/job.py +0 -0
  67. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/operators/kueue.py +0 -0
  68. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/operators/resource.py +0 -0
  69. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py +0 -0
  70. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/pod_generator.py +0 -0
  71. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/pod_template_file_examples/__init__.py +0 -0
  72. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/pod_template_file_examples/dags_in_image_template.yaml +0 -0
  73. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/pod_template_file_examples/dags_in_volume_template.yaml +0 -0
  74. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/pod_template_file_examples/git_sync_template.yaml +0 -0
  75. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/python_kubernetes_script.jinja2 +0 -0
  76. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/python_kubernetes_script.py +0 -0
  77. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/resource_convert/__init__.py +0 -0
  78. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/resource_convert/configmap.py +0 -0
  79. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/resource_convert/env_variable.py +0 -0
  80. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/resource_convert/secret.py +0 -0
  81. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/secret.py +0 -0
  82. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/sensors/__init__.py +0 -0
  83. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/template_rendering.py +0 -0
  84. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/triggers/__init__.py +0 -0
  85. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/triggers/job.py +0 -0
  86. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/triggers/pod.py +0 -0
  87. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/utils/__init__.py +0 -0
  88. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/utils/delete_from.py +0 -0
  89. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/utils/k8s_resource_iterator.py +0 -0
  90. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/src/airflow/providers/cncf/kubernetes/utils/xcom_sidecar.py +0 -0
  91. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/conftest.py +0 -0
  92. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/system/__init__.py +0 -0
  93. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/system/cncf/__init__.py +0 -0
  94. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/system/cncf/kubernetes/__init__.py +0 -0
  95. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/system/cncf/kubernetes/example_kubernetes.py +0 -0
  96. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/system/cncf/kubernetes/example_kubernetes_async.py +0 -0
  97. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/system/cncf/kubernetes/example_kubernetes_cmd_decorator.py +0 -0
  98. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/system/cncf/kubernetes/example_kubernetes_decorator.py +0 -0
  99. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/system/cncf/kubernetes/example_kubernetes_job.py +0 -0
  100. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/system/cncf/kubernetes/example_kubernetes_kueue.py +0 -0
  101. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/system/cncf/kubernetes/example_kubernetes_resource.py +0 -0
  102. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/system/cncf/kubernetes/example_spark_kubernetes.py +0 -0
  103. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/system/cncf/kubernetes/example_spark_kubernetes_spark_pi.yaml +0 -0
  104. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/system/cncf/kubernetes/spark_job_template.yaml +0 -0
  105. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/__init__.py +0 -0
  106. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/__init__.py +0 -0
  107. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/__init__.py +0 -0
  108. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/backcompat/__init__.py +0 -0
  109. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/backcompat/test_backwards_compat_converters.py +0 -0
  110. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/cli/__init__.py +0 -0
  111. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/cli/test_kubernetes_command.py +0 -0
  112. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/conftest.py +0 -0
  113. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/data_files/__init__.py +0 -0
  114. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/data_files/executor/__init__.py +0 -0
  115. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/data_files/executor/basic_template.yaml +0 -0
  116. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/data_files/kube_config +0 -0
  117. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/data_files/pods/__init__.py +0 -0
  118. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/data_files/pods/generator_base.yaml +0 -0
  119. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/data_files/pods/generator_base_with_secrets.yaml +0 -0
  120. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/data_files/pods/template.yaml +0 -0
  121. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/data_files/spark/__init__.py +0 -0
  122. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/data_files/spark/application_template.yaml +0 -0
  123. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/data_files/spark/application_test.json +0 -0
  124. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/data_files/spark/application_test.yaml +0 -0
  125. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/data_files/spark/application_test_with_no_name_from_config.json +0 -0
  126. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/data_files/spark/application_test_with_no_name_from_config.yaml +0 -0
  127. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/decorators/__init__.py +0 -0
  128. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/decorators/test_kubernetes.py +0 -0
  129. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/decorators/test_kubernetes_cmd.py +0 -0
  130. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/decorators/test_kubernetes_commons.py +0 -0
  131. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/executors/__init__.py +0 -0
  132. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/executors/test_kubernetes_executor.py +0 -0
  133. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/executors/test_local_kubernetes_executor.py +0 -0
  134. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/hooks/__init__.py +0 -0
  135. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/log_handlers/__init__.py +0 -0
  136. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/log_handlers/test_log_handlers.py +0 -0
  137. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/models/__init__.py +0 -0
  138. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/models/test_secret.py +0 -0
  139. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/operators/__init__.py +0 -0
  140. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/operators/test_job.py +0 -0
  141. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/operators/test_kueue.py +0 -0
  142. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/operators/test_resource.py +0 -0
  143. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/operators/test_spark_kubernetes.py +0 -0
  144. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/resource_convert/__init__.py +0 -0
  145. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/resource_convert/test_configmap.py +0 -0
  146. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/resource_convert/test_env_variable.py +0 -0
  147. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/resource_convert/test_secret.py +0 -0
  148. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/sensors/__init__.py +0 -0
  149. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/sensors/test_spark_kubernetes.py +0 -0
  150. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/test_callbacks.py +0 -0
  151. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/test_client.py +0 -0
  152. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/test_kubernetes_helper_functions.py +0 -0
  153. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/test_template_rendering.py +0 -0
  154. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/triggers/__init__.py +0 -0
  155. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/triggers/test_job.py +0 -0
  156. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/triggers/test_pod.py +0 -0
  157. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/utils/__init__.py +0 -0
  158. {apache_airflow_providers_cncf_kubernetes-10.8.2rc1 → apache_airflow_providers_cncf_kubernetes-10.9.0rc1}/tests/unit/cncf/kubernetes/utils/test_k8s_resource_iterator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-cncf-kubernetes
3
- Version: 10.8.2rc1
3
+ Version: 10.9.0rc1
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>
@@ -22,13 +22,14 @@ Classifier: Programming Language :: Python :: 3.13
22
22
  Classifier: Topic :: System :: Monitoring
23
23
  Requires-Dist: aiofiles>=23.2.0
24
24
  Requires-Dist: apache-airflow>=2.10.0rc1
25
+ Requires-Dist: apache-airflow-providers-common-compat>=1.8.0rc1
25
26
  Requires-Dist: asgiref>=3.5.2
26
27
  Requires-Dist: cryptography>=41.0.0
27
28
  Requires-Dist: kubernetes>=32.0.0,<34.0.0
28
29
  Requires-Dist: kubernetes_asyncio>=32.0.0,<34.0.0
29
30
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
30
- Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.8.2/changelog.html
31
- Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.8.2
31
+ Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.9.0/changelog.html
32
+ Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.9.0
32
33
  Project-URL: Mastodon, https://fosstodon.org/@airflow
33
34
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
34
35
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -59,7 +60,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
59
60
 
60
61
  Package ``apache-airflow-providers-cncf-kubernetes``
61
62
 
62
- Release: ``10.8.2``
63
+ Release: ``10.9.0``
63
64
 
64
65
 
65
66
  `Kubernetes <https://kubernetes.io/>`__
@@ -72,7 +73,7 @@ This is a provider package for ``cncf.kubernetes`` provider. All classes for thi
72
73
  are in ``airflow.providers.cncf.kubernetes`` python package.
73
74
 
74
75
  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.8.2/>`_.
76
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.9.0/>`_.
76
77
 
77
78
  Installation
78
79
  ------------
@@ -86,17 +87,37 @@ The package supports the following python versions: 3.10,3.11,3.12,3.13
86
87
  Requirements
87
88
  ------------
88
89
 
89
- ====================== ====================
90
- PIP package Version required
91
- ====================== ====================
92
- ``aiofiles`` ``>=23.2.0``
93
- ``apache-airflow`` ``>=2.10.0``
94
- ``asgiref`` ``>=3.5.2``
95
- ``cryptography`` ``>=41.0.0``
96
- ``kubernetes`` ``>=32.0.0,<34.0.0``
97
- ``kubernetes_asyncio`` ``>=32.0.0,<34.0.0``
98
- ====================== ====================
90
+ ========================================== ====================
91
+ PIP package Version required
92
+ ========================================== ====================
93
+ ``aiofiles`` ``>=23.2.0``
94
+ ``apache-airflow`` ``>=2.10.0``
95
+ ``apache-airflow-providers-common-compat`` ``>=1.8.0``
96
+ ``asgiref`` ``>=3.5.2``
97
+ ``cryptography`` ``>=41.0.0``
98
+ ``kubernetes`` ``>=32.0.0,<34.0.0``
99
+ ``kubernetes_asyncio`` ``>=32.0.0,<34.0.0``
100
+ ========================================== ====================
101
+
102
+ Cross provider package dependencies
103
+ -----------------------------------
104
+
105
+ Those are dependencies that might be needed in order to use all the features of the package.
106
+ You need to install the specified providers in order to use them.
107
+
108
+ You can install such cross-provider dependencies when installing from PyPI. For example:
109
+
110
+ .. code-block:: bash
111
+
112
+ pip install apache-airflow-providers-cncf-kubernetes[common.compat]
113
+
114
+
115
+ ================================================================================================================== =================
116
+ Dependent package Extra
117
+ ================================================================================================================== =================
118
+ `apache-airflow-providers-common-compat <https://airflow.apache.org/docs/apache-airflow-providers-common-compat>`_ ``common.compat``
119
+ ================================================================================================================== =================
99
120
 
100
121
  The changelog for the provider package can be found in the
101
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.8.2/changelog.html>`_.
122
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.9.0/changelog.html>`_.
102
123
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-cncf-kubernetes``
25
25
 
26
- Release: ``10.8.2``
26
+ Release: ``10.9.0``
27
27
 
28
28
 
29
29
  `Kubernetes <https://kubernetes.io/>`__
@@ -36,7 +36,7 @@ This is a provider package for ``cncf.kubernetes`` provider. All classes for thi
36
36
  are in ``airflow.providers.cncf.kubernetes`` python package.
37
37
 
38
38
  You can find package information and changelog for the provider
39
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.8.2/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.9.0/>`_.
40
40
 
41
41
  Installation
42
42
  ------------
@@ -50,16 +50,36 @@ The package supports the following python versions: 3.10,3.11,3.12,3.13
50
50
  Requirements
51
51
  ------------
52
52
 
53
- ====================== ====================
54
- PIP package Version required
55
- ====================== ====================
56
- ``aiofiles`` ``>=23.2.0``
57
- ``apache-airflow`` ``>=2.10.0``
58
- ``asgiref`` ``>=3.5.2``
59
- ``cryptography`` ``>=41.0.0``
60
- ``kubernetes`` ``>=32.0.0,<34.0.0``
61
- ``kubernetes_asyncio`` ``>=32.0.0,<34.0.0``
62
- ====================== ====================
53
+ ========================================== ====================
54
+ PIP package Version required
55
+ ========================================== ====================
56
+ ``aiofiles`` ``>=23.2.0``
57
+ ``apache-airflow`` ``>=2.10.0``
58
+ ``apache-airflow-providers-common-compat`` ``>=1.8.0``
59
+ ``asgiref`` ``>=3.5.2``
60
+ ``cryptography`` ``>=41.0.0``
61
+ ``kubernetes`` ``>=32.0.0,<34.0.0``
62
+ ``kubernetes_asyncio`` ``>=32.0.0,<34.0.0``
63
+ ========================================== ====================
64
+
65
+ Cross provider package dependencies
66
+ -----------------------------------
67
+
68
+ Those are dependencies that might be needed in order to use all the features of the package.
69
+ You need to install the specified providers in order to use them.
70
+
71
+ You can install such cross-provider dependencies when installing from PyPI. For example:
72
+
73
+ .. code-block:: bash
74
+
75
+ pip install apache-airflow-providers-cncf-kubernetes[common.compat]
76
+
77
+
78
+ ================================================================================================================== =================
79
+ Dependent package Extra
80
+ ================================================================================================================== =================
81
+ `apache-airflow-providers-common-compat <https://airflow.apache.org/docs/apache-airflow-providers-common-compat>`_ ``common.compat``
82
+ ================================================================================================================== =================
63
83
 
64
84
  The changelog for the provider package can be found in the
65
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.8.2/changelog.html>`_.
85
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.9.0/changelog.html>`_.
@@ -28,6 +28,36 @@ Changelog
28
28
  ---------
29
29
 
30
30
 
31
+ 10.9.0
32
+ ......
33
+
34
+ Features
35
+ ~~~~~~~~
36
+
37
+ * ``Move container-related functions from PodManager to a separate file (#56700)``
38
+ * ``Add KubernetesPodOperator deferred callbacks (#47108)``
39
+
40
+ Bug Fixes
41
+ ~~~~~~~~~
42
+
43
+ * ``Fix KubernetesPodOperator termination_grace_period parameter not being applied to pod spec (#56402)``
44
+ * ``SparkKubernetesOperator: preserve existing metadata labels in SparkApplication manifest (#56063)``
45
+
46
+ Misc
47
+ ~~~~
48
+
49
+ * ``Migrate cncf/kubernetes provider to ''common.compat'' (#57023)``
50
+
51
+ Doc-only
52
+ ~~~~~~~~
53
+
54
+ * ``Correct 'Dag' to 'DAG' for code snippets in provider docs (#56727)``
55
+
56
+ .. Below changes are excluded from the changelog. Move them to
57
+ appropriate section above if needed. Do not delete the lines(!):
58
+ * ``Remove placeholder Release Date in changelog and index files (#56056)``
59
+ * ``Enable PT011 rule to provider tests (#56578)``
60
+
31
61
  10.8.2
32
62
  ......
33
63
 
@@ -45,8 +75,6 @@ Bug Fixes
45
75
  ......
46
76
 
47
77
 
48
- Release Date: ``|PypiReleaseDate|``
49
-
50
78
  Bug Fixes
51
79
  ~~~~~~~~~
52
80
 
@@ -69,8 +97,6 @@ Misc
69
97
  ......
70
98
 
71
99
 
72
- Release Date: ``|PypiReleaseDate|``
73
-
74
100
  Features
75
101
  ~~~~~~~~
76
102
 
@@ -87,7 +87,7 @@ apache-airflow-providers-cncf-kubernetes package
87
87
  `Kubernetes <https://kubernetes.io/>`__
88
88
 
89
89
 
90
- Release: 10.8.2
90
+ Release: 10.9.0
91
91
 
92
92
  Provider package
93
93
  ----------------
@@ -107,13 +107,42 @@ Requirements
107
107
 
108
108
  The minimum Apache Airflow version supported by this provider distribution is ``2.10.0``.
109
109
 
110
- ====================== ====================
111
- PIP package Version required
112
- ====================== ====================
113
- ``aiofiles`` ``>=23.2.0``
114
- ``apache-airflow`` ``>=2.10.0``
115
- ``asgiref`` ``>=3.5.2``
116
- ``cryptography`` ``>=41.0.0``
117
- ``kubernetes`` ``>=32.0.0,<34.0.0``
118
- ``kubernetes_asyncio`` ``>=32.0.0,<34.0.0``
119
- ====================== ====================
110
+ ========================================== ====================
111
+ PIP package Version required
112
+ ========================================== ====================
113
+ ``aiofiles`` ``>=23.2.0``
114
+ ``apache-airflow`` ``>=2.10.0``
115
+ ``apache-airflow-providers-common-compat`` ``>=1.8.0``
116
+ ``asgiref`` ``>=3.5.2``
117
+ ``cryptography`` ``>=41.0.0``
118
+ ``kubernetes`` ``>=32.0.0,<34.0.0``
119
+ ``kubernetes_asyncio`` ``>=32.0.0,<34.0.0``
120
+ ========================================== ====================
121
+
122
+ Cross provider package dependencies
123
+ -----------------------------------
124
+
125
+ Those are dependencies that might be needed in order to use all the features of the package.
126
+ You need to install the specified provider distributions in order to use them.
127
+
128
+ You can install such cross-provider dependencies when installing from PyPI. For example:
129
+
130
+ .. code-block:: bash
131
+
132
+ pip install apache-airflow-providers-cncf-kubernetes[common.compat]
133
+
134
+
135
+ ================================================================================================================== =================
136
+ Dependent package Extra
137
+ ================================================================================================================== =================
138
+ `apache-airflow-providers-common-compat <https://airflow.apache.org/docs/apache-airflow-providers-common-compat>`_ ``common.compat``
139
+ ================================================================================================================== =================
140
+
141
+ Downloading official packages
142
+ -----------------------------
143
+
144
+ You can download officially released packages and verify their checksums and signatures from the
145
+ `Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
146
+
147
+ * `The apache-airflow-providers-cncf-kubernetes 10.9.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.9.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.9.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.9.0.tar.gz.sha512>`__)
148
+ * `The apache-airflow-providers-cncf-kubernetes 10.9.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.9.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.9.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.9.0-py3-none-any.whl.sha512>`__)
@@ -165,14 +165,14 @@ Here is an example of a task with both features:
165
165
 
166
166
  import pendulum
167
167
 
168
- from airflow import Dag
168
+ from airflow import DAG
169
169
  from airflow.decorators import task
170
170
  from airflow.example_dags.libs.helper import print_stuff
171
171
  from airflow.settings import AIRFLOW_HOME
172
172
 
173
173
  from kubernetes.client import models as k8s
174
174
 
175
- with Dag(
175
+ with DAG(
176
176
  dag_id="example_pod_template_file",
177
177
  schedule=None,
178
178
  start_date=pendulum.datetime(2021, 1, 1, tz="UTC"),
@@ -22,12 +22,13 @@ description: |
22
22
  `Kubernetes <https://kubernetes.io/>`__
23
23
 
24
24
  state: ready
25
- source-date-epoch: 1758645793
25
+ source-date-epoch: 1761116525
26
26
  # Note that those versions are maintained by release manager - do not update them manually
27
27
  # with the exception of case where other provider in sources has >= new provider version.
28
28
  # In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
29
29
  # to be done in the same PR
30
30
  versions:
31
+ - 10.9.0
31
32
  - 10.8.2
32
33
  - 10.8.1
33
34
  - 10.8.0
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-cncf-kubernetes"
28
- version = "10.8.2rc1"
28
+ version = "10.9.0rc1"
29
29
  description = "Provider package apache-airflow-providers-cncf-kubernetes for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  authors = [
@@ -59,6 +59,7 @@ requires-python = ">=3.10"
59
59
  dependencies = [
60
60
  "aiofiles>=23.2.0",
61
61
  "apache-airflow>=2.10.0rc1",
62
+ "apache-airflow-providers-common-compat>=1.8.0rc1",
62
63
  "asgiref>=3.5.2",
63
64
  "cryptography>=41.0.0",
64
65
  # The Kubernetes API is known to introduce problems when upgraded to a MAJOR version. Airflow Core
@@ -79,6 +80,7 @@ dev = [
79
80
  "apache-airflow",
80
81
  "apache-airflow-task-sdk",
81
82
  "apache-airflow-devel-common",
83
+ "apache-airflow-providers-common-compat",
82
84
  # Additional devel dependencies (do not remove this line and add extra development dependencies)
83
85
  ]
84
86
 
@@ -108,8 +110,8 @@ apache-airflow-providers-common-sql = {workspace = true}
108
110
  apache-airflow-providers-standard = {workspace = true}
109
111
 
110
112
  [project.urls]
111
- "Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.8.2"
112
- "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.8.2/changelog.html"
113
+ "Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.9.0"
114
+ "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.9.0/changelog.html"
113
115
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
114
116
  "Source Code" = "https://github.com/apache/airflow"
115
117
  "Slack Chat" = "https://s.apache.org/airflow-slack"
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "10.8.2"
32
+ __version__ = "10.9.0"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "2.10.0"
@@ -31,7 +31,7 @@ from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperato
31
31
  from airflow.providers.cncf.kubernetes.python_kubernetes_script import (
32
32
  write_python_script,
33
33
  )
34
- from airflow.providers.cncf.kubernetes.version_compat import (
34
+ from airflow.providers.common.compat.sdk import (
35
35
  DecoratedOperator,
36
36
  TaskDecorator,
37
37
  task_decorator_factory,
@@ -21,7 +21,7 @@ from collections.abc import Callable, Sequence
21
21
  from typing import TYPE_CHECKING
22
22
 
23
23
  from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator
24
- from airflow.providers.cncf.kubernetes.version_compat import (
24
+ from airflow.providers.common.compat.sdk import (
25
25
  DecoratedOperator,
26
26
  TaskDecorator,
27
27
  context_merge,
@@ -23,7 +23,7 @@ import tempfile
23
23
  from collections.abc import Generator
24
24
  from functools import cached_property
25
25
  from time import sleep
26
- from typing import TYPE_CHECKING, Any
26
+ from typing import TYPE_CHECKING, Any, Protocol
27
27
 
28
28
  import aiofiles
29
29
  import requests
@@ -39,12 +39,11 @@ from airflow.exceptions import AirflowException, AirflowNotFoundException
39
39
  from airflow.models import Connection
40
40
  from airflow.providers.cncf.kubernetes.kube_client import _disable_verify_ssl, _enable_tcp_keepalive
41
41
  from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import should_retry_creation
42
- from airflow.providers.cncf.kubernetes.utils.pod_manager import (
43
- PodOperatorHookProtocol,
42
+ from airflow.providers.cncf.kubernetes.utils.container import (
44
43
  container_is_completed,
45
44
  container_is_running,
46
45
  )
47
- from airflow.providers.cncf.kubernetes.version_compat import BaseHook
46
+ from airflow.providers.common.compat.sdk import BaseHook
48
47
  from airflow.utils import yaml
49
48
 
50
49
  if TYPE_CHECKING:
@@ -69,6 +68,36 @@ def _load_body_to_dict(body: str) -> dict:
69
68
  return body_dict
70
69
 
71
70
 
71
+ class PodOperatorHookProtocol(Protocol):
72
+ """
73
+ Protocol to define methods relied upon by KubernetesPodOperator.
74
+
75
+ Subclasses of KubernetesPodOperator, such as GKEStartPodOperator, may use
76
+ hooks that don't extend KubernetesHook. We use this protocol to document the
77
+ methods used by KPO and ensure that these methods exist on such other hooks.
78
+ """
79
+
80
+ @property
81
+ def core_v1_client(self) -> client.CoreV1Api:
82
+ """Get authenticated client object."""
83
+
84
+ @property
85
+ def is_in_cluster(self) -> bool:
86
+ """Expose whether the hook is configured with ``load_incluster_config`` or not."""
87
+
88
+ def get_pod(self, name: str, namespace: str) -> V1Pod:
89
+ """Read pod object from kubernetes API."""
90
+
91
+ def get_namespace(self) -> str | None:
92
+ """Return the namespace that defined in the connection."""
93
+
94
+ def get_xcom_sidecar_container_image(self) -> str | None:
95
+ """Return the xcom sidecar image that defined in the connection."""
96
+
97
+ def get_xcom_sidecar_container_resources(self) -> str | None:
98
+ """Return the xcom sidecar resources that defined in the connection."""
99
+
100
+
72
101
  class KubernetesHook(BaseHook, PodOperatorHookProtocol):
73
102
  """
74
103
  Creates Kubernetes API connection.
@@ -692,8 +721,9 @@ class KubernetesHook(BaseHook, PodOperatorHookProtocol):
692
721
  try:
693
722
  deployment = self.get_deployment_status(name=name, namespace=namespace)
694
723
  except Exception as e:
695
- self.log.exception("Exception occurred while checking for Deployment status.")
696
- raise e
724
+ msg = "Exception occurred while checking for Deployment status."
725
+ self.log.exception(msg)
726
+ raise ValueError(msg) from e
697
727
 
698
728
  deployment_status = V1Deployment.to_dict(deployment)["status"]
699
729
  replicas = deployment_status["replicas"]
@@ -238,7 +238,9 @@ class CustomObjectLauncher(LoggingMixin):
238
238
 
239
239
  def get_body(self):
240
240
  self.body: dict = SparkJobSpec(**self.template_body["spark"])
241
- self.body.metadata = {"name": self.name, "namespace": self.namespace}
241
+ if not hasattr(self.body, "metadata") or not isinstance(self.body.metadata, dict):
242
+ self.body.metadata = {}
243
+ self.body.metadata.update({"name": self.name, "namespace": self.namespace})
242
244
  if self.template_body.get("kubernetes"):
243
245
  k8s_spec: dict = KubernetesSpec(**self.template_body["kubernetes"])
244
246
  self.body.spec["volumes"] = k8s_spec.volumes
@@ -69,18 +69,20 @@ from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import (
69
69
  from airflow.providers.cncf.kubernetes.pod_generator import PodGenerator
70
70
  from airflow.providers.cncf.kubernetes.triggers.pod import KubernetesPodTrigger
71
71
  from airflow.providers.cncf.kubernetes.utils import xcom_sidecar
72
+ from airflow.providers.cncf.kubernetes.utils.container import (
73
+ container_is_succeeded,
74
+ get_container_termination_message,
75
+ )
72
76
  from airflow.providers.cncf.kubernetes.utils.pod_manager import (
73
77
  EMPTY_XCOM_RESULT,
74
78
  OnFinishAction,
75
79
  PodLaunchFailedException,
76
80
  PodManager,
77
81
  PodNotFoundException,
78
- PodOperatorHookProtocol,
79
82
  PodPhase,
80
- container_is_succeeded,
81
- get_container_termination_message,
82
83
  )
83
- from airflow.providers.cncf.kubernetes.version_compat import AIRFLOW_V_3_1_PLUS, XCOM_RETURN_KEY
84
+ from airflow.providers.cncf.kubernetes.version_compat import AIRFLOW_V_3_1_PLUS
85
+ from airflow.providers.common.compat.sdk import XCOM_RETURN_KEY
84
86
 
85
87
  if AIRFLOW_V_3_1_PLUS:
86
88
  from airflow.sdk import BaseOperator
@@ -95,6 +97,7 @@ if TYPE_CHECKING:
95
97
  import jinja2
96
98
  from pendulum import DateTime
97
99
 
100
+ from airflow.providers.cncf.kubernetes.hooks.kubernetes import PodOperatorHookProtocol
98
101
  from airflow.providers.cncf.kubernetes.secret import Secret
99
102
 
100
103
  try:
@@ -209,8 +212,9 @@ class KubernetesPodOperator(BaseOperator):
209
212
  :param priority_class_name: priority class name for the launched Pod
210
213
  :param pod_runtime_info_envs: (Optional) A list of environment variables,
211
214
  to be set in the container.
212
- :param termination_grace_period: Termination grace period if task killed in UI,
213
- defaults to kubernetes default
215
+ :param termination_grace_period: Termination grace period (in seconds) for the pod.
216
+ This sets the pod's ``terminationGracePeriodSeconds`` and is also used as the grace period
217
+ when deleting the pod if the task is killed. If not specified, uses the Kubernetes default (30 seconds).
214
218
  :param configmaps: (Optional) A list of names of config maps from which it collects ConfigMaps
215
219
  to populate the environment variables with. The contents of the target
216
220
  ConfigMap's Data field will represent the key-value pairs as environment variables.
@@ -735,20 +739,9 @@ class KubernetesPodOperator(BaseOperator):
735
739
  )
736
740
  finally:
737
741
  pod_to_clean = self.pod or self.pod_request_obj
738
- self.cleanup(
739
- pod=pod_to_clean,
740
- remote_pod=self.remote_pod,
741
- xcom_result=result,
742
- context=context,
742
+ self.post_complete_action(
743
+ pod=pod_to_clean, remote_pod=self.remote_pod, context=context, result=result
743
744
  )
744
- for callback in self.callbacks:
745
- callback.on_pod_cleanup(
746
- pod=pod_to_clean,
747
- client=self.client,
748
- mode=ExecutionMode.SYNC,
749
- context=context,
750
- operator=self,
751
- )
752
745
 
753
746
  if self.do_xcom_push:
754
747
  return result
@@ -819,11 +812,20 @@ class KubernetesPodOperator(BaseOperator):
819
812
  def execute_async(self, context: Context) -> None:
820
813
  if self.pod_request_obj is None:
821
814
  self.pod_request_obj = self.build_pod_request_obj(context)
815
+ for callback in self.callbacks:
816
+ callback.on_pod_manifest_created(
817
+ pod_request=self.pod_request_obj,
818
+ client=self.client,
819
+ mode=ExecutionMode.SYNC,
820
+ context=context,
821
+ operator=self,
822
+ )
822
823
  if self.pod is None:
823
824
  self.pod = self.get_or_create_pod( # must set `self.pod` for `on_kill`
824
825
  pod_request_obj=self.pod_request_obj,
825
826
  context=context,
826
827
  )
828
+
827
829
  if self.callbacks:
828
830
  pod = self.find_pod(self.pod.metadata.namespace, context=context)
829
831
  for callback in self.callbacks:
@@ -886,6 +888,7 @@ class KubernetesPodOperator(BaseOperator):
886
888
  grab the latest logs and defer back to the trigger again.
887
889
  """
888
890
  self.pod = None
891
+ xcom_sidecar_output = None
889
892
  try:
890
893
  pod_name = event["name"]
891
894
  pod_namespace = event["namespace"]
@@ -909,20 +912,37 @@ class KubernetesPodOperator(BaseOperator):
909
912
  follow = self.logging_interval is None
910
913
  last_log_time = event.get("last_log_time")
911
914
 
912
- if event["status"] in ("error", "failed", "timeout"):
913
- event_message = event.get("message", "No message provided")
914
- self.log.error(
915
- "Trigger emitted an %s event, failing the task: %s", event["status"], event_message
916
- )
917
- # fetch some logs when pod is failed
915
+ if event["status"] in ("error", "failed", "timeout", "success"):
918
916
  if self.get_logs:
919
917
  self._write_logs(self.pod, follow=follow, since_time=last_log_time)
920
918
 
921
- if self.do_xcom_push:
922
- _ = self.extract_xcom(pod=self.pod)
919
+ for callback in self.callbacks:
920
+ callback.on_pod_completion(
921
+ pod=self.pod,
922
+ client=self.client,
923
+ mode=ExecutionMode.SYNC,
924
+ context=context,
925
+ operator=self,
926
+ )
927
+ for callback in self.callbacks:
928
+ callback.on_pod_teardown(
929
+ pod=self.pod,
930
+ client=self.client,
931
+ mode=ExecutionMode.SYNC,
932
+ context=context,
933
+ operator=self,
934
+ )
935
+
936
+ xcom_sidecar_output = self.extract_xcom(pod=self.pod) if self.do_xcom_push else None
923
937
 
924
- message = event.get("stack_trace", event["message"])
925
- raise AirflowException(message)
938
+ if event["status"] != "success":
939
+ self.log.error(
940
+ "Trigger emitted an %s event, failing the task: %s", event["status"], event["message"]
941
+ )
942
+ message = event.get("stack_trace", event["message"])
943
+ raise AirflowException(message)
944
+
945
+ return xcom_sidecar_output
926
946
 
927
947
  if event["status"] == "running":
928
948
  if self.get_logs:
@@ -940,22 +960,12 @@ class KubernetesPodOperator(BaseOperator):
940
960
  self.invoke_defer_method(pod_log_status.last_log_time)
941
961
  else:
942
962
  self.invoke_defer_method()
943
-
944
- elif event["status"] == "success":
945
- # fetch some logs when pod is executed successfully
946
- if self.get_logs:
947
- self._write_logs(self.pod, follow=follow, since_time=last_log_time)
948
-
949
- if self.do_xcom_push:
950
- xcom_sidecar_output = self.extract_xcom(pod=self.pod)
951
- return xcom_sidecar_output
952
- return
953
963
  except TaskDeferred:
954
964
  raise
955
965
  finally:
956
- self._clean(event, context)
966
+ self._clean(event=event, context=context, result=xcom_sidecar_output)
957
967
 
958
- def _clean(self, event: dict[str, Any], context: Context) -> None:
968
+ def _clean(self, event: dict[str, Any], result: dict | None, context: Context) -> None:
959
969
  if event["status"] == "running":
960
970
  return
961
971
  istio_enabled = self.is_istio_enabled(self.pod)
@@ -979,6 +989,7 @@ class KubernetesPodOperator(BaseOperator):
979
989
  pod=self.pod,
980
990
  remote_pod=self.pod,
981
991
  context=context,
992
+ result=result,
982
993
  )
983
994
 
984
995
  def _write_logs(self, pod: k8s.V1Pod, follow: bool = False, since_time: DateTime | None = None) -> None:
@@ -1008,11 +1019,15 @@ class KubernetesPodOperator(BaseOperator):
1008
1019
  e if not isinstance(e, ApiException) else e.reason,
1009
1020
  )
1010
1021
 
1011
- def post_complete_action(self, *, pod, remote_pod, context: Context, **kwargs) -> None:
1022
+ def post_complete_action(
1023
+ self, *, pod: k8s.V1Pod, remote_pod: k8s.V1Pod, context: Context, result: dict | None, **kwargs
1024
+ ) -> None:
1012
1025
  """Actions that must be done after operator finishes logic of the deferrable_execution."""
1013
1026
  self.cleanup(
1014
1027
  pod=pod,
1015
1028
  remote_pod=remote_pod,
1029
+ xcom_result=result,
1030
+ context=context,
1016
1031
  )
1017
1032
  for callback in self.callbacks:
1018
1033
  callback.on_pod_cleanup(
@@ -1305,6 +1320,7 @@ class KubernetesPodOperator(BaseOperator):
1305
1320
  priority_class_name=self.priority_class_name,
1306
1321
  volumes=self.volumes,
1307
1322
  active_deadline_seconds=self.active_deadline_seconds,
1323
+ termination_grace_period_seconds=self.termination_grace_period,
1308
1324
  ),
1309
1325
  )
1310
1326