apache-airflow-providers-cncf-kubernetes 10.8.0rc1__tar.gz → 10.10.0__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.
Files changed (159) hide show
  1. apache_airflow_providers_cncf_kubernetes-10.10.0/NOTICE +5 -0
  2. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/PKG-INFO +44 -21
  3. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/README.rst +33 -13
  4. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/changelog.rst +108 -2
  5. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/index.rst +40 -11
  6. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/kubernetes_executor.rst +2 -2
  7. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/operators.rst +2 -2
  8. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/provider.yaml +14 -1
  9. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/pyproject.toml +12 -8
  10. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/__init__.py +1 -1
  11. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/cli/kubernetes_command.py +1 -1
  12. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/decorators/kubernetes.py +1 -1
  13. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/decorators/kubernetes_cmd.py +1 -1
  14. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/exceptions.py +8 -0
  15. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py +24 -5
  16. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/get_provider_info.py +6 -0
  17. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/hooks/kubernetes.py +73 -19
  18. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/kube_config.py +24 -1
  19. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/kubernetes_helper_functions.py +2 -0
  20. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/operators/custom_object_launcher.py +3 -1
  21. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/operators/job.py +6 -1
  22. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/operators/kueue.py +6 -1
  23. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/operators/pod.py +73 -73
  24. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/operators/resource.py +6 -1
  25. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py +79 -33
  26. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/secret.py +3 -0
  27. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/sensors/spark_kubernetes.py +1 -1
  28. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/triggers/pod.py +56 -24
  29. apache_airflow_providers_cncf_kubernetes-10.10.0/src/airflow/providers/cncf/kubernetes/utils/container.py +118 -0
  30. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/utils/pod_manager.py +252 -195
  31. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/version_compat.py +1 -33
  32. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/decorators/test_kubernetes_cmd.py +2 -2
  33. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/decorators/test_kubernetes_commons.py +1 -1
  34. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/executors/test_kubernetes_executor.py +31 -8
  35. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/hooks/test_kubernetes.py +33 -33
  36. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/log_handlers/test_log_handlers.py +3 -5
  37. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/operators/test_custom_object_launcher.py +21 -0
  38. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/operators/test_job.py +5 -5
  39. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/operators/test_pod.py +173 -53
  40. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/operators/test_spark_kubernetes.py +283 -100
  41. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/sensors/test_spark_kubernetes.py +10 -17
  42. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/test_kubernetes_helper_functions.py +3 -3
  43. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/test_pod_generator.py +7 -7
  44. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/triggers/test_pod.py +94 -37
  45. apache_airflow_providers_cncf_kubernetes-10.10.0/tests/unit/cncf/kubernetes/utils/test_container.py +172 -0
  46. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/utils/test_pod_manager.py +304 -172
  47. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1/src/airflow/providers/cncf/kubernetes → apache_airflow_providers_cncf_kubernetes-10.10.0}/LICENSE +0 -0
  48. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/.latest-doc-only-change.txt +0 -0
  49. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/cli-ref.rst +0 -0
  50. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/commits.rst +0 -0
  51. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/conf.py +0 -0
  52. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/configurations-ref.rst +0 -0
  53. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/connections/kubernetes.rst +0 -0
  54. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/img/arch-diag-kubernetes.png +0 -0
  55. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/img/arch-diag-kubernetes2.png +0 -0
  56. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/img/k8s-failed-pod.png +0 -0
  57. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/img/k8s-happy-path.png +0 -0
  58. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/installing-providers-from-sources.rst +0 -0
  59. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/integration-logos/Kubernetes.png +0 -0
  60. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/integration-logos/Spark-On-Kubernetes.png +0 -0
  61. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/local_kubernetes_executor.rst +0 -0
  62. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/redirects.txt +0 -0
  63. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/security.rst +0 -0
  64. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/__init__.py +0 -0
  65. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/__init__.py +0 -0
  66. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/__init__.py +0 -0
  67. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/backcompat/__init__.py +0 -0
  68. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/backcompat/backwards_compat_converters.py +0 -0
  69. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/callbacks.py +0 -0
  70. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/cli/__init__.py +0 -0
  71. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/decorators/__init__.py +0 -0
  72. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/executors/__init__.py +0 -0
  73. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/executors/kubernetes_executor_types.py +0 -0
  74. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py +0 -0
  75. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/executors/local_kubernetes_executor.py +0 -0
  76. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/hooks/__init__.py +0 -0
  77. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/k8s_model.py +0 -0
  78. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/kube_client.py +0 -0
  79. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/kubernetes_executor_templates/__init__.py +0 -0
  80. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/kubernetes_executor_templates/basic_template.yaml +0 -0
  81. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/operators/__init__.py +0 -0
  82. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/pod_generator.py +0 -0
  83. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/pod_template_file_examples/__init__.py +0 -0
  84. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/pod_template_file_examples/dags_in_image_template.yaml +0 -0
  85. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/pod_template_file_examples/dags_in_volume_template.yaml +0 -0
  86. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/pod_template_file_examples/git_sync_template.yaml +0 -0
  87. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/python_kubernetes_script.jinja2 +0 -0
  88. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/python_kubernetes_script.py +0 -0
  89. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/resource_convert/__init__.py +0 -0
  90. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/resource_convert/configmap.py +0 -0
  91. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/resource_convert/env_variable.py +0 -0
  92. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/resource_convert/secret.py +0 -0
  93. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/sensors/__init__.py +0 -0
  94. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/template_rendering.py +0 -0
  95. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/triggers/__init__.py +0 -0
  96. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/triggers/job.py +0 -0
  97. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/utils/__init__.py +0 -0
  98. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/utils/delete_from.py +0 -0
  99. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/utils/k8s_resource_iterator.py +0 -0
  100. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/utils/xcom_sidecar.py +0 -0
  101. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/conftest.py +0 -0
  102. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/__init__.py +0 -0
  103. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/__init__.py +0 -0
  104. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/__init__.py +0 -0
  105. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_kubernetes.py +0 -0
  106. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_kubernetes_async.py +0 -0
  107. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_kubernetes_cmd_decorator.py +0 -0
  108. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_kubernetes_decorator.py +0 -0
  109. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_kubernetes_job.py +0 -0
  110. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_kubernetes_kueue.py +0 -0
  111. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_kubernetes_resource.py +0 -0
  112. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_spark_kubernetes.py +0 -0
  113. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_spark_kubernetes_spark_pi.yaml +0 -0
  114. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/spark_job_template.yaml +0 -0
  115. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/__init__.py +0 -0
  116. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/__init__.py +0 -0
  117. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/__init__.py +0 -0
  118. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/backcompat/__init__.py +0 -0
  119. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/backcompat/test_backwards_compat_converters.py +0 -0
  120. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/cli/__init__.py +0 -0
  121. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/cli/test_kubernetes_command.py +0 -0
  122. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/conftest.py +0 -0
  123. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/__init__.py +0 -0
  124. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/executor/__init__.py +0 -0
  125. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/executor/basic_template.yaml +0 -0
  126. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/kube_config +0 -0
  127. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/pods/__init__.py +0 -0
  128. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/pods/generator_base.yaml +0 -0
  129. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/pods/generator_base_with_secrets.yaml +0 -0
  130. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/pods/template.yaml +0 -0
  131. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/spark/__init__.py +0 -0
  132. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/spark/application_template.yaml +0 -0
  133. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/spark/application_test.json +0 -0
  134. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/spark/application_test.yaml +0 -0
  135. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/spark/application_test_with_no_name_from_config.json +0 -0
  136. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/spark/application_test_with_no_name_from_config.yaml +0 -0
  137. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/decorators/__init__.py +0 -0
  138. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/decorators/test_kubernetes.py +0 -0
  139. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/executors/__init__.py +0 -0
  140. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/executors/test_local_kubernetes_executor.py +0 -0
  141. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/hooks/__init__.py +0 -0
  142. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/log_handlers/__init__.py +0 -0
  143. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/models/__init__.py +0 -0
  144. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/models/test_secret.py +0 -0
  145. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/operators/__init__.py +0 -0
  146. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/operators/test_kueue.py +0 -0
  147. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/operators/test_resource.py +0 -0
  148. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/resource_convert/__init__.py +0 -0
  149. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/resource_convert/test_configmap.py +0 -0
  150. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/resource_convert/test_env_variable.py +0 -0
  151. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/resource_convert/test_secret.py +0 -0
  152. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/sensors/__init__.py +0 -0
  153. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/test_callbacks.py +0 -0
  154. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/test_client.py +0 -0
  155. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/test_template_rendering.py +0 -0
  156. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/triggers/__init__.py +0 -0
  157. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/triggers/test_job.py +0 -0
  158. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/utils/__init__.py +0 -0
  159. {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/utils/test_k8s_resource_iterator.py +0 -0
@@ -0,0 +1,5 @@
1
+ Apache Airflow
2
+ Copyright 2016-2025 The Apache Software Foundation
3
+
4
+ This product includes software developed at
5
+ The Apache Software Foundation (http://www.apache.org/).
@@ -1,12 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-cncf-kubernetes
3
- Version: 10.8.0rc1
3
+ Version: 10.10.0
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
8
  Requires-Python: >=3.10
9
9
  Description-Content-Type: text/x-rst
10
+ License-Expression: Apache-2.0
10
11
  Classifier: Development Status :: 5 - Production/Stable
11
12
  Classifier: Environment :: Console
12
13
  Classifier: Environment :: Web Environment
@@ -14,21 +15,23 @@ Classifier: Intended Audience :: Developers
14
15
  Classifier: Intended Audience :: System Administrators
15
16
  Classifier: Framework :: Apache Airflow
16
17
  Classifier: Framework :: Apache Airflow :: Provider
17
- Classifier: License :: OSI Approved :: Apache Software License
18
18
  Classifier: Programming Language :: Python :: 3.10
19
19
  Classifier: Programming Language :: Python :: 3.11
20
20
  Classifier: Programming Language :: Python :: 3.12
21
21
  Classifier: Programming Language :: Python :: 3.13
22
22
  Classifier: Topic :: System :: Monitoring
23
+ License-File: LICENSE
24
+ License-File: NOTICE
23
25
  Requires-Dist: aiofiles>=23.2.0
24
- Requires-Dist: apache-airflow>=2.10.0rc1
26
+ Requires-Dist: apache-airflow>=2.10.0
27
+ Requires-Dist: apache-airflow-providers-common-compat>=1.8.0
25
28
  Requires-Dist: asgiref>=3.5.2
26
- Requires-Dist: cryptography>=41.0.0
27
- Requires-Dist: kubernetes>=32.0.0,<33.0.0
28
- Requires-Dist: kubernetes_asyncio>=32.0.0,<33.0.0
29
+ Requires-Dist: cryptography>=41.0.0,<46.0.0
30
+ Requires-Dist: kubernetes>=32.0.0,<35.0.0
31
+ Requires-Dist: kubernetes_asyncio>=32.0.0,<35.0.0
29
32
  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.0/changelog.html
31
- Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.8.0
33
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0/changelog.html
34
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0
32
35
  Project-URL: Mastodon, https://fosstodon.org/@airflow
33
36
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
34
37
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -59,7 +62,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
59
62
 
60
63
  Package ``apache-airflow-providers-cncf-kubernetes``
61
64
 
62
- Release: ``10.8.0``
65
+ Release: ``10.10.0``
63
66
 
64
67
 
65
68
  `Kubernetes <https://kubernetes.io/>`__
@@ -72,7 +75,7 @@ This is a provider package for ``cncf.kubernetes`` provider. All classes for thi
72
75
  are in ``airflow.providers.cncf.kubernetes`` python package.
73
76
 
74
77
  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.0/>`_.
78
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0/>`_.
76
79
 
77
80
  Installation
78
81
  ------------
@@ -86,17 +89,37 @@ The package supports the following python versions: 3.10,3.11,3.12,3.13
86
89
  Requirements
87
90
  ------------
88
91
 
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,<33.0.0``
97
- ``kubernetes_asyncio`` ``>=32.0.0,<33.0.0``
98
- ====================== ====================
92
+ ========================================== ====================
93
+ PIP package Version required
94
+ ========================================== ====================
95
+ ``aiofiles`` ``>=23.2.0``
96
+ ``apache-airflow`` ``>=2.10.0``
97
+ ``apache-airflow-providers-common-compat`` ``>=1.8.0``
98
+ ``asgiref`` ``>=3.5.2``
99
+ ``cryptography`` ``>=41.0.0,<46.0.0``
100
+ ``kubernetes`` ``>=32.0.0,<35.0.0``
101
+ ``kubernetes_asyncio`` ``>=32.0.0,<35.0.0``
102
+ ========================================== ====================
103
+
104
+ Cross provider package dependencies
105
+ -----------------------------------
106
+
107
+ Those are dependencies that might be needed in order to use all the features of the package.
108
+ You need to install the specified providers in order to use them.
109
+
110
+ You can install such cross-provider dependencies when installing from PyPI. For example:
111
+
112
+ .. code-block:: bash
113
+
114
+ pip install apache-airflow-providers-cncf-kubernetes[common.compat]
115
+
116
+
117
+ ================================================================================================================== =================
118
+ Dependent package Extra
119
+ ================================================================================================================== =================
120
+ `apache-airflow-providers-common-compat <https://airflow.apache.org/docs/apache-airflow-providers-common-compat>`_ ``common.compat``
121
+ ================================================================================================================== =================
99
122
 
100
123
  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.0/changelog.html>`_.
124
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0/changelog.html>`_.
102
125
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-cncf-kubernetes``
25
25
 
26
- Release: ``10.8.0``
26
+ Release: ``10.10.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.0/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.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,<33.0.0``
61
- ``kubernetes_asyncio`` ``>=32.0.0,<33.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,<46.0.0``
61
+ ``kubernetes`` ``>=32.0.0,<35.0.0``
62
+ ``kubernetes_asyncio`` ``>=32.0.0,<35.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.0/changelog.html>`_.
85
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0/changelog.html>`_.
@@ -28,11 +28,117 @@ Changelog
28
28
  ---------
29
29
 
30
30
 
31
- 10.8.0
31
+ 10.10.0
32
+ .......
33
+
34
+ Features
35
+ ~~~~~~~~
36
+
37
+ * ``KubernetesPodTriggerer reads pod logs instead of KubernetesPodOperator (#57531)``
38
+
39
+ Bug Fixes
40
+ ~~~~~~~~~
41
+
42
+ * ``Fix 'KubernetesPodOperator' fails to delete pods with None value labels (#53477)``
43
+ * ``Fix KubernetesExecutor open slots metric (#55797)``
44
+ * ``improve deferrable KPO handling of deleted pods in between polls (#56976)``
45
+ * ``KubernetesExecutor: retry pod creation on Kubernetes API 500 errors (#57054)``
46
+
47
+ Misc
48
+ ~~~~
49
+
50
+ * ``Convert all airflow distributions to be compliant with ASF requirements (#58138)``
51
+ * ``Unify Pod Startup Tracking: KubernetesPodTriggerer and KubernetesPodOperator Now Share Common Startup Logic (#56875)``
52
+ * ``Relax Kubernetes client version support to <35.0.0 (#57413)``
53
+ * ``Identify duplicate kubernetes section airflow configuration and mark them as deprecated (#57028)``
54
+
55
+ Doc-only
56
+ ~~~~~~~~
57
+
58
+ * ``CHG: image (#56593)``
59
+
60
+ .. Below changes are excluded from the changelog. Move them to
61
+ appropriate section above if needed. Do not delete the lines(!):
62
+ * ``Fix main failing on cross-merged PR (#58270)``
63
+ * ``Delete all unnecessary LICENSE Files (#58191)``
64
+ * ``Enable PT006 rule to 19 files in providers (cncf,common) (#57995)``
65
+ * ``Fix docstring typos (#57840)``
66
+ * ``Fix MyPy type errors in providers in cncf/kubernetes provider (#57563)``
67
+ * ``Fix mypy static errors in main (#57755)``
68
+ * ``Attempt to resolve pip "ResolutionTooDeep" on cffi conflict (#57697)``
69
+ * ``Enable ruff PLW1641 rule (#57679)``
70
+ * ``Fix code formatting via ruff preview (#57641)``
71
+ * ``Enable ruff PLW0129 rule (#57516)``
72
+
73
+
74
+ 10.9.0
32
75
  ......
33
76
 
77
+ Features
78
+ ~~~~~~~~
79
+
80
+ * ``Move container-related functions from PodManager to a separate file (#56700)``
81
+ * ``Add KubernetesPodOperator deferred callbacks (#47108)``
82
+
83
+ Bug Fixes
84
+ ~~~~~~~~~
85
+
86
+ * ``Fix KubernetesPodOperator termination_grace_period parameter not being applied to pod spec (#56402)``
87
+ * ``SparkKubernetesOperator: preserve existing metadata labels in SparkApplication manifest (#56063)``
88
+
89
+ Misc
90
+ ~~~~
91
+
92
+ * ``Migrate cncf/kubernetes provider to ''common.compat'' (#57023)``
93
+
94
+ Doc-only
95
+ ~~~~~~~~
96
+
97
+ * ``Correct 'Dag' to 'DAG' for code snippets in provider docs (#56727)``
98
+
99
+ .. Below changes are excluded from the changelog. Move them to
100
+ appropriate section above if needed. Do not delete the lines(!):
101
+ * ``Remove placeholder Release Date in changelog and index files (#56056)``
102
+ * ``Enable PT011 rule to provider tests (#56578)``
103
+
104
+ 10.8.2
105
+ ......
106
+
107
+
108
+ Bug Fixes
109
+ ~~~~~~~~~
110
+
111
+ * ``Don't check db migration needlessly for 'airflow celery' cli commands. (#55878)``
112
+ * ``Relax Kubernetes client version support to <34.0.0 (#55932)``
113
+
114
+ .. Below changes are excluded from the changelog. Move them to
115
+ appropriate section above if needed. Do not delete the lines(!):
116
+
117
+ 10.8.1
118
+ ......
119
+
120
+
121
+ Bug Fixes
122
+ ~~~~~~~~~
123
+
124
+ * ``Fix: Add task context labels to driver and executor pods for SparkKubernetesOperator reattach_on_restart functionality (#50803)``
125
+ * ``Add more error handling in pod_manager consume_logs (#55479)``
126
+ * ``Add more robust check of the container statuses (#55371)``
127
+ * ``Fix circular import in version_compat (#55809)``
128
+
129
+ Misc
130
+ ~~~~
131
+
132
+ * ``Move the KubernetesPodOperator 'convert_config_file_to_dict' call (#55064)``
133
+ * ``Fix kpo log_events_on_failure logs warnings at warning level (#54967)``
134
+
135
+ .. Below changes are excluded from the changelog. Move them to
136
+ appropriate section above if needed. Do not delete the lines(!):
137
+ * ``Switch all airflow logging to structlog (#52651)``
138
+
139
+ 10.8.0
140
+ ......
34
141
 
35
- Release Date: ``|PypiReleaseDate|``
36
142
 
37
143
  Features
38
144
  ~~~~~~~~
@@ -87,7 +87,7 @@ apache-airflow-providers-cncf-kubernetes package
87
87
  `Kubernetes <https://kubernetes.io/>`__
88
88
 
89
89
 
90
- Release: 10.8.0
90
+ Release: 10.10.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,<33.0.0``
118
- ``kubernetes_asyncio`` ``>=32.0.0,<33.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,<46.0.0``
118
+ ``kubernetes`` ``>=32.0.0,<35.0.0``
119
+ ``kubernetes_asyncio`` ``>=32.0.0,<35.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.10.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.10.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.10.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.10.0.tar.gz.sha512>`__)
148
+ * `The apache-airflow-providers-cncf-kubernetes 10.10.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.10.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.10.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.10.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"),
@@ -496,7 +496,7 @@ spark_job_template.yaml
496
496
 
497
497
  * kubernetes: This segment encompasses the task's Kubernetes resource configuration, directly corresponding to the Kubernetes API Documentation. Each resource type includes an example within the template.
498
498
 
499
- * The designated base image to be utilized is ``gcr.io/spark-operator/spark-py:v3.1.1``.
499
+ * The designated base image to be utilized is ``apache/spark-py:v3.4.0``.
500
500
 
501
501
  * Ensure that the Spark code is either embedded within the image, mounted using a persistentVolume, or accessible from an external location such as an S3 bucket.
502
502
 
@@ -506,7 +506,7 @@ Next, create the task using the following:
506
506
 
507
507
  SparkKubernetesOperator(
508
508
  task_id="spark_task",
509
- image="gcr.io/spark-operator/spark-py:v3.1.1", # OR custom image using that
509
+ image="apache/spark-py:v3.4.0", # OR custom image using that
510
510
  code_path="local://path/to/spark/code.py",
511
511
  application_file="spark_job_template.yaml", # OR spark_job_template.json
512
512
  dag=dag,
@@ -22,12 +22,16 @@ description: |
22
22
  `Kubernetes <https://kubernetes.io/>`__
23
23
 
24
24
  state: ready
25
- source-date-epoch: 1756876671
25
+ source-date-epoch: 1763068815
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.10.0
32
+ - 10.9.0
33
+ - 10.8.2
34
+ - 10.8.1
31
35
  - 10.8.0
32
36
  - 10.7.0
33
37
  - 10.6.2
@@ -207,6 +211,9 @@ config:
207
211
  type: string
208
212
  example: ~
209
213
  default: ""
214
+ deprecated: true
215
+ deprecation_reason: |
216
+ This configuration is deprecated. Use `pod_template_file` to specify container image instead.
210
217
  worker_container_tag:
211
218
  description: |
212
219
  The tag of the Kubernetes Image for the Worker to Run
@@ -214,6 +221,9 @@ config:
214
221
  type: string
215
222
  example: ~
216
223
  default: ""
224
+ deprecated: true
225
+ deprecation_reason: |
226
+ This configuration is deprecated. Use `pod_template_file` to specify the image tag instead.
217
227
  namespace:
218
228
  description: |
219
229
  The Kubernetes namespace where airflow workers should be created. Defaults to ``default``
@@ -221,6 +231,9 @@ config:
221
231
  type: string
222
232
  example: ~
223
233
  default: "default"
234
+ deprecated: true
235
+ deprecation_reason: |
236
+ This configuration is deprecated. Use `pod_template_file` to specify namespace instead.
224
237
  delete_worker_pods:
225
238
  description: |
226
239
  If True, all worker pods will be deleted upon termination
@@ -25,9 +25,11 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-cncf-kubernetes"
28
- version = "10.8.0rc1"
28
+ version = "10.10.0"
29
29
  description = "Provider package apache-airflow-providers-cncf-kubernetes for Apache Airflow"
30
30
  readme = "README.rst"
31
+ license = "Apache-2.0"
32
+ license-files = ['LICENSE', 'NOTICE']
31
33
  authors = [
32
34
  {name="Apache Software Foundation", email="dev@airflow.apache.org"},
33
35
  ]
@@ -43,7 +45,6 @@ classifiers = [
43
45
  "Intended Audience :: System Administrators",
44
46
  "Framework :: Apache Airflow",
45
47
  "Framework :: Apache Airflow :: Provider",
46
- "License :: OSI Approved :: Apache Software License",
47
48
  "Programming Language :: Python :: 3.10",
48
49
  "Programming Language :: Python :: 3.11",
49
50
  "Programming Language :: Python :: 3.12",
@@ -58,9 +59,11 @@ requires-python = ">=3.10"
58
59
  # After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
59
60
  dependencies = [
60
61
  "aiofiles>=23.2.0",
61
- "apache-airflow>=2.10.0rc1",
62
+ "apache-airflow>=2.10.0",
63
+ "apache-airflow-providers-common-compat>=1.8.0",
62
64
  "asgiref>=3.5.2",
63
- "cryptography>=41.0.0",
65
+ # TODO(potiuk): We should bump cryptography to >=46.0.0 when sqlalchemy>=2.0 is required
66
+ "cryptography>=41.0.0,<46.0.0",
64
67
  # The Kubernetes API is known to introduce problems when upgraded to a MAJOR version. Airflow Core
65
68
  # Uses Kubernetes for Kubernetes executor, and we also know that Kubernetes Python client follows SemVer
66
69
  # (https://github.com/kubernetes-client/python#compatibility). This is a crucial component of Airflow
@@ -69,9 +72,9 @@ dependencies = [
69
72
  # limiting minimum airflow version supported in cncf.kubernetes provider, due to the
70
73
  # potential breaking changes in Airflow Core as well (kubernetes is added as extra, so Airflow
71
74
  # core is not hard-limited via install-requirements, only by extra).
72
- "kubernetes>=32.0.0,<33.0.0",
75
+ "kubernetes>=32.0.0,<35.0.0",
73
76
  # the version is limited to the next MAJOR version and should by synced with the kubernetes version
74
- "kubernetes_asyncio>=32.0.0,<33.0.0",
77
+ "kubernetes_asyncio>=32.0.0,<35.0.0",
75
78
  ]
76
79
 
77
80
  [dependency-groups]
@@ -79,6 +82,7 @@ dev = [
79
82
  "apache-airflow",
80
83
  "apache-airflow-task-sdk",
81
84
  "apache-airflow-devel-common",
85
+ "apache-airflow-providers-common-compat",
82
86
  # Additional devel dependencies (do not remove this line and add extra development dependencies)
83
87
  ]
84
88
 
@@ -108,8 +112,8 @@ apache-airflow-providers-common-sql = {workspace = true}
108
112
  apache-airflow-providers-standard = {workspace = true}
109
113
 
110
114
  [project.urls]
111
- "Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.8.0"
112
- "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.8.0/changelog.html"
115
+ "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0"
116
+ "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0/changelog.html"
113
117
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
114
118
  "Source Code" = "https://github.com/apache/airflow"
115
119
  "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.0"
32
+ __version__ = "10.10.0"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "2.10.0"
@@ -104,7 +104,7 @@ def generate_pod_yaml(args):
104
104
  print(f"YAML output can be found at {yaml_output_path}/airflow_yaml_output/")
105
105
 
106
106
 
107
- @cli_utils.action_cli
107
+ @cli_utils.action_cli(check_db=False)
108
108
  @providers_configuration_loaded
109
109
  def cleanup_pods(args):
110
110
  """Clean up k8s pods in evicted/failed/succeeded/pending states."""
@@ -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,
@@ -27,3 +27,11 @@ class PodMutationHookException(AirflowException):
27
27
 
28
28
  class PodReconciliationError(AirflowException):
29
29
  """Raised when an error is encountered while trying to merge pod configs."""
30
+
31
+
32
+ class KubernetesApiError(AirflowException):
33
+ """Raised when an error is encountered while trying access Kubernetes API."""
34
+
35
+
36
+ class KubernetesApiPermissionError(AirflowException):
37
+ """Raised when an error is encountered while trying access Kubernetes API."""
@@ -165,6 +165,7 @@ class KubernetesExecutor(BaseExecutor):
165
165
  self.task_publish_max_retries = conf.getint(
166
166
  "kubernetes_executor", "task_publish_max_retries", fallback=0
167
167
  )
168
+ self.completed: set[KubernetesResults] = set()
168
169
  super().__init__(parallelism=self.kube_config.parallelism)
169
170
 
170
171
  def _list_pods(self, query_kwargs):
@@ -343,6 +344,9 @@ class KubernetesExecutor(BaseExecutor):
343
344
  finally:
344
345
  self.result_queue.task_done()
345
346
 
347
+ for result in self.completed:
348
+ self._change_state(result)
349
+
346
350
  from airflow.providers.cncf.kubernetes.executors.kubernetes_executor_utils import ResourceVersion
347
351
 
348
352
  resource_instance = ResourceVersion()
@@ -385,6 +389,7 @@ class KubernetesExecutor(BaseExecutor):
385
389
  if (
386
390
  (str(e.status) == "403" and "exceeded quota" in message)
387
391
  or (str(e.status) == "409" and "object has been modified" in message)
392
+ or str(e.status) == "500"
388
393
  ) and (self.task_publish_max_retries == -1 or retries < self.task_publish_max_retries):
389
394
  self.log.warning(
390
395
  "[Try %s of %s] Kube ApiException for Task: (%s). Reason: %r. Message: %s",
@@ -501,7 +506,11 @@ class KubernetesExecutor(BaseExecutor):
501
506
  if state is None:
502
507
  from airflow.models.taskinstance import TaskInstance
503
508
 
504
- state = session.scalar(select(TaskInstance.state).where(TaskInstance.filter_for_tis([key])))
509
+ filter_for_tis = TaskInstance.filter_for_tis([key])
510
+ if filter_for_tis is not None:
511
+ state = session.scalar(select(TaskInstance.state).where(filter_for_tis))
512
+ else:
513
+ state = None
505
514
  state = TaskInstanceState(state) if state else None
506
515
 
507
516
  self.event_buffer[key] = state, None
@@ -511,7 +520,8 @@ class KubernetesExecutor(BaseExecutor):
511
520
  pod_override = ti.executor_config.get("pod_override")
512
521
  namespace = None
513
522
  with suppress(Exception):
514
- namespace = pod_override.metadata.namespace
523
+ if pod_override is not None:
524
+ namespace = pod_override.metadata.namespace
515
525
  return namespace or conf.get("kubernetes_executor", "namespace")
516
526
 
517
527
  def get_task_log(self, ti: TaskInstance, try_number: int) -> tuple[list[str], list[str]]:
@@ -565,7 +575,7 @@ class KubernetesExecutor(BaseExecutor):
565
575
  tis_to_flush_by_key = {ti.key: ti for ti in tis if ti.queued_by_job_id}
566
576
  kube_client: client.CoreV1Api = self.kube_client
567
577
  for scheduler_job_id in scheduler_job_ids:
568
- scheduler_job_id = self._make_safe_label_value(str(scheduler_job_id))
578
+ scheduler_job_id_safe_label = self._make_safe_label_value(str(scheduler_job_id))
569
579
  # We will look for any pods owned by the no-longer-running scheduler,
570
580
  # but will exclude only successful pods, as those TIs will have a terminal state
571
581
  # and not be up for adoption!
@@ -575,7 +585,7 @@ class KubernetesExecutor(BaseExecutor):
575
585
  "field_selector": "status.phase!=Succeeded",
576
586
  "label_selector": (
577
587
  "kubernetes_executor=True,"
578
- f"airflow-worker={scheduler_job_id},{POD_EXECUTOR_DONE_KEY}!=True"
588
+ f"airflow-worker={scheduler_job_id_safe_label},{POD_EXECUTOR_DONE_KEY}!=True"
579
589
  ),
580
590
  }
581
591
  pod_list = self._list_pods(query_kwargs)
@@ -720,7 +730,16 @@ class KubernetesExecutor(BaseExecutor):
720
730
  continue
721
731
 
722
732
  ti_id = annotations_to_key(pod.metadata.annotations)
723
- self.running.add(ti_id)
733
+ self.completed.add(
734
+ KubernetesResults(
735
+ key=ti_id,
736
+ state="completed",
737
+ pod_name=pod.metadata.name,
738
+ namespace=pod.metadata.namespace,
739
+ resource_version=pod.metadata.resource_version,
740
+ failure_details=None,
741
+ )
742
+ )
724
743
 
725
744
  def _flush_task_queue(self) -> None:
726
745
  if TYPE_CHECKING: